diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2014-10-20 02:24:51 +0200 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2014-10-20 02:24:51 +0200 |
commit | 6e7918b6ccb69876d339a320091fdee811445395 (patch) | |
tree | 31cb88ee438d652fddefca1193f70289a8b3dcc8 /helpers/DATA | |
parent | 60e5b13c35d4d3ba21bb03b026750a0a414f6c77 (diff) |
Generalize data directory
Diffstat (limited to 'helpers/DATA')
974 files changed, 0 insertions, 101519 deletions
diff --git a/helpers/DATA/firefox/Changelog.IceCat b/helpers/DATA/firefox/Changelog.IceCat deleted file mode 100644 index 50da2cb..0000000 --- a/helpers/DATA/firefox/Changelog.IceCat +++ /dev/null @@ -1,786 +0,0 @@ -2014-09-11 Ruben Rodriguez <ruben@gnu.org> - * Moved to generation script based on Trisquel package helpers (http://trisquel.info/en/wiki/package-helpers) - * Updated to match v31ESR upstream release - * Improved fingerprinting countermeasures: - - Block third party cookies - - Spoof referrers - - Spoof useragent and related values for js (appname, oscpu...) - - Ask the user before running any plugin - - Do not list plugin info through js - - Disable prefetching - - Simplify font settings to use just the basic set - - Simplify requesting pages in english - * Extensions: - - LibreJS updated to version 6.0.1 - - Added customized Adblockplus - - Removed requestpolicy - - Added about:icecat with list of features, links to documentation and checkbox to quick disabling - - Updated HTTPSeverywhere - -2013-10-16 Loic J. Duros <lduros@gnu.org> - * LibreJS has been updated to version 5.4 - * Using a modified version of Gnome 24 theme released under MPL 2.0 - * Added RequestPolicy to block cross-domain requests - * Created IceCat Tweak extension to make menu bar more compact - * Changed user agent from privacy addon to be more common (fingerprinting) - * Now using the FSF Directory for addon repository - -2012-12-01 Loic J. Duros <lduros@gnu.org> - * The JavaScript in about:home page has been fixed to provide Duck Duck Go as a search engine when dom.storage.enabled is disabled (the default.) - * Promotional GNU material was added as part of the IceCat branding package - * Due to privacy concerns (leaking urls), Safe Browsing has been disabled by default. - * Duck Duck is now the default search box. (see more about Duck Duck Go and privacy: http://duckduckgo.com/about.html.) - * Firefox 17 and 17.0.1 list of changes (IceCat 17 corresponds to Firefox 17.0.1): - http://www.mozilla.org/en-US/firefox/17.0/releasenotes/ - http://www.mozilla.org/en-US/firefox/17.0.1/releasenotes/ - -2012-08-21 Loic J. Duros <lduros@gnu.org> - * Uses MOZ_APP_PROFILE to force the ~/.mozilla/icecat directory over the ~/.gnuzilla/icecat one, which from release to release has had unreliable support. - * Updates to Makefiles for compliance with ftp.gnu.org check. - * Firefox 14 list of changes: http://www.mozilla.org/en-US/firefox/14.0.1/releasenotes/buglist.html - -2012-07-12 Loic J. Duros <lduros@gnu.org> - * Fixed extensions folder and package manifest. - * Put Firefox Sync back. - * Fixed couple strings (GNUzilla Foundation, ...) - -2012-06-01 Loic J. Duros <lduros@gnu.org> - * extensions: Removed the MafiaaFire Redirector extension because the license - makes it nonfree: - https://addons.mozilla.org/en-US/firefox/addon/mafiaafire-redirector/license/0.9d - - * make.icecat: Rewrote part of make.icecat so that it is - compatible with latest versions of Firefox. - - * .mozconfig: appdir is now default .mozilla rather than - .gnuzilla, since the appdir option is not well supported by - Firefox developers and may not be supported at all in the future. - - * extensions: Added GNU LibreJS version 4.7 to IceCat. - - * aboutDialog.xul: Update content. - - * browser/confvars.sh: Disabled Firefox Sync. - -2012-02-07 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Do not apply the locales-strings.patch patch. Use - sed instead. - * locales-strings.patch: Remove file. - -2011-11-26 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Revert change of 2011-11-21. Do not bundle libjs, for now. - -2011-11-21 Giuseppe Scrivano <giuseppe@gnu.org> - - * make.icecat: Add librejs extension. - -2011-09-30 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/Makefile.in: Upgrade from upstream. - -2011-09-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/Makefile.in (libs): Remove document.png. - * browser/branding/unofficial/Makefile.in (LINUX_BRANDING_FILES): - Likewise. - -2011-09-07 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Document how include the CAcert root certificate. - * security/nss/lib/ckfw/builtins/certdata.c: Upgrade from upstream. - -2011-08-31 Giuseppe Scrivano <gscrivano@gnu.org> - - * security/nss/lib/ckfw/builtins/certdata.c: Upgrade from upstream. - -2011-08-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Use @gnuzilla.gnu.org for locales. - * browser/locales/Makefile.in: Remove file from the repository. - -2011-08-16 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/Makefile.in: Upgrade from Firefox 6.0. - - * make.icecat: Upgrade MafiaaFire download link. - - * browser/app/Makefile.in: Remove file. - * browser/app/application.ini: Upgrade from upstream. - * browser/app/profile/firefox.js: Likewise. - -2011-08-15 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Fix build under GNU/Linux 3.0. - * canvas_notify.patch: Adapt for Firefox 6.0. - -2011-06-25 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/content/about-background.png: New file. - * browser/branding/unofficial/content/jar.mn: Include about-background.png. - -2011-06-21 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/locales/en-US/aboutDialog.dtd: Update from upstream. - * browser/app/Makefile.in: Likewise. - -2011-06-17 Hayawardh Vijayakumar <hayawardh@gmail.com> (tiny patch) - - * browser/branding/unofficial/run-icecat.sh: Fix insecure LD_LIBRARY_PATH. - -2011-04-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Include the Mafiaa addon by default. - -2011-04-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/installer/package-manifest.in: Use run-icecat.sh not - run-mozilla.sh - * browser/branding/unofficial/Makefile.in: Fix build under a VPATH. - -2011-04-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/locales/en-US/aboutDialog.dtd: Remove - links to "End User Right" and "Privacy Policy". - * browser/base/content/aboutHome.xhtml: New file. - - * browser/branding/unofficial/locales/jar.mn: Remove file. - -2011-03-31 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/content/credits.xhtml: Remove file. - -2011-03-30 Giuseppe Scrivano <gscrivano@gnu.org> - - * toolkit/mozapps/plugins/content/pluginInstallerWizard.js: New file. - -2011-03-24 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Use the privacy extension from the 4.0 branch, not trunk. - - * make.icecat: Don't attempt to copy files which are not used anymore. - * browser/installer/package-manifest.in: Include extensions. - -2011-03-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/mozilla.in: Update. - * browser/app/profile/firefox.js: Likewise. - * browser/branding/unofficial/content/jar.mn: Likewise. - * browser/branding/unofficial/pref/firefox-branding.js: Likewise. - * browser/branding/unofficial/locales/en-US/credits.dtd: Remove file. - * browser/branding/unofficial/content/credits.xhtml: Likewise. - * browser/branding/unofficial/license.r: Likewise. - * browser/branding/unofficial/brand.properties: Likewise. - * browser/branding/unofficial/content/icon48.png: Remove. - * browser/branding/unofficial/content/icon64.png: Convert to... - * browser/branding/unofficial/content/default.png: ...this. - -2011-03-22 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/locales/en-US/aboutDialog.dtd: Updated. - * browser/branding/unofficial/locales/en-US/brand.dtd: Updated. - * browser/branding/unofficial/Makefile.in: Updated. - * browser/branding/unofficial/brand.dtd: Remove file. - * browser/branding/unofficial/content/aboutCredits.png: Likewise. - * browser/branding/unofficial/content/aboutFooter.png: Likewise. - * browser/branding/unofficial/content/about.png: Likewise. - * browser/branding/unofficial/content/default.png: Likewise. - * browser/branding/unofficial/content/about-logo.png: New file. - * browser/branding/unofficial/content/about.png: Likewise. - * browser/branding/unofficial/content/about-wordmark.png: Likewise. - * browser/branding/unofficial/content/icon48.png: Likewise. - * browser/branding/unofficial/content/icon64.png: Likewise. - - * security/nss/lib/ckfw/builtins/certdata.c: Regenerated. - - * browser/installer/package-manifest.in: Update. - * configure.in: Remove file. - - * make.icecat: Do not apply the `nullplugin.patch' patch. - * nullplugin.patch: Remove file. - -2011-03-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Adjust directory names for extensions. - -2011-02-22 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Install "HTTPS everywhere" by default. - -2011-01-27 Christophe Jarry <christophe.jarry@ouvaton.org> - - * .mozconfig: Remove duplicate line. - -2011-01-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * configure.in: New file. Apply "Work around FTBFS on mips by - disabling TLS support" patch by Mike Hommey <mh@glandium.org>. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org>. - -2011-01-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * README.ICECAT: Fix typo. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org>. - -2011-01-15 Giuseppe Scrivano <gscrivano@gnu.org> - - * README.ICECAT: Remove reference to IceWeasel and BurningDog. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org>. - -2010-12-22 Giuseppe Scrivano <gscrivano@gnu.org> - - * .mozconfig: Enable freetype2. - Suggested by: Bruno Miguel <brunoalexandremiguel@gmail.com> - -2010-12-21 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/configure.sh: Leave only one final - newline, not two. - * browser/locales/en-US/searchplugins/duck-duck-go.xml: Add final - newline. - * browser/branding/unofficial/locales/en-US/brand.dtd: Remove trailing - whitespaces. - * browser/branding/unofficial/run-icecat.sh: Likewise. - * browser/installer/package-manifest.in: Likewise. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org> - -2010-12-20 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: Remove duplicate configuration values. - * browser/branding/unofficial/pref/firefox-branding.js: Likewise. - Remove definition for `pfs.datasource.url'. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org>. - -2010-12-15 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/installer/unix/packages-static: Copy anything under bin/extensions. - * browser/installer/package-manifest.in: Likewise. - * browser/installer/packages-static: Likewise. - * browser/branding/unofficial/Makefile.in (export): Copy any directory - under extensions/, not files. - -2010-12-13 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/installer/package-manifest: New file. - -2010-12-11 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Automatically fetch the privacy extension. - * extensions: Move directory to... - * browser/branding/unofficial/extensions: ..here. - -2010-12-10 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/Makefile.in (export): Fix condition for - copying extensions/*.xpi. - - * make.icecat: Fail immediately if patches can't be applied. - -2010-12-09 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/locales/en-US/brand.dtd: Remove "www." - from releaseBaseURL. - Reported by: Christophe Jarry <christophe.jarry@ouvaton.org>. - -2010-12-07 Giuseppe Scrivano <gscrivano@gnu.org> - - * canvas_notify.patch: New file. - * make.icecat: Apply canvas_notify.patch. - -2010-11-25 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/Makefile.in (export): Copy - extensions/*.xpi to the dist directory. - * browser/installer/unix/packages-static: Include bin/extensions/*.xpi - in the package. - -2010-11-17 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/locales/en-US/searchplugins/duck-duck-go.xml: New file. - -2010-09-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * .mozconfig: Add --disable-ipc. - -2010-08-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Fix Makefile.in's permissions. Fix CVE-2009-4029. - -2010-05-26 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/branding/unofficial/pref/firefox-branding.js: Change - the `app.support.baseURL' value to keep %VERSION%, %OS% and %LOCALE% - information. - -2010-05-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/locales/en-US/chrome/browser-region/region.properties: Remove - handlers for webcal and irc. - - Remove "GMail" and "Yahoo Mail!" from the mailto protocol handlers. - - * browser/locales/en-US/chrome/browser-region/region.properties: New - file. - -2010-05-12 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Rewrite the usage string to have `icecat', not - `firefox'. - -2010-05-06 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Remove a file that is not present upstream anymore. - -2010-04-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/config/version.txt: Remove. - -2010-03-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * make.icecat: Don't attempt to remove not existing files. - * browser/config/version.txt: Bump version to 3.6.2. - -2010-02-24 Giuseppe Scrivano <gscrivano@gnu.org> - - * remove.nonfree: Renamed to... - * make.icecat: this. - * README.ICECAT: Use the new file name. - -2010-02-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: The fixed user agent string is - moved into the privacy extension. - -2010-02-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * nullplugin.patch: Update to 3.6. - -2010-02-13 Giuseppe Scrivano <gscrivano@gnu.org> - - * toolkit/content/plugins.html: Re-added. - -2010-02-12 Giuseppe Scrivano <gscrivano@gnu.org> - - * toolkit/content: Remove. - -2010-02-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: Use a reasonable fixed User-Agent - string. Only few web sites will be affected by this change. - -2010-02-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: Revert last change. Specify the - original User-Agent. Some websites use this information. - -2010-01-31 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: Do not specify additional - information in the User-Agent header. - -2010-01-30 Harald van DÄłk <harald@gigawatt.nl> - - * browser/app/profile/firefox.js: Synchronize with Firefox 3.6. - -2010-01-21 Giuseppe Scrivano <gscrivano@gnu.org> - - * remove.nonfree, - * .mozconfig: Update to the 3.6 version. - * browser/config/version.txt: Bump version to 3.6. - -2010-01-06 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/config/version.txt: Bump version to 3.5.7. - -2009-12-16 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/config/version.txt: Bump version to 3.5.6. - -2009-11-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * nullplugin.patch: Redirect to a dynamic page to fetch plugins - information. - -2009-11-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * nullplugin.patch: New file. - * remove.nonfree: Apply nullplugin.patch. - -2009-11-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * browser/app/profile/firefox.js: Disable the default plugin. - -2009-11-18 Karl Goetz <karl@kgoetz.id.au> - - * browser/app/profile/firefox.js: Include (like Firefox/version). - The idea here is that websites which sniff the UA string to decide - what to display will see Firefox and play nice. Ref. Debian - bug #399633 and "Iceweasel and Firefox compatibility" thread. - -2009-11-08 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Bump version number to 3.5.5. - -2009-10-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Bump version number to 3.5.4. - -2009-10-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/profile/firefox.js: Use the additional search engines - list present on the GNUzilla web site. - The themes and addons point to the right section in the page. - -2009-09-24 Giuseppe Scrivano <gscrivano@gnu.org> - Reported by: Karl Goetz <karl@kgoetz.id.au> - * ./browser/app/profile/firefox.js: Change some default configuration values. - -2009-09-10 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Bump version number to 3.5.3. - -2009-09-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig: Remove deprecated extensions. - -2009-08-05 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Bump version number to 3.5.2. - -2009-08-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/content/aboutCredits.png: Use a transparent - background. - -2009-07-30 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/base/content/overrides/app-license.html: New file. - * ./browser/branding/unofficial/locales/en-US/aboutDialog.dtd: Specify - better what we changed. - -2009-07-26 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./toolkit/mozapps/plugins/content/pluginInstallerWizard.xul: New file. - -2009-07-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Do not remove useful files. - -2009-07-18 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Bump version number to 3.5.1. - * ./.mozconfig: Don't disable jsd. - -2009-07-11 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Changed versioning scheme. - -2009-07-10 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Do not remove useful files. - -2009-07-04 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Generate logo's. - * ./browser/app/application.ini: New file. - * ./browser/app/Makefile.in: Updated for 3.5-g1. - * ./browser/app/mozilla.in: Moved. - * ./browser/branding/unofficial/content/credits.xhtml: Reformatted. - * ./browser/branding/unofficial/content/jar.mn: Updated. - * ./browser/branding/unofficial/locales/en-US/aboutDialog.dtd: Updated. - * ./build/unix/mozilla.in: New file. - * ./security/nss/lib/ckfw/builtins/certdata.c: Regenerated. - -2009-07-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig: Changed default configuration. - * ./remove.nonfree: Don't remove ./js/src/liveconnect/jsj_nodl.c. - -2009-06-30 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/mozilla.in: Removed. - * ./browser/app/profile/firefox.js, - * ./browser/branding/unofficial/run-icecat.sh, - * ./browser/branding/unofficial/content/credits.xhtml, - * ./browser/config/version.txt, - * ./browser/installer/packages-static, - * ./browser/installer/unix/packages-static, - * ./browser/locales/Makefile.in, - * ./toolkit/content/plugins.html: Updated to 3.5-g1. - * ./security/nss/lib/ckfw/builtins/certdata.c: Updated root certificates. - -2009-06-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./toolkit/content/plugins.html: New file. - -2009-06-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig: Allow multiple profiles. - -2009-06-12 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.11-g1. - -2009-05-12 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/content/credits.xhtml: Update credits. - -2009-04-29 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.10-g1. - -2009-04-27 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig: Increased compiler optimization level. - -2009-04-22 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.9-g1. - -2009-04-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.8-g1. - -2009-03-14 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Don't remove browser/branding/unofficial/. - -2009-03-14 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.7-g1. - -2009-03-07 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/profile/firefox.js: Changed addons.html URL. - -2009-03-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/pref/firefox-branding.js: Addons location properties moved to firefox.js. - * ./browser/app/profile/firefox.js: Added. - -2009-02-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/pref/firefox-branding.js: Fixed problem with addons location properties. - -2009-02-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/content/credit.xhtml: Removed. - * ./browser/branding/unofficial/content/credit.xhtml: Added. - * ./remove.nonfree: File renamed. - -2009-02-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/content/credit.xhtml: Removed Firefox logos notice. - -2009-02-28 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree, - * ./browser/branding/unofficial/locales/en-US/credits.dtd, - * ./browser/branding/unofficial/content/credits.xhtml: Added new files. - -2009-02-26 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/pref/firefox-branding.js: Changed addons location. - -2009-02-07 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./locales-strings.patch: New file. - * ./remove.nonfree: Patch locales. - -2009-02-04 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.6-g1. - * ./configure.in: Removed. - -2008-12-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree, - * ./configure.in: Don't apply X geometry patch. - * ./x_geometry_patch.diff: Removed. - -2008-12-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt, - * ./configure.in: Updated version to 3.0.5-g1. - -2008-12-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/Makefile.in: File restored. - -2008-12-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./config/autoconf.mk.in, - * ./browser/app/Makefile.in: File removed. - * ./x_geometry_patch.diff: Changed boolean test. - * ./configure.in: Changed libxcb test. - * ./.mozconfig: Changed default configuration. - -2008-11-30 Giuseppe Scrivano <gscrivano@gnu.org> - - * configure.in, - * x_geometry_patch.diff, - * .mozconfig: Changed default configuration and XRM detection. - -2008-11-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * .mozconfig, - * ./configure.in: Changed default configuration. - -2008-11-14 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in: Added missing AC_SUBST statement. - -2008-11-14 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Don't remove the browser/branding/unofficial directory. - -2008-11-14 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.4-g1. - * ./configure.in: Updated version to 3.0.4-g1. - -2008-10-25 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/branding.nsi: Changed CompanyName. - * ./browser/branding/unofficial/pref/firefox-branding.js: Changed some configurations. - -2008-10-25 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/branding.nsi: Changed URL. - * ./Changelog: Renamed to ChangeLog. - -2008-10-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig: Generate optimized binaries. - -2008-10-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/brand.dtd, - * ./browser/branding/unofficial/brand.properties: Added new files. - -2008-10-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./config/autoconf.mk.in: Fixed problem introduced by last commit. - -2008-10-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in: Use XRM_LIBS. - * ./config/autoconf.mk.in: Fixed problem with locales. - -2008-09-29 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/content/jar.mn: Updated references. - -2008-09-29 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/locales/Makefile.in: Updated to the Firefox 3.0.3 version. - -2008-09-29 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/Makefile.in, - * ./browser/installer/packages-static, - * ./browser/installer/unix/packages-static: Install default.png. - * ./browser/branding/unofficial/icon48.png, - * ./browser/branding/unofficial/icon64.png: Removed. - * ./browser/branding/unofficial/default.png: Added. - * ./browser/config/version.txt: Updated version to 3.0.3-g1. - -2008-09-24 Giuseppe Scrivano <gscrivano@gnu.org> - - * security/nss/lib/ckfw/builtins/certdata.c: New file. - -2008-09-24 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Updated version to 3.0.2-g1. - -2008-09-19 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/branding/unofficial/run-icecat.sh: Silent error when - `~/.gnuzilla/' doesn't exist. - -2008-08-06 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/locales/Makefile.in: New file, it renames locales .xpi. - -2008-08-05 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree: Fixed shell comment. - -2008-08-03 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/Makefile.in, - * ./configure.in: Use XRM_LIBS. - * ./config/autoconf.mk.in: Added new file. - -2008-08-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/app/Makefile.in, - * ./configure.in, - * ./x_geometry_patch.diff: Look for libX11.a and XCB in XEXT_LIBS. - -2008-08-02 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in: Look for the XCB library. - -2008-08-01 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in: Look for the libX11.a file. - -2008-07-31 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in, - * x_geometry_patch.diff: Try to link against the XrmInitialize symbol. - -2008-07-29 Giuseppe Scrivano <gscrivano@gnu.org> - - * x_geometry_patch.diff: Don't change size and position for dialogs. - -2008-07-27 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./configure.in: Look for the libX11.a file in /usr/lib too. - -2008-07-27 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./remove.nonfree, - * ./configure.in: Look for the libX11.a file. - -2008-07-27 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./browser/config/version.txt: Added new file. - -2008-07-26 Giuseppe Scrivano <gscrivano@gnu.org> - - * remove.nonfree, - * x_geometry_patch.diff: Added X geometry patch. - -2008-07-23 Giuseppe Scrivano <gscrivano@gnu.org> - - * ./.mozconfig, - * ./remove.nonfree, - * ./README.ICECAT, - * ./browser/app/Makefile.in, - * ./browser/app/mozilla.in, - * ./browser/app/application.ini, - * ./browser/branding/unofficial/Makefile.in, - * ./browser/branding/unofficial/pref/firefox-branding.js, - * ./browser/branding/unofficial/configure.sh, - * ./browser/branding/unofficial/license.r, - * ./browser/branding/unofficial/locales/jar.mn, - * ./browser/branding/unofficial/locales/en-US/aboutDialog.dtd, - * ./browser/branding/unofficial/locales/en-US/brand.properties, - * ./browser/branding/unofficial/locales/en-US/brand.dtd, - * ./browser/branding/unofficial/locales/Makefile.in, - * ./browser/branding/unofficial/locales/browserconfig.properties, - * ./browser/branding/unofficial/branding.nsi, - * ./browser/branding/unofficial/run-icecat.sh, - * ./browser/branding/unofficial/content/icon48.png, - * ./browser/branding/unofficial/content/aboutFooter.png, - * ./browser/branding/unofficial/content/about.png, - * ./browser/branding/unofficial/content/jar.mn, - * ./browser/branding/unofficial/content/icon64.png, - * ./browser/branding/unofficial/content/aboutCredits.png, - * ./browser/branding/unofficial/content/Makefile.in, - * ./browser/branding/unofficial/dsstore, - * ./browser/installer/unix/packages-static, - * ./browser/installer/packages-static: Initial import. diff --git a/helpers/DATA/firefox/README.IceCat b/helpers/DATA/firefox/README.IceCat deleted file mode 100644 index 908a556..0000000 --- a/helpers/DATA/firefox/README.IceCat +++ /dev/null @@ -1,107 +0,0 @@ -This is the README file for the GNU IceCat distribution. - -Copyright (C) 2014 Ruben Rodriguez <ruben@gnu.org> -Copyright (C) 2006, 2007, 2008, 2010, 2011, 2012, 2014 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. - -The goal of the IceCat project is to provide a completely free version -of the popular mozilla source code. It is part of Gnuzilla, the -umbrella project analogous to Mozilla. The base Mozilla code is free -but it supports and suggests using non-free plugins and other modules. -GNU IceCat is completely free, and suggests only free plugins to -users. If you aren't aware of the rationale and goals of the Free -Software Movement, please take a look at this page: -http://www.gnu.org/philosophy/ - -To report problems, request changes, or other discussion, please use the -public mailing list bug-gnuzilla@gnu.org. This is an open list, feel -free to subscribe or view the archives at -http://lists.gnu.org/mailman/listinfo/bug-gnuzilla. - -The Gnuzilla and IceCat home page: http://www.gnu.org/software/gnuzilla -The sources are hosted on Savannah: http://savannah.gnu.org/projects/gnuzilla - - -BUILD FROM TARBALL -================== -From the released IceCat source tarball, you can build it by running: - -# replace objdir with whatever path you want - mkdir objdir - cd objdir -# replace srcdir with the path where you unpacked the source tarball - srcdir/configure --with-l10n-base=srcdir/l10n - make - -Be sure you have installed the needed libraries. If you want to tune -the configuration process you can change the default setup using the -file .mozconfig. - -The default configuration of IceCat uses the following libraries: -libpango libpangoxft libpangoft2 libfreetype libxft libgtk2 libx11 - -Refer to your distro help as needed if the configure script fails to -find them. - -To build a langpack: - - cd objdir/browser/locales - make langpack-$LANG LOCALE_MERGEDIR=. - -The xpi file is created at tempBuildDir/dist/linux-x86_64/xpi - -INSTALL -======= -When you have it built you can install it with: - - make install - -If you want to install in a staging directory, you can do this: - - make install DESTDIR=/foo/bar - -Or if you want to package the results, you can run - - cd objdir/browser/installer - make - -This generates a binary tarball at objdir/dist - -LICENSING -========= -Because we hope and want our privacy enhancements to be picked up by -Mozilla itself, we are keeping the same tri-licensing scheme for -Gnuzilla/IceCat as Mozilla uses: MPL/GPL/LGPL. - -EXTENSIONS INCLUDED IN ICECAT 31.x -================================== - -* LibreJS - GNU LibreJS aims to address the JavaScript problem described in Richard - Stallman's article The JavaScript Trap. - http://www.gnu.org/philosophy/javascript-trap.html - -* Https-Everywhere - Extension that encrypts your communications with many major websites, - making your browsing more secure. - -* SpyBlock - Blocks privacy trackers while in normal browsing mode, and all third party - requests when in private browsing mode. Based on Adblock Plus. - -* AboutIceCat - Adds a custom "about:icecat" homepage with links to information about the - free software and privacy features in IceCat, and checkboxes to enable - and disable the ones more prone to break websites. - -All the extensions are released under the GNU Public License. - -CONTRIBUTORS AND HELP -===================== -The maintainer of GNU IceCat is Ruben Rodriguez <ruben@gnu.org>. -We thank the Hitflip team (http://www.hitflip.de/special/gnu) for the logos. - -Additional contributors are most welcome. diff --git a/helpers/DATA/firefox/gnu/abouthome/aboutHome.css b/helpers/DATA/firefox/gnu/abouthome/aboutHome.css deleted file mode 100644 index 8635239..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/aboutHome.css +++ /dev/null @@ -1,429 +0,0 @@ -%if 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -%endif - -html { - font: message-box; - font-size: 100%; - background-color: hsl(0,0%,95%); - color: #000; - height: 100%; -} - -body { - margin: 0; - display: -moz-box; - -moz-box-orient: vertical; - width: 100%; - height: 100%; -} - -input, -button { - font-size: inherit; - font-family: inherit; -} - -a { - color: -moz-nativehyperlinktext; - text-decoration: none; -} - -.spacer { - -moz-box-flex: 1; -} - -#topSection { - text-align: center; -} - -#brandLogo { - height: 420px; - width: 150px; - margin: 22px auto 31px; - background-image: url("chrome://branding/content/about-logo.png"); - background-size: 420px 150px; - background-position: center center; - background-repeat: no-repeat; -} - -#searchForm, -#snippets { - width: 470px; -} - -#searchForm { - display: -moz-box; -} - -#searchLogoContainer { - display: -moz-box; - -moz-box-align: center; - padding-top: 2px; - -moz-padding-end: 8px; -} - -#searchLogoContainer[hidden] { - display: none; -} - -#searchEngineLogo { - display: inline-block; - height: 28px; - width: 70px; - min-width: 70px; -} - -#searchText { - -moz-box-flex: 1; - padding: 6px 8px; - background: hsla(0,0%,100%,.9) padding-box; - border: 1px solid; - border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); - box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset, - 0 0 2px hsla(210,65%,9%,.1) inset, - 0 1px 0 hsla(0,0%,100%,.2); - border-radius: 2.5px 0 0 2.5px; -} - -#searchText:-moz-dir(rtl) { - border-radius: 0 2.5px 2.5px 0; -} - -#searchText:focus, -#searchText[autofocus] { - border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6); -} - -#searchSubmit { - -moz-margin-start: -1px; - background: linear-gradient(hsla(0,0%,100%,.8), hsla(0,0%,100%,.1)) padding-box; - padding: 0 9px; - border: 1px solid; - border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); - -moz-border-start: 1px solid transparent; - border-radius: 0 2.5px 2.5px 0; - box-shadow: 0 0 2px hsla(0,0%,100%,.5) inset, - 0 1px 0 hsla(0,0%,100%,.2); - cursor: pointer; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; -} - -#searchSubmit:-moz-dir(rtl) { - border-radius: 2.5px 0 0 2.5px; -} - -#searchText:focus + #searchSubmit, -#searchText + #searchSubmit:hover, -#searchText[autofocus] + #searchSubmit { - border-color: #59b5fc #45a3e7 #3294d5; - color: white; -} - -#searchText:focus + #searchSubmit, -#searchText[autofocus] + #searchSubmit { - background-image: linear-gradient(#4cb1ff, #1793e5); - box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, - 0 0 0 1px hsla(0,0%,100%,.1) inset, - 0 1px 0 hsla(210,54%,20%,.03); -} - -#searchText + #searchSubmit:hover { - background-image: linear-gradient(#66bdff, #0d9eff); - box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, - 0 0 0 1px hsla(0,0%,100%,.1) inset, - 0 1px 0 hsla(210,54%,20%,.03), - 0 0 4px hsla(206,100%,20%,.2); -} - -#searchText + #searchSubmit:hover:active { - box-shadow: 0 1px 1px hsla(211,79%,6%,.1) inset, - 0 0 1px hsla(211,79%,6%,.2) inset; - transition-duration: 0ms; -} - -#defaultSnippet1, -#defaultSnippet2, -#rightsSnippet { - display: block; - min-height: 38px; - background: 30px center no-repeat; - padding: 6px 0; - -moz-padding-start: 79px; -} - -#rightsSnippet[hidden] { - display: none; -} - -#defaultSnippet1:-moz-dir(rtl), -#defaultSnippet2:-moz-dir(rtl), -#rightsSnippet:-moz-dir(rtl) { - background-position: right 30px center; -} - -#defaultSnippet1 { - background-image: url("chrome://browser/content/abouthome/snippet1.png"); -} - -#defaultSnippet2 { - background-image: url("chrome://browser/content/abouthome/snippet2.png"); -} - -#snippets { - display: inline-block; - text-align: start; - margin: 12px 0; - color: #3c3c3c; - font-size: 75%; - /* 12px is the computed font size, 15px the computed line height of the snippets - with Segoe UI on a default Windows 7 setup. The 15/12 multiplier approximately - converts em from units of font-size to units of line-height. The goal is to - preset the height of a three-line snippet to avoid visual moving/flickering as - the snippets load. */ - min-height: calc(15/12 * 3em); -} - -#launcher { - display: -moz-box; - -moz-box-align: center; - -moz-box-pack: center; - width: 100%; - background-color: hsla(0,0%,0%,.03); - border-top: 1px solid hsla(0,0%,0%,.03); - box-shadow: 0 1px 2px hsla(0,0%,0%,.02) inset, - 0 -1px 0 hsla(0,0%,100%,.25); -} - -#launcher:not([session]), -body[narrow] #launcher[session] { - display: block; /* display separator and restore button on separate lines */ - text-align: center; - white-space: nowrap; /* prevent navigational buttons from wrapping */ -} - -.launchButton { - display: -moz-box; - -moz-box-orient: vertical; - margin: 16px 1px; - padding: 14px 6px; - min-width: 88px; - max-width: 176px; - max-height: 85px; - vertical-align: top; - white-space: normal; - background: transparent padding-box; - border: 1px solid transparent; - border-radius: 2.5px; - color: #525c66; - font-size: 75%; - cursor: pointer; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; -} - -body[narrow] #launcher[session] > .launchButton { - margin: 4px 1px; -} - -.launchButton:hover { - background-color: hsla(211,79%,6%,.03); - border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); -} - -.launchButton:hover:active { - background-image: linear-gradient(hsla(211,79%,6%,.02), hsla(211,79%,6%,.05)); - border-color: hsla(210,54%,20%,.2) hsla(210,54%,20%,.23) hsla(210,54%,20%,.25); - box-shadow: 0 1px 1px hsla(211,79%,6%,.05) inset, - 0 0 1px hsla(211,79%,6%,.1) inset; - transition-duration: 0ms; -} - -.launchButton[hidden], -#launcher:not([session]) > #restorePreviousSessionSeparator, -#launcher:not([session]) > #restorePreviousSession { - display: none; -} - -#restorePreviousSessionSeparator { - width: 3px; - height: 116px; - margin: 0 10px; - background-image: linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)), - linear-gradient(hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)), - linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)); - background-position: left top, center, right bottom; - background-size: 1px auto; - background-repeat: no-repeat; -} - -body[narrow] #restorePreviousSessionSeparator { - margin: 0 auto; - width: 512px; - height: 3px; - background-image: linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)), - linear-gradient(to right, hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)), - linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)); - background-size: auto 1px; -} - -#restorePreviousSession { - max-width: none; - font-size: 90%; -} - -body[narrow] #restorePreviousSession { - font-size: 80%; -} - -.launchButton::before { - display: block; - width: 32px; - height: 32px; - margin: 0 auto 6px; - line-height: 0; /* remove extra vertical space due to non-zero font-size */ -} - -#downloads::before { - content: url("chrome://browser/content/abouthome/downloads.png"); -} - -#bookmarks::before { - content: url("chrome://browser/content/abouthome/bookmarks.png"); -} - -#history::before { - content: url("chrome://browser/content/abouthome/history.png"); -} - -#apps::before { - content: url("chrome://browser/content/abouthome/apps.png"); -} - -#addons::before { - content: url("chrome://browser/content/abouthome/addons.png"); -} - -#sync::before { - content: url("chrome://browser/content/abouthome/sync.png"); -} - -#settings::before { - content: url("chrome://browser/content/abouthome/settings.png"); -} - -#restorePreviousSession::before { - content: url("chrome://browser/content/abouthome/restore-large.png"); - height: 48px; - width: 48px; - display: inline-block; /* display on same line as text label */ - vertical-align: middle; - margin-bottom: 0; - -moz-margin-end: 8px; -} - -#restorePreviousSession:-moz-dir(rtl)::before { - transform: scaleX(-1); -} - -body[narrow] #restorePreviousSession::before { - content: url("chrome://browser/content/abouthome/restore.png"); - height: 32px; - width: 32px; -} - -#aboutMozilla { - display: block; - position: relative; /* pin wordmark to edge of document, not of viewport */ - -moz-box-ordinal-group: 0; - opacity: .5; - transition: opacity 150ms; -} - -#aboutMozilla:hover { - opacity: 1; -} - -#aboutMozilla::before { - content: url("chrome://browser/content/abouthome/mozilla.png"); - display: block; - position: absolute; - top: 12px; - right: 12px; - width: 69px; - height: 19px; -} - -/* [HiDPI] - * At resolutions above 1dppx, prefer downscaling the 2x Retina graphics - * rather than upscaling the original-size ones (bug 818940). - */ -@media not all and (max-resolution: 1dppx) { - #brandLogo { - background-image: url("chrome://branding/content/about-logo@2x.png"); - } - - #defaultSnippet1, - #defaultSnippet2, - #rightsSnippet { - background-size: 40px; - } - - #defaultSnippet1 { - background-image: url("chrome://browser/content/abouthome/snippet1@2x.png"); - } - - #defaultSnippet2 { - background-image: url("chrome://browser/content/abouthome/snippet2@2x.png"); - } - - .launchButton::before, - #aboutMozilla::before { - transform: scale(.5); - transform-origin: 0 0; - } - - #downloads::before { - content: url("chrome://browser/content/abouthome/downloads@2x.png"); - } - - #bookmarks::before { - content: url("chrome://browser/content/abouthome/bookmarks@2x.png"); - } - - #history::before { - content: url("chrome://browser/content/abouthome/history@2x.png"); - } - - #apps::before { - content: url("chrome://browser/content/abouthome/apps@2x.png"); - } - - #addons::before { - content: url("chrome://browser/content/abouthome/addons@2x.png"); - } - - #sync::before { - content: url("chrome://browser/content/abouthome/sync@2x.png"); - } - - #settings::before { - content: url("chrome://browser/content/abouthome/settings@2x.png"); - } - - #restorePreviousSession::before { - content: url("chrome://browser/content/abouthome/restore-large@2x.png"); - } - - body[narrow] #restorePreviousSession::before { - content: url("chrome://browser/content/abouthome/restore@2x.png"); - } - - #aboutMozilla::before { - content: url("chrome://browser/content/abouthome/mozilla@2x.png"); - } -} - diff --git a/helpers/DATA/firefox/gnu/abouthome/aboutHome.js b/helpers/DATA/firefox/gnu/abouthome/aboutHome.js deleted file mode 100644 index d3b4aa9..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/aboutHome.js +++ /dev/null @@ -1,502 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const SEARCH_ENGINES = { - "Google": { - // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.; - // it will be scaled down as necessary on lower-dpi displays. - image: "data:image/png;base64," + - "iVBORw0KGgoAAAANSUhEUgAAAIwAAAA4CAYAAAAvmxBdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + - "bWFnZVJlYWR5ccllPAAAGrFJREFUeNrtfHt4VdW172+utZOASLJ5+BaIFrUeXkFsa0Fl++gDnznV" + - "VlvFxt7aqvUUarXtse3Bau35ak/rZ9XT26NtfOvV6wFET+FYCQEKWqsQIT5RCAgSXnlnrzXneNw/" + - "1lphJSSQ8BB7bub3zW+LO3uN+fiNMcf4jTEX0N/6W3/rb/2tv30smtnXB3zmRi2FQakxQNKX3WkW" + - "9S/tgW3HLpmQM543A0BWVSHMYGIwOTDxzxrOf3/RQQfMZ2/SLAvKhTFVBGUqKFONH2QAzwOMF38a" + - "wHhYZAxWAqhe/iszp3+b970d/sInc57vz/J8L2eMB2MAEYkBQ6DQ3dRw4dq7AUjcP3rAfPZmLWXC" + - "LHKoIAcQAUxaB5EaEfc6AEBhjDEwmcx43/fO9HxT4vkReBIAAZgjgodW3NcPnn1sHgD/iHknn+0d" + - "6s8XEUhsXXac/34WAAGw8afuT8GZ3X055YeSJcIsG+pMZwFn0UihezRofPt3G54f/0E8cNMN+Myo" + - "8jVTCgYd823PLzrPeIBnABiUQ1F+UoWsVOYb33mkoKp/7/dKyT0AGc47X4s0sjBEoLxbBqAQAMfW" + - "Rfe38B4BM+VHUkYOs8mi1FrABbK4dcvK73zwp1M3xYPOxANKBqbpCdXNGb0UwPKRF74xpfDQ0t+K" + - "54+IvlKoahmAhaO/mv/ZmicG3tqPgT61ZM2dZMQJOYhIdByRM/F3dCCOox4Bc3oEliqyyNoQCPPu" + - "sXceKZqRsigu7pwaWBowiRb46+f9Q1V2wl1nDx09/R7jF30x9adNlN8yPx4DHwht+B/cBIBoRqeI" + - "E4hE/oshTcB0wNbT6/o/zrhFyohR5ZxmrVWE+fDxdx4puhGAH4OkPe5B6pykeJAc/7cDEMZ/095Y" + - "870P339m+BXs2v4kbCFsm9u2vnpJ3bzR7wAo2B/R2v+PjSnyXcRxtOLUSXFxwAFz5i2SZUIVO82S" + - "BWye/vLOIwNvjL8OYqCEfXCmJAZPHkC7sK1REbj2+lmbq86qTVmmfuuyN2cTiREWKCvACgml9kDL" + - "7HQksehsZmSdA6yVpsa6P38v3swg7m4vN1dGXrThKGP8yS5fP33j/LEvxKDbl2f2A0YFCtkZQDOa" + - "PjLAnP4jrmBGjh1AVhG2ttxfX33++vjY2eeNXf/siLUAzgEwMJZrY2vF/Vu/t4BRqCqgCmj07wMV" + - "HXUCzJQfUlZE72ICnANcqNj21h8eiK1AX46gXh29KT9H+rd9XxBjYGCgig7QHOgjPgMAKigXQZYp" + - "si4uCOc3v35zY2wF9ufGSgxA7fdd9g8ho9ol4P4ojiQWnSUMMANECrJNy1NWYH8eGfsEvJbLv1IK" + - "1XIAUwEtA0xplJMwjcaYlTDeShg8dOgjj6/cJxNYfWIWkHJoh5yyjkSZ8RbB89YBZq4/pXafGeuz" + - "b9WciXJxo2B2houqgAjABJCLOwFMqFv57+bBxMIAJm1det3avnl1OYCLAeSgWhofaY1QXQSRuYc+" + - "/OiD3QLmUzNdqTBKhRVMADsF5beuToXJB90KtFz+lVIVniXOVUAUqjpXVB4WwPjGTPB8/0zjeTnj" + - "ezl43szmKy6vNkDF4MeeXNc3oJyUhfAMkJsJkSxUVrLos6o6z/O8Ucb3phrPzyHKeVTwkpPXseg3" + - "Cqe+1SfG+swfaw6KGTAoJ5eyGF3IBeEIJB2AcXxb0FI/L45uFQBMGiu6Z3ai9eqrclBUClFWVatV" + - "5GERNT5wEVQnQLUcIuVNX75kFjn60rA5c1d0AoywlkcxfdwZ2LSgbOmBZAv70povu7RcyFUqcZYd" + - "Pbxix44fnLv8pbYUOWh+P3ZM9uJRo34xoLDgq8b3YTxvqhqsaPzyJTdmn36msjdyqPqkMhWqBFGZ" + - "MtV8uDX4zMjp2zemyEoPgGn4zyOvGzy48A54GcD3Sz1jFrqqE+4uOOvdmb0ASlYEs5mQE9afUdhy" + - "0yv3lHzwya/8ZcjgI0+5yssU3QKYkgQ4Ivp60LL1n8kBQfOWuvdnj6uLldgHQKoKxU7HV/eg2y1X" + - "XXmXEs1U0ZVb29o//4k5c5P5eQB+s+68aVeUFBTcCxUoS6kRWfjhueecc9SfX3ytA9QTr7eVACqY" + - "FDYEwnbB2qcHHg6gLY6ODhpomi77coUyVaojhKH9+ZHzF/wqXiztEg34APxNX/jCvQOLCi83fpy8" + - "UsCJXHLYnGdn785S0uKTyyBUBXJZcW5x4bSN56ciyLQcD4Bf/+ThVwwbUvRb+JkoswqAWX5b9Lm1" + - "M3uSM/UnUiaCKiZk2blvvnxX0ePxuBNAmpMur51wyLBPzjVeBBoVwIXBk6vuP+SG+LkcuwkWAA96" + - "/JjZKnKxkACkkFb5Nztz220xX9bJlWi+6opKFalQlpqlmzZNu6B6SaJ0knKJ/DW5qd8p8TO3x6AB" + - "qza1EE06cdmy9wDAY5LjmBTMkQnUnZ42H0ywNF52aU6FK4UY5NySI+cv+E3MCnMM5HyqtwFoO3rB" + - "gmuDMFjGjiCOIEQwzH9c+7lzju+JTaYlJ2ehUqXMWWFqeurFxqsAFMVf25Ss9kTOEZdvebClJbxT" + - "yUGZoEzwlL/b9tzRX+pOztSfSBZApSqyIrL45buKnkaUJEzLCN5+csxr+ab6fyILkI2OIZYBlx9/" + - "2bYvpLgw2+EqKLKdwoceVKJp+tfuEpYKZcaW1tZbLqheEsbj3GV+oxdV3x0GwQZrHUIiWKIST3Vm" + - "DG54zFrKrBBWiGgSyx9Uv6Xh0n/MKlGlOII4h80trQ+kuJt8HGklZHg6FZF/Y/uOb7O1YOvAzkGt" + - "Kxmoehe6SYNEpkErwZIFC4I2fuLKf2tLtDOPzumPhA6wAPJDLt1yuzjaAEcAMUCMApXfvPP7IcO6" + - "gkYFs4RRpgy49qanUsAPu/T8W48e/YwL6S/kYtBYwM8U/yu6KVlQUShr9CkKyK7b1vDVy0qVeaYy" + - "gaxbdeK85/8a/z7sYR3zgXM1gXUInEPoCEw8PR6z8YQxaidQPh6RrgrPEOZS4chKjFuydEEKFD1x" + - "QgrAnfO3V98Jw/B5dhFgmByU+MK/nnrq6K6gcQtPyqlIubJAibCxPv/fsVVNgCI9yGEAQdBq71NH" + - "UEdQIoBo5PBBeklazuQfSpYFM0UAFsDmd2yMf9+1XkUT3otc8AiRwpFChCBCI0detGbSLtYr5uw6" + - "tk26XctZwgxhRt65ZSmr1t389M1Jk85wzKcHRAiJkCfasDnI/0sMGN+jlLMrAigMhp0+f+TBBIw4" + - "milEYOcQBHZZAoZeEIgKgIIgeJbD2MqEFhxaDAFmdAWMisxQFigzlAUnX9e4rA9yeHuTna3koBQB" + - "RogxwOPvxNbQAAA7VHQEFKSQKEFIu4lA5d3HiiuFNB4XQZlhUHBK11QO0oRdD7ouROVCkeJZG7ak" + - "/KBOYHlz4sTy1WVlVY5oYego2+bs82+3tFw6YcVrp01dteqpxNfyhKQuGlxCMSsKBh570ABT/8XP" + - "5dhRVpyDWAd2Ns0O9yrhWdfcMpvCEByEoNCCwhBgvgBdM+PM5TH5FPW+1ZLo8de2viehe12dhVoH" + - "OAtDPO61O4o+kYCTnE5wVuGsxlzKHul7BUDKdomKgwpB2QHAyNiP2Dl+0Z2WRXZ9YP0F55WJczvX" + - "0jp09U3fLiurWD1+/NqQaHZIVNbu3O1vt7aM+fSqVRWXvPvu0pRldwAkQ5brjO+NMh0kgMIvGjYZ" + - "wIKETPxIrYt1U5M8iThKJil9yZGc++ab298dP36Jb8wZohqhQHRErKEeAA6fG5FT5yIlYYI6tzfO" + - "vtiQni3MYDw0ChqEgUMyejyAdwGwDeW4ZI9FAGQOmwzgv/cERmZbDXhnKBNUGMJkUhGVduSSJJ1P" + - "6rw8HIalJo7ilBkchgCgL48fVzLceDc4kZnWUdap1AQi10x+660n4jXyk1M7ZXEZgHhMUkMO4Njp" + - "hQGMf8h56Fx++ZE1a+1xZC2Szjs3sk9uUEhUbSMvP3LeyOGZ0tKJiearo1J1DHVRPYmS7JUcG2g1" + - "pxxUsooBnpmQWAOb10YbKGygcKFCZOC0XqxrRKokCBQG5euX77In2k1P+2hhWEZBAAoCuCCEcW7E" + - "2xMn/m6oYo0jyjnmuc3Off6UN96YMvmtt5LILSmQ61r3xAA0I+xqPBiIejAd1f7e2MPPfvm4LQs/" + - "89a+bP6nZuSzfsaU+T7g+UBixYQVRFGS01kFO22srRy0EgA4CEvFRHS3MANMY/fGbybmlQqAFSBV" + - "sCp8kWwCGA5dqefFShnnRV77ecHYU37iXuqLoB0tsuIo34v3NfJR1GlJsrnOuiXGy1y8k+rwxh57" + - "3srSD/6rbLdra7yMqgjUCGAULR8uWr0LJPYAGApCeCbKNygLPKIxJ65YOSU+YpLUUCYGiqBzQVy3" + - "Ft1zbevnJl60UARqACgcVDo9ZZr63Mqua68QxlpmrWJC1FmrmLSKCFVktcpZrbKhzg4D26E5Lgjg" + - "8vnoMwwh1hU/dvTRo/qcDyJqcESw5Dp6o3XNHVrqLDSubAdFjuXwwWZcX+Wc9APboKxQUoiLurXa" + - "IYfCpjlCDsoxZ6OCouLRt+xpbY3nA8aDMR6E2+9vffOWxl02cQ+Bbdjevt7l83D5ABRaKNHYO484" + - "YmgMkoJ4jElCOL8Lz9NN87YumrRDxc2DElQZKgIVhZcZcO1hZ74wtK/H0thvtuXGXdM2S0S/ziQ1" + - "FPJiG7pHwvbgDhtKnQ0VNhCEeUHQLmiuf2fymieGvJGY8DCfX+yCEC5xWIlwtO+P6+s4VESJGS4+" + - "liwxKjZ/2FGRZvPhYgktxEZdHWOAr2P34ihWIQWTgJ2CnWJbo9Ymz1g/5+h1QsF9wgKJ19Z4hV87" + - "4fKNE3cnx8v4V8H4UOjqhvce+zW6qdWVlOvSjQsDlw/WUT4A5QNQGIJDizMPHXR+CiRBb4GSzlYr" + - "26Z7vYKSC42nUOPBqA9VU1I0ZOJPEYWj1NvVW/3AoEUAFgO4IzZ1hYk2jf9WUw7IjCIXHUVhXrFp" + - "/sQtKZPIoXXr/PjoSkZeoHo6gP/bFyeciECqcHG3IrXp37a2SF3xQNPxRAXgq5nS1bHsDWCYALYA" + - "u+h0W/impI8Pad9ec/vAoWVTjV84Nsn5FAwcvmDMN5rOqf1jyatdHzjuGjvThloKYH3b5qVXt775" + - "44ZuN1QEKknF3a6ImfDee4tWjBrV6R5Qoeq1AP6Avaxx8gDolhdPXAh2qzQmZFQ4ZhALrj/mvLpT" + - "+qhxya0BP5VVZQBkA6jNR0AJ2xUUcjKGjsx4k3PVYUwaJU6rJ3reLiHlHppjBjF3fLYSzU/noEZ8" + - "3611VusoVJBVsFWAdezim/3jemSFe+SNIsvCpAhCXf7TBZI+PnTr4nO2t2xcME3ZroYKIouEEqDo" + - "xfHfav/GxOttFgBOucGWll0XVqrqXYDWNLz3aG7bsovWp4i2TvkhScLqNBezq/M/zxLBxV2Yx/75" + - "yCPP6usc04CJ+B3bcLMwQTiK+0UIwgz1ip8+4pyaYX0x0SnWMkjnYGygkm9nBO0MGzoI2TTDyQBw" + - "7ubNawPmeZYZNt5wZhrxX8OHX9yXSTJzGcVgIWasbs8/hc7XRzXM670cg0Vs5H+MHm6u74ucrb/K" + - "lAlFPoySoqFFn+rm+OCGV762df2cYWe4fP0M5qDWhoowRIm1/h+s1YZx3wrVOV1LDhXMaGzfXntF" + - "46vXtMQRS/clsqRRT9SNd0GMBo6edRStZbKeg4D//ciQIcP2CTDbqsdVKQePq1JMFkXxv4qO9AaM" + - "fPGoaeuG9kXp0LkU0wGgMFC1gYAdAeyg0m3IrE3W3mtTvodjRpHq9X3xL4h5Qsq63P/z9ra6LqSc" + - "vvmBPkwOTex2lnf4wNee/47fa99NGGVJ8Zl1qP3UPfwkdr15mDDV+Y3Pf+Kh9c9kz9pee89J7dve" + - "vaRt+7qLbVv47y5UUKggp3BB/okNz0/aHI8332OaIgELxWDpptQtt6X+Qcu03nVYGQYxjxzl+7/e" + - "GyvjdYrCtv31JiW7QTjy6qWj83jF4AeP/MLaodiHRtZBXAihEEIWkq4eSgGmvKGhqpX5d1YEVhiW" + - "BaI6Zf6QITN7s5ELhw4tZZavkwhIZMOC1rZfo5s64nPv4+1NzXot2/hYiqKckglH4/7eRojCOosp" + - "St6u2ijfS1Hv3I0SdVy5aam9ecumBeOqN8w7aRkxSlMVdRDmRHa4m5xWPKPEusUA6maIrcy/cCKw" + - "InASKaCoXrlo2LAH+xpMpAEjLauu2ObaNnxVmZqUHaI8SaR+KnIhTPHCo6ZtOn6vk4qUPNNGnV2P" + - "J0ptENweMq92zHBMcMwwIrfMLS6etKdJEnMlCYOZm9YE4dUPkWvsIUckJ/+SZwd5PCEOEBc5rh7j" + - "grqf+VfvSc7mO/xZSihVAra3YMY/PqqrUhZVe7C8yRHTBqAVQJuQN5idgJ2ASQAz4PJjptWevKc0" + - "RZQ0TQATRWDd/dmFDQ2VeaLH0z4dRVTK9EXZ7IqFJSXH7W6eLw0blntp2NAydGOSqPGVs/5mW9Zc" + - "JGKbRSxELIRDCFuIuAmiBa8eMW37rcdc1JDtM+3PYdSp43k9/ulPgmDrsnz+vFBktRWBZYEVKSlU" + - "feH5wYPP7u5Hfy4uzi4oLq50IjkSaXrf2vIfBPnV6PlKiwKg0XfyNe2BPkmJ8+oUGeh/bLjNu7En" + - "0Gy+w5sppLcyKRra9IZJ98hTvciop9MPSSFUwGTnEjHICsgpyKHYHzjquWMvrJ+wewUENPFjCIAx" + - "k3uStyIMbw5FVieWJvJpBE5kgqq+X1VcPGdRcfHMxSUluSUlJbmlUZ+1tKRkLRGVnrZ9Rw12rSLt" + - "sDpFg8vmfbpw0HH3wcuMMSaiao2XAbwMjPFhPL/ReN6DfsY8tHHekN0WXR929vqsCpWruFshPEqF" + - "o3IyADuWTxgea1rYTbRVeEMmc+SnCwp+OcB4l3kmLq0D4BnzkA/MMUBjvDMXC1DBqlkCFr9N9E//" + - "HIZpPyDsQVuTFwsMfP273k8GFeLbvo9izwe8DGA8VMPgIc/D2piALlPFDGWUMqNuazOun/RbeQU7" + - "L/zl0cfC+SPOXjG84NBRawCvJNoSE7PiBgr5Xx/MKf7jLnzIbUPKlHVF5C11KgJfD9+shY8Vxjd3" + - "0780rEvP8bFDDvnVQGO+lU5MeTDwzM5aTbOzNyrw/XNbWx9JFLknk+sjqjobUHJq9XS/cNj3jZcZ" + - "Ac9PwBIDyAeMD2O8RhhvpTFYqYpGqMQOM2UhlFOhsvjfgNJ6ofxyoZaXbHPt8mDNjDU9ACYBbyGA" + - "AT/KZEZ/MpO5qciYyRlgROeJGSh0nQCL21Ufmx4EL8dMpqScRt4DFVAAYMCtORx+0Rhz7aFF+GJB" + - "BmNM/JKklGo1KlBtHZ474U79P9hZOZcQYb0unD/mwu05qADCZwE4C8Y7I3kTk4kFx+mUuzfMKf5e" + - "+rn+rUMq4PR4hFII0gw0xpdvGAWGoDqHf9m8IuV8m2Qtf1pQMPok37+50JhpHlC8EzwRcAzwOqs+" + - "Vkv06I+da04nInd3RvuxgCIAhcUTF5zvFQ79oucP+Cy8zIjE6qQnt5Pviu5IqAogVKNCNSrBUte6" + - "blnrqi/Vo3O9rI3Pc7cbP6sgGQcAf7rvl3zK908uBKjAGK5jrrmNKKHj/RS3E6L3V2USLUzkZAB4" + - "i75pTivwwQMyoKYQ685+QOtScvzUHPbIlJ54ZVsuDPTrZDmnQqUQggo1qkoNRDyFeJ6XGQfjF0fW" + - "3O9YWxW6adNzw36Dzm/JKEJ0k7QgtfiSygd1vSrkdZ3jlb6fneT7Y+MN1xrmVX9gbkw9q1MdsemF" + - "U5wkpwqSRSw49gfZAcPPHOsVlIww/sBjjPEVnqfGZEQlWKVCjWK31TW/dv56pCruU126TGxPl+US" + - "IrAgNQ7TQ+pNukQqfalLNimApvMt6CZMTvsiu3VOJ17XnrNWZ9m85oK8Qmz4sFB+CeXrF29dfOqG" + - "1PwKs6fOKyvKjrnb8wrHGD8TWfCOEoX85zb96dgXY9leN2NM+y3SJZG4u7XsSldIykFPz09NHxbR" + - "T2U3M11AsKf8aRqtnBqQoG91oWkGOS0/XaQo2Pf3u5mUDK9LukD7Mv5Tv9teSQ4VzipsINUtW9Zc" + - "t/mFiRu7WbcOuQNP+MXQ4hGX3mEKBl1mjB9bbwAqSz6cf+TZ8Qaabta/u6hM92ItpZs5dvyor5R/" + - "dwvp9QAa6eFzfxRlpVMk2mXh93czeyPn1Bn5ShWtYAJsyEve+OPgC7Hzmgx3USDtejQedlbtDX7h" + - "0Ns6HChV5LcvP7rpb1+qx/690dHrtewL05c2c7ZLtrM91fOpDGjXyvT9+WYBPQAg3NPcey1n4vVt" + - "FUJSIfGNjJZNy2ekkqzpazIJOefSoTaA9q1VY+5Wbvs9NAoYVBkFh5Sesi9lJ/u6lt5+WETpoi2M" + - "PpZU/k9szmKGtVGRWBjQ6g3zP78pxfSGKb+tJ4LPAsi31S/+uXCUlVZmCIc+DlI15L4Cpr/1FA1d" + - "0VLqAilzgcCGChdQc5eoTXqpkNS66hv1YLsUElURiG1sOZj7lunf3v3fwlBKjRfX9EjEHKcscV98" + - "D40zRKIqgEpz4yvTVnfjU/VbmL/r4yhwTTbPCNsZNi8g50/OnvbCsXu5wQqVURCBuOb7seu98n7A" + - "/L23Tc8NX8mW6pL73UoOhYPH/GJv/I7Dzlqbg5pRUG1q++A//+Ng+4f9gDlATVzLHfErZiHioKrn" + - "H37uhgeG597sdYnIYeeszypQqQawre9dHNbd0Yj9/5KnfsB8DJpuXXj8Q+ryj3dUZglD1Uz3MsWv" + - "HX7uh1fv6QGHn7upAmrWQpEV2zSt+bVptamw+6C9VaP/hcoHrvkABgydUjPLywy6Oboh6HW6PgLj" + - "LYqStqYRQHKDMQflMhXOQrnata27tvGvufrEn8ZBfmdPP2AO7NpmAAw85B8qTyjKlt1svAHTjPGL" + - "k4w0jAcTAyllnBoh9Kxw/tEdS8cuT0WyH4vX1PYD5qMBzQDE2eFDxz09zsscWuwVHX6a8YwaFAiM" + - "NAkHr4vdUdf82rQN6JwnSl4N4vAxeKdxP2A+mjXuKTvcXcY9TdOnyxPk4zKZ/vbRAqe75C3QfZZY" + - "0P/y6/7299z+H4QrdGsoib8JAAAAAElFTkSuQmCC" - } -}; - -// The process of adding a new default snippet involves: -// * add a new entity to aboutHome.dtd -// * add a <span/> for it in aboutHome.xhtml -// * add an entry here in the proper ordering (based on spans) -// The <a/> part of the snippet will be linked to the corresponding url. -const DEFAULT_SNIPPETS_URLS = [ "" ]; - -const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. - -// IndexedDB storage constants. -const DATABASE_NAME = "abouthome"; -const DATABASE_VERSION = 1; -const SNIPPETS_OBJECTSTORE_NAME = "snippets"; - -// This global tracks if the page has been set up before, to prevent double inits -let gInitialized = false; -let gObserver = new MutationObserver(function (mutations) { - for (let mutation of mutations) { - if (mutation.attributeName == "searchEngineName") { - setupSearchEngine(); - if (!gInitialized) { -// ensureSnippetsMapThen(loadSnippets); - gInitialized = true; - } - return; - } - } -}); - -window.addEventListener("pageshow", function () { - // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs - // later and may use asynchronous getters. - window.gObserver.observe(document.documentElement, { attributes: true }); - fitToWidth(); - window.addEventListener("resize", fitToWidth); - - // Ask chrome to update snippets. - var event = new CustomEvent("AboutHomeLoad", {bubbles:true}); - document.dispatchEvent(event); -}); - -window.addEventListener("pagehide", function() { - window.gObserver.disconnect(); - window.removeEventListener("resize", fitToWidth); -}); - -// This object has the same interface as Map and is used to store and retrieve -// the snippets data. It is lazily initialized by ensureSnippetsMapThen(), so -// be sure its callback returned before trying to use it. -let gSnippetsMap; -let gSnippetsMapCallbacks = []; - -/** - * Ensure the snippets map is properly initialized. - * - * @param aCallback - * Invoked once the map has been initialized, gets the map as argument. - * @note Snippets should never directly manage the underlying storage, since - * it may change inadvertently. - */ -function ensureSnippetsMapThen(aCallback) -{ -return; - if (gSnippetsMap) { - aCallback(gSnippetsMap); - return; - } - - // Handle multiple requests during the async initialization. - gSnippetsMapCallbacks.push(aCallback); - if (gSnippetsMapCallbacks.length > 1) { - // We are already updating, the callbacks will be invoked when done. - return; - } - - let invokeCallbacks = function () { - if (!gSnippetsMap) { - gSnippetsMap = Object.freeze(new Map()); - } - - for (let callback of gSnippetsMapCallbacks) { - callback(gSnippetsMap); - } - gSnippetsMapCallbacks.length = 0; - } - - let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION); - - openRequest.onerror = function (event) { - // Try to delete the old database so that we can start this process over - // next time. - indexedDB.deleteDatabase(DATABASE_NAME); - invokeCallbacks(); - }; - - openRequest.onupgradeneeded = function (event) { - let db = event.target.result; - if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) { - db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME); - } - } - - openRequest.onsuccess = function (event) { - let db = event.target.result; - - db.onerror = function (event) { - invokeCallbacks(); - } - - db.onversionchange = function (event) { - event.target.close(); - invokeCallbacks(); - } - - let cache = new Map(); - let cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME) - .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor(); - cursorRequest.onerror = function (event) { - invokeCallbacks(); - } - - cursorRequest.onsuccess = function(event) { - let cursor = event.target.result; - - // Populate the cache from the persistent storage. - if (cursor) { - cache.set(cursor.key, cursor.value); - cursor.continue(); - return; - } - - // The cache has been filled up, create the snippets map. - gSnippetsMap = Object.freeze({ - get: function (aKey) cache.get(aKey), - set: function (aKey, aValue) { - db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") - .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey); - return cache.set(aKey, aValue); - }, - has: function (aKey) cache.has(aKey), - delete: function (aKey) { - db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") - .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey); - return cache.delete(aKey); - }, - clear: function () { - db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") - .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear(); - return cache.clear(); - }, - get size() cache.size - }); - - setTimeout(invokeCallbacks, 0); - } - } -} - -function onSearchSubmit(aEvent) -{ - let searchTerms = document.getElementById("searchText").value; - let engineName = document.documentElement.getAttribute("searchEngineName"); - - if (engineName && searchTerms.length > 0) { - // Send an event that will perform a search and Firefox Health Report will - // record that a search from about:home has occurred. - let eventData = JSON.stringify({ - engineName: engineName, - searchTerms: searchTerms - }); - let event = new CustomEvent("AboutHomeSearchEvent", {detail: eventData}); - document.dispatchEvent(event); - } - - aEvent.preventDefault(); -} - - -function setupSearchEngine() -{ - // The "autofocus" attribute doesn't focus the form element - // immediately when the element is first drawn, so the - // attribute is also used for styling when the page first loads. - let searchText = document.getElementById("searchText"); - searchText.addEventListener("blur", function searchText_onBlur() { - searchText.removeEventListener("blur", searchText_onBlur); - searchText.removeAttribute("autofocus"); - }); - - let searchEngineName = document.documentElement.getAttribute("searchEngineName"); - let searchEngineInfo = SEARCH_ENGINES[searchEngineName]; - let logoElt = document.getElementById("searchEngineLogo"); - - // Add search engine logo. - if (searchEngineInfo && searchEngineInfo.image) { - logoElt.parentNode.hidden = false; - logoElt.src = searchEngineInfo.image; - logoElt.alt = searchEngineName; - searchText.placeholder = ""; - } - else { - logoElt.parentNode.hidden = true; - searchText.placeholder = searchEngineName; - } - -} - -/** - * Inform the test harness that we're done loading the page. - */ -function loadSucceeded() -{ - var event = new CustomEvent("AboutHomeLoadSnippetsSucceeded", {bubbles:true}); - document.dispatchEvent(event); -} - -/** - * Update the local snippets from the remote storage, then show them through - * showSnippets. - */ -function loadSnippets() -{ -return; - if (!gSnippetsMap) - throw new Error("Snippets map has not properly been initialized"); - - // Allow tests to modify the snippets map before using it. - var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles:true}); - document.dispatchEvent(event); - - // Check cached snippets version. - let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0; - let currentVersion = document.documentElement.getAttribute("snippetsVersion"); - if (cachedVersion < currentVersion) { - // The cached snippets are old and unsupported, restart from scratch. - gSnippetsMap.clear(); - } - - // Check last snippets update. - let lastUpdate = gSnippetsMap.get("snippets-last-update"); - let updateURL = document.documentElement.getAttribute("snippetsURL"); - let shouldUpdate = !lastUpdate || - Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS; - if (updateURL && shouldUpdate) { - // Try to update from network. - let xhr = new XMLHttpRequest(); - try { - xhr.open("GET", updateURL, true); - } catch (ex) { - showSnippets(); - loadSucceeded(); - return; - } - // Even if fetching should fail we don't want to spam the server, thus - // set the last update time regardless its results. Will retry tomorrow. - gSnippetsMap.set("snippets-last-update", Date.now()); - xhr.onerror = function (event) { - showSnippets(); - }; - xhr.onload = function (event) - { - if (xhr.status == 200) { - gSnippetsMap.set("snippets", xhr.responseText); - gSnippetsMap.set("snippets-cached-version", currentVersion); - } - showSnippets(); - loadSucceeded(); - }; - xhr.send(null); - } else { - showSnippets(); - loadSucceeded(); - } -} - -/** - * Shows locally cached remote snippets, or default ones when not available. - * - * @note: snippets should never invoke showSnippets(), or they may cause - * a "too much recursion" exception. - */ -let _snippetsShown = false; -function showSnippets() -{ -return; - let snippetsElt = document.getElementById("snippets"); - - // Show about:rights notification, if needed. - let showRights = document.documentElement.getAttribute("showKnowYourRights"); - if (showRights) { - let rightsElt = document.getElementById("rightsSnippet"); - let anchor = rightsElt.getElementsByTagName("a")[0]; - anchor.href = "about:rights"; - snippetsElt.appendChild(rightsElt); - rightsElt.removeAttribute("hidden"); - return; - } - - if (!gSnippetsMap) - throw new Error("Snippets map has not properly been initialized"); - if (_snippetsShown) { - // There's something wrong with the remote snippets, just in case fall back - // to the default snippets. - showDefaultSnippets(); - throw new Error("showSnippets should never be invoked multiple times"); - } - _snippetsShown = true; - - let snippets = gSnippetsMap.get("snippets"); - // If there are remotely fetched snippets, try to to show them. - if (snippets) { - // Injecting snippets can throw if they're invalid XML. - try { - snippetsElt.innerHTML = snippets; - // Scripts injected by innerHTML are inactive, so we have to relocate them - // through DOM manipulation to activate their contents. - Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) { - let relocatedScript = document.createElement("script"); - relocatedScript.type = "text/javascript;version=1.8"; - relocatedScript.text = elt.text; - elt.parentNode.replaceChild(relocatedScript, elt); - }); - return; - } catch (ex) { - // Bad content, continue to show default snippets. - } - } - - showDefaultSnippets(); -} - -/** - * Clear snippets element contents and show default snippets. - */ -function showDefaultSnippets() -{ -return; - // Clear eventual contents... - let snippetsElt = document.getElementById("snippets"); - snippetsElt.innerHTML = ""; - - // ...then show default snippets. - let defaultSnippetsElt = document.getElementById("defaultSnippets"); - let entries = defaultSnippetsElt.querySelectorAll("span"); - // Choose a random snippet. Assume there is always at least one. - let randIndex = Math.floor(Math.random() * entries.length); - let entry = entries[randIndex]; - // Inject url in the eventual link. - if (DEFAULT_SNIPPETS_URLS[randIndex]) { - let links = entry.getElementsByTagName("a"); - // Default snippets can have only one link, otherwise something is messed - // up in the translation. - if (links.length == 1) { - links[0].href = DEFAULT_SNIPPETS_URLS[randIndex]; - } - } - // Move the default snippet to the snippets element. - snippetsElt.appendChild(entry); -} - -function fitToWidth() { - if (window.scrollMaxX) { - document.body.setAttribute("narrow", "true"); - } else if (document.body.hasAttribute("narrow")) { - document.body.removeAttribute("narrow"); - fitToWidth(); - } -} diff --git a/helpers/DATA/firefox/gnu/abouthome/aboutHome.xhtml b/helpers/DATA/firefox/gnu/abouthome/aboutHome.xhtml deleted file mode 100644 index c1acf4a..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/aboutHome.xhtml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - -<!DOCTYPE html [ - <!ENTITY % htmlDTD - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "DTD/xhtml1-strict.dtd"> - %htmlDTD; - <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd"> - %globalDTD; - <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd"> - %aboutHomeDTD; - <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" > - %browserDTD; -]> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>&abouthome.pageTitle;</title> - - <link rel="icon" type="image/png" id="favicon" - href="chrome://branding/content/icon32.png"/> - <link rel="stylesheet" type="text/css" media="all" - href="chrome://browser/content/abouthome/aboutHome.css"/> - -<style> - -label{ -position:relative; -bottom:2px; -left:2px; -} - -em { -color:#600 -} - -a{ -color:#004998 -} - -.block-side-margin { - min-width: 16px; - -moz-box-flex: 1; -} - -#block-horizontal-margin { - display: -moz-box; - -moz-box-flex: 1; -} - -ul li { -list-style:none; -background:#ddd; -border-radius:3px; -padding:3px 5px 3px 5px; -margin:5px; -box-shadow: 0px 2px 0 #ccc ; -float:left; -} - -ul li a{ -font-weight:bold; -color:#666; -text-shadow:0px 1px 0px #fff; -} - -.titlelink { -font-weight:bold; -color:#56728C; -text-shadow:0px 1px 0px #fff; -} - -#footer{ -min-height:100px; -} - -</style> - - </head> - - <body dir="&locale.dir;"> - - - <div class="spacer"/> - <div id="topSection"> - <img src="chrome://branding/content/about-logo.png"/> - - <div id="searchContainer"> - <form name="searchForm" id="searchForm" action="https://duckduckgo.com/html/"> - <input type="text" name="q" value="" id="searchText" maxlength="256" - autofocus="autofocus"/> - <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/> - </form> - </div> - - </div> - - <div class="spacer"/> - - </body> -</html> - diff --git a/helpers/DATA/firefox/gnu/abouthome/addons.png b/helpers/DATA/firefox/gnu/abouthome/addons.png Binary files differdeleted file mode 100644 index 41519ce..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/addons.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/addons@2x.png b/helpers/DATA/firefox/gnu/abouthome/addons@2x.png Binary files differdeleted file mode 100644 index d4d04ee..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/addons@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/apps.png b/helpers/DATA/firefox/gnu/abouthome/apps.png Binary files differdeleted file mode 100644 index 79fc95d..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/apps.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/apps@2x.png b/helpers/DATA/firefox/gnu/abouthome/apps@2x.png Binary files differdeleted file mode 100644 index cbe7a6d..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/apps@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/bookmarks.png b/helpers/DATA/firefox/gnu/abouthome/bookmarks.png Binary files differdeleted file mode 100644 index 5c7e194..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/bookmarks.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/bookmarks@2x.png b/helpers/DATA/firefox/gnu/abouthome/bookmarks@2x.png Binary files differdeleted file mode 100644 index 7ede007..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/bookmarks@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/downloads.png b/helpers/DATA/firefox/gnu/abouthome/downloads.png Binary files differdeleted file mode 100644 index 3d4d10e..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/downloads.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/downloads@2x.png b/helpers/DATA/firefox/gnu/abouthome/downloads@2x.png Binary files differdeleted file mode 100644 index d384a22..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/downloads@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/history.png b/helpers/DATA/firefox/gnu/abouthome/history.png Binary files differdeleted file mode 100644 index ae742b1..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/history.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/history@2x.png b/helpers/DATA/firefox/gnu/abouthome/history@2x.png Binary files differdeleted file mode 100644 index 696902e..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/history@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/restore-large.png b/helpers/DATA/firefox/gnu/abouthome/restore-large.png Binary files differdeleted file mode 100644 index ef593e6..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/restore-large.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/restore-large@2x.png b/helpers/DATA/firefox/gnu/abouthome/restore-large@2x.png Binary files differdeleted file mode 100644 index d5c71d0..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/restore-large@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/restore.png b/helpers/DATA/firefox/gnu/abouthome/restore.png Binary files differdeleted file mode 100644 index 5c3d6f4..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/restore.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/restore@2x.png b/helpers/DATA/firefox/gnu/abouthome/restore@2x.png Binary files differdeleted file mode 100644 index 5acb630..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/restore@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/settings.png b/helpers/DATA/firefox/gnu/abouthome/settings.png Binary files differdeleted file mode 100644 index 4b0c309..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/settings.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/settings@2x.png b/helpers/DATA/firefox/gnu/abouthome/settings@2x.png Binary files differdeleted file mode 100644 index c77cb9a..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/settings@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/snippet1.png b/helpers/DATA/firefox/gnu/abouthome/snippet1.png Binary files differdeleted file mode 100644 index ce2ec55..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/snippet1.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/snippet1@2x.png b/helpers/DATA/firefox/gnu/abouthome/snippet1@2x.png Binary files differdeleted file mode 100644 index f57cd0a..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/snippet1@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/snippet2.png b/helpers/DATA/firefox/gnu/abouthome/snippet2.png Binary files differdeleted file mode 100644 index e0724fb..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/snippet2.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/snippet2@2x.png b/helpers/DATA/firefox/gnu/abouthome/snippet2@2x.png Binary files differdeleted file mode 100644 index 40577f5..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/snippet2@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/sync.png b/helpers/DATA/firefox/gnu/abouthome/sync.png Binary files differdeleted file mode 100644 index 11e40cc..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/sync.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/abouthome/sync@2x.png b/helpers/DATA/firefox/gnu/abouthome/sync@2x.png Binary files differdeleted file mode 100644 index 6354f5b..0000000 --- a/helpers/DATA/firefox/gnu/abouthome/sync@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/100.png b/helpers/DATA/firefox/gnu/adblock_artwork/100.png Binary files differdeleted file mode 100644 index f1485e4..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/100.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/16.png b/helpers/DATA/firefox/gnu/adblock_artwork/16.png Binary files differdeleted file mode 100644 index 27339c7..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/16.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/24.png b/helpers/DATA/firefox/gnu/adblock_artwork/24.png Binary files differdeleted file mode 100644 index e7ecf24..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/24.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/32.png b/helpers/DATA/firefox/gnu/adblock_artwork/32.png Binary files differdeleted file mode 100644 index 7d98d62..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/32.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/48.png b/helpers/DATA/firefox/gnu/adblock_artwork/48.png Binary files differdeleted file mode 100644 index 4bb73bf..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/48.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/64.png b/helpers/DATA/firefox/gnu/adblock_artwork/64.png Binary files differdeleted file mode 100644 index 5735fd3..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/64.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/adblock_artwork/adblock.svg b/helpers/DATA/firefox/gnu/adblock_artwork/adblock.svg deleted file mode 100644 index 82f4003..0000000 --- a/helpers/DATA/firefox/gnu/adblock_artwork/adblock.svg +++ /dev/null @@ -1,989 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="16" - height="16" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Nuevo documento 1"> - <defs - id="defs4"> - <linearGradient - inkscape:collect="always" - id="linearGradient4684"> - <stop - style="stop-color:#7d7d7d;stop-opacity:1;" - offset="0" - id="stop4686" /> - <stop - style="stop-color:#7d7d7d;stop-opacity:0;" - offset="1" - id="stop4688" /> - </linearGradient> - <linearGradient - id="linearGradient4176"> - <stop - id="stop4178" - offset="0" - style="stop-color:#9a9a9a;stop-opacity:1;" /> - <stop - id="stop4180" - offset="1" - style="stop-color:#606060;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3973"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3965"> - <stop - style="stop-color:#c2c2c2;stop-opacity:1;" - offset="0" - id="stop3967" /> - <stop - style="stop-color:#c2c2c2;stop-opacity:0;" - offset="1" - id="stop3969" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3943" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0917031" - id="feGaussianBlur3945" /> - </filter> - <filter - inkscape:collect="always" - id="filter4010" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4010-8"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-3" /> - </filter> - <linearGradient - id="linearGradient3973-1"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-8" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-4" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4010-1"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-2" /> - </filter> - <linearGradient - id="linearGradient3973-2"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-9" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-6" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter4010-3" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-0" /> - </filter> - <linearGradient - id="linearGradient3973-0"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-0" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-5" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3965-7"> - <stop - style="stop-color:#c2c2c2;stop-opacity:1;" - offset="0" - id="stop3967-8" /> - <stop - style="stop-color:#c2c2c2;stop-opacity:0;" - offset="1" - id="stop3969-3" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3943-6" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0917031" - id="feGaussianBlur3945-0" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-0" - id="radialGradient4304" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.54390042,0,0,0.54390042,281.61231,675.80899)" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3965-7" - id="linearGradient4306" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.54390042,0,0,0.54390042,281.61231,675.80899)" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3965" - id="linearGradient4312" - gradientUnits="userSpaceOnUse" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" - gradientTransform="translate(88,389)" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3973" - id="radialGradient4314" - gradientUnits="userSpaceOnUse" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" - gradientTransform="translate(88,389)" /> - <filter - inkscape:collect="always" - id="filter4010-9" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-24" /> - </filter> - <radialGradient - gradientTransform="matrix(0.43323501,0,0,0.43323501,390.52128,741.77616)" - inkscape:collect="always" - xlink:href="#linearGradient3973-3" - id="radialGradient4314-4" - gradientUnits="userSpaceOnUse" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" /> - <linearGradient - id="linearGradient3973-3"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-4" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-7" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.43323501,0,0,0.43323501,390.52128,741.77616)" - inkscape:collect="always" - xlink:href="#linearGradient3965-8" - id="linearGradient4312-3" - gradientUnits="userSpaceOnUse" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3965-8"> - <stop - style="stop-color:#c2c2c2;stop-opacity:1;" - offset="0" - id="stop3967-7" /> - <stop - style="stop-color:#c2c2c2;stop-opacity:0;" - offset="1" - id="stop3969-30" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3943-9" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0917031" - id="feGaussianBlur3945-06" /> - </filter> - <filter - inkscape:collect="always" - id="filter4010-4" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-4" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-9" - id="radialGradient4314-9" - gradientUnits="userSpaceOnUse" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" - gradientTransform="matrix(0.21961917,0,0,0.21982414,534.28031,864.6086)" /> - <linearGradient - id="linearGradient3973-9"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-3" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-3" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3965-0" - id="linearGradient4312-5" - gradientUnits="userSpaceOnUse" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" - gradientTransform="matrix(0.21961917,0,0,0.21982414,534.28031,864.6086)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3965-0"> - <stop - style="stop-color:#c2c2c2;stop-opacity:1;" - offset="0" - id="stop3967-80" /> - <stop - style="stop-color:#c2c2c2;stop-opacity:0;" - offset="1" - id="stop3969-72" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3943-0" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0917031" - id="feGaussianBlur3945-7" /> - </filter> - <filter - inkscape:collect="always" - id="filter4010-5" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-30" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-5" - id="radialGradient4314-47" - gradientUnits="userSpaceOnUse" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" - gradientTransform="matrix(0.2588382,0,0,0.2588382,477.42163,846.52183)" /> - <linearGradient - id="linearGradient3973-5"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-5" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-8" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3965-96" - id="linearGradient4312-0" - gradientUnits="userSpaceOnUse" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" - gradientTransform="matrix(0.2588382,0,0,0.2588382,477.42163,846.52183)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3965-96"> - <stop - style="stop-color:#c2c2c2;stop-opacity:1;" - offset="0" - id="stop3967-2" /> - <stop - style="stop-color:#c2c2c2;stop-opacity:0;" - offset="1" - id="stop3969-9" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3943-8" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0917031" - id="feGaussianBlur3945-2" /> - </filter> - <filter - inkscape:collect="always" - id="filter4010-87" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1469637" - id="feGaussianBlur4012-6" /> - </filter> - <linearGradient - id="linearGradient3973-01"> - <stop - style="stop-color:#ff3c00;stop-opacity:1;" - offset="0" - id="stop3975-2" /> - <stop - style="stop-color:#950200;stop-opacity:1;" - offset="1" - id="stop3977-56" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter4726" - x="-0.073952376" - width="1.1479048" - y="-0.19470514" - height="1.3894103"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.41013522" - id="feGaussianBlur4728" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4684" - id="linearGradient4752" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-1.0252254,1.0252204,0,-469.5139,1009.5143)" - x1="0.14837089" - y1="1044.1793" - x2="17.211658" - y2="1044.0673" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-01" - id="linearGradient4774" - x1="1.0000004" - y1="1044.3622" - x2="15" - y2="1044.3622" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,1,-1,0,1645.3622,993.3622)" /> - <filter - inkscape:collect="always" - id="filter4816"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.22892593" - id="feGaussianBlur4818" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-01-8" - id="linearGradient4774-5" - x1="1.0000004" - y1="1044.3622" - x2="15" - y2="1044.3622" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,1,-1,0,1052.3622,1036.3622)" /> - <linearGradient - id="linearGradient3973-01-8"> - <stop - style="stop-color:#ff6b00;stop-opacity:1;" - offset="0" - id="stop3975-2-2" /> - <stop - style="stop-color:#b40300;stop-opacity:1;" - offset="1" - id="stop3977-56-7" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter4889" - x="-0.076071213" - width="1.1521424" - y="-0.1458912" - height="1.2917824"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.37460606" - id="feGaussianBlur4891" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3973-5" - id="radialGradient4982" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.26666646,0,0,0.26666514,476.20001,841.59636)" - cx="108" - cy="640.375" - fx="108" - fy="640.375" - r="45" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3965-96" - id="linearGradient4984" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.2789036,0,0,0.27829346,474.95268,834.14717)" - x1="106" - y1="676.36218" - x2="106" - y2="600.36218" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="583.14899" - inkscape:cy="38.681128" - inkscape:document-units="px" - inkscape:current-layer="layer2" - showgrid="false" - inkscape:showpageshadow="false" - borderlayer="true" - showguides="false" - inkscape:guide-bbox="true" - inkscape:window-width="1364" - inkscape:window-height="698" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid4741" - empspacing="1" - visible="true" - enabled="true" - snapvisiblegridlinesonly="false" - dotted="false" - spacingx="1px" /> - <sodipodi:guide - orientation="0,1" - position="525,54" - id="guide4974" /> - <sodipodi:guide - orientation="0,1" - position="523,26" - id="guide4976" /> - <sodipodi:guide - orientation="1,0" - position="491,44" - id="guide4978" /> - <sodipodi:guide - orientation="1,0" - position="519,40" - id="guide4980" /> - <sodipodi:guide - orientation="0,1" - position="574,58" - id="guide4986" /> - <sodipodi:guide - orientation="0,1" - position="573,36" - id="guide4988" /> - <sodipodi:guide - orientation="1,0" - position="547,28" - id="guide4990" /> - <sodipodi:guide - orientation="1,0" - position="569,29" - id="guide4992" /> - <sodipodi:guide - orientation="0,1" - position="559,51" - id="guide4994" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Capa 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1036.3622)" - style="display:inline" - sodipodi:insensitive="true"> - <image - y="848.36218" - x="148" - id="image2993" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/chrome/skin/abp-icon-big.png" - height="100" - width="99" /> - <image - y="874.36218" - x="545" - id="image3004" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/chrome/skin/abp-status.png" - height="48" - width="24" /> - <image - y="880.36218" - x="593" - id="image3015" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/chrome/skin/abp-status-16.png" - height="32" - width="16" /> - <image - y="867.36218" - x="489" - id="image3026" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/chrome/skin/abp-status-32.png" - height="64" - width="32" /> - <image - y="875.36218" - x="410" - id="image3037" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/icon.png" - height="48" - width="48" /> - <image - y="867.36218" - x="310" - id="image3048" - xlink:href="file:///home/ru/Descargas/icecat/browser/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D/icon64.png" - height="64" - width="64" /> - <path - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3943);enable-background:accumulate" - d="M 175.28125,979.72855 146,1009.0098 l 0,41.4375 29.3125,29.2813 41.375,0 29.3125,-29.2813 0,-41.4375 -29.28125,-29.28125 -41.4375,0 z" - id="rect3061-0" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="M 175.28125,979.375 146,1008.6562 l 0,41.4376 29.3125,29.2812 41.375,0 29.3125,-29.2812 0,-41.4376 -29.28125,-29.2812 -41.4375,0 z" - id="rect3061" - inkscape:connector-curvature="0" /> - <path - style="opacity:0.31111115;color:#000000;fill:url(#linearGradient4312);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="M 175.28125,979.375 146,1008.6562 l 0,41.4376 29.3125,29.2812 41.375,0 29.3125,-29.2812 0,-41.4376 -29.28125,-29.2812 -41.4375,0 z" - id="rect3061-7" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#radialGradient4314);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="M 177.35312,984.375 151,1010.7281 l 0,37.2938 26.38125,26.3531 37.2375,0 26.38125,-26.3531 0,-37.2938 -26.35313,-26.3531 -37.29375,0 z" - id="rect3061-5" - inkscape:connector-curvature="0" /> - <g - id="g4014" - transform="matrix(1.0580966,0,0,1.0580966,79.991341,351.45172)"> - <text - sodipodi:linespacing="125%" - id="text3981-7" - y="654.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4010);font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#000000;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="654.36218" - x="70" - id="tspan3983-4" - sodipodi:role="line">SPY</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3981" - y="653.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="653.36218" - x="70" - id="tspan3983" - sodipodi:role="line">SPY</tspan></text> - </g> - <path - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3943-6);enable-background:accumulate" - d="m 10.281248,973.36216 -29.281249,29.28124 0,41.4375 29.312499,29.2813 41.375,0 29.312503,-29.2813 0,-41.4375 -29.281253,-29.28124 -41.4375,0 z" - id="rect3061-0-4" - inkscape:connector-curvature="0" - transform="matrix(0.54390042,0,0,0.54390042,323.49264,467.69441)" /> - <path - style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 329.08461,996.91421 -15.92608,15.92599 0,22.5378 15.94308,15.9261 22.50388,0 15.94309,-15.9261 0,-22.5378 -15.92609,-15.926 -22.53788,0 z" - id="rect3061-2" - inkscape:connector-curvature="0" /> - <path - style="opacity:0.31111115;color:#000000;fill:url(#linearGradient4306);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 329.08461,996.91421 -15.92608,15.92599 0,22.5378 15.94308,15.9261 22.50388,0 15.94309,-15.9261 0,-22.5378 -15.92609,-15.926 -22.53788,0 z" - id="rect3061-7-9" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#radialGradient4304);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 330.21151,999.63371 -14.33348,14.33329 0,20.2841 14.34878,14.3335 20.25349,0 14.34877,-14.3335 0,-20.2841 -14.33348,-14.3333 -20.28408,0 z" - id="rect3061-5-3" - inkscape:connector-curvature="0" /> - <g - id="g4014-38" - transform="matrix(0.57549919,0,0,0.57549919,277.25639,655.38645)"> - <text - sodipodi:linespacing="125%" - id="text3981-7-6" - y="654.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4010-3);font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#000000;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="654.36218" - x="70" - id="tspan3983-4-2" - sodipodi:role="line">SPY</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3981-2" - y="653.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="653.36218" - x="70" - id="tspan3983-5" - sodipodi:role="line">SPY</tspan></text> - </g> - <path - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3943-9);enable-background:accumulate" - d="m 5.2812483,964.3622 -29.2812493,29.2812 0,41.4375 29.3124993,29.2813 41.3749997,0 29.312503,-29.2813 0,-41.4375 -29.281253,-29.2812 -41.4374996,0 z" - id="rect3061-0-1" - inkscape:connector-curvature="0" - transform="matrix(0.43323501,0,0,0.43323501,426.04655,579.90498)" /> - <path - style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 428.33457,997.5472 -12.68566,12.6858 0,17.9522 12.6992,12.6856 17.9251,0 12.6992,-12.6856 0,-17.9522 -12.68566,-12.6858 -17.95218,0 z" - id="rect3061-776" - inkscape:connector-curvature="0" /> - <path - style="opacity:0.31111115;color:#000000;fill:url(#linearGradient4312-3);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 428.33457,997.5472 -12.68566,12.6858 0,17.9522 12.6992,12.6856 17.9251,0 12.6992,-12.6856 0,-17.9522 -12.68566,-12.6858 -17.95218,0 z" - id="rect3061-7-3" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#radialGradient4314-4);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 429.23218,999.7134 -11.4171,11.4172 0,16.1569 11.42929,11.4171 16.13259,0 11.42928,-11.4171 0,-16.1569 -11.4171,-11.4172 -16.15696,0 z" - id="rect3061-5-9" - inkscape:connector-curvature="0" /> - <g - id="g4014-0" - transform="matrix(0.45840449,0,0,0.45840449,387.05165,725.50892)"> - <text - sodipodi:linespacing="125%" - id="text3981-7-7" - y="654.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4010-9);font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#000000;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="654.36218" - x="70" - id="tspan3983-4-85" - sodipodi:role="line">SPY</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3981-0" - y="653.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="653.36218" - x="70" - id="tspan3983-7" - sodipodi:role="line">SPY</tspan></text> - </g> - <path - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3943-0);enable-background:accumulate" - d="M -118.71875,881.3622 -148,910.6434 l 0,41.4375 29.3125,29.2813 41.374998,0 29.312503,-29.2813 0,-41.4375 -29.281253,-29.2812 -41.437498,0 z" - id="rect3061-0-7" - inkscape:connector-curvature="0" - transform="matrix(0.21961917,0,0,0.21982414,579.52186,800.72032)" /> - <path - style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 553.44895,994.38749 -6.43073,6.43651 0,9.1091 6.4376,6.4365 9.08673,0 6.4376,-6.4365 0,-9.1091 -6.43073,-6.43651 -9.10047,0 z" - id="rect3061-26" - inkscape:connector-curvature="0" /> - <path - style="opacity:0.31111115;color:#000000;fill:url(#linearGradient4312-5);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 553.44895,994.38749 -6.43073,6.43651 0,9.1091 6.4376,6.4365 9.08673,0 6.4376,-6.4365 0,-9.1091 -6.43073,-6.43651 -9.10047,0 z" - id="rect3061-7-7" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#radialGradient4314-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 553.90398,995.48636 -5.78766,5.79314 0,8.1981 5.79383,5.7931 8.17808,0 5.79382,-5.7931 0,-8.1981 -5.78766,-5.79314 -8.19041,0 z" - id="rect3061-5-0" - inkscape:connector-curvature="0" /> - <g - id="g4014-9" - transform="matrix(0.2323783,0,0,0.24845898,532.98352,846.0285)"> - <text - sodipodi:linespacing="125%" - id="text3981-7-77" - y="654.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4010-4);font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#000000;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="654.36218" - x="70" - id="tspan3983-4-5" - sodipodi:role="line">SPY</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3981-07" - y="653.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="653.36218" - x="70" - id="tspan3983-50" - sodipodi:role="line">SPY</tspan></text> - </g> - <path - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3943-8);enable-background:accumulate" - d="m -5.7187517,988.3622 -29.2812493,29.2812 0,41.4375 29.3124993,29.2813 41.3749997,0 29.312503,-29.2813 0,-41.4375 -29.281253,-29.2812 -41.4374997,0 z" - id="rect3061-0-18" - inkscape:connector-curvature="0" - transform="matrix(0.2789036,0,0,0.27829346,500.89073,723.48832)" /> - <path - style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 499.29575,998.44468 -8.16665,8.14892 0,11.5318 8.17536,8.1488 11.53964,0 8.17536,-8.1488 0,-11.5318 -8.16665,-8.14892 -11.55706,0 z" - id="rect3061-9" - inkscape:connector-curvature="0" /> - <path - style="opacity:0.31111115;color:#000000;fill:url(#linearGradient4984);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 499.29575,998.44468 -8.16665,8.14892 0,11.5318 8.17536,8.1488 11.53964,0 8.17536,-8.1488 0,-11.5318 -8.16665,-8.14892 -11.55706,0 z" - id="rect3061-7-8" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#radialGradient4982);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 500.0275,1000.3622 -7.0275,7.0274 0,9.9452 7.035,7.0274 9.92999,0 7.03501,-7.0274 0,-9.9452 -7.02751,-7.0274 -9.94499,0 z" - id="rect3061-5-2" - inkscape:connector-curvature="0" /> - <g - id="g4014-7" - transform="matrix(0.29510693,0,0,0.29446134,472.83787,823.9723)"> - <text - sodipodi:linespacing="125%" - id="text3981-7-82" - y="654.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4010-5);font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#000000;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="654.36218" - x="70" - id="tspan3983-4-7" - sodipodi:role="line">SPY</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3981-5" - y="653.36218" - x="70" - style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - xml:space="preserve"><tspan - style="font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Montserrat Bold" - y="653.36218" - x="70" - id="tspan3983-2" - sodipodi:role="line">SPY</tspan></text> - </g> - <path - style="color:#000000;fill:url(#linearGradient4752);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 593,1004.6772 4.68495,4.685 6.6301,0 4.68495,-4.69 0,-6.62 -4.68495,-4.69 -6.6301,0 -4.68495,4.6849 0,6.6301 z" - id="rect3061-8" - inkscape:connector-curvature="0" /> - <path - style="color:#000000;fill:url(#linearGradient4774);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 603.9007,994.3622 4.0993,4.0993 0,5.8014 -4.1038,4.0993 -5.7924,0 -4.1038,-4.0993 0,-5.8014 4.0993,-4.0993 5.8014,0 z" - id="rect3061-5-91" - inkscape:connector-curvature="0" /> - <g - id="g4776-2" - style="fill:#000000;fill-opacity:1;filter:url(#filter4889)" - transform="translate(593,-43)"> - <path - sodipodi:nodetypes="ccccccccsccscccccscscccc" - inkscape:connector-curvature="0" - id="path4755-5" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 4.5278449,1042.4893 c -0.1701075,0 -0.3053195,0.053 -0.4056364,0.162 -0.095959,0.1027 -0.143937,0.2414 -0.1439355,0.4177 -1.5e-6,0.1705 0.058881,0.3068 0.1766481,0.4092 0.1221253,0.1027 0.1147259,0.2243 0.5465343,0.3663 0.4361654,0.1364 0.7741959,0.3439 1.0140919,0.6222 0.239888,0.2786 0.3598344,0.6848 0.3598376,1.219 -3.2e-6,0.5341 -0.1548437,0.9687 -0.4645182,1.304 -0.3053216,0.3295 -0.7087766,0.4944 -1.2103673,0.4944 -0.7240407,0 -1.0917454,-0.3494 -1.6718484,-1.0483 l 0.6084547,-0.9718 c 0.4928687,0.5626 0.6642979,0.8439 1.0830213,0.8439 0.1875499,0 0.3336662,-0.05 0.438349,-0.1534 0.1090394,-0.108 0.1635603,-0.2502 0.1635631,-0.4262 -2.8e-6,-0.1819 -0.056705,-0.3239 -0.1701056,-0.4261 -0.1134063,-0.1081 -0.053667,-0.216 -0.3895137,-0.324 -0.5321267,-0.1647 -0.9224969,-0.3778 -1.1711117,-0.6392 -0.2442549,-0.2672 -0.3663818,-0.6819 -0.3663814,-1.2446 -4e-7,-0.5681 0.1548391,-1.0057 0.4645191,-1.3125 0.31404,-0.3069 0.7044102,-0.4603 1.1711118,-0.4603 0.3053154,0 0.3262668,0.069 0.6315872,0.2046 0.3053145,0.1364 0.5713763,0.3296 0.7981878,0.5796 l -0.5168593,0.9716 c -0.396916,-0.392 -0.5225476,-0.5881 -0.9456284,-0.5881" /> - <path - sodipodi:nodetypes="ccccscccccccccsccc" - inkscape:connector-curvature="0" - id="path4757-0" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 8.337322,1041.3622 c 0.5811287,0 1.0034414,0.1803 1.2669362,0.5408 0.267098,0.3548 0.4006478,0.9041 0.4006518,1.648 -4e-6,0.7382 -0.1371645,1.2791 -0.4114803,1.6224 -0.2707134,0.3433 -0.6858071,0.515 -1.2452783,0.515 l -0.381656,0 0,1.6738 -0.9664954,0 0,-6 1.337322,0 m 0.0758,3.1674 c 0.2815401,0 0.4728429,-0.089 0.5739123,-0.2661 0.1010626,-0.1831 0.1515968,-0.4463 0.1515994,-0.7897 -2.6e-6,-0.3491 -0.066779,-0.5951 -0.2003284,-0.7382 -0.1299446,-0.1488 -0.3338818,-0.2232 -0.6118116,-0.2232 l -0.3599986,0 0,2.0172 0.4466269,0" /> - <path - inkscape:connector-curvature="0" - id="path4759-9" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 13.001968,1047.3622 -0.996126,0 0,-2.3691 -1.545276,-3.6309 1.079139,0 0.9642,2.2318 0.964199,-2.2318 1.079138,0 -1.545274,3.6309 0,2.3691" /> - </g> - <g - id="g4776" - transform="translate(593,-43)"> - <path - sodipodi:nodetypes="ccccccccsccscccccscscccc" - inkscape:connector-curvature="0" - id="path4755" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 4.5278449,1042.4893 c -0.1701075,0 -0.3053195,0.053 -0.4056364,0.162 -0.095959,0.1027 -0.143937,0.2414 -0.1439355,0.4177 -1.5e-6,0.1705 0.058881,0.3068 0.1766481,0.4092 0.1221253,0.1027 0.1147259,0.2243 0.5465343,0.3663 0.4361654,0.1364 0.7741959,0.3439 1.0140919,0.6222 0.239888,0.2786 0.3598344,0.6848 0.3598376,1.219 -3.2e-6,0.5341 -0.1548437,0.9687 -0.4645182,1.304 -0.3053216,0.3295 -0.7087766,0.4944 -1.2103673,0.4944 -0.7240407,0 -1.0917454,-0.3494 -1.6718484,-1.0483 l 0.6084547,-0.9718 c 0.4928687,0.5626 0.6642979,0.8439 1.0830213,0.8439 0.1875499,0 0.3336662,-0.05 0.438349,-0.1534 0.1090394,-0.108 0.1635603,-0.2502 0.1635631,-0.4262 -2.8e-6,-0.1819 -0.056705,-0.3239 -0.1701056,-0.4261 -0.1134063,-0.1081 -0.053667,-0.216 -0.3895137,-0.324 -0.5321267,-0.1647 -0.9224969,-0.3778 -1.1711117,-0.6392 -0.2442549,-0.2672 -0.3663818,-0.6819 -0.3663814,-1.2446 -4e-7,-0.5681 0.1548391,-1.0057 0.4645191,-1.3125 0.31404,-0.3069 0.7044102,-0.4603 1.1711118,-0.4603 0.3053154,0 0.3262668,0.069 0.6315872,0.2046 0.3053145,0.1364 0.5713763,0.3296 0.7981878,0.5796 l -0.5168593,0.9716 c -0.396916,-0.392 -0.5225476,-0.5881 -0.9456284,-0.5881" /> - <path - sodipodi:nodetypes="ccccscccccccccsccc" - inkscape:connector-curvature="0" - id="path4757" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 8.337322,1041.3622 c 0.5811287,0 1.0034414,0.1803 1.2669362,0.5408 0.267098,0.3548 0.4006478,0.9041 0.4006518,1.648 -4e-6,0.7382 -0.1371645,1.2791 -0.4114803,1.6224 -0.2707134,0.3433 -0.6858071,0.515 -1.2452783,0.515 l -0.381656,0 0,1.6738 -0.9664954,0 0,-6 1.337322,0 m 0.0758,3.1674 c 0.2815401,0 0.4728429,-0.089 0.5739123,-0.2661 0.1010626,-0.1831 0.1515968,-0.4463 0.1515994,-0.7897 -2.6e-6,-0.3491 -0.066779,-0.5951 -0.2003284,-0.7382 -0.1299446,-0.1488 -0.3338818,-0.2232 -0.6118116,-0.2232 l -0.3599986,0 0,2.0172 0.4466269,0" /> - <path - inkscape:connector-curvature="0" - id="path4759" - style="font-size:40.79177475px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat Bold" - d="m 13.001968,1047.3622 -0.996126,0 0,-2.3691 -1.545276,-3.6309 1.079139,0 0.9642,2.2318 0.964199,-2.2318 1.079138,0 -1.545274,3.6309 0,2.3691" /> - </g> - <path - style="opacity:0.07547171;color:#000000;fill:none;stroke:#000000;stroke-width:0.93333179;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 603.70732,994.8288 3.82601,3.826 0,5.4147 -3.83021,3.8261 -5.40624,0 -3.83021,-3.8261 0,-5.4147 3.82601,-3.826 5.41464,0 z" - id="rect3061-5-91-0" - inkscape:connector-curvature="0" /> - </g> - <g - inkscape:groupmode="layer" - id="layer2" - inkscape:label="Capa" - style="display:inline"> - <rect - style="opacity:0.31111115;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4310" - width="110" - height="110" - x="141" - y="-62.000015" /> - <rect - style="opacity:0.31111115;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4308" - width="64" - height="64" - x="308" - y="-44.000015" /> - <rect - style="opacity:0.31111115;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4398" - width="48" - height="48" - x="413" - y="-41.000015" /> - <rect - style="opacity:0.31111115;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4567" - width="24" - height="24" - x="546" - y="-43.000015" /> - <rect - style="opacity:0.31111115;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.45699978;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4543" - width="32" - height="32" - x="489" - y="-40.000015" /> - <rect - style="color:#000000;fill:#000000;fill-opacity:0.26881726;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4893" - width="16" - height="16" - x="593" - y="-43.000015" /> - </g> -</svg> diff --git a/helpers/DATA/firefox/gnu/bookmarks.html.in b/helpers/DATA/firefox/gnu/bookmarks.html.in deleted file mode 100644 index e8460a4..0000000 --- a/helpers/DATA/firefox/gnu/bookmarks.html.in +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE NETSCAPE-Bookmark-file-1> -<!-- This is an automatically generated file. - It will be read and overwritten. - DO NOT EDIT! --> -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> -<TITLE>Bookmarks</TITLE> -<H1>Bookmarks Menu</H1> - -<DL><p> - <DT><H3 ADD_DATE="1245542278" LAST_MODIFIED="1245543070" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3> -<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar - <DL><p> - <HR> - <DT><A HREF="http://www.gnu.org/" ADD_DATE="1245542746" LAST_MODIFIED="1245542763" ICON_URI="http://www.gnu.org/graphics/gnu-head-mini.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEkSURBVHicXdFNc4JADAbgoP0Bi4d6dcGBMzp2z2rrnjulcsavnKuQ9+83K37vDAN5yIZsILws0uv3i7ugLTnAwpjBOsTLOE4VmmKQTFYBioGNKkI5drcCReRItmNAyinSCjianJo6A/aGRtRjtPadpB5CRkQRUaYPGbXW4UgKMfXQxDnJPIeJ0qyOrclrLXoqou8+5p7HM9EkT/JtyEsqB2QYnRv7sT2ArRPLf0kWOp1sA3hYPq3Oh/t0EAjjVIG703II9awr3l3BhxAf5foMLaaasPEZqm5A+0RzGCmuIKJbWi284csIJbzykBQ3aIADsL2CFtBWpovhA1Td7Q6NzqZ/B+38APG3HxU+sYO4B9Akt+AnqGbp/gmwTN6eAWt+gcv6B4rivVin0bWbAAAAAElFTkSuQmCC">GNU's not UNIX!</A> - <DT><A FEEDURL="http://planet.gnu.org/atom.xml" HREF="http://planet.gnu.org/">GNU Planet</A> - <DT><A HREF="http://www.fsf.org/" ADD_DATE="1245542771" LAST_MODIFIED="1245542780" ICON_URI="http://www.fsf.org/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> - </DL><p> -</DL><p> diff --git a/helpers/DATA/firefox/gnu/branding/Makefile.in b/helpers/DATA/firefox/gnu/branding/Makefile.in deleted file mode 100644 index 9cc8935..0000000 --- a/helpers/DATA/firefox/gnu/branding/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -include $(topsrcdir)/config/config.mk - -PREF_JS_EXPORTS = $(srcdir)/pref/icecat-branding.js - -# On Windows only do this step for browser, skip for metro. -ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows browser) -BRANDING_FILES := \ - icecat.ico \ - document.ico \ - branding.nsi \ - appname.bmp \ - bgintro.bmp \ - bgplain.bmp \ - clock.bmp \ - particles.bmp \ - pencil.bmp \ - pencil-rtl.bmp \ - wizHeader.bmp \ - wizHeaderRTL.bmp \ - wizWatermark.bmp \ - newwindow.ico \ - newtab.ico \ - pbmode.ico \ - $(NULL) -endif - -ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) -BRANDING_FILES := \ - background.png \ - icecat.icns \ - disk.icns \ - document.icns \ - dsstore \ - $(NULL) -endif - -ifdef MOZ_WIDGET_GTK -BRANDING_FILES := \ - default16.png \ - default32.png \ - default48.png \ - mozicon128.png \ - $(NULL) -endif - -ifeq ($(OS_ARCH),OS2) -BRANDING_FILES := \ - icecat-os2.ico \ - document-os2.ico \ - $(NULL) -endif - -BRANDING_DEST := $(DIST)/branding -BRANDING_TARGET := export -INSTALL_TARGETS += BRANDING - -ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows metro) -VISUALMANIFEST := VisualElementsManifest.xml -VISUALMANIFEST_FLAGS := -Fsubstitution -DMOZ_APP_DISPLAYNAME=${MOZ_APP_DISPLAYNAME} -VISUALMANIFEST_PATH := $(DIST)/bin -PP_TARGETS += VISUALMANIFEST -endif - diff --git a/helpers/DATA/firefox/gnu/branding/VisualElementsManifest.xml b/helpers/DATA/firefox/gnu/branding/VisualElementsManifest.xml deleted file mode 100644 index f763409..0000000 --- a/helpers/DATA/firefox/gnu/branding/VisualElementsManifest.xml +++ /dev/null @@ -1,16 +0,0 @@ -<Application - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <VisualElements - DisplayName="@MOZ_APP_DISPLAYNAME@" - Logo="tileresources\VisualElements_logo.png" - SmallLogo="tileresources\VisualElements_smalllogo.png" - ForegroundText="light" - BackgroundColor="#0a1833"> - <DefaultTile - ShortName="@MOZ_APP_DISPLAYNAME@" - ShowName="allLogos" - /> - <SplashScreen - Image="tileresources\VisualElements_splashscreen.png" /> - </VisualElements> -</Application> diff --git a/helpers/DATA/firefox/gnu/branding/appname.bmp b/helpers/DATA/firefox/gnu/branding/appname.bmp Binary files differdeleted file mode 100644 index 69d9e0f..0000000 --- a/helpers/DATA/firefox/gnu/branding/appname.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/background.png b/helpers/DATA/firefox/gnu/branding/background.png Binary files differdeleted file mode 100644 index e52f31d..0000000 --- a/helpers/DATA/firefox/gnu/branding/background.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/bgintro.bmp b/helpers/DATA/firefox/gnu/branding/bgintro.bmp Binary files differdeleted file mode 100644 index 14214ce..0000000 --- a/helpers/DATA/firefox/gnu/branding/bgintro.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/bgplain.bmp b/helpers/DATA/firefox/gnu/branding/bgplain.bmp Binary files differdeleted file mode 100644 index c82f896..0000000 --- a/helpers/DATA/firefox/gnu/branding/bgplain.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/branding.nsi b/helpers/DATA/firefox/gnu/branding/branding.nsi deleted file mode 100644 index 9b6ab6a..0000000 --- a/helpers/DATA/firefox/gnu/branding/branding.nsi +++ /dev/null @@ -1,50 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# NSIS branding defines for official release builds. -# The nightly build branding.nsi is located in browser/installer/windows/nsis/ -# The unofficial build branding.nsi is located in browser/branding/unofficial/ - -# BrandFullNameInternal is used for some registry and file system values -# instead of BrandFullName and typically should not be modified. -!define BrandFullNameInternal "IceCat" -!define CompanyName "GNU" -!define URLInfoAbout "http://www.gnu.org/software/gnuzilla/" -!define URLUpdateInfo "http://www.gnu.org/software/gnuzilla/" - -!define URLStubDownload "http://www.gnu.org/software/gnuzilla/" -!define URLManualDownload "http://ftp.gnu.org/gnu/gnuzilla/" - -; The OFFICIAL define is a workaround to support different urls for Release and -; Beta since they share the same branding when building with other branches that -; set the update channel to beta. -!define OFFICIAL -!define Channel "release" - -# The installer's certificate name and issuer expected by the stub installer -!define CertNameDownload "Mozilla Corporation" -!define CertIssuerDownload "DigiCert Assured ID Code Signing CA-1" - -# Dialog units are used so the UI displays correctly with the system's DPI -# settings. -# The dialog units for the bitmap's dimensions should match exactly with the -# bitmap's width and height in pixels. -!define APPNAME_BMP_WIDTH_DU "134u" -!define APPNAME_BMP_HEIGHT_DU "36u" -!define INTRO_BLURB_WIDTH_DU "258u" -!define INTRO_BLURB_EDGE_DU "170u" -!define INTRO_BLURB_LTR_TOP_DU "20u" -!define INTRO_BLURB_RTL_TOP_DU "12u" - -# UI Colors that can be customized for each channel -!define FOOTER_CONTROL_TEXT_COLOR_NORMAL 0x000000 -!define FOOTER_CONTROL_TEXT_COLOR_FADED 0x666666 -!define FOOTER_BKGRD_COLOR 0xFFFFFF -!define INTRO_BLURB_TEXT_COLOR 0x666666 -!define OPTIONS_TEXT_COLOR_NORMAL 0x000000 -!define OPTIONS_TEXT_COLOR_FADED 0x666666 -!define OPTIONS_BKGRD_COLOR 0xF0F0F0 -!define INSTALL_BLURB_TEXT_COLOR 0x666666 -!define INSTALL_PROGRESS_TEXT_COLOR_NORMAL 0x666666 -!define INSTALL_PROGRESS_TEXT_COLOR_FADED 0x999999 diff --git a/helpers/DATA/firefox/gnu/branding/clock.bmp b/helpers/DATA/firefox/gnu/branding/clock.bmp Binary files differdeleted file mode 100644 index c74398e..0000000 --- a/helpers/DATA/firefox/gnu/branding/clock.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/configure.sh b/helpers/DATA/firefox/gnu/branding/configure.sh deleted file mode 100644 index 7481c2c..0000000 --- a/helpers/DATA/firefox/gnu/branding/configure.sh +++ /dev/null @@ -1,5 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -MOZ_APP_DISPLAYNAME=IceCat diff --git a/helpers/DATA/firefox/gnu/branding/content/Makefile.in b/helpers/DATA/firefox/gnu/branding/content/Makefile.in deleted file mode 100644 index 2d17f36..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Branding Makefile -# - jars chrome artwork - -# resources needed for the metro tile interface -ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows metro) -TILE_FILES := $(wildcard $(srcdir)/VisualElements*) -TILE_DEST := $(DIST)/bin/tileresources -INSTALL_TARGETS += TILE -endif diff --git a/helpers/DATA/firefox/gnu/branding/content/VisualElements_logo.png b/helpers/DATA/firefox/gnu/branding/content/VisualElements_logo.png Binary files differdeleted file mode 100644 index 0cbf367..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/VisualElements_logo.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/VisualElements_smalllogo.png b/helpers/DATA/firefox/gnu/branding/content/VisualElements_smalllogo.png Binary files differdeleted file mode 100644 index 425f9fd..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/VisualElements_smalllogo.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/VisualElements_splashscreen.png b/helpers/DATA/firefox/gnu/branding/content/VisualElements_splashscreen.png Binary files differdeleted file mode 100644 index 484ac2f..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/VisualElements_splashscreen.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/about-background.png b/helpers/DATA/firefox/gnu/branding/content/about-background.png Binary files differdeleted file mode 100644 index f626f74..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/about-background.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/about-logo.png b/helpers/DATA/firefox/gnu/branding/content/about-logo.png Binary files differdeleted file mode 100644 index 554a13d..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/about-logo.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/about-logo@2x.png b/helpers/DATA/firefox/gnu/branding/content/about-logo@2x.png Binary files differdeleted file mode 100644 index 1c4dea8..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/about-logo@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/about-wordmark.svg b/helpers/DATA/firefox/gnu/branding/content/about-wordmark.svg deleted file mode 100644 index 7c73566..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/about-wordmark.svg +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="aboutWordmark" - x="0px" - y="0px" - width="130px" - height="38px" - viewBox="0 0 130 38" - xml:space="preserve" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="about-wordmark.svg"><metadata - id="metadata9"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs7" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1678" - inkscape:window-height="980" - id="namedview5" - showgrid="false" - inkscape:zoom="12.361033" - inkscape:cx="65.19257" - inkscape:cy="11.28883" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="aboutWordmark" /> - - - - - -<g - style="font-size:29.90496063px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Montserrat;-inkscape-font-specification:Montserrat" - id="text2985-3"><path - d="m 7.5040834,20.952038 c 0.99797,1.6e-5 1.8577666,0.138197 2.5793926,0.414545 0.721604,0.276379 1.435542,0.706277 2.141816,1.289696 l -1.174544,1.220605 c -1.0594042,-0.84443 -2.2262709,-1.266651 -3.500604,-1.266666 -1.3050564,1.5e-5 -2.4105091,0.537388 -3.3163613,1.61212 -0.9058618,1.059405 -1.3587904,2.694554 -1.3587869,4.905451 -3.5e-6,4.375758 1.4969637,6.563634 4.4909059,6.563632 1.1822123,2e-6 2.2108974,-0.253331 3.0860583,-0.759999 l 0,-4.951512 -2.8787857,0 -0.2303029,-1.63515 5.0896936,0 0,7.623025 c -1.550718,0.921211 -3.2856642,1.381817 -5.204845,1.381817 -2.0113175,0 -3.592729,-0.698585 -4.7442391,-2.095756 C 1.3319647,33.856678 0.75620807,31.814661 0.75620941,29.127789 0.75620807,26.563761 1.416409,24.560128 2.7368141,23.116885 4.0572125,21.673669 5.6463007,20.952054 7.5040834,20.952038" - style="font-size:23.03028679px;font-weight:normal;fill:#ffffff;-inkscape-font-specification:Fira Sans" - id="path2987" /><path - d="m 27.21585,21.228401 0,15.844837 -2.671513,0 -6.678783,-13.65696 c 0.184238,2.026677 0.276359,4.03031 0.276363,6.010905 l 0,7.646055 -1.865453,0 0,-15.844837 2.602422,0 6.724844,13.67999 c -0.1689,-1.596762 -0.253345,-3.201204 -0.253333,-4.81333 l 0,-8.86666 1.865453,0" - style="font-size:23.03028679px;font-weight:normal;fill:#ffffff;-inkscape-font-specification:Fira Sans" - id="path2989" /><path - d="m 42.660895,21.228401 0,10.801205 c -1.3e-5,1.59677 -0.483648,2.886464 -1.450908,3.869088 -0.951929,0.967272 -2.295361,1.450908 -4.0303,1.450908 -1.750307,0 -3.093739,-0.483636 -4.0303,-1.450908 -0.936568,-0.96727 -1.40485,-2.256965 -1.404848,-3.869088 l 0,-10.801205 1.980605,0 0,10.639993 c -4e-6,2.51798 1.151509,3.776968 3.454543,3.776967 2.303019,10e-7 3.454532,-1.258987 3.454543,-3.776967 l 0,-10.639993 2.026665,0" - style="font-size:23.03028679px;font-weight:normal;fill:#ffffff;-inkscape-font-specification:Fira Sans" - id="path2991" /><path - d="m 51.654545,16.349101 0,20.724137 -4.904413,0 0,-20.724137 4.904413,0" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path2993" /><path - d="m 62.358188,20.68532 c 2.093336,1.6e-5 3.907568,0.647956 5.442702,1.943822 l -2.063442,2.840972 c -0.95697,-0.777517 -1.953801,-1.166281 -2.990496,-1.166294 -2.133227,1.3e-5 -3.199837,1.644784 -3.199831,4.934319 -6e-6,1.674684 0.269139,2.860913 0.807434,3.55869 0.538282,0.697786 1.31581,1.046677 2.332587,1.046674 0.956949,3e-6 1.943812,-0.388761 2.960591,-1.166294 l 2.153157,3.020401 c -1.575007,1.256009 -3.359334,1.884012 -5.352988,1.884013 -2.432276,-10e-7 -4.35616,-0.747624 -5.771657,-2.242872 -1.395566,-1.515182 -2.093348,-3.538749 -2.093347,-6.070707 -10e-7,-2.55188 0.707749,-4.61532 2.123252,-6.190327 1.415497,-1.594916 3.299508,-2.392381 5.652038,-2.392397" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path2995" /><path - d="m 76.017276,20.68532 c 2.292703,1.6e-5 4.086999,0.717735 5.382893,2.153157 1.295867,1.435451 1.943807,3.429113 1.943823,5.980992 -1.6e-5,0.657917 -0.02992,1.226111 -0.08971,1.704583 l -9.808827,0 c 0.13955,1.33576 0.508378,2.272781 1.106483,2.811066 0.598092,0.538293 1.425462,0.807437 2.482112,0.807434 1.176251,3e-6 2.442226,-0.468507 3.79793,-1.405533 l 1.943822,2.631637 c -1.854121,1.475311 -3.917561,2.212966 -6.190327,2.212967 -2.571833,-10e-7 -4.545558,-0.757592 -5.921182,-2.272777 -1.37563,-1.515182 -2.063443,-3.548717 -2.063442,-6.100612 -10e-7,-2.472133 0.647939,-4.505669 1.943822,-6.100612 1.315814,-1.614853 3.140015,-2.422286 5.472608,-2.422302 m -2.601731,6.997761 5.293178,0 0,-0.209335 c -0.03989,-2.432258 -0.897159,-3.648392 -2.571827,-3.648405 -0.81741,1.3e-5 -1.445413,0.299062 -1.884012,0.897149 -0.438613,0.578174 -0.717725,1.565037 -0.837339,2.960591" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path2997" /><path - d="m 94.549005,15.840716 c 2.47213,2.2e-5 4.605349,0.757613 6.399665,2.272777 l -2.392401,2.840972 c -1.156338,-0.996815 -2.392409,-1.495231 -3.708215,-1.495248 -1.375637,1.7e-5 -2.472151,0.598116 -3.289546,1.794297 -0.797472,1.176277 -1.196204,2.980541 -1.196198,5.412798 -6e-6,2.412342 0.398726,4.206637 1.196198,5.382893 0.817395,1.156329 1.943814,1.734491 3.379261,1.734488 1.196187,3e-6 2.541908,-0.578159 4.03717,-1.734488 l 2.212971,2.870876 c -1.734507,1.774362 -3.89763,2.661541 -6.489381,2.661542 -2.89082,-10e-7 -5.1935,-0.94699 -6.908046,-2.840972 -1.714552,-1.913913 -2.571827,-4.605357 -2.571826,-8.074339 -10e-7,-3.389215 0.867242,-6.040786 2.601731,-7.954719 1.734483,-1.913898 3.977353,-2.870855 6.728617,-2.870877" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path2999" /><path - d="m 109.29869,20.68532 c 2.27277,1.6e-5 3.93748,0.468527 4.99413,1.405533 1.05663,0.937036 1.58495,2.342568 1.58496,4.2166 l 0,6.160421 c -1e-5,0.598104 0.0797,1.036709 0.23924,1.315819 0.17942,0.279116 0.45853,0.48845 0.83734,0.628004 l -0.98686,3.080211 c -0.97691,-0.07975 -1.77438,-0.289082 -2.3924,-0.628004 -0.59811,-0.338923 -1.07659,-0.88718 -1.43544,-1.644773 -1.03671,1.574995 -2.63164,2.362491 -4.78479,2.362492 -1.575,-10e-7 -2.83101,-0.458543 -3.76803,-1.375628 -0.93702,-0.917084 -1.40553,-2.113281 -1.40553,-3.588596 0,-1.734481 0.63797,-3.060267 1.91392,-3.97736 1.27594,-0.917076 3.12008,-1.375618 5.53242,-1.375628 l 1.61486,0 0,-0.687814 c -10e-6,-0.93701 -0.19937,-1.574982 -0.59809,-1.913917 -0.39875,-0.358847 -1.09653,-0.538277 -2.09335,-0.53829 -1.1364,1.3e-5 -2.52199,0.279126 -4.15679,0.837339 l -1.07658,-3.110116 c 2.09334,-0.777513 4.08701,-1.166277 5.98099,-1.166293 m 1.94382,9.180823 -1.16629,0 c -2.13323,7e-6 -3.19984,0.777535 -3.19983,2.332587 -1e-5,0.637977 0.15949,1.136392 0.47848,1.495248 0.33892,0.338926 0.79746,0.508387 1.37563,0.508384 1.05663,3e-6 1.89397,-0.498412 2.51201,-1.495248 l 0,-2.840971" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path3001" /><path - d="m 124.84414,17.216345 0,3.977359 3.6484,0 -0.50838,3.289546 -3.14002,0 0,7.29681 c -10e-6,0.737661 0.11961,1.265981 0.35886,1.584963 0.23923,0.31899 0.61802,0.478483 1.13639,0.47848 0.55821,3e-6 1.12641,-0.179427 1.70458,-0.53829 l 1.58496,3.020401 c -1.19621,0.837339 -2.63164,1.256008 -4.30631,1.256009 -3.46898,-0.01994 -5.20347,-1.933853 -5.20347,-5.741753 l 0,-7.35662 -2.24287,0 0,-3.289546 2.24287,0 0,-3.43907 4.72499,-0.538289" - style="font-weight:bold;fill:#ffffff;font-family:Fira Sans;-inkscape-font-specification:Fira Sans Bold" - id="path3003" /></g> -</svg>
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/branding/content/about.png b/helpers/DATA/firefox/gnu/branding/content/about.png Binary files differdeleted file mode 100644 index eaa1a31..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/about.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/aboutDialog.css b/helpers/DATA/firefox/gnu/branding/content/aboutDialog.css deleted file mode 100644 index 4c2a7b6..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/aboutDialog.css +++ /dev/null @@ -1,25 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#aboutDialogContainer { - background-image: url("chrome://branding/content/about-background.png"); - background-repeat: no-repeat; - background-color: #000; - color: #fff; -} - -.text-link { - color: #fff !important; - text-decoration: underline; -} - -#rightBox { - /* this margin prevents text from overlapping the planet image */ - margin-left: 280px; - margin-right: 20px; -} - -#bottomBox { - background-color: rgba(0,0,0,.7); -} diff --git a/helpers/DATA/firefox/gnu/branding/content/icon48.png b/helpers/DATA/firefox/gnu/branding/content/icon48.png Binary files differdeleted file mode 100644 index 2f18a7d..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/icon48.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/icon64.png b/helpers/DATA/firefox/gnu/branding/content/icon64.png Binary files differdeleted file mode 100644 index 16e1d6e..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/icon64.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand.png b/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand.png Binary files differdeleted file mode 100644 index b26b76d..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand@2x.png b/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand@2x.png Binary files differdeleted file mode 100644 index 41e9a1d..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/identity-icons-brand@2x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/jar.mn b/helpers/DATA/firefox/gnu/branding/content/jar.mn deleted file mode 100644 index dc07b3d..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/jar.mn +++ /dev/null @@ -1,27 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -browser.jar: -% content branding %content/branding/ contentaccessible=yes - content/branding/about.png (about.png) - content/branding/about-background.png (about-background.png) - content/branding/about-logo.png (about-logo.png) - content/branding/about-logo@2x.png (about-logo@2x.png) - content/branding/about-wordmark.svg (about-wordmark.svg) - content/branding/icon48.png (icon48.png) - content/branding/icon64.png (icon64.png) - content/branding/icon16.png (../default16.png) - content/branding/icon32.png (../default32.png) - content/branding/icon128.png (../mozicon128.png) - content/branding/identity-icons-brand.png (identity-icons-brand.png) - content/branding/identity-icons-brand@2x.png (identity-icons-brand@2x.png) - content/branding/aboutDialog.css (aboutDialog.css) -#ifdef MOZ_METRO - content/branding/metro-about.css (metro-about.css) - content/branding/metro-about-footer.png (metro-about-footer.png) - content/branding/metro-about-wordmark.png (metro-about-wordmark.png) - content/branding/metro_firstrun_logo.png (metro_firstrun_logo.png) - content/branding/metro_firstrun_logo@1.4x.png (metro_firstrun_logo@1.4x.png) - content/branding/metro_firstrun_logo@1.8x.png (metro_firstrun_logo@1.8x.png) -#endif diff --git a/helpers/DATA/firefox/gnu/branding/content/metro-about-footer.png b/helpers/DATA/firefox/gnu/branding/content/metro-about-footer.png Binary files differdeleted file mode 100644 index c81a520..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro-about-footer.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/metro-about-wordmark.png b/helpers/DATA/firefox/gnu/branding/content/metro-about-wordmark.png Binary files differdeleted file mode 100644 index 58b1390..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro-about-wordmark.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/metro-about.css b/helpers/DATA/firefox/gnu/branding/content/metro-about.css deleted file mode 100644 index ae59ca7..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro-about.css +++ /dev/null @@ -1,14 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#about-flyoutpanel { - background-color: #002147; - color: white; -} - -#about-policy-label:hover, -#about-policy-label:active { - background: #0a111c; -} - diff --git a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo.png b/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo.png Binary files differdeleted file mode 100644 index 8ad7f27..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.4x.png b/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.4x.png Binary files differdeleted file mode 100644 index 8a247a8..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.4x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.8x.png b/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.8x.png Binary files differdeleted file mode 100644 index a716c58..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/metro_firstrun_logo@1.8x.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/content/moz.build b/helpers/DATA/firefox/gnu/branding/content/moz.build deleted file mode 100644 index c97072b..0000000 --- a/helpers/DATA/firefox/gnu/branding/content/moz.build +++ /dev/null @@ -1,7 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/branding/default16.png b/helpers/DATA/firefox/gnu/branding/default16.png Binary files differdeleted file mode 100644 index d2728b4..0000000 --- a/helpers/DATA/firefox/gnu/branding/default16.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/default32.png b/helpers/DATA/firefox/gnu/branding/default32.png Binary files differdeleted file mode 100644 index b485806..0000000 --- a/helpers/DATA/firefox/gnu/branding/default32.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/default48.png b/helpers/DATA/firefox/gnu/branding/default48.png Binary files differdeleted file mode 100644 index 2f18a7d..0000000 --- a/helpers/DATA/firefox/gnu/branding/default48.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/disk.icns b/helpers/DATA/firefox/gnu/branding/disk.icns Binary files differdeleted file mode 100644 index 718f1a3..0000000 --- a/helpers/DATA/firefox/gnu/branding/disk.icns +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/document-os2.ico b/helpers/DATA/firefox/gnu/branding/document-os2.ico Binary files differdeleted file mode 100644 index 214e92c..0000000 --- a/helpers/DATA/firefox/gnu/branding/document-os2.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/document.icns b/helpers/DATA/firefox/gnu/branding/document.icns Binary files differdeleted file mode 100644 index ff419f2..0000000 --- a/helpers/DATA/firefox/gnu/branding/document.icns +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/document.ico b/helpers/DATA/firefox/gnu/branding/document.ico Binary files differdeleted file mode 100644 index 3c8e283..0000000 --- a/helpers/DATA/firefox/gnu/branding/document.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/dsstore b/helpers/DATA/firefox/gnu/branding/dsstore Binary files differdeleted file mode 100644 index 2d11482..0000000 --- a/helpers/DATA/firefox/gnu/branding/dsstore +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/icecat-os2.ico b/helpers/DATA/firefox/gnu/branding/icecat-os2.ico Binary files differdeleted file mode 100644 index 560d198..0000000 --- a/helpers/DATA/firefox/gnu/branding/icecat-os2.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/icecat.icns b/helpers/DATA/firefox/gnu/branding/icecat.icns Binary files differdeleted file mode 100644 index 0c6941a..0000000 --- a/helpers/DATA/firefox/gnu/branding/icecat.icns +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/icecat.ico b/helpers/DATA/firefox/gnu/branding/icecat.ico Binary files differdeleted file mode 100644 index a6a7817..0000000 --- a/helpers/DATA/firefox/gnu/branding/icecat.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/locales/Makefile.in b/helpers/DATA/firefox/gnu/branding/locales/Makefile.in deleted file mode 100644 index 82f614e..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/Makefile.in +++ /dev/null @@ -1,5 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DEFINES += -DAB_CD=$(AB_CD) diff --git a/helpers/DATA/firefox/gnu/branding/locales/browserconfig.properties b/helpers/DATA/firefox/gnu/branding/locales/browserconfig.properties deleted file mode 100644 index 72ab4be..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/browserconfig.properties +++ /dev/null @@ -1,6 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Do NOT localize or otherwise change these values -browser.startup.homepage=about:icecat diff --git a/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.dtd b/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.dtd deleted file mode 100644 index 519de9b..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.dtd +++ /dev/null @@ -1,8 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - -<!ENTITY brandShortName "IceCat"> -<!ENTITY brandFullName "IceCat"> -<!ENTITY vendorShortName "GNU"> -<!ENTITY trademarkInfo.part1 ""> diff --git a/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.properties b/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.properties deleted file mode 100644 index 3120429..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/en-US/brand.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -brandShortName=IceCat -brandFullName=IceCat -vendorShortName=GNU - -homePageSingleStartMain=IceCat Start, a fast home page with built-in search -homePageImport=Import your home page from %S - -homePageMigrationPageTitle=Home Page Selection -homePageMigrationDescription=Please select the home page you wish to use: - -syncBrandShortName=Sync diff --git a/helpers/DATA/firefox/gnu/branding/locales/jar.mn b/helpers/DATA/firefox/gnu/branding/locales/jar.mn deleted file mode 100644 index ff4e055..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/jar.mn +++ /dev/null @@ -1,12 +0,0 @@ -#filter substitution -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - -@AB_CD@.jar: -% locale branding @AB_CD@ %locale/branding/ -# Unofficial branding only exists in en-US - locale/branding/brand.dtd (en-US/brand.dtd) - locale/branding/brand.properties (en-US/brand.properties) - locale/branding/browserconfig.properties (browserconfig.properties) diff --git a/helpers/DATA/firefox/gnu/branding/locales/moz.build b/helpers/DATA/firefox/gnu/branding/locales/moz.build deleted file mode 100644 index 3a54c0c..0000000 --- a/helpers/DATA/firefox/gnu/branding/locales/moz.build +++ /dev/null @@ -1,9 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID'] - -JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/branding/moz.build b/helpers/DATA/firefox/gnu/branding/moz.build deleted file mode 100644 index 3e2f88f..0000000 --- a/helpers/DATA/firefox/gnu/branding/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DIRS += ['content', 'locales'] - -DIST_SUBDIR = 'browser' -export('DIST_SUBDIR') diff --git a/helpers/DATA/firefox/gnu/branding/mozicon128.png b/helpers/DATA/firefox/gnu/branding/mozicon128.png Binary files differdeleted file mode 100644 index 6d922fd..0000000 --- a/helpers/DATA/firefox/gnu/branding/mozicon128.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/newtab.ico b/helpers/DATA/firefox/gnu/branding/newtab.ico Binary files differdeleted file mode 100644 index 6e3fee6..0000000 --- a/helpers/DATA/firefox/gnu/branding/newtab.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/newwindow.ico b/helpers/DATA/firefox/gnu/branding/newwindow.ico Binary files differdeleted file mode 100644 index a300935..0000000 --- a/helpers/DATA/firefox/gnu/branding/newwindow.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/particles.bmp b/helpers/DATA/firefox/gnu/branding/particles.bmp Binary files differdeleted file mode 100644 index ab74ce0..0000000 --- a/helpers/DATA/firefox/gnu/branding/particles.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/pbmode.ico b/helpers/DATA/firefox/gnu/branding/pbmode.ico Binary files differdeleted file mode 100644 index d217994..0000000 --- a/helpers/DATA/firefox/gnu/branding/pbmode.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/pencil-rtl.bmp b/helpers/DATA/firefox/gnu/branding/pencil-rtl.bmp Binary files differdeleted file mode 100644 index e50d92d..0000000 --- a/helpers/DATA/firefox/gnu/branding/pencil-rtl.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/pencil.bmp b/helpers/DATA/firefox/gnu/branding/pencil.bmp Binary files differdeleted file mode 100644 index 252c10f..0000000 --- a/helpers/DATA/firefox/gnu/branding/pencil.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/pref/icecat-branding.js b/helpers/DATA/firefox/gnu/branding/pref/icecat-branding.js deleted file mode 100644 index 58a869e..0000000 --- a/helpers/DATA/firefox/gnu/branding/pref/icecat-branding.js +++ /dev/null @@ -1,24 +0,0 @@ -pref("startup.homepage_override_url","http://www.gnu.org"); -pref("startup.homepage_welcome_url","http://www.gnu.org/software/gnuzilla/"); -// The time interval between checks for a new version (in seconds) -// nightly=8 hours, official=24 hours -pref("app.update.interval", 86400); -// The time interval between the downloading of mar file chunks in the -// background (in seconds) -pref("app.update.download.backgroundInterval", 60); -// URL user can browse to manually if for some reason all update installation -// attempts fail. -pref("app.update.url.manual", "http://www.gnu.org/software/gnuzilla/"); -// A default value for the "More information about this update" link -// supplied in the "An update is available" page of the update wizard. -pref("app.update.url.details", "http://www.gnu.org/software/gnuzilla/"); - -// Release notes and vendor URLs -pref("app.releaseNotesURL", "http://www.gnu.org/software/gnuzilla/"); -pref("app.vendorURL", "http://www.gnu.org/"); - -// Search codes belong only in builds with official branding -pref("browser.search.param.yahoo-fr", ""); -pref("browser.search.param.yahoo-fr-cjkt", ""); // now unused -pref("browser.search.param.yahoo-fr-ja", ""); -pref("browser.search.param.yahoo-f-CN", ""); diff --git a/helpers/DATA/firefox/gnu/branding/wizHeader.bmp b/helpers/DATA/firefox/gnu/branding/wizHeader.bmp Binary files differdeleted file mode 100644 index 87e5b0e..0000000 --- a/helpers/DATA/firefox/gnu/branding/wizHeader.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/wizHeaderRTL.bmp b/helpers/DATA/firefox/gnu/branding/wizHeaderRTL.bmp Binary files differdeleted file mode 100644 index c7f98e7..0000000 --- a/helpers/DATA/firefox/gnu/branding/wizHeaderRTL.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/branding/wizWatermark.bmp b/helpers/DATA/firefox/gnu/branding/wizWatermark.bmp Binary files differdeleted file mode 100644 index 971b8c0..0000000 --- a/helpers/DATA/firefox/gnu/branding/wizWatermark.bmp +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/LICENSE b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/LICENSE deleted file mode 100644 index 10d1ec6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Extension built by Ruben Rodriguez using pieces of torbutton as a template - -Copyright (c) 2014, Ruben Rodriguez <ruben@gnu.org> -Copyright (c) 2013, The Tor Project, Inc. -Copyright (c) 2006 Scott Squires, Oleg Ivanov - -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. - diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome.manifest b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome.manifest deleted file mode 100644 index d2eafb9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome.manifest +++ /dev/null @@ -1,8 +0,0 @@ -content icecathome chrome/content/ - -locale icecathome af chrome/locale/es/ -locale icecathome ak chrome/locale/en/ - -component {a364a9c0-2960-11e4-8c21-0800200c9a66} components/aboutIceCat.js -contract @mozilla.org/network/protocol/about;1?what=icecat {a364a9c0-2960-11e4-8c21-0800200c9a66} - diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/content/aboutIceCat/aboutIceCat.xhtml b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/content/aboutIceCat/aboutIceCat.xhtml deleted file mode 100644 index a4a433b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/content/aboutIceCat/aboutIceCat.xhtml +++ /dev/null @@ -1,289 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - -<!DOCTYPE html [ - <!ENTITY % htmlDTD - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "DTD/xhtml1-strict.dtd"> - %htmlDTD; - <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd"> - %globalDTD; - <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd"> - %aboutHomeDTD; - <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" > - %browserDTD; -]> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>&abouthome.pageTitle;</title> - - <link rel="icon" type="image/png" id="favicon" - href="chrome://branding/content/icon32.png"/> - <link rel="stylesheet" type="text/css" media="all" - href="chrome://browser/content/abouthome/aboutHome.css"/> - -<style> - -label{ -position:relative; -bottom:2px; -left:2px; -} - -#addonsform form{ -position:relative; -left:10px; -} - -em { -color:#600 -} - -a{ -color:#004998 -} - -#addonsform{ -background-color:#fff; -font-size:14px; -padding:10px 30px 20px 30px; -border-radius: 10px; -box-shadow: 0px 0px 5px #888888; -} - -.block-side-margin { - min-width: 16px; - -moz-box-flex: 1; -} - -#block-horizontal-margin { - display: -moz-box; - -moz-box-flex: 1; -} - -ul li { -list-style:none; -background:#ddd; -border-radius:3px; -padding:3px 5px 3px 5px; -margin:5px; -box-shadow: 0px 2px 0 #ccc ; -float:left; -} - -ul li a{ -font-weight:bold; -color:#666; -text-shadow:0px 1px 0px #fff; -} - -#trisquel a { -font-weight:bold; -color:#56728C; -text-shadow:0px 1px 0px #fff; -} - -#footer{ -min-height:100px; -} - -</style> - -<script type="text/javascript"> -<![CDATA[ - -Components.utils.import("resource://gre/modules/AddonManager.jsm"); -Components.utils.import("resource://gre/modules/Services.jsm"); - -function flip(sel){ - var id = sel.id; - var addonObj=-1; - AddonManager.getAddonByID(id, function(addon) { - addonObj=addon; - }); - var thread = Components.classes["@mozilla.org/thread-manager;1"].getService().currentThread; - while (addonObj == null || addonObj == -1) - thread.processNextEvent(true); - addonObj.userDisabled = addonObj.isActive; - if ( addonObj.operationsRequiringRestart != 0) - alert("This change will be applied when you restart IceCat"); -} - -function languagesettings(sel){ - if (sel.checked) - Services.prefs.setCharPref(sel.id,sel.value); - else - Services.prefs.clearUserPref(sel.id); -} - -function fontsettings(sel){ - if (sel.checked) - Services.prefs.setIntPref(sel.id,sel.value); - else - Services.prefs.clearUserPref(sel.id); -} - -function jssettings(sel){ - if (sel.checked){ - Services.prefs.setBoolPref(sel.id, !sel.checked);} - else - Services.prefs.clearUserPref(sel.id); -} - -function prepare(){ - -/*try { -Services.prefs.getCharPref("extensions.icecathome.intl.accept_languages"); -}catch(err){ -Services.prefs.setCharPref("intl.accept_languages","en-US, en"); -Services.prefs.setCharPref("extensions.icecathome.intl.accept_languages","en-US, en"); -} - -try { -Services.prefs.getIntPref("extensions.icecathome.browser.display.use_document_fonts"); -}catch(err){ -Services.prefs.setIntPref("browser.display.use_document_fonts",0); -Services.prefs.setIntPref("extensions.icecathome.browser.display.use_document_fonts",0); -}*/ - - var f = document.createElement("form"); - - var extensions=[ -["jid1-KtlZuoiikVfFew@jetpack","Block execution of non-free <a target=\"_blank\" href=\"http://www.gnu.org/software/librejs/\">JavaScript</a> <em>(experimental)</em>"], -["spyblock@gnu.org","Block privacy <a target=\"_blank\" href=\"https://easylist.adblockplus.org\">trackers</a>"], -["torproxy@trisquel","Use <a target=\"_blank\" href=\"https://www.torproject.org/\">Tor</a> when in Private Mode"], -["https-everywhere@eff.org","Get redirected to <a target=\"_blank\" href=\"https://www.eff.org/https-everywhere/faq\">HTTPS</a> when possible"], -] - - for (var i=0; i<extensions.length; ++i) { - var ex=extensions[i][0]; - - var tmp = document.createElement("input"); - tmp.setAttribute('type',"checkbox"); - tmp.setAttribute('id', ex); - tmp.setAttribute('onclick','flip(this);'); - - var label = document.createElement("label"); - label.htmlFor = ex ; - label.id = ex+'label'; - label.appendChild(document.createTextNode('')); - - f.appendChild(tmp); - f.appendChild(label); - - document.getElementById("addonsform").appendChild(f); - } - - var tmp = document.createElement("input"); - tmp.setAttribute('type',"checkbox"); - tmp.setAttribute('id', "intl.accept_languages"); - tmp.setAttribute('value', "en-US, en"); - tmp.setAttribute('onclick','languagesettings(this);'); - value=Services.prefs.getCharPref("intl.accept_languages"); - tmp.checked=(value=="en-US, en"); - var label = document.createElement("label"); - label.htmlFor = "intl.accept_languages" ; - label.id = "intl.accept_languageslabel"; - label.appendChild(document.createTextNode("Request pages in English")); - f.appendChild(tmp); - f.appendChild(label); - f.appendChild(document.createElement("br")); - document.getElementById("addonsform").appendChild(f); - - var tmp = document.createElement("input"); - tmp.setAttribute('type',"checkbox"); - tmp.setAttribute('id', "browser.display.use_document_fonts"); - tmp.setAttribute('value', 0); - tmp.setAttribute('onclick','fontsettings(this);'); - value=Services.prefs.getIntPref("browser.display.use_document_fonts"); - tmp.checked=(value==0); - var label = document.createElement("label"); - label.htmlFor = "browser.display.use_document_fonts" ; - label.id = "browser.display.use_document_fontslabel"; - label.appendChild(document.createTextNode("Use system fonts")); - f.appendChild(tmp); - f.appendChild(label); - f.appendChild(document.createElement("br")); - document.getElementById("addonsform").appendChild(f); - - var tmp = document.createElement("input"); - tmp.setAttribute('type',"checkbox"); - tmp.setAttribute('id', "javascript.enabled"); - tmp.setAttribute('value', 0); - tmp.setAttribute('onclick','jssettings(this);'); - value=Services.prefs.getBoolPref("javascript.enabled"); - tmp.checked=(value==0); - var label = document.createElement("label"); - label.htmlFor = "javascript.enabled" ; - label.id = "javascript.enabledlabel"; - label.appendChild(document.createTextNode("Disable JavaScript")); - f.appendChild(tmp); - f.appendChild(label); - f.appendChild(document.createElement("br")); - document.getElementById("addonsform").appendChild(f); - - for (var i=0; i<extensions.length; ++i) { - var ex=extensions[i][0]; - var addonObj=-1; - - AddonManager.getAddonByID(ex, function(addon) { - addonObj=addon; - }); - - var thread = Components.classes["@mozilla.org/thread-manager;1"].getService().currentThread; - while ( addonObj == -1) - thread.processNextEvent(true); - if ( addonObj != null){ - document.getElementById(ex).checked = addonObj.isActive; - //document.getElementById(ex+'label').innerHTML = addonObj.name; - document.getElementById(ex+'label').innerHTML = extensions[i][1]+"<br/>"; - }else{ - document.getElementById(ex).style.display='none'; - document.getElementById(ex+'label').style.display='none'; - } - } -} - - -]]> -</script> - - </head> - - <body dir="&locale.dir;" onload="prepare();"> - - <div class="spacer"/> - <div id="topSection"> - <img src="chrome://branding/content/about-logo.png"/> - - <div id="searchContainer"> - <form name="searchForm" id="searchForm" action="https://duckduckgo.com/html/"> - <input type="hidden" name="t" value="gnu"/> - <input type="text" name="q" value="" id="searchText" maxlength="256" - autofocus="autofocus"/> - <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/> - </form> - </div> - - </div> - - <div class="spacer"/> - -<div id="block-horizontal-margin"> -<div class="block-side-margin"></div> -<div id="addonsform"> -<h3>Enabled privacy features:</h3> -<p>The <a target="_blank" href="http://www.gnu.org/software/gnuzilla/">GNU IceCat</a> web browser protects your <a target="_blank" href="http://www.gnu.org/philosophy/free-sw.html">freedom</a> and your privacy!</p> -</div> -<div class="block-side-margin"></div> -</div> - - <div class="spacer"/> - - </body> -</html> - diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/en/aboutIceCat.dtd b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/en/aboutIceCat.dtd deleted file mode 100644 index 55efd56..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/en/aboutIceCat.dtd +++ /dev/null @@ -1 +0,0 @@ -<!ENTITY aboutIceCat.title "About IceCat"> diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/es/aboutIceCat.dtd b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/es/aboutIceCat.dtd deleted file mode 100644 index 2412c09..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/chrome/locale/es/aboutIceCat.dtd +++ /dev/null @@ -1 +0,0 @@ -<!ENTITY aboutIceCat.title "Acerca de IceCat"> diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/components/aboutIceCat.js b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/components/aboutIceCat.js deleted file mode 100644 index 6b32cc1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/components/aboutIceCat.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - -Copyright (c) 2014, Ruben Rodriguez <ruben@gnu.org> -Copyright (c) 2013, The Tor Project, Inc. -Copyright (c) 2006 Scott Squires, Oleg Ivanov - -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. - -*/ - -// Module specific constants -const kMODULE_NAME = "about:icecat"; -const kMODULE_CONTRACTID = "@mozilla.org/network/protocol/about;1?what=icecat"; -const kMODULE_CID = Components.ID("a364a9c0-2960-11e4-8c21-0800200c9a66"); - -const kAboutIceCatURL = "chrome://icecathome/content/aboutIceCat/aboutIceCat.xhtml"; - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cu = Components.utils; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -function AboutIceCat() -{ -} - - -AboutIceCat.prototype = -{ - QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]), - - // nsIClassInfo implementation: - classDescription: kMODULE_NAME, - classID: kMODULE_CID, - contractID: kMODULE_CONTRACTID, - - // nsIAboutModule implementation: - newChannel: function(aURI) - { - let ioSvc = Cc["@mozilla.org/network/io-service;1"] - .getService(Ci.nsIIOService); - let channel = ioSvc.newChannel(kAboutIceCatURL, null, null); - channel.originalURI = aURI; - - return channel; - }, - - getURIFlags: function(aURI) - { - return Ci.nsIAboutModule.ALLOW_SCRIPT; - } -}; - - -const NSGetFactory = XPCOMUtils.generateNSGetFactory([AboutIceCat]); diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/defaults/preferences/preferences.js b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/defaults/preferences/preferences.js deleted file mode 100644 index e69de29..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/defaults/preferences/preferences.js +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/install.rdf b/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/install.rdf deleted file mode 100644 index 0f8065a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/abouticecat@gnu.org/install.rdf +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:name>IceCatHome</em:name> - <em:creator>Ruben Rodriguez</em:creator> - <em:id>abouticecat@gnu.org</em:id> - <em:version>1.0</em:version> - <em:updateURL>https://127.0.0.1/</em:updateURL> - <!-- <em:updateKey></em:updateKey> --> - <!-- firefox --> - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>30.0</em:minVersion> - <em:maxVersion>10000.0</em:maxVersion> - </Description> - </em:targetApplication> - </Description> -</RDF> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/Changelog b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/Changelog deleted file mode 100644 index c5f270b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/Changelog +++ /dev/null @@ -1,1426 +0,0 @@ -3.5.1 (2014-04-25) - * Revert https://github.com/EFForg/https-everywhere/pull/134 due to YouTube - breakage. - * Re-enable ability to see all rulesets in enable/disable dialog. - * Added more Debian coverage. - * Fixes to Doubleclick, Guardian, Heroku, Home Depot, HypeMachine, IMDB, - Justin.tv, Kikatek, Mozilla, MyFitnessPal, Pinterest, XKCD, Reuters, - Technet, Tumblr, Wordpress, Yandex, Youtube, Flickr. - * Fix Australis icon positioning: - https://github.com/EFForg/https-everywhere/pull/216 - -chrome-2014.4.25 - * Ruleset fixes (same as 3.5.1) - -chrome-2014.4.16 - * Make Chrome build script compatible with Chrome release scripts. - * Fix disappearing icon: https://github.com/EFForg/https-everywhere/pull/220 - * Fix XKCD images - -chrome-2014.4.14.1 - * Revert back to chrome-2014.1.3 because of bug in Chrome release script. - -chrome-2014.4.14 - * Add SV localization - * Add persistent user-generated rules, thanks to Vijay P.: - https://github.com/EFForg/https-everywhere/pull/60 - * Use onBeforeRedirect for redirect loop detection: - https://github.com/EFForg/https-everywhere/pull/199 - * Remove unneeded onBeforeSendHeaders listener: - https://github.com/EFForg/https-everywhere/pull/172 - * Fix host-only cookie bug: - https://github.com/EFForg/https-everywhere/pull/166 - * Split incognito mode: - https://github.com/EFForg/https-everywhere/pull/165 - * Cleanup pageAction icon code: - https://github.com/EFForg/https-everywhere/pull/173 - * Add and modify some rulesets (same as 3.5) - -3.5 (2014-04-14) - * Merge all non-ruleset changes from 4.0development.16 - * Merge all new/modified rulesets from 4.0development.16 that are - in the Alexa Top 1000 using utils/alexa-ruleset-checker.py. For a full list, - see utils/alexa-logs/07042014.log. - -4.0development.16 (2014-04-14) - * Restore code that loads custom rule files: - https://github.com/EFForg/https-everywhere/pull/156 - * Use loadContext interface to get windows associated with requests - * Reduce annoying logging messages - * Report cert warning pages to SSL Observatory - * Remove SSL Observatory observers when disabled - * Don't set LOAD_REPLACE flag: - https://github.com/EFForg/https-everywhere/pull/134 - * Add script to merge rulesets in Alexa Top 1M, thanks to Claudio MOretti: - https://github.com/EFForg/https-everywhere/pull/149 - * 8 new rules - * 59 modified rules - -4.0development.15 (2014-02-05) - * Replace the single XML ruleset library with an sqlite database of rulesets - that are loaded on demand - - reduces startup time by a factor of 10-20: - https://trac.torproject.org/projects/tor/ticket/10174 - - reduces RAM usage https://trac.torproject.org/projects/tor/ticket/4804 - - Is scalable: https://trac.torproject.org/projects/tor/ticket/6118 - Further analysis in this thread: - https://lists.eff.org/pipermail/https-everywhere/2014-January/001919.html - * Implement a cleanup case to recover from some Observatory UI code bugs that - would leave the Observatory off incorrectly. - https://trac.torproject.org/projects/tor/ticket/10728 - * Fix observatory - private browsing mode interaction - https://trac.torproject.org/projects/tor/ticket/10208 - * Ship 848 new rulesets - * Update cert whitelist - -3.5android.0 (2014-01-31) - * First Firefox for Android release! :D - * Major UI changes for mobile compatibility - * Android channel update URL set to - https://www.eff.org/files/https-everywhere-android-update-2048.rdf - * Updated rulesets: Freenode, Imgur - -3.4.5 (2014-01-03) - * Updated license - * Updated README.md - * Updated contributors list - * Fix a performance bug when re-enabling HTTPS-Everywhere from its menu - * Observatory cert whitelist update - * Updated rules: Atlassian, Brightcove, MIT, Pidgin, Microsoft, Whonix, - Skanetrafiken, Stack-Exchange, Stack-Exchange-mixedcontent - -chrome-2014.1.3 - * Various ruleset fixes - * Various performance improvements, thanks to Nick Semenkovich and Jacob - Hoffman-Andrews! - * Add LRU caching for rules - * Refactor out unused code - * Reload page when rule is disabled - * Upgrade URI.js - * Add fi translation - -3.4.4tbb (2013-12-06) - * Pseudorelease, just for Tor Browser Bundle usage - * Tiny ruleset tweaks (XKCD is back)! - * Create an about:config setting that overrules mixedcontent ruleset disablement - -3.4.3 (2013-12-03) - * Fixes: Cloudfront / Amazon MP3 player, Cornell/Arxiv, FlickR, - AmazonAWS/spiegel.tv - * Disable broken: Barns and Noble, Behance, Boards.ie, Elsevier, Kohls, - OpenDNS, Spin.de, Svenskakyrkan - * Deprecate the ContentPolicy API, fixing a crash bug - lurking since Firefox 20: - https://bugzilla.mozilla.org/show_bug.cgi?id=939180 - * Fix really silly Observatory UI bug that would leave the Observatory off - for non-Tor users after they turned it on - * Update Observatory blacklist - * Bump maxVersion from Firefox 25 to 28. - -4.0development.14 (2013-11-21) - * Deprecate the ContentPolicy API, fixing a crash bug - lurking since Firefox 20: - https://bugzilla.mozilla.org/show_bug.cgi?id=939180 - * Fix really silly Observatory UI bug that would leave the Observatory off - for non-Tor users after they turned it on - * Ship 438 new rulesets - * Update Observatory blacklist - -4.0development.13 (2013-10-04) - * HTTPS Everywhere builds are now deterministic! - * Numerous new and updated rules - -3.4.2 (2013-10-04) - * HTTPS Everywhere builds are now deterministic! - * Global memory leak bug fixes - * Updated rules: Craigslist, Apple.com, Microsoft, CloudFront, UKLocalGov, - Bing, Cengage - * New rules from dev: IPTorrents.com, TvTorrents - -4.0development.12 (2013-09-12) - * Fix clients1.google.com OSCP meltdown - https://trac.torproject.org/projects/tor/ticket/9713 - * Updated rules: ConnMan, Viddler.com, ISC, GNOME, Dozuki, Thingiverse, Box, - ComputerWorld, Makerbot, McClatchy Interactive.com, Mozilla, Ohio State - University, printrbot, Thingiverse, Tradedoubler, XiTi.com, Flameeyes, Open - Clipart Library, Musopen, CERN, FilZilla, Google Services, Linux Foundation, - Debian, Python.org, Ardour, Netmarble, Drexel University, Guifi.net, - net-security.org, University of California, WordPress blogs, Perl.org - * New rules: Akira.org, AntiPolygraph.org, Banu.com, break.com, Click and - Pledge.com, DataCoup.com, linux-sunxi.org, Lockbox.com, PSC.edu, University - of Greifswald, University of Rostock, WIMM.com, ZeusClicks.com, - gayorrents.net, Addison.com.hk, Auto Ad Manager.com, Blutmagie.de, - Brixwork.com, HDtracks.com, hostname.sk, iPXE.org, Linn Records.com, - Navigant Research.com, OpenLDAP.org, Quotes and Sayings.com, Solid-Run.com, - TU-Dresden.de, Tux.Org, Ultrasurf.us, Zamzar.com, chaox.net, digilinux.ru, - iNaturalist.org, IUCNredlist.org, jensge.org, Libre Graphics World.org, - NAB.org, PengPod.com, pythonhosted.org, randombit.net, factorable.net, - JoeyH.name, Acunetix.com, Alex Cabal.com, Altera.com, Commotionwireless.net, - CounterMail.com, dotplex.de, Dyne.org, finalrewind.net, Keelog.com, - Mailinator.com, My Shadow.com, OpenMailBox.org, PwdHash.com, Silent - Sender.com, Standard Ebooks.com, Tarasic.com.tw, Barracuda.com - -4.0development.11 (2013-08-30) - * Notify users who have been accidentally updated from stable to dev - https://trac.torproject.org/projects/tor/ticket/9600 - * Added and updated numerous rules, including Craigslist - * Fixes toolbar button size - https://trac.torproject.org/projects/tor/ticket/9511 - * Declare loop variables with var to avoid global memory leaks - * Updated localizations - -3.4.1 - * Fix typo resulting in variable leak in get_prefs(), thanks to Jérémy - Bobbio - -3.4 - * Do not upgrade stable users to the development branch! - * The previous release moved extension code from the development branch into - the stable branch, and changed many stable rules - -chrome-2013.8.17 - * Urgent bugfix release for - https://trac.torproject.org/projects/tor/ticket/9507 - - release from the stable / 3.0 branch, not master - - don't ship the development ruleset library, it's not ready for prime - time yet - - avoid performance hits from repeatedly re-testing rulesets - - other possible weirdness - -chrome-2013-8.16 - * Includes all fixes from 3.3, 3.3.1, and 4.0development.10 - * This will be the first Chromium release where the bulk of the rules that - are broken because of mixed content will be disabled by default - -4.0development.10 - * Numerous rules added, modified, and deleted - * Added utils/find_rules.py, python script by Osama Khalid to apply HTTPS - Everywhere rules to URLs - * Updated readme to include more dependencies - -3.3.2 - * We merged in a bunch of non-ruleset changes from 4.0development.9: - https://trac.torproject.org/projects/tor/ticket/9480 - (Notable changes from this merge include a rewriting of fetch-source.js, - improvements to the CSS such that the icon changes color when disabled - and shows the number of applied rules when active, fixing bugs in - HTTPSRules.js and ApplicableList.js that led to undefined functions, - and rewriting makexpi.sh to accept a --fast flag.) - * The tickets described below were fixed by the merge from 4.0development.9: - https://trac.torproject.org/projects/tor/ticket/8998 - https://trac.torproject.org/projects/tor/ticket/9374 - * Add a script find_rules.py by Osama Khalid to utils/. It applies HTTPS - Everywhere rules to URLs. - * Add merge-rulesets.py from master to utils/. - * Removed default parameters for a js function that caused breakage - in older versions of FF. - * Changed mixed content blocking in FF to be based on the user's active - content blocking preferences rather than if the FF version is >=23.0. - * [Zurcher_Katonalbank] Add rule - * [LegitScript] www now supports SSL - * [DebianOwnCA] Debian self-signed cert rules - * [Debian] Update rule for non-self-signed domains - * [UKLocalGov] Add havering.gov.uk - * [aeriagames] Use CDN with valid cert - * [spu.ac.th] Disable (https site not found) - * Added rules from mishari for Loxinfo, SPU, Silkspan, Settrade, - Powerbuy, opengarden.com, Naiin, MyHappyOffice, Mirakar, - MarketingOops, Makewebeasy, m2fjob, LandandHouse, Jaymart, - Etravelway, Craigslist, Blognone, TrueCorp, dealfish, 3bbwifi, - thepiratebay, and priceza. - * [Ubuntu] Add rule for ubuntuforums.org - * [EuroBillTracker.xml] Add EuroBillTracker rule - * [wikidot] Exclusion for iframes - * [StockCharts] Add reason for disabling - * [9gag] Disable rule for breaking AJAX. - * [MayFirstPeopleLink] Updated rule - * [Derpiboo.ru] Add rule - * [Fedora Project] Split start - * [Lurkmore.to] Add rule - * [2ch.so] Add rule - * [FSF] Added the status and u subdomains - * [Reddit] Exclude blog - * [Desk.com] Fix - * [Cheezburger] Fix - * Updated debian dependencies in readme - * [Adtech.de] Add exclusion - -3.3.1 - * [Wikimedia] removed mixedcontent - -4.0development.9 - * Includes all fixes from 3.3 - -3.3 - * This major release fixed the following mixed content blocker (MCB) - related bugs in time for Firefox 23: - https://trac.torproject.org/projects/tor/ticket/9196 - https://trac.torproject.org/projects/tor/ticket/8774 - https://trac.torproject.org/projects/tor/ticket/8776 - * In effect, this update disables rulesets that cause mixed content errors - by default, and adds platform="mixedcontent" to 950 new rules. This is - necessary to prevent a massive amount of websites from breaking by default - for our users when Firefox 23 comes out. - * [Internet Archive] Moved to stable - * [Linaro] Default off per webmaster request - * [Applicom] Default off per webmaster request - -chrome-2013.7.10 - * In Chrome version, fixed css, "What is this?" link in popup, and added - favicons to popup (thanks to Jay Weisskopf) - * Includes all fixes from 3.2.4 - -3.2.4 (2013-07-10) - * [Yandex] remove maps from exclusions - * [Amazon Web Services] Add exclusion - https://trac.torproject.org/projects/tor/ticket/8907 - * [Hotmail / Live] Add exclusion - https://trac.torproject.org/projects/tor/ticket/9026 - * [Mozilla] Point labs to mozillalabs.org - https://mail1.eff.org/pipermail/https-everywhere-rules/2013-July/001636.html - * [Yandex] Exclude ll - * [Brightcove] Add exclusion - https://mail1.eff.org/pipermail/https-everywhere-rules/2013-May/001587.html - * [NYTimes] Add exclusion, disabled - * [News Corporation] Exclude 2013 images - https://trac.torproject.org/projects/tor/ticket/9040 - * [imgbox] Fix typo - https://trac.torproject.org/projects/tor/ticket/8690 - -3.2.3 (2013-06-28) - * https://trac.torproject.org/projects/tor/query?group=status&milestone=HTTPS-E+3.2.3 - -chrome-2012.6.4 - * The "factors of 12" chromium beta - * Various ruleset fixes: - https://eff.org/r.5bSj - https://trac.torproject.org/projects/tor/ticket/8584 - https://trac.torproject.org/projects/tor/ticket/8571 - * Disable Myspace by default due to mixed content - -4.0development.8 (2013-06-04) - * Fix broken ruleset dialog in Firefox 22+ - https://trac.torproject.org/projects/tor/ticket/8997 - * The toolbar button chnages to indicate active rulesets: - https://trac.torproject.org/projects/tor/ticket/4886 - * Ship 31 new rulesets - * New translations: Japanese and Sinhala - * Updated translations: Hungarian, Lithuanian, Slovenian - * Ruleset fixes from 3.2.2: - https://eff.org/r.5bSj - * Observatory cert whitelist update - -3.2.2 (2013-05-22) - * Quick turn-around release to unbreak support.apple.com - * Fixes for a number of other ruleset bugs: - https://eff.org/r.5bSj - * Incremental observatory cert whitelist update - -3.2.1 (2013-05-17) - * Implement XHR outstanding request limits to work around TCP connection - exhaustion if the SSL Observatory server is slow or down: - https://trac.torproject.org/projects/tor/ticket/8670 - https://bugzilla.mozilla.org/show_bug.cgi?id=856748 - * Overdue update to the Observatory cert whitelist - * Other known ruleset fixes: EA, Yandex, Apple - https://trac.torproject.org/projects/tor/ticket/8584 - https://trac.torproject.org/projects/tor/ticket/8571 - -4.0development.7 (2013-05-17) - * Implement XHR outstanding request limits to work around TCP connection - exhaustion if the SSL Observatory server is slow or down: - https://trac.torproject.org/projects/tor/ticket/8670 - https://bugzilla.mozilla.org/show_bug.cgi?id=856748 - * Add a note hinting users how to toggle rulesets (thanks to Pavel Kazakov) - https://trac.torproject.org/projects/tor/ticket/4967 - * Ship all fixes from 3.2: - https://eff.org/r.b9Qc - * Other known ruleset fixes: EA, Yandex - https://trac.torproject.org/projects/tor/ticket/8571 - * Ship 1308 new rulesets! - * Numerous new and updated translations - -chrome-2012.4.30 - * The "May day somewhere" chromium beta - * Ship all ruleset bugfixes from the Firefox 3.2 release: - https://eff.org/r.b9Qc - * Flag/disable mixed content rulesets: Apple Support, BBC, Dell support, - FBI, Wordpress, Zend - https://eff.org/r.1bQt - * Disable VistaX64 - https://trac.torproject.org/projects/tor/ticket/8801 - -3.2 (2013-04-25) - * Related trac bugs for this release: - https://eff.org/r.b9Qc - * New: MoinMoin - * Fixes: Adobe, Bahn.de, Cloudfront, Dell, Droplr, FBI, Google Maps, - Joomla, Juno Download, Lenovo, New York Times, SEC, Soundcloud, - Tweakers.net, Univ Strasbourg, Vkontakte, Zend - * Disable broken: AirAsia, Netvibes, Newgrounds, Pirate Bay, Russia Today, SVT, - Wolfram Alpha - * Maybe fixed: Quantcast/Tumblr: - https://trac.torproject.org/projects/tor/ticket/8406 (maybe fixed) - * Sync languages and translations from the master branch. - * New languages: Finnish, Norwegian (Bokmål), Slovak, Bulgarian. - * All HTTPS Everywhere users will be now prompted about using the - SSL Observatory. - -chrome-2012.3.7 - * The "cookies uncrumbled" chromium beta - * Ship all ruleset bugfixes from Firefox 3.1.4 - * Stop securing HTTP (non-S) cookies in weird cases!!! - https://trac.torproject.org/projects/tor/ticket/7492 - -4.0development.6 (2013-03-07) - * Disabled 26 broken or problematic rulesets - * Ship all ruleset fixes from 3.1.4 - * Ship 232 new rulesets - * Numerous ruleset fixes - * Update cert whitelist - -3.1.4 (2013-03-07) - * The circles are stable releasee - * Fixes: - AmazonAWS/Atomsforpeace.info, Disqus, Eventbrite, ImageShack.us, MySQL, - NuGet, NYTimes, Ooyala, Opera, Scientific American, SourceForge, - University of Southampton, UserVoice, WebType, Zendesk - https://trac.torproject.org/projects/tor/ticket/8056 - https://trac.torproject.org/projects/tor/ticket/8349 - https://trac.torproject.org/projects/tor/ticket/7690 - https://trac.torproject.org/projects/tor/ticket/8025 - https://trac.torproject.org/projects/tor/ticket/8077 - https://trac.torproject.org/projects/tor/ticket/8199 - https://trac.torproject.org/projects/tor/ticket/8198 - * Disable broken: - American Public Media (for real this time), Asymmetric Publications, - Salsa Labs, Vimeo - https://trac.torproject.org/projects/tor/ticket/7650 - https://trac.torproject.org/projects/tor/ticket/8280 - https://trac.torproject.org/projects/tor/ticket/7569 - * Update cert whitelist - -chrome-2013.1.18 - * "Internet Freedom" chromium beta - * Import all ruleset fixes from Firefox 3.1.3 - -4.0development.5 (2013-1-18) - * Internet Freedom Day development release - * Fix the implementation of safeToSecureCookie - - Get https://trac.torproject.org/projects/tor/ticket/7491 right(er) - - Fix https://trac.torproject.org/projects/tor/ticket/7855 - * Fix a ruleset processing bug, which would prevent <target host="*.z.com"> - from matching x.y.z.com - * Ship all ruleset fixes from 3.1.2 and 3.1.3 - - Except Etsy, where we're trying to fix rather than disable the ruleset - https://trac.torproject.org/projects/tor/ticket/7774 - * Ship 354 new rulesets - * Update cert whitelist - * Update translations: Korean, Polish, French - -3.1.3 (2013-1-18) - * Internet Freedom Day stable bugfix release - * Fixes: CloudFront/Spotify, AmazonAWS (Amazon MP3s and product images), Libav, - Google Maps, UserEcho - https://trac.torproject.org/projects/tor/ticket/7931 - https://trac.torproject.org/projects/tor/ticket/7888 - https://trac.torproject.org/projects/tor/ticket/7594 - https://trac.torproject.org/projects/tor/ticket/7539 - https://trac.torproject.org/projects/tor/ticket/7698 - * Disable broken: Coursera, EBay, Etsy, OpenOffice, Ping.fm, Pinterest :( - https://trac.torproject.org/projects/tor/ticket/7336 - https://trac.torproject.org/projects/tor/ticket/7825 - https://trac.torproject.org/projects/tor/ticket/7774 - https://trac.torproject.org/projects/tor/ticket/7695 - https://trac.torproject.org/projects/tor/ticket/7777 - https://trac.torproject.org/projects/tor/ticket/7865 - * Update cert whitelist - -3.1.2 (2013-1-2) - * Release 3.1.2, since 3.1.1 was accidentally mis-tagged - * Fixes for: AmazonAWS/Datawrapper, Cachefly, Cloudfront/C-SPAN, Hetzner.de - KeyDrive/Snapnames, QT, openDesktop, OpenTTD, WhiskeyMedia - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-December/001432.html - https://trac.torproject.org/projects/tor/ticket/7608 - https://trac.torproject.org/projects/tor/ticket/7567 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-December/001432.html - https://trac.torproject.org/projects/tor/ticket/7560 - https://trac.torproject.org/projects/tor/ticket/7796 - * Disable broken: FlossManuals, Pastebin, Poste.it, Ustream, TED, AusGamers - https://trac.torproject.org/projects/tor/ticket/7731 - https://trac.torproject.org/projects/tor/ticket/7850 - https://trac.torproject.org/projects/tor/ticket/7840 - https://trac.torproject.org/projects/tor/ticket/7548 - * Increase Observatory deployment (65%->85%) - * Update cert whitelist - -chrome-2012.12.17 - * The "overdue bugfixes" chromium beta - * Ship all ruleset bugfixes from Firefox 3.1 and 3.0.4 - * Additional fixes for: AmazonAWS/Datawrapper, Cachefly, Cloudfront/C-SPAN, - Hetzner.de, KeyDrive/Snapnames, QT - * Additionally disable: Automattic - -4.0development.4 (2012-12-17) - * Fix nasty bug that prevented Firefox downloads from Mozilla's CDN - https://trac.torproject.org/projects/tor/ticket/7717 - * Fix download from qt-project.org - * Ship 72 new rulesets - * Include all rulset fixes from 3.1 - -3.1 (2012-12-12) - * Hacky solution to a very nasty bug in which <securecookie> directives - would cause cookies to be flagged as secure even if they were set from - HTTP origins! - https://trac.torproject.org/projects/tor/ticket/7491 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-November/001397.html - * Fixes: Akamai, Biomed central, BYU, Cachefly / Topix, DuckDuckGo, Focus.de, - Fortum, Mashable, Mail.ru, MayFirst/People Link, MIT, Rackspace, - Salsa Labs, SurveyMonkey, Tumblr - * Disable: Adtech.de, AllthingsD American Public Media, Dafont, MediaFire, - Verizon, vk.com, Wired, Conde Nast - * Observatory-only translations into Hebrew and Croatian - * Offer the SSL Observatory popup to a larger cohort of users - -4.0development.3 (2012-12-3) - * Hacky solution to a very nasty bug in which <securecookie> directives - would cause cookies to be flagged as secure even if they were set from - HTTP origins! - https://trac.torproject.org/projects/tor/ticket/7491 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-November/001397.html - * Ship 245 new rulesets - * Fixes include: Internet Archive, Rackspace - * Disable broken: American Public Media, Verizon, Nieuwsblad.be, MyOpenID - * (Plus fixes and rulesets disabled between 4.0dev2 and 3.0.4) - * Observatory-only translations: Croatian, Hebrew - -3.0.4 (2012-11-9) - * Fixes: - ACLU, Amazon, Barnes & Noble, CharityNavigator, Cloudfront/Turntable.fm, - Coursera, itella.fi, posti.fi, Uservoice - https://trac.torproject.org/projects/tor/ticket/7336 - https://trac.torproject.org/projects/tor/ticket/7273 - https://trac.torproject.org/projects/tor/ticket/7227 - * Disable broken: - Asterisk, Boston Globe (separated out from NYTimes.com), Extabit, Gawker, - Google Services (Followers widget), NPR, SF.se, SonyMusic, Statcounter, WebType - https://trac.torproject.org/projects/tor/ticket/7270 - https://trac.torproject.org/projects/tor/ticket/7243 - https://trac.torproject.org/projects/tor/ticket/7361 - https://trac.torproject.org/projects/tor/ticket/7120 - https://trac.torproject.org/projects/tor/ticket/7278 - https://trac.torproject.org/projects/tor/ticket/7363 - https://trac.torproject.org/projects/tor/ticket/7294 - * No longer cacert: lawblog.de - * Offer the SSL Observatory popup to a larger cohort of users - * Update translations: Spanish, Russian, Turkish, Swedish - -chrome-2012.10.31 - * The "ghosts and goblins" chromium alpha - * Work around a nasty bug that was affecting some high-volume Live Youtube streams - (but not other live YouTube streams) - https://trac.torproject.org/projects/tor/ticket/7127 - * Other Fixes: - AdaCore, Akamai/MTV3 Katsomo, Akamai/HP, Atlassian, Bahn.de, MySQL, NPR, PBS, - Phronoix Media/Openbenchmarking, SSRN, Spoki - https://trac.torproject.org/projects/tor/ticket/7219 - https://trac.torproject.org/projects/tor/ticket/7180 - https://trac.torproject.org/projects/tor/ticket/7135 - https://trac.torproject.org/projects/tor/ticket/7206 - https://trac.torproject.org/projects/tor/ticket/7198 - * Disable broken/buggy: - CBS/Last.fm, Citibank Australia, Bytename, HP, NIFTY, Microchip, MyOpenID, NttDocomo - https://trac.torproject.org/projects/tor/ticket/6587 - https://trac.torproject.org/projects/tor/ticket/7226 - https://trac.torproject.org/projects/tor/ticket/7111 - https://trac.torproject.org/projects/tor/ticket/7161 - https://trac.torproject.org/projects/tor/ticket/7114 - https://trac.torproject.org/projects/tor/ticket/7138 - https://trac.torproject.org/projects/tor/ticket/7107 - -3.0.3 (2012-10-29) - * Work around a nasty bug that was affecting some high-volume Live Youtube streams - (but not other live YouTube streams) - https://trac.torproject.org/projects/tor/ticket/7127 - * Other Fixes: - AdaCore, Akamai/MTV3 Katsomo, Akamai/HP, Atlassian, Bahn.de, DemocracyNow, MySQL, NuGet, - PBS, Phronoix Media/Openbenchmarking, SSRN, Spoki - https://trac.torproject.org/projects/tor/ticket/7219 - https://trac.torproject.org/projects/tor/ticket/7180 - https://trac.torproject.org/projects/tor/ticket/7135 - https://trac.torproject.org/projects/tor/ticket/7206 - https://trac.torproject.org/projects/tor/ticket/7198 - * Disable broken/buggy: - CBS/Last.fm, Citibank Australia, Bytename, HP, NIFTY, Microchip, MyOpenID, NttDocomo - https://trac.torproject.org/projects/tor/ticket/6587 - https://trac.torproject.org/projects/tor/ticket/7226 - https://trac.torproject.org/projects/tor/ticket/7111 - https://trac.torproject.org/projects/tor/ticket/7161 - https://trac.torproject.org/projects/tor/ticket/7114 - https://trac.torproject.org/projects/tor/ticket/7138 - https://trac.torproject.org/projects/tor/ticket/7107 - * Updated translations: - Greek, Russian, Latvian - * New translation: - Turkish - * Offer the SSL Observatory popup to a larger cohort of users - -4.0development.2 (2012-10-25) - * Ship 67 new rulesets - * Fix broken logouts from non-US Google accounts: - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001347.html - * Other fixes: - Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer, - Optical Society, IMDB, Facebook, EzineArticles, Broadband Reports, Apache, - Akamai (exclude Zynga content to prevent breakage of some Zynga games), - Costco, Atlassian, Akamai/MTV3 Katsomo - * Disable broken/buggy: - HP, Bytename, NIFTY, Microchip, NttDocomo - * Updated translations: - Greek, Russian, Latvian - * New translation: - Turkish - -chrome-2012.10.18 - * The "even more perfect" chromium alpha - * Fixes from the last two Firefox releases: - Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer, - Optical Society, IMDB, Facebook, EzineArticles, Broadband Reports, Apache, - Akamai (exclude Zynga content to prevent breakage of some Zynga games), - Costco Akamai/SVTplay.se, Bahn.de, European Southern Observatory, IEEE, - Indeed, Java, Librivox, Pinterest, New York Times, Springer, Vimeo, - Shannon Health, O'Reilly Media - * Also fix: DemocracyNow, NuGet - * Disable: NIFTY - -3.0.2 (2012-10-16) - * Some fixes that should have shipped in 3.0.1, but actually didn't: - European Southern Observatory, Indeed, LibriVox - * New fixes: - Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer - (fix / reenable), Optical Society, IMDB, Facebook, EzineArticles, - Broadband Reports, Apache, Akamai (exclude Zynga content to prevent - breakage of some Zynga games), Costco - -4.0development.1 (2012-10-11) - * Merge the 4.0 branch, which ships 884 new rulesets and expands - hundreds of others - -3.0.1 and 4.0development.1: - * Fixes: adition.com, Akamai/SVTplay.se, Bahn.de, European Southern Observatory, - IEEE, Indeed, Java, Librivox, Pinterest, New York Times, Springer, Vimeo, - Shannon Health, O'Reilly Media - https://trac.torproject.org/projects/tor/ticket/7080 - https://mail1.eff.org/pipermail/https-everywhere/2012-October/001583.html - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001339.html - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001343.html - * Disable broken: Springer - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001340.html - * Updated translations: Basque, Hungarian, Traditional Chinese - -chrome-2012.10.9 - * The "prepare for liftoff" chromium alpha - * Add an experimental Spanish translation! - * Fixes: - Akamai/CNN, GO.com/ABC, AWS/Amazon Zeitgeist MP3 player, AWS/Spiegel.tv, - Technology Review, Cloudfront/Tunein, Akamai/Discovery Channel, Beyond - Security, OCaml, Gentoo, Nokia, Widgetbox.com, Squarespace, 1and1 - Internet, American Physical Society, Baker and Taylor, Barnes and Noble, - Cloudfront, Trustguard, IEEE, Mozilla, Nrelate, OpenDNS, RFC Editor, - Symantec, Valve, Zenimax-Media - * Disable buggy: Web.de, AJC.com, Feross, Bestofmedia, Grooveshark, Gearhog - -3.0 (2012-10-04) - * Since version 2.x: - * 1,455 new active rulesets - * UI improvements: - - right-click to view ruleset source in the config window - - translate some untranslated menus - - better icons in a few places (breaking/redirecting rules, - context button) - * Numerous improvements to the SSL Observatory internals, including cached - submissions on hostile networks, better Tor and Convergence integration, - and a new setting to control self-signed cert submission - * New translations: Basque, Czech, Danish, French, Greek, Hungarian, - Italian, Korean, Malaysian, Polish, Slovak, Turkish, - Traditional Chinese - * Relative to 3.0development.8: - * Only promote the Decentralized SSL Observatory to 5% of non-Tor users - * Update the SSL Observatory whitelist of common cert chains - * Fixes, mostly in the CDN/media playback department: - Akamai/CNN, GO.com/ABC, AWS/Amazon Zeitgeist MP3 player, - AWS/Spiegel.tv, Technology Review, Cloudfront/Tunein, - Akamai/Discovery Channel, Beyond Security, OCaml, Gentoo, - Nokia, Widgetbox.com, Squarespace - https://trac.torproject.org/projects/tor/ticket/4199 - https://trac.torproject.org/projects/tor/ticket/6871 - https://trac.torproject.org/projects/tor/ticket/6992 - https://trac.torproject.org/projects/tor/ticket/7000 - https://trac.torproject.org/projects/tor/ticket/7020 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001324.html - * Disable buggy: Web.de, AJC.com, Feross, Bestofmedia - * Remove a lot of off-by-default rulesets from the code, since they have - some costs in terms of startup speed and RAM usage - -3.0development.8 (2012-10-03) - * 3.0 stable release candidate 1 - * Fixes: AOL, 1and1 Internet, American Physical Society, Antispam.de, BBC, - Baker and Taylor, Barnes and Noble, BitTorrent, CacheFly, - CheezBurger, Cleverbridge, Cloudfront, Facebook, Trustguard, - IEEE, Link Plus Catalog, Microsoft, Mozilla, News Corp, Nrelate, - OpenDNS, PassThePopcorn, Pidgin, Piriform, RFC Editor, Symantec, - Telegraph, Transmission, Valve, Zenimax-Media, - kirjoitusalusta.fi, uTorrent - * Reenable: CodingTeam - * Disable broken: GrooveShark, Gearhog, Paper.li, Soton.ac.uk, SVT.se - * Various translation improvements - * Support a new platform="mixedcontent" attribute - * Switch to the actual HTTPS Everywhere logo for the context menu button - - -chrome-2012.9.21 - * Workaround for breakage in Amazon Look Inside the Book (via Cloudfront) - https://trac.torproject.org/projects/tor/ticket/6848 - * Replace jsURI with URI.js, fixing a number of bugs in the Chrome port - - https://trac.torproject.org/projects/tor/ticket/6197 - - Also breakage on other random pages like - http://venturebeat.com/2012/09/13/how-do-not-track-could-destroy-the-internet-as-you-know-it/ - * Fixes: AOL, Antispam.de, BBC, BitTorrent, Facebook, Gearhog, LinkPlus - Catalog, Microsoft, Mother Jones, Mozilla, Office.co.uk, OpenDNS, - PassThePopcorn, Piriform, WhatCD, uTorrent - * Disable broken: Paper.li, SVT.se, Soton.ac.uk - * Reenable: Referly - -chrome-2012.9.10 - * The "just add eleven" chromium alpha - * Time to test the updating mechanism from direct -> Chrome Web Store - installs - * Ruleset changes in addition to those in FF 3.0dev7: - * Fixes: News Corp, Cheezburger, CacheFly, Cleverbridge, Nrelate, - Pidgin, Telegraph - * Improvements: Global Marketing Strategies - - -3.0development.7 (2012-09-07) - * Add a cleanup routine for profiles affected by a 2.2 defaults bug: - https://mail1.eff.org/pipermail/https-everywhere/2012-August/001511.html - * Make Decentralized SSL Observatory-Tor interactions saner in the wake of - Torbutton transitioning to "always on" (we now detect a local Tor instance - on port 9050 and use it) - https://trac.torproject.org/projects/tor/ticket/6541 - * Fix some other bugs in the Observatory proxy-wrangling code - * Disable broken/buggy rulesets: Voxel, Mapquest, Imgur, Justin.tv, - F-Secure, Valve, SpringFiles, openDesktop, syllabushare, Playboy, FAZ - * Fixes / Improvements: Eloqua, OpenDNS, Mashable, News Corp, Sony, Yahoo!, - Examiner.com, FBI, Adtechus, Mozilla, Dreamhost, Lenovo / Thinkpad, Pirate - Party, Scribd - * New Czech translation - -3.0development.6 (2012-08-16) - * Prevent ruleset bugs from crashing the UI - https://trac.torproject.org/projects/tor/ticket/6280 - * Fix a lack-of-translation bug in the context menu - https://trac.torproject.org/projects/tor/ticket/6516 - (although coverage will probably be patchy for a while) - * Add hooks to use our new Firefox internal rewrite API, if the browser - has it (this should address - https://trac.torproject.org/projects/tor/ticket/5477 - https://trac.torproject.org/projects/tor/ticket/3190 - ) - * Fixes: OpenStreetMap, Okcupid, Yandex, Valve, Atlantic Media, AWS, - XDA developers, Tumblr, MetaPress, Mixpanel, VideoLAN, JBoss, - Yourhosting, Pypi, QT, Imgur, Scientific American, - Chronicle, ISOC, Wikimedia, Xmission, Tumblr, OpenDNS - Mobygames, Telegraph Media, Dailymotion, RFC-editor, US gov, - Discogs, Costco, Brightcove, PirateParty, BrownPaperTickets - * Improvements: Apple, MIT - * Disable buggy/broken: ZDNet, Globe and Mail, Malwarebytes, Plenty of Fish, - Raymond.CC, Blip.tv, Governo Portugês, adf.ly, - McAfee :( :( :( - * New translations: Italian, Turkish, Traditional Chinese, Korean - * Numerous updated translations - -chrome-2012.8.16 - * The "exponential bifurcation" alpha - * Change the update URI to the specific one blessed by the Chrome Web Store - (they tell us that, despite appearances, the request will actually be - https) - -chrome-2012.8.15 - - * The "Happiness in the Cloud" Alpha - * We still suffer from the horrible Appcache bug, so this is still an alpha: - https://trac.torproject.org/projects/tor/ticket/5585 - https://code.google.com/p/chromium/issues/detail?id=121325 - * Enslave ourselves to the Chrome Web Store, because Google has made it - very tricky to install .crx files in Chrome version 21 - https://code.google.com/p/chromium/issues/detail?id=133818 - https://code.google.com/p/chromium/issues/detail?id=128748 - * Do a better job of displaying the context menu, especially for error pages: - https://trac.torproject.org/projects/tor/ticket/6085 - (should be fixed for real this time) - * Fancier Chrome context menus by Jay Weisskopf - * Fixes: OpenStreetMap, Okcupid, Yandex, Valve, Atlantic Media, AWS, - XDA developers, Tumblr, MetaPress, Mixpanel, VideoLAN, JBoss, - Yourhosting, Pypi, QT, Imgur, Scientific American, - Chronicle, ISOC, Wikimedia, Xmission, Tumblr, OpenDNS - Mobygames, Telegraph Media, Dailymotion, RFC-editor, US gov, - Discogs, Costco, Brightcove, PirateParty, BrownPaperTickets, - * Improvements: Apple, MIT - * Disable buggy/broken: ZDNet, Globe and Mail, Malwarebytes, Plenty of Fish, - Raymond.CC, Blip.tv, Governo Portugês, adf.ly - McAfee :( :( :( - -3.0development.5 (2012-06-26) - * Fix the enable/disable button in Firefox 15 - https://trac.torproject.org/projects/tor/ticket/6212 - * Fixes: GetFirebug, Gentoo, Ebay, Yandex (extensive), Maxmind, Blogger, HP, - Jottit - * Disable broken: Project Syndicate, Alton Towers, Network for Good - https://trac.torproject.org/projects/tor/ticket/6222 - * The Decentralized SSL Observatory client now saves up some certificates if - the network blocks or MITMs attempts to submit them. - -chrome-2012.6.21 - * The Autonomous Greenland Beta Release - * Allow rulesets to be toggled when the page breaks completely - https://trac.torproject.org/projects/tor/ticket/6085 - * Fixes: Github, Gentoo, HP, Maxmind, Orange - * Disable broken: Alton Towers, Project Syndicate - * Only ship 1 new ruleset (we're in a freeze) - -3.0development.4 (2012-06-18) - * Fix compatibility bug with Firefox 15: - https://trac.torproject.org/projects/tor/ticket/5893 - * Ship 217 new rulesets (frozen; new rulesets now have to wait until 4.0 - development) - * Fixes: numerous, including: Boxee, CiteULike, MozillaMessaging, - Yandex, Demonoid, Pirate Party, Gentoo, NYTimes, Microsoft, - Wikipedia, Lenovo, MyWOT - https://trac.torproject.org/projects/tor/ticket/5912 - https://trac.torproject.org/projects/tor/ticket/6091 - https://trac.torproject.org/projects/tor/ticket/5703 - https://trac.torproject.org/projects/tor/ticket/5931 - https://trac.torproject.org/projects/tor/ticket/5958 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001190.html - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-May/001186.html - https://mail1.eff.org/pipermail/https-everywhere/2012-May/001433.html - * Disable broken: MarketWatch, Disqus, Magento, Lavasoft, - Typepad/Say Media, Thomas Cook, Thomson Reuters clients, - Science Daily, BinRev, Ikea, Interpol - https://trac.torproject.org/projects/tor/ticket/5899 - https://trac.torproject.org/projects/tor/ticket/5496 - -chrome-2012.6.18 - * The Divisible By Six Chromium Beta Release - * Ship 444 new Rulesets - * Fixes: numerous, including: Boxee, omgubuntu, Microsoft - https://trac.torproject.org/projects/tor/ticket/5899 - https://trac.torproject.org/projects/tor/ticket/5703 - https://trac.torproject.org/projects/tor/ticket/5931 - https://trac.torproject.org/projects/tor/ticket/5958 - * Disable broken: Disqus, uTorrent, Thomas Cook, Thomson Reuters clients, - Science Daily, Say Media, BinRev, Ikea, Interpol - * Not fixed: - The horrible appcache / CSS bug: - https://trac.torproject.org/projects/tor/ticket/5585 - Occasional extension compatibility glitches: - https://trac.torproject.org/projects/tor/ticket/5731 - -3.0development.3 (2012-05-11) - * Ship 361 new rulesets - * Do a better job of disabling CACert rulesets by default on non-CAcert - platforms - * Fix for compatibility with some other Firefox extensions: - https://trac.torproject.org/projects/tor/ticket/5682 - * Fixes: Wordpress stylesheets, USENIX, Mozilla, Opera, Valve, and many - others - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-April/001105.html - https://trac.torproject.org/projects/tor/ticket/5831 - * Disable broken: Pandora, Miranda IM, Pastebin.ca - https://trac.torproject.org/projects/tor/ticket/5804 - https://trac.torproject.org/projects/tor/ticket/5776 - * Testing our new more automated release process - -chrome-2012.5.1 - * The May Day Chromium Beta Release - * Ship 886 new rulesets (thanks mostly to Negres!) - * Fix two downgrade attacks that might allow attackers to deny HTTPS - Everywhere protection for cookies on some domains. - https://trac.torproject.org/projects/tor/ticket/5676 - https://trac.torproject.org/projects/tor/ticket/2199 - * More efficient ruleset storage shrinks the .crx download by a factor of - about 4 (thanks fauxfaux) - https://trac.torproject.org/projects/tor/ticket/5275 - * Disable buggy rulesets: IBM, Scribd, Wunderground, ReadWriteWeb, - Pastebin.ca - https://trac.torproject.org/projects/tor/ticket/5344 - https://trac.torproject.org/projects/tor/ticket/5435 - https://trac.torproject.org/projects/tor/ticket/5630 - * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, - OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble, - Pastebin.ca - https://trac.torproject.org/projects/tor/ticket/5509 - https://trac.torproject.org/projects/tor/ticket/5491 - https://trac.torproject.org/projects/tor/ticket/5303 - * Numerous other improvements, fixes, and exciting new bugs :) - - -3.0development.2 (2012-04-26) - * License change: the tree now includes some code from Convergence, which - is GPL v3+. Other code remains licensable as GPLv2+ - * Ship 696 new rulesets (!!!), thanks to a lot of amazing work by Negres - * Fix a downgrade attack that might allow attackers to deny HTTPS - Everywhere protection for cookies on some domains. - https://trac.torproject.org/projects/tor/ticket/5676 - * Fix a weird wrong DOM-origin bug that occurred while redirects were in - progress (this might have security implications, although we are unsure - if it was exploitable). - https://trac.torproject.org/projects/tor/ticket/5477 - * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, - OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble - https://trac.torproject.org/projects/tor/ticket/5509 - https://trac.torproject.org/projects/tor/ticket/5491 - https://trac.torproject.org/projects/tor/ticket/5303 - * Stumble across more horrible security holes in the Verizon website: - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-February/001003.html - * Disable the Gentoo ruleset on non-CAcert platforms - * Disable buggy rulesets: IBM, Scribd, Wunderground, ReadWriteWeb :( :( :( - https://trac.torproject.org/projects/tor/ticket/5344 - https://trac.torproject.org/projects/tor/ticket/5435 - https://trac.torproject.org/projects/tor/ticket/5630 - * Better cohabitation between the Decentralized SSL Observatory and - Convergence - * Separate Observatory option to control self-signed cert submission - * Numerous other ruleset enhancements, fixes, and probably exciting new bugs - in Negres's ruleset changes - -3.0development.1 (2012-03-14) - * By default, use https://google.co.cctld instead of - encrypted.google.com - https://trac.torproject.org/projects/tor/ticket/5152 - * Add an optional ruleset to use https://www.google.com - instead of encrypted.google.com, too - * Add a new context menu in the rulesets list: - - toggle a ruleset - - reset it to the default - https://trac.torproject.org/projects/tor/ticket/3762 - - view the ruleset source - https://trac.torproject.org/projects/tor/ticket/5237 - * Show the Observatory popup to all users once, not just TorButton users - * Four new translations: Basque, French, Polish, Slovak - * Ship 125 new rulesets - -chrome-2012.3.14 - * Ship 109 new rulesets since the last Chromium release - * Add an optional ruleset to search on https://www.google.com - instead of encrypted.google.com - * Switch non-US google searches to country sites by default - * Better chrome context UI - -2.2.3 (2012-09-25) - * Workaround for breakage in Amazon Look Inside the Book (via Cloudfront) - https://trac.torproject.org/projects/tor/ticket/6848 - * Fix logout for AOL users - * Other fixes: PassThePopcorn, WhatCD, Antispam.de, RFCeditor, - Weatherspark / GoogleMaps - * Disable broken: SVT.se - -2.2.1 (2012-08-17) - * Fix a configuration-parsing bug in 2.2 that would - ignore default_off rules if this was a first install - https://mail1.eff.org/pipermail/https-everywhere/2012-August/001511.html - * Add a cleanup routine for profiles affected by that bug. - -2.2 (2012-08-15) - * Prevent ruleset bugs from crashing the UI - https://trac.torproject.org/projects/tor/ticket/6280 - * Fix the enable/disable button in Firefox 14 - https://trac.torproject.org/projects/tor/ticket/6212 - * Fix a nasty bug in the optional "Search www.google.com" ruleset: - https://gitweb.torproject.org/https-everywhere.git/commitdiff/50ca41a1e189ef8383781f803e51ec7a06688a3b - * Disable buggy/broken: ZDNet, Globe and Mail, Blip.tv, Governo Portugês, - Alton Towers, McAfee :( :( :( - * Fixes: Yandex, Wikipedia, PirateParty, JBoss, Gentoo - * Hopefully the last 2.x release before 3.0 stable - -2.1 (2012-06-18) - * Fix context menu breakage when URIs lack a host - * Fixes: CiteULike, MozillaMessaging, Yandex, Demonoid, Pirate Party, - Gentoo, NYTimes, Microsoft, Wikipedia, Lenovo - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html - https://trac.torproject.org/projects/tor/ticket/6091 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001190.html - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-May/001186.html - https://mail1.eff.org/pipermail/https-everywhere/2012-May/001433.html - * Disable broken: MarketWatch, Disqus, Magento, Lavasoft, Project Syndicate, - Typepad/Say Media - https://trac.torproject.org/projects/tor/ticket/5899 - https://trac.torproject.org/projects/tor/ticket/5496 - -2.0.5 (2012-05-16) - * Rebuild 2.0.4 without a bug in the release scripts that prevented all the - rulesets from being absent - -2.0.4 (2012-05-16) - * Fix for compatibility with some other Firefox extensions: - https://trac.torproject.org/projects/tor/ticket/5682 - * Fixes: Wordpress stylesheets, USENIX, Mozilla, Opera, Indymedia - https://trac.torproject.org/projects/tor/ticket/5905 - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-April/001105.html - * Disable broken: Pandora, Miranda IM, Pastebin.ca, PaidContent - https://trac.torproject.org/projects/tor/ticket/5804 - https://trac.torproject.org/projects/tor/ticket/5776 - - -2.0.3 (2012-04-26) - - * Fix a downgrade attack that might allow attackers to deny HTTPS - Everywhere protection for cookies on some domains. - https://trac.torproject.org/projects/tor/ticket/5676 - * Minor redirection mechanism fixes - * Fixes: WordPress, Yandex, OpenDNS, Via.me/AWS - * Improvements: Mozilla - * Disable broken: ReadWriteWeb - -2.0.2 (2012-04-19) - - * Fix a weird wrong DOM-origin bug that occurred while redirects were in - progress (this might have security implications, although we are unsure - if it was exploitable). - https://trac.torproject.org/projects/tor/ticket/5477 - * By default, use https://google.co.cctld instead of - encrypted.google.com - https://trac.torproject.org/projects/tor/ticket/5152 - * Add an optional ruleset to use https://www.google.com - instead of encrypted.google.com, too - * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, - OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble - https://trac.torproject.org/projects/tor/ticket/5509 - https://trac.torproject.org/projects/tor/ticket/5491 - https://trac.torproject.org/projects/tor/ticket/5303 - * Stumble across more horrible security holes in the Verizon website: - https://mail1.eff.org/pipermail/https-everywhere-rules/2012-February/001003.html - * Disable the Gentoo ruleset on non-CAcert platforms - * Disable buggy rulesets: IBM, Scribd, Wunderground :( :( :( - https://trac.torproject.org/projects/tor/ticket/5344 - https://trac.torproject.org/projects/tor/ticket/5435 - https://trac.torproject.org/projects/tor/ticket/5630 - -2.0.1 (2012-02-27) - * 2.0 is now Stable! - * Fix tiny settings window on some versions of Windows: - https://trac.torproject.org/projects/tor/ticket/5197 - * Fix drop down menu bug for the non-English versions of the UI - * Added Farsi and Arabic translations - * Disable Netflix, which was demonstrating a lot of breakage - * Improvements: Wikipedia - * Fixes: Google, Samba - * Ship 4 new rulesets since 2.0development.6 - (404 new rulesets since 1.2.2!) - * Check ruleset grammaticity with xmllint/RelaxNG - -chrome-2012.2.27 - * Split Google Translate out of the Google APIs rule, and turn it off by - default on Chrome only: - Fixes https://trac.torproject.org/projects/tor/ticket/5196 - * Ship 19 new rulesets since last Chromium release - -chrome-2012.2.9 - * make <exclusion pattern> rulesets elements work in the Chrome version - https://trac.torproject.org/projects/tor/ticket/5042 - (also disable the LinkedIn ruleset) - * Support for Google Sorry - * 6 new rulesets - -2.0development.6 (2012-02-08) - * Fix a nasty UI crash bug on Windows - https://trac.torproject.org/projects/tor/ticket/5020 - * Ruleset fixes: Google Video, Yandex, LDS - https://trac.torproject.org/projects/tor/ticket/5026 - https://trac.torproject.org/projects/tor/ticket/5042 - * Disable problematic LinkedIn ruleset - * An experimental ruleset for the Google "Sorry" page - * Improved Nederlands translation - * Ship 6 new rulesets - -chrome-2012.02.06{,.01} - * First "Official" EFF alpha Chrome release - (Thanks to Mike Perry and Aaron Swartz for leading the porting effort!) - * Installable on Chrome|Chromium 18+ - * Two point versions, to test the autoupdating mechanism - -2.0development.5 (2012-02-02) - * Fix some data structure inefficiencies that should reduce RAM consumption - by 25-75MB (!) - https://trac.torproject.org/projects/tor/ticket/4804 - * Global enable / disable option - https://trac.torproject.org/projects/tor/ticket/4060 - * Google Cache is back! :) - * Ship 126 new rulesets - * Fixes: Wikipedia, Identi.ca, Verizon, CCC.de, UserScripts, Yandex, - Hidemyass, Mozilla, Pogo, Google, Google Images, Google Video, - The Pirate Bay, AK Vorrat, JBoss - * Improvements: EFF, Flickr, RedHat, Diaspora, PrivatePaste, KDE, - Portugese Govt - * Disable broken: NSF.gov, WHO.int, Economist - * New experimental Yahoo! ruleset (off by default) - * New translations: Spanish, Nederlands - -2.0development.4 (2011-11-15) - * The translations actually work - * Add new translations: Chinese, Russian - * Ship 37 new rulesets - * Exclude Userscript paths as an insecure workaround for the Greasemonkey - and Scriptish instances of this bug: - https://trac.torproject.org/projects/tor/ticket/3190 - * Fixes: Java.com, Yandex, Wordpress, Wikipedia, Bahn.de, UNSW, Apache, - DuckDuckGo, Google Images - * Improvements: Debian, Tumblr, Apple, Facebook, VeriSign, Google Services, - Flickr, Youtu.be - * Disable broken: Target, OpenUniversity, TV.com, Radio Shack, - Yahoo Mail :( :(, - Google Cache coverage in Google Services :( :( :( - -2.0development.3 (2011-10-19) - * Selectively reenable nsIContentPolicy::shouldLoad() - Fixes: https://trac.torproject.org/projects/tor/ticket/4194 - Fixes: https://trac.torproject.org/projects/tor/ticket/4149 - * Crazy experimental IOUtils hacks from NoScript - https://bugzilla.mozilla.org/show_bug.cgi?id=677643#c75 - (Appears to fix - https://mail1.eff.org/pipermail/https-everywhere/2011-October/001208.html, - which is probably a general redirection bug) - * Secure cookies set by JavaScript as well as those set by HTTP - Fixes: https://trac.torproject.org/projects/tor/ticket/3766 - * Perform initialisation synchronously, reducing races during startup - Fixes: https://trac.torproject.org/projects/tor/ticket/3533 - * Ship 9 new rulesets - * Disable: MikeWest - * Improvements: YouTube, Google Images - -2.0development.2 (2011-10-05) - * Enable YouTube by default - (also closes https://trac.torproject.org/projects/tor/ticket/4032) - * Merge nsIContentPolicy disablement from stable - (closes https://trac.torproject.org/projects/tor/ticket/3882) - * Context menu should work on error pages - (https://trac.torproject.org/projects/tor/ticket/3815) - * Fix the ASN setting button in the observatory prefs - (https://trac.torproject.org/projects/tor/ticket/4170) - * Make the Observatory much more efficient - * Ship 46 new rulesets - * Update for new Wikipedia HTTPS deployment - * Ruleset Fixes and Enhancements: Yandex, Identica, SBB, Polldaddy, XKCD, - Statcounter, Caltech, UCSD, FlickR, Android - * Disable broken: LastPass, Avast, EPEAT, Bloglines - * Improve the state of our translations-in progress - * Fancy new Python build scripts - -2.0development.1 (2011-09-15) - * Begin alpha testing for the Decentralized SSL Observatory! - (currently opt-in, with a popup prompt if you have Tor Button installed) - * Ship 164 new rulesets - * Enable Google Maps by default - * Pending translations: Arabic, Dutch, German, Portugese, Latvian, Russian, - Swedish - * Fixes: OpenDNS, WordPress, Flickr - * Expansions & Improvements: Google Services, Twitter, Gowalla, Apple, Bit.ly - AdBlock Plus, KLM, Adobe, UCSD, Heroku, Wikipedia - * Disable broken rulesets: Deviantart, Bandcamp, Securityfocus - * Improved build scripts - -1.2.2 (2012-01-09) - * Google Cache is back! - * Fixes: Wikipedia, Identi.ca, Verizon, CCC.de, UserScripts, - Yandex - * Improvements: EFF - * Disable broken: NSF.gov, WHO.int - -1.2.1 (2011-10-15) - * Google Cache is broken, remove it from GoogleServices :( :( :( - * Fix for the Google Image Search homepage - * Exclude help.duckduckgo.com: - https://trac.torproject.org/projects/tor/ticket/4399 - * Disable Yahoo! Mail: - https://trac.torproject.org/projects/tor/ticket/4441 - * Installable on Firefox 10 - -1.2 (2011-10-14) - * Fixes: WordPress, Statcounter, Java, Bahn.de, SICS.se - * Improvements: use fancy new HTTPS Wikipedia - * Disable broken: OpenUniversity, TV.com, Random.org, kb.CERT - -1.1 (2011-10-19) - * Further tweaks to internals, will hopefully fix a number of weird issues: - https://trac.torproject.org/projects/tor/ticket/4194 - https://trac.torproject.org/projects/tor/ticket/4149 - https://mail1.eff.org/pipermail/https-everywhere/2011-October/001208.html - * YouTube is enabled by default! - * Fixes: Yandex, Statcounter, Polldaddy, SBB.ch - * Improvements: Facebook+ - * Disable broken: Bloglines, EPEAT - -1.0.3 (2011-09-26) - * Mozilla is about to release Firefox 7, the stable branch needs to be - installable there! - * Disabling nsIContentPolicy callbacks should fix this crash bug: - https://trac.torproject.org/projects/tor/ticket/3882 - https://bugzilla.mozilla.org/show_bug.cgi?id=677643 - It /might/ cause us to fail to rewrite requests in obscure corner cases. - We haven't found any in testing, but vigilance will be required. - * Support for Google Maps - * Fixes: WordPress, Lenovo, OpenDNS, Avast, Ripe.net, TV.com, 38.de - * Disable broken: Seagate - -1.0.2 (2011-09-20) - * Major improvements to the Wikipedia ruleset - * Disable broken/buggy rulesets: DeviantArt, eHow, About.me, Bandcamp, - StudiVZ, Securityfocus, BankofAmerica :( :( :( - * Small fixes: OpenDNS, WordPress, links in the "About" page - * Declare incompatibility with Firefox 7 & 8 until Mozilla fixes this: - https://bugzilla.mozilla.org/show_bug.cgi?id=677643 - -1.0.1 (2011-08-10) - * Disable some rulesets with partial compatibility issues: Reddit, - StumbleUpon, Heroku - * Small Yandex fix - * Fix/improvement for Google Instant outside the US - -1.0.0 (2011-08-04) - * Release 1.0 into the stable branch! - * Improve toolbar UI for error pages somewhat (it still isn't perfect) - * Bugfixes: Microsoft, Dropbox, Netflix, MySQL - * Disable a couple of broken rules - -1.0.0development.5: (2011-07-13) - * Ship rulesets as a single "default.rulesets" file, shrinking the .xpi from - ~370 kB to ~120kB and speeding Firefox startup: - https://trac.torproject.org/projects/tor/ticket/3404 - * Fix an ephemeral bug where disabled-by-default rules would be briefly - enabled when first installed - * Wikipedia shows up in the toolbar/context menu - * Fixes to netflix & netzpolitik - * Toolbar/context menu can be opened with left or right click - -1.0.0development.4: (2011-07-06) - * Fix a bug with Google Translate - * Unbreak the Netflix blog - * Toolbar button now looks OK in Seamonkey - * Declare compatibility with the next round of Firefox alphas - -1.0.0development.3: (2011-07-04) - * Do not show a bizarre popup when people click the HTTPS toolbar button on - error pages - * Fix a GoogleServices bug that broke logout from non-US google accounts :( - -1.0.0development.2: (2011-07-01) - * Fix bugs that arose when trying to move the toolbar menu icon: - https://trac.torproject.org/projects/tor/ticket/3497 - * Handle usernames and passwords in URIs more explicitly - https://trac.torproject.org/projects/tor/ticket/2199 - * By default, move context menu from toolbar to addons bar - * Ship 22 new rulesets - * Add support for Google Plus, Accounts and AdWdords - * Improvements to Microsoft, Twitter and Gitorious - -1.0.0development.1: (2011-06-27) - * Add a context menu to let users toggle rulesets that are/might be - applicable to the current page (we can now stabilise the dev branch!) - * Ship 42 new rulesets - * Support for Google Image Search (except the very first landing page :/) - * Fixes: Netflix, Plone - * Improvements: Google APIs, Google Services, Mediawiki - * Disable broken rules: OKCupid, Surveymonkey - * Declare compatibility with recent Seamonkey releases - -0.9.9.development.6: - * Optimistically declare compatibility with Firefoxes up to v 7.* - * Ship 193 new rulesets - * Fixes & Improvements: Wikipedia, AmazonAWS, Google Images, Microsoft, - Mozilla, Netflix, Google User Content, Twitter, Gitorious, AdBlock Plus, - Youtube, he.net, Bitcoin - * Remove broken rules: Match.com - -0.9.9.development.5: - * Compatible with Firefox 4.0.1+ - * New ruleset management UI (thanks to katmagic and Stefan Tomanek) - * Ship 136 new rulesets - * Fixes: reCAPTCHA, Google Images, Gentoo, Gitorious - * Improvements: Bit.ly, Yahoo, Nokia - * Disable: WashingtonPost :(, Doubleclick, OpenSSL.org (!) - -0.9.9.development.4: - * Ship 117 new rulesets - * Fixes: MySQL, GroupOn, country-specific Google news sites, - * Improvements: mail.com, WordPress - * Leave WashingtonPost ruleset on in the hope that it gets fixed soon :/ - * Disable broken rules: HTC, I2P ... - -0.9.9.development.3: - - * In the settings dialogue, offer "Reset defaults" instead of "Enable all" - * Merge fixes from NoScript that avoid some torbutton bugs - * Ship 56 new rulesets - * Numerous tweaks + fixes, including NYTimes and AddThis - -0.9.9.development.2: - - * Prevent the preferences window from swallowing the screen on OS X / Windows - * Stop the StartCom rule from breaking StartCom OCSP/CRLs (which can't be HTTPS) - * Attempt to do the same for for CAcert - * Fixes to: Reddit, Drupal.org - * Disable some problematic rulesets: Cisco, Opera - * Enable: Reddit - * Ship another 62 rulesets - -0.9.9.development.1: - - * The efficient ruleset checking implementation should now hopefully be... - efficient - * Ship all the rulesets (!!!) - * Except the ones that cause cert warnings, which are there but off by default - * Build scripts attempt to validate rulesets before making a .xpi - -0.9.7: - * Support firefox 5 and 6 betas - * Numerous improvements and fixes to Google and GoogleServices support - * Fixes to AmazonAWS - * Secure j.mp via bit.ly - * Fix gentoo bugs - -0.9.6: - * Support firefox 4.0.1 - * Unbreak recaptcha - * Disable google.com/jsapi (which was breaking some embedded maps, though - that bug *might* have been fixed) - -0.9.5: - * WashingtonPost is broken and seems to be staying that way; disable it :( - * Replace "Enable All" with "Reset Defaults" - * Fixes & Improvements to WordPress + Mozilla - -0.9.4: - * Significant performance improvements - * Disable Cisco by default - * Fixes & improvements to: NYTimes, WashingtonPost, Cisco, WordPress - * Support Google Code - * Disable Google Custom Search Engines (they don't work) - * Support global installation for OS distributions (thanks dm0) - - -0.9.3: - * Significant performance improvements - * Disable Cisco by default - * Fixes & improvements to: NYTimes, WashingtonPost, Cisco, WordPress - * Support Google Code - * Disable Google Custom Search Engines (they don't work) - * Support global installation for OS distributions (thanks dm0) - -0.9.2: - * Fix a bug in our redirection loop detection that was causing touble with - some parts of NYTimes, Facebook, and other sites - (closes: https://trac.torproject.org/projects/tor/ticket/2217) - -0.9.1: - * Unbreak the "all x news articles" links in Google News - * Exclude nytimes.com/roomfordebate, since it's broken in https. - -0.9.0: - * This is our "Firesheep" release. It has numerous anti-firesheep - improvements! - * Split the stricter parts of the Facebook rule into a "Facebook+" rule. - It's what's required to protect Facebook from Firesheep and similar cookie - theft attacks, but it may break apps, because apps.facebook.com currently - has the wrong cert. - * Allow rulesets to specify that the secure flag should be set on some - cookies even if the site operator failed to do so - * Ship rules for: - - Amazon S3 (AWS) - - Github - - Bit.ly - - Dropbox - - Evernote - - Cisco - * Extensive improvements (including secure cookies) in the Twitter and - Facebook rules - * Support for full Live / Hotmail encryption - * Significant performance optimisation decreases CPU load - Fixes: - https://trac.torproject.org/projects/tor/ticket/1656 - https://trac.torproject.org/projects/tor/ticket/2194 - * Rearrange our Channel Replacement code! - Fixes https://trac.torproject.org/projects/tor/ticket/1684 - https://bugzilla.mozilla.org/show_bug.cgi?id=548102 - Thanks to Giorgio Maone and Boris Zbarsky! - * Add scrollbars if there are a lot of rules present in the Preferences - dialog (may still be somewhat buggy...) - * Optimise GoogleServices.xml and support Google code search - * Patch for future compatiability with Request Policy: - https://trac.torproject.org/projects/tor/ticket/1574 - * Support for the Firefox 4 API - * The Amazon rule was causing a lot of glitches; it is now off by default - * Control log verbosity with an about:config variable - * Numerous minor rule improvements - -0.2.2: - * Fix a glitch in the Content Policy path that may or may not have been - responsible for these bugs: - https://trac.torproject.org/projects/tor/ticket/1700 - https://trac.torproject.org/projects/tor/ticket/1672 - https://trac.torproject.org/projects/tor/ticket/1673 - The patch breaks toolbar search suggestions. And who knows what else? - * Don't send some country homepages to https://www.google.com/webhp?hl= ; - use https://encrypted.google.com instead - * Cleanup and refactor the URI replacement and rewriting code. Should - hopefully fix https://trac.torproject.org/projects/tor/ticket/1649 - * Add a Google APIs rule - * Remove some Extremely Nasty code that would delete malformed rulesets (!) - (it was pasted from Torbutton's cookie handling logic...) - * Add code.google.com to Google Services - * The client=firefox* workaround is no longer necessary once we're sending - non-US users to encrypted.google.com rather than www.google.com - * Better coverage for GMX, Google services, Twitter - * Scroogle homepage in HTTPS - * Add rules for - - Mail.com logins - - Microsoft (limited coverage) - * Fix a nasty Google/Wikipedia bug within 0.2.2.development.{1,2} - -0.2.1: - * Although google said https://www.google.com would continue to work, that - wasn't absolutely true. - * The new encyrpted.google.com seems to require queries to be #q=thing - rather than search?q=thing, at least some of the time. So let's do that. - -0.2.0: - * Work around the fact that Google does not allow client=firefox* HTTPS - searches from outside the US, by rewriting those URIs - * Add rules for: - - Amazon - - GMX - - Live.com (Hotmail logins) - - Meebo - - the Netherlands Government - - Wordpress.com - - Zoho - * Remove the assumption that non-US searches would always start with an hl= - language parameter - * Handle searches to the google.com/firefox script better - * Remove accidental duplicates of a couple of rules! - * Bump maxVersion into the future so we're compatible with Firefox alphas - * Fix more legacy eff.org bugs - -0.1.2: - * Apparently, we are not actually compatible with Firefox 2.0.0.x, so don't - install with it! - * Further generalisation of Wikimedia rules - * Fix bugs in the handling of obscure parts of eff.org and torproject.org - * A bug in a user rules file should produce an error, rather than causing all - rules to fail to load - -0.1.1: - * Generalise the Wikipedia rules to other Wikimedia services - * In preferences window, add a link to instructions for writing one's own - rules diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome.manifest b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome.manifest deleted file mode 100644 index 4869afe..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome.manifest +++ /dev/null @@ -1,53 +0,0 @@ -content https-everywhere chrome/content/ -override chrome://https-everywhere/content/rulesets.sqlite defaults/rulesets.sqlite - -locale https-everywhere en chrome/locale/en/ -locale https-everywhere lt chrome/locale/lt/ -locale https-everywhere lv chrome/locale/lv/ -locale https-everywhere pt chrome/locale/pt/ -locale https-everywhere sv chrome/locale/sv/ -locale https-everywhere de chrome/locale/de/ -locale https-everywhere ru chrome/locale/ru/ -locale https-everywhere zh-CN chrome/locale/zh-CN/ -locale https-everywhere zh-TW chrome/locale/zh-TW/ -locale https-everywhere es chrome/locale/es/ -locale https-everywhere nl chrome/locale/nl/ -locale https-everywhere ar chrome/locale/ar/ -locale https-everywhere fa chrome/locale/fa/ -locale https-everywhere eu chrome/locale/eu/ -locale https-everywhere fr chrome/locale/fr/ -locale https-everywhere pl chrome/locale/pl/ -locale https-everywhere sk chrome/locale/sk/ -locale https-everywhere ms chrome/locale/ms/ -locale https-everywhere da chrome/locale/da/ -locale https-everywhere el chrome/locale/el/ -locale https-everywhere hu chrome/locale/hu/ -locale https-everywhere it chrome/locale/it/ -locale https-everywhere tr chrome/locale/tr/ -locale https-everywhere ko chrome/locale/ko/ -locale https-everywhere cs chrome/locale/cs/ -locale https-everywhere hr chrome/locale/hr/ -locale https-everywhere he chrome/locale/he/ -locale https-everywhere fi chrome/locale/fi/ -locale https-everywhere nb chrome/locale/nb/ -locale https-everywhere sl chrome/locale/sl/ -locale https-everywhere bg chrome/locale/bg/ -locale https-everywhere ja chrome/locale/ja/ -locale https-everywhere si chrome/locale/si/ - -skin https-everywhere classic/1.0 chrome/skin/ - -component {32c165b4-fe5e-4964-9250-603c410631b4} components/https-everywhere.js -contract @eff.org/https-everywhere;1 {32c165b4-fe5e-4964-9250-603c410631b4} - -category profile-after-change HTTPSEverywhere @eff.org/https-everywhere;1 -category content-policy HTTPSEverywhere @eff.org/https-everywhere;1 - -overlay chrome://browser/content/browser.xul chrome://https-everywhere/content/toolbar_button.xul -overlay chrome://navigator/content/navigator.xul chrome://https-everywhere/content/toolbar_button.xul - -style chrome://global/content/customizeToolbar.xul chrome://https-everywhere/skin/https-everywhere.css -component {0f9ab521-986d-4ad8-9c1f-6934e195c15c} components/ssl-observatory.js -contract @eff.org/ssl-observatory;1 {0f9ab521-986d-4ad8-9c1f-6934e195c15c} - -category profile-after-change SSLObservatory @eff.org/ssl-observatory;1 diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/about.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/about.xul deleted file mode 100644 index cf57e9d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/about.xul +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> - -<dialog id="https-everywhere-about" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - buttons="accept" - title="&https-everywhere.about.title;" - width="640" - height="480" - align="center"> - - <script type="application/x-javascript" - src="chrome://https-everywhere/content/preferences.js"/> - <vbox style="overflow:auto" flex="1"> - <label style="text-align:center; font-weight:bold; font-size:22px;">&https-everywhere.about.ext_name;</label> - <label style="text-align:center; font-size:18px; margin-bottom:10px;">&https-everywhere.about.ext_description;</label> - - <groupbox> - <caption label="&https-everywhere.about.version;" /> - <label>3.5.1</label> - </groupbox> - - <groupbox> - <caption label="&https-everywhere.about.created_by;" /> - <label>Mike Perry and Peter Eckersley</label> - </groupbox> - - <groupbox> - <caption label="&https-everywhere.about.librarians;" /> - <label>Seth Schoen, MB and Andreas Jonsson</label> - </groupbox> - - <groupbox> - <caption label="&https-everywhere.about.thanks;" /> - <label>Many many contributors, including Aaron Swartz, Alec Moskvin, - Aleksey Kosterin, Alex Xu, Anas Qtiesh, Artyom Gavrichenkov, Brian - Carpenter, Chris Palmer, Christian Inci, Christopher Liu, Claudio - Moretti, Colonel Graff, Dan Auerbach, Daniel Kahn Gillmor, dm0, The - Doctor, Felix Geyer, Fruitless Creek, George Kargiotakis, haviah, Heiko - Adams, Jeroen van der Gun, Jay Weisskopf, Jacob Taylor, Jonathan Davies, Jorge Bernal, - katmagic, Kevin Jacobs, Korte, Liam K, Leonardo Brondani Schenkel, Marti Raudsepp, Micah Lee, Mike - Cardwell, Mangix, Matthias-Christian Ott, Mikko Harhanen, Mishari Muqbil, Neheb, Ori Avtalion, Osama Khalid, - nitrox, Pablo Castellano, Paul Wise, Pavel Kazakov, Phol Paucar, Richard - Green, Roan Kattouw, Rules Moore, Stefan Tomanek, Sam Reed, Steve - Milner, Sujit Rao, TK-999, Vendo, Victor Garin, Weiland Hoffmann, Whizz - Mo and Yan Zhu. Also, portions of HTTPS Everywhere are based on code - from NoScript, by Giorgio Maone and others. We are grateful for their - excellent work!</label> - </groupbox> - - <label style="font-weight:bold; margin-top:10px;"> - &https-everywhere.about.contribute; - <label id="donate link" - value="&https-everywhere.about.donate_tor;" - style="color: blue; cursor:hand; text-decoration:underline; font-style:bold" - onmouseover="event.target.style.cursor='pointer'" - onmouseout="event.target.style.cursor='default'" - onclick="window_opener('https://www.torproject.org/donate/donate.html.en')"/> - or - <label id="donate link2" - value="&https-everywhere.about.donate_eff;" - style="color: blue; cursor:hand; text-decoration:underline; font-style:bold" - onmouseover="event.target.style.cursor='pointer'" - onmouseout="event.target.style.cursor='default'" - onclick="window_opener('https://www.eff.org/donate')"/> - </label> - </vbox> -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js deleted file mode 100644 index 6949167..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js +++ /dev/null @@ -1,266 +0,0 @@ -// An ApplicableList is a structure used to keep track of which rulesets -// were applied, and which ones weren't but might have been, to the contents -// of a given page (top level nsIDOMWindow) - -serial_number = 0; - -function ApplicableList(logger, doc, domWin) { - this.domWin = domWin; - this.uri = doc.baseURIObject.clone(); - if (!this.uri) { - this.log(WARN,"NULL CLONING URI " + doc); - if (doc) - this.log(WARN,"NULL CLONING URI " + doc.baseURIObject); - if (doc.baseURIObject) - this.log(WARN,"NULL CLONING URI " + doc.baseURIObject.spec); - } - this.home = doc.baseURIObject.spec; // what doc we're housekeeping for - this.log = logger; - this.active = {}; - this.breaking = {}; // rulesets with redirection loops - this.inactive = {}; - this.moot={}; // rulesets that might be applicable but uris are already https - this.all={}; // active + breaking + inactive + moot - serial_number += 1; - this.serial = serial_number; - this.log(DBUG,"Alist serial #" + this.serial + " for " + this.home); -} - -ApplicableList.prototype = { - - empty: function() { - // Empty everything, used when toggles occur in order to ensure that if - // the reload fails, the resulting list is not eroneous - this.active = {}; - this.breaking = {}; - this.inactive = {}; - this.moot={}; - this.all={}; - }, - - active_rule: function(ruleset) { - this.log(INFO,"active rule " + ruleset.name +" in "+ this.home +" -> " + - this.domWin.document.baseURIObject.spec+ " serial " + this.serial); - this.active[ruleset.name] = ruleset; - this.all[ruleset.name] = ruleset; - }, - - breaking_rule: function(ruleset) { - this.log(NOTE,"breaking rule " + ruleset.name +" in "+ this.home +" -> " + - this.domWin.document.baseURIObject.spec+ " serial " + this.serial); - this.breaking[ruleset.name] = ruleset; - this.all[ruleset.name] = ruleset; - }, - - inactive_rule: function(ruleset) { - - this.log(INFO,"inactive rule " + ruleset.name +" in "+ this.home +" -> " + - this.domWin.document.baseURIObject.spec+ " serial " + this.serial); - this.inactive[ruleset.name] = ruleset; - this.all[ruleset.name] = ruleset; - }, - - moot_rule: function(ruleset) { - this.log(INFO,"moot rule " + ruleset.name +" in "+ this.home + " serial " + this.serial); - this.moot[ruleset.name] = ruleset; - this.all[ruleset.name] = ruleset; - }, - - dom_handler: function(operation,key,data,src,dst) { - // See https://developer.mozilla.org/En/DOM/UserDataHandler - if (src && dst) - dst.setUserData(key, data, this.dom_handler); - }, - - populate_list: function() { - // The base URI of the dom tends to be loaded from some /other/ - // ApplicableList, so pretend we're loading it from here. - HTTPSEverywhere.instance.https_rules.rewrittenURI(this, this.uri); - this.log(DBUG, "populating using alist #" + this.serial); - }, - - populate_menu: function(document, menupopup, weird) { - this.populate_list(); - this.document = document; - - var https_everywhere = CC["@eff.org/https-everywhere;1"].getService(Components.interfaces.nsISupports).wrappedJSObject; - - // get the menu popup - this.menupopup = menupopup; - - // empty it all of its menuitems - while(this.menupopup.firstChild.tagName != "menuseparator") { - this.menupopup.removeChild(this.menupopup.firstChild); - } - - // add global enable/disable toggle button - var strings = document.getElementById("HttpsEverywhereStrings"); - - var enableLabel = document.createElement('menuitem'); - var text = strings.getString("https-everywhere.menu.globalDisable"); - if(!https_everywhere.prefs.getBoolPref("globalEnabled")) - text = strings.getString("https-everywhere.menu.globalEnable"); - - enableLabel.setAttribute('label', text); - enableLabel.setAttribute('command', 'https-everywhere-menuitem-globalEnableToggle'); - this.prepend_child(enableLabel); - - // add the label at the top - var any_rules = false; - for(var x in this.all) { - any_rules = true; // how did JavaScript get this ugly? - break; - } - var label = document.createElement('menuitem'); - label.setAttribute('label', strings.getString('https-everywhere.menu.enableDisable')); - label.setAttribute('command', 'https-everywhere-menuitem-preferences'); - var label2 = false; - if (!any_rules) { - label2 = document.createElement('menuitem'); - if (!weird) text = strings.getString('https-everywhere.menu.noRules'); - else text = strings.getString('https-everywhere.menu.unknownRules'); - label2.setAttribute('label', text); - label2.setAttribute('command', 'https-everywhere-menuitem-preferences'); - label2.setAttribute('style', 'color:#909090;'); - } - - // create a commandset if it doesn't already exist - this.commandset = document.getElementById('https-everywhere-commandset'); - if(!this.commandset) { - this.commandset = document.createElement('commandset'); - this.commandset.setAttribute('id', 'https-everywhere-commandset'); - var win = document.getElementById('main-window'); - win.appendChild(this.commandset); - } else { - // empty commandset - while(this.commandset.firstChild) - this.commandset.removeChild(this.commandset.firstChild); - } - - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - - var domWin = wm.getMostRecentWindow("navigator:browser").content.document.defaultView.top; - var location = domWin.document.baseURIObject.asciiSpec; //full url, including about:certerror details - - if(location.substr(0, 6) == "about:"){ - //"From" portion of the rule is retrieved from the location bar via document.getElementById("urlbar").value - - var fromHost = document.getElementById("urlbar").value; - - //scheme must be trimmed out to check for applicable rulesets - if(fromHost.indexOf("://") != -1) - fromHost = fromHost.substr(fromHost.indexOf("://") + 3, fromHost.length); - - //trim off any page locations - we only want the host - e.g. domain.com - if(fromHost.indexOf("/") != -1) - fromHost = fromHost.substr(0, fromHost.indexOf("/")); - - // Search for applicable rulesets for the host listed in the location bar - var plist = HTTPSRules.potentiallyApplicableRulesets(fromHost); - for (var i = 0 ; i < plist.length ; i++){ - //For each applicable rulset, determine active/inactive, and append to proper list. - var ruleOn = false; - try { - if(https_everywhere.rule_toggle_prefs.getBoolPref(plist[i].name)) - ruleOn = true; - } catch(e) { - if(https_everywhere.https_rules.rulesetsByName[plist[i].name].active) - ruleOn = true; - } - if(ruleOn) - this.active_rule(plist[i]); - else - this.inactive_rule(plist[i]); - } - } - - // add all applicable commands - for(var x in this.breaking) - this.add_command(this.breaking[x]); - for(var x in this.active) - this.add_command(this.active[x]); - for(var x in this.moot) - this.add_command(this.moot[x]); - for(var x in this.inactive) - this.add_command(this.inactive[x]); - - if(https_everywhere.prefs.getBoolPref("globalEnabled")){ - // add all the menu items - for (var x in this.inactive) - this.add_menuitem(this.inactive[x], 'inactive'); - // rules that are active for some uris are not really moot - for (var x in this.moot) - if (!(x in this.active)) - this.add_menuitem(this.moot[x], 'moot'); - // break once break everywhere - for (var x in this.active) - if (!(x in this.breaking)) - this.add_menuitem(this.active[x], 'active'); - for (var x in this.breaking) - this.add_menuitem(this.breaking[x], 'breaking'); - - if (label2) this.prepend_child(label2); - this.prepend_child(label); - } - - }, - - prepend_child: function(node) { - this.menupopup.insertBefore(node, this.menupopup.firstChild); - }, - - add_command: function(rule) { - var command = this.document.createElement("command"); - command.setAttribute('id', rule.id+'-command'); - command.setAttribute('label', rule.name); - command.setAttribute('oncommand', 'toggle_rule("'+rule.id+'")'); - this.commandset.appendChild(command); - }, - - // add a menu item for a rule -- type is "active", "inactive", "moot", - // or "breaking" - - add_menuitem: function(rule, type) { - // create the menuitem - var item = this.document.createElement('menuitem'); - item.setAttribute('command', rule.id+'-command'); - item.setAttribute('class', type+'-item menuitem-iconic'); - item.setAttribute('label', rule.name); - - // we can get confused if rulesets have their state changed after the - // ApplicableList was constructed - if (!rule.active && (type == 'active' || type == 'moot')) - type = 'inactive'; - if (rule.active && type == 'inactive') - type = 'moot'; - - // set the icon - var image_src; - if (type == 'active') image_src = 'tick.png'; - else if (type == 'inactive') image_src = 'cross.png'; - else if (type == 'moot') image_src = 'tick-moot.png'; - else if (type == 'breaking') image_src = 'loop.png'; - item.setAttribute('image', 'chrome://https-everywhere/skin/'+image_src); - - // all done - this.prepend_child(item); - }, - - show_applicable: function() { - this.log(WARN, "Applicable list number " + this.serial); - for (var x in this.active) - this.log(WARN,"Active: " + this.active[x].name); - - for (var x in this.breaking) - this.log(WARN,"Breaking: " + this.breaking[x].name); - - for (x in this.inactive) - this.log(WARN,"Inactive: " + this.inactive[x].name); - - for (x in this.moot) - this.log(WARN,"Moot: " + this.moot[x].name); - - } -}; - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js deleted file mode 100644 index 551bcab..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js +++ /dev/null @@ -1,387 +0,0 @@ -function CtxCapturingListener(tracingChannel, captureObserver) {
- this.originalListener = tracingChannel.setNewListener(this);
- this.captureObserver = captureObserver;
-}
-CtxCapturingListener.prototype = {
- originalListener: null,
- originalCtx: null,
- onStartRequest: function(request, ctx) {
- this.originalCtx = ctx;
- if (this.captureObserver) {
- this.captureObserver.observeCapture(request, this);
- }
- },
- onDataAvailable: function(request, ctx, inputStream, offset, count) {},
- onStopRequest: function(request, ctx, statusCode) {},
- QueryInterface: xpcom_generateQI([Ci.nsIStreamListener])
-};
-
-function ChannelReplacement(chan, newURI, newMethod) {
- return this._init(chan, newURI, newMethod);
-}
-
-ChannelReplacement.supported = "nsITraceableChannel" in Ci;
-
-ChannelReplacement.runWhenPending = function(channel, callback) {
- if (channel.isPending()) {
- callback();
- return false;
- } else {
- new LoadGroupWrapper(channel, callback);
- return true;
- }
-};
-
-
-ChannelReplacement.prototype = {
- listener: null,
- context: null,
- oldChannel: null,
- channel: null,
- window: null,
- suspended: false,
-
- get _unsupportedError() {
- return new Error("Can't replace channels without nsITraceableChannel!");
- },
-
- get _classifierClass() {
- delete this.__proto__._classifierClass;
- return this.__proto__._classifierClass = Cc["@mozilla.org/channelclassifier"];
- },
-
- _autoHeadersRx: /^(?:Host|Cookie|Authorization)$|Cache|^If-/,
- visitHeader: function(key, val) {
- try {
- // we skip authorization and cache-related fields which should be automatically set
- if (!this._autoHeadersRx.test(key)) this.channel.setRequestHeader(key, val, false);
- } catch (e) {
- dump(e + "\n");
- }
- },
-
- _init: function(chan, newURI, newMethod) {
- if (!(ChannelReplacement.supported && chan instanceof Ci.nsITraceableChannel))
- throw this._unsupportedError;
-
- newURI = newURI || chan.URI;
-
- var newChan = IOS.newChannelFromURI(newURI);
-
- this.oldChannel = chan;
- this.channel = newChan;
-
- // porting of http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2750
-
- var loadFlags = chan.loadFlags;
-
- if (chan.URI.schemeIs("https"))
- loadFlags &= ~chan.INHIBIT_PERSISTENT_CACHING;
-
-
- newChan.loadGroup = chan.loadGroup;
- newChan.notificationCallbacks = chan.notificationCallbacks;
- newChan.loadFlags = loadFlags | newChan.LOAD_REPLACE;
- - if (!(newChan instanceof Ci.nsIHttpChannel))
- return this;
-
- // copy headers
- chan.visitRequestHeaders(this);
-
- if (!newMethod || newMethod === chan.requestMethod) {
- if (newChan instanceof Ci.nsIUploadChannel && chan instanceof Ci.nsIUploadChannel && chan.uploadStream ) {
- var stream = chan.uploadStream;
- if (stream instanceof Ci.nsISeekableStream) {
- stream.seek(stream.NS_SEEK_SET, 0);
- }
-
- try {
- let ctype = chan.getRequestHeader("Content-type");
- let clen = chan.getRequestHeader("Content-length");
- if (ctype && clen) {
- newChan.setUploadStream(stream, ctype, parseInt(clen, 10));
- }
- } catch(e) {
- newChan.setUploadStream(stream, '', -1);
- }
-
- newChan.requestMethod = chan.requestMethod;
- }
- } else {
- newChan.requestMethod = newMethod;
- }
-
- if (chan.referrer) newChan.referrer = chan.referrer;
- newChan.allowPipelining = chan.allowPipelining;
- newChan.redirectionLimit = chan.redirectionLimit - 1;
- if (chan instanceof Ci.nsIHttpChannelInternal && newChan instanceof Ci.nsIHttpChannelInternal) {
- if (chan.URI == chan.documentURI) {
- newChan.documentURI = newURI;
- } else {
- newChan.documentURI = chan.documentURI;
- }
- }
-
- if (chan instanceof Ci.nsIEncodedChannel && newChan instanceof Ci.nsIEncodedChannel) {
- newChan.applyConversion = chan.applyConversion;
- }
-
- // we can't transfer resume information because we can't access mStartPos and mEntityID :(
- // http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2826
-
- if ("nsIApplicationCacheChannel" in Ci &&
- chan instanceof Ci.nsIApplicationCacheChannel && newChan instanceof Ci.nsIApplicationCacheChannel) {
- newChan.applicationCache = chan.applicationCache;
- newChan.inheritApplicationCache = chan.inheritApplicationCache;
- }
-
- if (chan instanceof Ci.nsIPropertyBag && newChan instanceof Ci.nsIWritablePropertyBag)
- for (var properties = chan.enumerator, p; properties.hasMoreElements();)
- if ((p = properties.getNext()) instanceof Ci.nsIProperty)
- newChan.setProperty(p.name, p.value);
-
- if (chan.loadFlags & chan.LOAD_DOCUMENT_URI) {
- this.window = IOUtil.findWindow(chan);
- if (this.window) this.window._replacedChannel = chan;
- }
-
- return this;
- },
-
- _onChannelRedirect: function() {
- var oldChan = this.oldChannel;
- var newChan = this.channel;
-
- if (this.realRedirect) {
- if (oldChan.redirectionLimit === 0) {
- oldChan.cancel(NS_ERROR_REDIRECT_LOOP);
- throw NS_ERROR_REDIRECT_LOOP;
- }
- } else newChan.redirectionLimit += 1;
-
-
-
- // nsHttpHandler::OnChannelRedirect()
-
- const CES = Ci.nsIChannelEventSink;
- const flags = CES.REDIRECT_INTERNAL;
- this._callSink(
- Cc["@mozilla.org/netwerk/global-channel-event-sink;1"].getService(CES),
- oldChan, newChan, flags);
- var sink;
-
- for (let cess = Cc['@mozilla.org/categorymanager;1'].getService(CI.nsICategoryManager)
- .enumerateCategory("net-channel-event-sinks");
- cess.hasMoreElements();
- ) {
- sink = cess.getNext();
- if (sink instanceof CES)
- this._callSink(sink, oldChan, newChan, flags);
- }
- sink = IOUtil.queryNotificationCallbacks(oldChan, CES);
- if (sink) this._callSink(sink, oldChan, newChan, flags);
-
- // ----------------------------------
-
- newChan.originalURI = oldChan.originalURI;
-
- sink = IOUtil.queryNotificationCallbacks(oldChan, Ci.nsIHttpEventSink);
- if (sink) sink.onRedirect(oldChan, newChan);
- },
-
- _callSink: function(sink, oldChan, newChan, flags) {
- try {
- if ("onChannelRedirect" in sink) sink.onChannelRedirect(oldChan, newChan, flags);
- else sink.asyncOnChannelRedirect(oldChan, newChan, flags, this._redirectCallback);
- } catch(e) {
- if (e.toString().indexOf("(NS_ERROR_DOM_BAD_URI)") !== -1 && oldChan.URI.spec !== newChan.URI.spec) {
- let oldURL = oldChan.URI.spec;
- try {
- oldChan.URI.spec = newChan.URI.spec;
- this._callSink(sink, oldChan, newChan, flags);
- } catch(e1) {
- throw e;
- } finally {
- oldChan.URI.spec = oldURL;
- }
- } else if (e.message.indexOf("(NS_ERROR_NOT_AVAILABLE)") === -1) throw e;
- }
- },
-
- _redirectCallback: ("nsIAsyncVerifyRedirectCallback" in Ci)
- ? {
- QueryInterface: xpcom_generateQI([Ci.nsIAsyncVerifyRedirectCallback]),
- onRedirectVerifyCallback: function(result) {}
- }
- : null
- ,
-
- replace: function(realRedirect, callback) {
- let self = this;
- let oldChan = this.oldChannel;
- this.realRedirect = !!realRedirect;
- if (typeof(callback) !== "function") {
- callback = this._defaultCallback;
- }
- ChannelReplacement.runWhenPending(oldChan, function() {
- if (oldChan.status) return; // channel's doom had been already defined
-
- let ccl = new CtxCapturingListener(oldChan, self);
- self.loadGroup = oldChan.loadGroup;
-
- oldChan.loadGroup = null; // prevents the wheel from stopping spinning
-
-
- if (self._redirectCallback) { // Gecko >= 2
- // this calls asyncAbort, which calls onStartRequest on our listener
- oldChan.cancel(NS_BINDING_REDIRECTED);
- self.suspend(); // believe it or not, this will defer asyncAbort() notifications until resume()
- callback(self);
- } else {
- // legacy (Gecko < 2)
- self.observeCapture = function(req, ccl) {
- self.open = function() { self._redirect(ccl); };
- callback(self);
- };
- oldChan.cancel(NS_BINDING_REDIRECTED);
- }
-
-
- });
- },
-
- observeCapture: function(req, ccl) {
- this._redirect(ccl);
- },
-
- _defaultCallback: function(replacement) {
- replacement.open();
- },
-
- open: function() {
- this.resume(); // this triggers asyncAbort and the listeners in cascade
- },
- _redirect: function(ccl) {
- let oldChan = this.oldChannel,
- newChan = this.channel,
- overlap;
-
- if (!(this.window && (overlap = this.window._replacedChannel) !== oldChan)) {
- try {
- if (ABE.consoleDump && this.window) {
- ABE.log("Opening delayed channel: " + oldChan.name + " - (current loading channel for this window " + (overlap && overlap.name) + ")");
- }
-
- oldChan.loadGroup = this.loadGroup;
-
- this._onChannelRedirect();
- newChan.asyncOpen(ccl.originalListener, ccl.originalCtx);
-
- if (this.window && this.window != IOUtil.findWindow(newChan)) {
- // late diverted load, unwanted artifact, abort
- IOUtil.abort(newChan);
- } else {
- // safe browsing hook
- if (this._classifierClass)
- this._classifierClass.createInstance(Ci.nsIChannelClassifier).start(newChan, true);
- }
- } catch (e) {
- ABE.log(e);
- }
- } else {
- if (ABE.consoleDump) {
- ABE.log("Detected double load on the same window: " + oldChan.name + " - " + (overlap && overlap.name));
- }
- }
-
- this.dispose();
- },
-
- suspend: function() {
- if (!this.suspended) {
- this.oldChannel.suspend();
- this.suspended = true;
- }
- },
- resume: function() {
- if (this.suspended) {
- this.suspended = false;
- try {
- this.oldChannel.resume();
- } catch (e) {}
- }
- },
-
- dispose: function() {
- this.resume();
- if (this.loadGroup) {
- try {
- this.loadGroup.removeRequest(this.oldChannel, null, NS_BINDING_REDIRECTED);
- } catch (e) {}
- this.loadGroup = null;
- }
-
- }
-};
-
-function LoadGroupWrapper(channel, callback) {
- this._channel = channel;
- this._inner = channel.loadGroup;
- this._callback = callback;
- channel.loadGroup = this;
-}
-LoadGroupWrapper.prototype = {
- QueryInterface: xpcom_generateQI([Ci.nsILoadGroup]),
-
- get activeCount() {
- return this._inner ? this._inner.activeCount : 0;
- },
- set defaultLoadRequest(v) {
- return this._inner ? this._inner.defaultLoadRequest = v : v;
- },
- get defaultLoadRequest() {
- return this._inner ? this._inner.defaultLoadRequest : null;
- },
- set groupObserver(v) {
- return this._inner ? this._inner.groupObserver = v : v;
- },
- get groupObserver() {
- return this._inner ? this._inner.groupObserver : null;
- },
- set notificationCallbacks(v) {
- return this._inner ? this._inner.notificationCallbacks = v : v;
- },
- get notificationCallbacks() {
- return this._inner ? this._inner.notificationCallbacks : null;
- },
- get requests() {
- return this._inner ? this._inner.requests : this._emptyEnum;
- },
-
- addRequest: function(r, ctx) {
- this.detach();
- if (this._inner) try {
- this._inner.addRequest(r, ctx);
- } catch(e) {
- // addRequest may have not been implemented
- }
- if (r === this._channel)
- try {
- this._callback(r, ctx);
- } catch (e) {}
- },
- removeRequest: function(r, ctx, status) {
- this.detach();
- if (this._inner) this._inner.removeRequest(r, ctx, status);
- },
-
- detach: function() {
- if (this._channel.loadGroup) this._channel.loadGroup = this._inner;
- },
- _emptyEnum: {
- QueryInterface: xpcom_generateQI([Ci.nsISimpleEnumerator]),
- getNext: function() { return null; },
- hasMoreElements: function() { return false; }
- }
-};
diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js deleted file mode 100644 index 9afe0a8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js +++ /dev/null @@ -1,148 +0,0 @@ -function Cookie(s, host) {
- this.parse(s, host);
-}
-Cookie.computeId = function(c) {
- return c.name + ";" + c.host + "/" + c.path;
-};
-Cookie.find = function(f) {
- var cc = Cookie.prototype.cookieManager.enumerator;
- var c;
- while (cc.hasMoreElements()) {
- if (f(c = cc.getNext())) return c;
- }
- return null;
-};
-
-Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' };
-Cookie.prototype = {
-
- name: '',
- value: '',
- source: '',
- domain: '',
- host: '',
- rawHost: '',
- path: '',
- secure: false,
- httponly: false,
- session: true,
- expires: 0,
-
- id: '',
-
-
- toString: function() {
- var c = [this['name'] + "=" + this.value];
- var v;
- const aa = Cookie.attributes;
- for (var k in aa) {
- var p = aa[k];
- v = this[k];
- switch(typeof(v)) {
- case "string":
- if (v) c.push(p + "=" + v);
- break;
- case "boolean":
- if (v) c.push(p);
- break;
- case "number":
- if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString());
- break;
- }
- }
- return c.join("; ");
- },
- parse: function(s, host) {
- var p;
- if (this.source) {
- // cleanup for recycle
- for (p in this) {
- if (typeof (p) != "function") delete this[p];
- }
- }
- this.source = s;
- this.host = host;
-
- var parts = s.split(/;\s*/);
- var nv = parts.shift().split("=");
-
- this.name = nv.shift() || '';
- this.value = nv.join('=') || '';
-
- var n, v;
- for each (p in parts) {
- nv = p.split("=");
- switch (n = nv[0].toLowerCase()) {
- case 'expires':
- v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000);
- break;
- case 'domain':
- case 'path':
- v = nv[1] || '';
- break;
- case 'secure':
- case 'httponly':
- v = true;
- break;
- default:
- n = 'unknown';
- }
- this[n] = v;
- }
- if (!this.expires) {
- this.session = true;
- this.expires = Math.round(new Date() / 1000) + 31536000;
- }
- if (this.domain) {
- if (!this.isDomain) this.domain = "." + this.domain;
- this.host = this.domain;
- }
- this.rawHost = this.host.replace(/^\./, '');
-
- this.id = Cookie.computeId(this);
- },
-
-
- get cookieManager() {
- delete Cookie.prototype.cookieManager;
- var cman = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager);
- return Cookie.prototype.cookieManager = cman;
- },
- belongsTo: function(host, path) {
- if (path && this.path && path.indexOf(this.path) != 0) return false;
- if (host == this.rawHost) return true;
- var d = this.domain;
- return d && (host == d || this.isDomain && host.slice(-d.length) == d);
- },
- save: function() {
- this.save = ("cookieExists" in this.cookieManager)
- ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); }
- : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);}
- ;
- return this.save();
- },
- exists: function() {
- var cc = this.cookieManager.enumerator;
- while(cc.hasMoreElements()) {
- if (this.sameAs(cc.getNext())) return true;
- }
- return false;
- },
-
- sameAs: function(c) {
- (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2);
- return Cookie.computeId(c) == this.id;
- },
-
- // nsICookie2 interface extras
- get isSecure() { return this.secure; },
- get expiry() { return this.expires; },
- get isSession() { return this.session; },
- get isHttpOnly() { return this.httponly; },
- get isDomain() { return this.domain && this.domain[0] == '.'; },
- policy: 0,
- status: 0,
- QueryInterface: xpcom_generateQI([Ci.nsICookie, Ci.nsICookie2])
-
-};
diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js deleted file mode 100644 index c39a0ef..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js +++ /dev/null @@ -1,296 +0,0 @@ -INCLUDE('Cookie');
-// XXX: Disable STS for now.
-var STS = {
- isSTSURI : function(uri) {
- return false;
- }
-};
-
-// Hack. We only need the part of the policystate that tracks content
-// policy loading.
-const PolicyState = {
- attach: function(channel) {
- IOUtil.attachToChannel(channel, "httpseverywhere.policyLoaded", true);
- },
-
- extract: function(channel) {
- var res = IOUtil.extractFromChannel(channel,
- "httpseverywhere.policyLoaded", true);
- return res;
- },
-};
-
-const HTTPS = {
- ready: false,
-
- secureCookies: true,
- secureCookiesExceptions: null,
- secureCookiesForced: null,
- httpsForced: null,
- httpsForcedExceptions: null,
- httpsRewrite: null,
-
- replaceChannel: function(applicable_list, channel) {
- var blob = HTTPSRules.rewrittenURI(applicable_list, channel.URI.clone());
- if (null == blob) return false; // no rewrite
- var uri = blob.newuri;
- if (!uri) this.log(WARN, "OH NO BAD ARGH\nARGH");
-
- var c2 = channel.QueryInterface(CI.nsIHttpChannel);
- this.log(DBUG, channel.URI.spec+": Redirection limit is " + c2.redirectionLimit);
- // XXX This used to be (c2.redirectionLimit == 1), but that's very
- // inefficient in a case (eg amazon) where this may happen A LOT.
- // Rather than number like 10, we should use the starting value
- // in network.http.redirection-limit minus some counter
- if (c2.redirectionLimit < 10) {
- this.log(WARN, "Redirection loop trying to set HTTPS on:\n " +
- channel.URI.spec +"\n(falling back to HTTP)");
- if (!blob.applied_ruleset) {
- this.log(WARN,"Blacklisting rule for: " + channel.URI.spec);
- https_everywhere_blacklist[channel.URI.spec] = true;
- }
- https_everywhere_blacklist[channel.URI.spec] = blob.applied_ruleset;
- var domain = null;
- try { domain = channel.URI.host; } catch (e) {}
- if (domain) https_blacklist_domains[domain] = true;
- return false;
- }
-
- // Check for the new internal redirect API. If it exists, use it.
- if (!"redirectTo" in channel) {
- this.log(WARN, "nsIHTTPChannel.redirectTo API is missing. This version of HTTPS Everywhere is useless!!!!\n!!!\n");
- return false;
- }
-
- this.log(INFO, "Using nsIHttpChannel.redirectTo: " + channel.URI.spec + " -> " + uri.spec);
- try {
- channel.redirectTo(uri);
- return true;
- } catch(e) {
- // This should not happen. We should only get exceptions if
- // the channel was already open.
- this.log(WARN, "Exception on nsIHttpChannel.redirectTo: "+e);
-
- // Don't return: Fallback to NoScript ChannelReplacement.js
- }
- this.log(WARN,"Aborting redirection " + channel.name + ", should be HTTPS!");
- IOUtil.abort(channel);
- return false;
- },
-
- // getApplicableListForContext was remove along with the nsIContentPolicy
- // bindings and the and forceURI path that used them.
-
- onCrossSiteRequest: function(channel, origin, browser, rw) {
- try {
- this.handleCrossSiteCookies(channel, origin, browser);
- } catch(e) {
- this.log(WARN, e + " --- " + e.stack);
- }
- },
-
- registered: false,
- handleSecureCookies: function(req) {
-
- try {
- req = req.QueryInterface(CI.nsIHttpChannel);
- } catch(e) {
- this.log(WARN, "Request is not an nsIHttpChannel: " + req);
- return;
- }
- if (!this.secureCookies) return;
- var uri = req.URI;
- if (!uri) {
- this.log(WARN,"No URI inside request " +req);
- return;
- }
- //this.log(DBUG, "Cookie hunting in " + uri.spec);
- var alist = HTTPSEverywhere.instance.getApplicableListForChannel(req);
- if (!alist)
- this.log(INFO, "No alist for cookies for "+(req.URI) ? req.URI.spec : "???");
-
- if (uri.schemeIs("https")) {
- var host = uri.host;
- try {
- var cookies = req.getResponseHeader("Set-Cookie");
- } catch(mayHappen) {
- //this.log(VERB,"Exception hunting Set-Cookie in headers: " + mayHappen);
- return;
- }
- if (!cookies) return;
- var c;
- for each (var cs in cookies.split("\n")) {
- this.log(DBUG, "Examining cookie: ");
- c = new Cookie(cs, host);
- if (!c.secure && HTTPSRules.shouldSecureCookie(alist, c, true)) {
- this.log(INFO, "Securing cookie: " + c.domain + " " + c.name);
- c.secure = true;
- req.setResponseHeader("Set-Cookie", c.source + ";Secure", true);
- }
- }
-
- }
- },
-
- handleInsecureCookie: function(c) {
- if (HTTPSRules.shouldSecureCookie(null, c, false)) {
- this.log(INFO, "Securing cookie from event: " + c.domain + " " + c.name);
- var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]
- .getService(Components.interfaces.nsICookieManager2);
- //some braindead cookies apparently use umghzabilliontrabilions
- var expiry = Math.min(c.expiry, Math.pow(2,31));
- cookieManager.remove(c.host, c.name, c.path, false);
- cookieManager.add(c.host, c.path, c.name, c.value, true, c.isHTTPOnly, c.isSession, expiry);
- }
- },
-
- handleCrossSiteCookies: function(req, origin, browser) {
-
- var unsafeCookies = this.getUnsafeCookies(browser);
- if (!unsafeCookies) return;
-
- var uri = req.URI;
- var dscheme = uri.scheme;
-
- var oparts = origin && origin.match(/^(https?):\/\/([^\/:]+).*?(\/.*)/);
- if (!(oparts && /https?/.test(dscheme))) return;
-
- var oscheme = oparts[1];
- if (oscheme == dscheme) return; // we want to check only cross-scheme requests
-
- var dsecure = dscheme == "https";
-
- if (dsecure && !ns.getPref("secureCookies.recycle", false)) return;
-
- var dhost = uri.host;
- var dpath = uri.path;
-
- var ohost = oparts[2];
- var opath = oparts[3];
-
- var ocookieCount = 0, totCount = 0;
- var dcookies = [];
- var c;
-
- for (var k in unsafeCookies) {
- c = unsafeCookies[k];
- if (!c.exists()) {
- delete unsafeCookies[k];
- } else {
- totCount++;
- if (c.belongsTo(dhost, dpath) && c.secure != dsecure) { // either secure on http or not secure on https
- dcookies.push(c);
- }
- if (c.belongsTo(ohost, opath)) {
- ocookieCount++;
- }
- }
- }
-
- if (!totCount) {
- this.setUnsafeCookies(browser, null);
- return;
- }
-
- // We want to "desecurify" cookies only if cross-navigation to unsafe
- // destination originates from a site sharing some secured cookies
-
- if (ocookieCount == 0 && !dsecure || !dcookies.length) return;
-
- if (dsecure) {
- this.log(WARN,"Detected cross-site navigation with secured cookies: " + origin + " -> " + uri.spec);
-
- } else {
- this.log(WARN,"Detected unsafe navigation with NoScript-secured cookies: " + origin + " -> " + uri.spec);
- this.log(WARN,uri.prePath + " cannot support secure cookies because it does not use HTTPS. Consider forcing HTTPS for " + uri.host + " in NoScript's Advanced HTTPS options panel.");
- }
-
- var cs = CC['@mozilla.org/cookieService;1'].getService(CI.nsICookieService).getCookieString(uri, req);
-
- for each (c in dcookies) {
- c.secure = dsecure;
- c.save();
- this.log(WARN,"Toggled secure flag on " + c);
- }
-
- if (cs) {
- dcookies.push.apply(
- dcookies, cs.split(/\s*;\s*/).map(function(cs) { var nv = cs.split("="); return { name: nv.shift(), value: nv.join("=") }; })
- .filter(function(c) { return dcookies.every(function(x) { return x.name != c.name; }); })
- );
- }
-
- cs = dcookies.map(function(c) { return c.name + "=" + c.value; }).join("; ");
-
- this.log(WARN,"Sending Cookie for " + dhost + ": " + cs);
- req.setRequestHeader("Cookie", cs, false); // "false" because merge syntax breaks Cookie header
- },
-
-
- cookiesCleanup: function(refCookie) {
- var downgraded = [];
-
- var ignored = this.secureCookiesExceptions;
- var disabled = !this.secureCookies;
- var bi = DOM.createBrowserIterator();
- var unsafe, k, c, total, deleted;
- for (var browser; browser = bi.next();) {
- unsafe = this.getUnsafeCookies(browser);
- if (!unsafe) continue;
- total = deleted = 0;
- for (k in unsafe) {
- c = unsafe[k];
- total++;
- if (disabled || (refCookie ? c.belongsTo(refCookie.host) : ignored && ignored.test(c.rawHost))) {
- if (c.exists()) {
- this.log(WARN,"Cleaning Secure flag from " + c);
- c.secure = false;
- c.save();
- }
- delete unsafe[k];
- deleted++;
- }
- }
- if (total == deleted) this.setUnsafeCookies(browser, null);
- if (!this.cookiesPerTab) break;
- }
- },
-
- get cookiesPerTab() {
- return ns.getPref("secureCookies.perTab", false);
- },
-
- _globalUnsafeCookies: {},
- getUnsafeCookies: function(browser) {
- return this.cookiesPerTab
- ? browser && ns.getExpando(browser, "unsafeCookies")
- : this._globalUnsafeCookies;
- },
- setUnsafeCookies: function(browser, value) {
- return this.cookiesPerTab
- ? browser && ns.setExpando(browser, "unsafeCookies", value)
- : this._globalUnsafeCookies = value;
- },
-
- _getParent: function(req, w) {
- return w && w.frameElement || DOM.findBrowserForNode(w || IOUtil.findWindow(req));
- }
-
-};
-
-(function () {
- ["secureCookies", "secureCookiesExceptions", "secureCookiesForced"].forEach(function(p) {
- var v = HTTPS[p];
- delete HTTPS[p];
- HTTPS.__defineGetter__(p, function() {
- return v;
- });
- HTTPS.__defineSetter__(p, function(n) {
- v = n;
- if (HTTPS.ready) HTTPS.cookiesCleanup();
- return v;
- });
- });
-})();
-
-HTTPS.ready = true;
diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js deleted file mode 100644 index ecbaf76..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js +++ /dev/null @@ -1,762 +0,0 @@ -// Compilation of RegExps is now delayed until they are first used... - -function Rule(from, to) { - this.to = to; - this.from_c = from; // This will become a RegExp after compilation -} - -function Exclusion(pattern) { - this.pattern_c = pattern; // Will become a RegExp after compilation -} - -function CookieRule(host, cookiename) { - this.host = host; - this.name = cookiename; - - // These will be made during compilation: - - //this.host_c = new RegExp(host); - //this.name_c = new RegExp(cookiename); -} - -function RuleSet(id, name, xmlName, match_rule, default_off, platform) { - if(xmlName == "WordPress.xml" || xmlName == "Github.xml") { - this.log(NOTE, "RuleSet( name="+name+", xmlName="+xmlName+", match_rule="+match_rule+", default_off="+default_off+", platform="+platform+" )"); - } - - this.id=id; - this.on_by_default = true; - this.compiled = false; - this.name = name; - this.xmlName = xmlName; - this.notes = ""; - if (match_rule) this.ruleset_match_c = new RegExp(match_rule); - else this.ruleset_match_c = null; - if (default_off) { - // Perhaps problematically, this currently ignores the actual content of - // the default_off XML attribute. Ideally we'd like this attribute to be - // "valueless" - this.notes = default_off; - this.on_by_default = false; - } - if (platform) - if (platform.search(HTTPSRules.localPlatformRegexp) == -1) { - this.on_by_default = false; - this.notes = "Only for " + platform; - } - - this.rules = []; - this.exclusions = []; - this.cookierules = []; - - this.rule_toggle_prefs = HTTPSEverywhere.instance.rule_toggle_prefs; - - try { - // if this pref exists, use it - this.active = this.rule_toggle_prefs.getBoolPref(name); - } catch(e) { - // if not, use the default - this.active = this.on_by_default; - } -} - -var dom_parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser); - -RuleSet.prototype = { - - ensureCompiled: function() { - // Postpone compilation of exclusions, rules and cookies until now, to accelerate - // browser load time. - if (this.compiled) return; - var i; - - for (i = 0; i < this.exclusions.length; ++i) { - this.exclusions[i].pattern_c = new RegExp(this.exclusions[i].pattern_c); - } - for (i = 0; i < this.rules.length; ++i) { - this.rules[i].from_c = new RegExp(this.rules[i].from_c); - } - - for (i = 0; i < this.cookierules.length; i++) { - var cr = this.cookierules[i]; - cr.host_c = new RegExp(cr.host); - cr.name_c = new RegExp(cr.name); - } - - this.compiled = true; - }, - - apply: function(urispec) { - // return null if it does not apply - // and the new url if it does apply - var i; - var returl = null; - this.ensureCompiled(); - // If a rulset has a match_rule and it fails, go no further - if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) { - this.log(VERB, "ruleset_match_c excluded " + urispec); - return null; - } - // Even so, if we're covered by an exclusion, go home - for (i = 0; i < this.exclusions.length; ++i) { - if (this.exclusions[i].pattern_c.test(urispec)) { - this.log(DBUG,"excluded uri " + urispec); - return null; - } - } - // Okay, now find the first rule that triggers - for (i = 0; i < this.rules.length; ++i) { - // This is just for displaying inactive rules - returl = urispec.replace(this.rules[i].from_c, this.rules[i].to); - if (returl != urispec) return returl; - } - - return null; - }, - log: function(level, msg) { - https_everywhereLog(level, msg); - }, - - wouldMatch: function(hypothetical_uri, alist) { - // return true if this ruleset would match the uri, assuming it were http - // used for judging moot / inactive rulesets - // alist is optional - - // if the ruleset is already somewhere in this applicable list, we don't - // care about hypothetical wouldMatch questions - if (alist && (this.name in alist.all)) return false; - - this.log(DBUG,"Would " +this.name + " match " +hypothetical_uri.spec + - "? serial " + (alist && alist.serial)); - - var uri = hypothetical_uri.clone(); - if (uri.scheme == "https") uri.scheme = "http"; - var urispec = uri.spec; - - this.ensureCompiled(); - - if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) - return false; - - for (var i = 0; i < this.exclusions.length; ++i) - if (this.exclusions[i].pattern_c.test(urispec)) return false; - - for (var i = 0; i < this.rules.length; ++i) - if (this.rules[i].from_c.test(urispec)) return true; - return false; - }, - - transformURI: function(uri) { - // If no rule applies, return null; if a rule would have applied but was - // inactive, return 0; otherwise, return a fresh uri instance - // for the target - var newurl = this.apply(uri.spec); - if (null == newurl) - return null; - var newuri = Components.classes["@mozilla.org/network/standard-url;1"]. - createInstance(CI.nsIStandardURL); - newuri.init(CI.nsIStandardURL.URLTYPE_STANDARD, 80, - newurl, uri.originCharset, null); - newuri = newuri.QueryInterface(CI.nsIURI); - return newuri; - }, - - enable: function() { - // Enable us. - this.rule_toggle_prefs.setBoolPref(this.name, true); - this.active = true; - }, - - disable: function() { - // Disable us. - this.rule_toggle_prefs.setBoolPref(this.name, false); - this.active = false; - }, - - toggle: function() { - this.active = !this.active; - this.rule_toggle_prefs.setBoolPref(this.name, this.active); - }, - - clear: function() { - try { - this.rule_toggle_prefs.clearUserPref(this.name); - } catch(e) { - // this ruleset has never been toggled - } - this.active = this.on_by_default; - } -}; - -const RuleWriter = { - - getCustomRuleDir: function() { - var loc = "ProfD"; // profile directory - var file = - CC["@mozilla.org/file/directory_service;1"] - .getService(CI.nsIProperties) - .get(loc, CI.nsILocalFile) - .clone(); - file.append("HTTPSEverywhereUserRules"); - // Check for existence, if not, create. - if (!file.exists()) { - file.create(CI.nsIFile.DIRECTORY_TYPE, 0700); - } - if (!file.isDirectory()) { - // XXX: Arg, death! - } - return file; - }, - - chromeToPath: function (aPath) { - if (!aPath || !(/^chrome:/.test(aPath))) - return; //not a chrome url - - var ios = - CC['@mozilla.org/network/io-service;1'] - .getService(CI.nsIIOService); - var uri = ios.newURI(aPath, "UTF-8", null); - var cr = - CC['@mozilla.org/chrome/chrome-registry;1'] - .getService(CI.nsIChromeRegistry); - var rv = cr.convertChromeURL(uri).spec; - - if (/^file:/.test(rv)) - rv = this.urlToPath(rv); - else - rv = this.urlToPath("file://"+rv); - - return rv; - }, - - urlToPath: function (aPath) { - if (!aPath || !/^file:/.test(aPath)) - return ; - - var ph = - CC["@mozilla.org/network/protocol;1?name=file"] - .createInstance(CI.nsIFileProtocolHandler); - var rv = ph.getFileFromURLSpec(aPath).path; - - return rv; - }, - - read: function(file, rule_store, ruleset_id) { - if (!file.exists()) - return null; - if ((rule_store.targets == null) && (rule_store.targets != {})) - this.log(WARN, "TARGETS IS NULL"); - var data = ""; - var fstream = CC["@mozilla.org/network/file-input-stream;1"] - .createInstance(CI.nsIFileInputStream); - var sstream = CC["@mozilla.org/scriptableinputstream;1"] - .createInstance(CI.nsIScriptableInputStream); - fstream.init(file, -1, 0, 0); - sstream.init(fstream); - - var str = sstream.read(4096); - while (str.length > 0) { - data += str; - str = sstream.read(4096); - } - - sstream.close(); - fstream.close(); - return this.readFromString(data, rule_store, ruleset_id); - }, - - readFromString: function(data, rule_store, ruleset_id) { - try { - var xmlruleset = dom_parser.parseFromString(data, "text/xml"); - } catch(e) { // file has been corrupted; XXX: handle error differently - this.log(WARN,"Error in XML data: " + e + "\n" + data); - return null; - } - this.parseOneRuleset(xmlruleset.documentElement, rule_store, ruleset_id); - }, - - parseOneRuleset: function(xmlruleset, rule_store, ruleset_id) { - // Extract an xmlruleset into the rulestore - if (!xmlruleset.getAttribute("name")) { - this.log(WARN, "This blob: '" + xmlruleset + "' is not a ruleset\n"); - return null; - } - - this.log(DBUG, "Parsing " + xmlruleset.getAttribute("name")); - - var match_rl = xmlruleset.getAttribute("match_rule"); - var dflt_off = xmlruleset.getAttribute("default_off"); - var platform = xmlruleset.getAttribute("platform"); - var rs = new RuleSet(ruleset_id, xmlruleset.getAttribute("name"), xmlruleset.getAttribute("f"), match_rl, dflt_off, platform); - - // see if this ruleset has the same name as an existing ruleset; - // if so, this ruleset is ignored; DON'T add or return it. - if (rs.name in rule_store.rulesetsByName) { - this.log(WARN, "Error: found duplicate rule name " + rs.name); - return null; - } - - // Add this ruleset id into HTTPSRules.targets if it's not already there. - // This should only happen for custom user rules. Built-in rules get - // their ids preloaded into the targets map, and have their <target> - // tags stripped when the sqlite database is built. - var targets = xmlruleset.getElementsByTagName("target"); - for (var i = 0; i < targets.length; i++) { - var host = targets[i].getAttribute("host"); - if (!host) { - this.log(WARN, "<target> missing host in " + xmlruleset.getAttribute("name")); - return null; - } - if (! rule_store.targets[host]) - rule_store.targets[host] = []; - this.log(DBUG, "Adding " + host + " to targets, pointing at " + ruleset_id); - rule_store.targets[host].push(ruleset_id); - } - - var exclusions = xmlruleset.getElementsByTagName("exclusion"); - for (var i = 0; i < exclusions.length; i++) { - var exclusion = new Exclusion(exclusions[i].getAttribute("pattern")); - rs.exclusions.push(exclusion); - } - - var rules = xmlruleset.getElementsByTagName("rule"); - for (var i = 0; i < rules.length; i++) { - var rule = new Rule(rules[i].getAttribute("from"), - rules[i].getAttribute("to")); - rs.rules.push(rule); - } - - var securecookies = xmlruleset.getElementsByTagName("securecookie"); - for (var i = 0; i < securecookies.length; i++) { - var c_rule = new CookieRule(securecookies[i].getAttribute("host"), - securecookies[i].getAttribute("name")); - rs.cookierules.push(c_rule); - this.log(DBUG,"Cookie rule "+ c_rule.host+ " " +c_rule.name); - } - - rule_store.rulesets.push(rs); - rule_store.rulesetsByID[rs.id] = rs; - rule_store.rulesetsByName[rs.name] = rs; - }, - - enumerate: function(dir) { - // file is the given directory (nsIFile) - var entries = dir.directoryEntries; - var ret = []; - while(entries.hasMoreElements()) { - var entry = entries.getNext(); - entry.QueryInterface(Components.interfaces.nsIFile); - ret.push(entry); - } - return ret; - }, -}; - - - -const HTTPSRules = { - init: function() { - try { - this.rulesets = []; - this.targets = {}; // dict mapping target host pattern -> list of - // applicable ruleset ids - this.rulesetsByID = {}; - this.rulesetsByName = {}; - var t1 = new Date().getTime(); - this.checkMixedContentHandling(); - var rulefiles = RuleWriter.enumerate(RuleWriter.getCustomRuleDir()); - this.scanRulefiles(rulefiles); - - // Initialize database connection. - var dbFile = new FileUtils.File(RuleWriter.chromeToPath("chrome://https-everywhere/content/rulesets.sqlite")); - var rulesetDBConn = Services.storage.openDatabase(dbFile); - this.queryForRuleset = rulesetDBConn.createStatement( - "select contents from rulesets where id = :id"); - - // Preload the mapping of hostname target -> ruleset ID from DB. - // This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD), - // but is faster than loading all of the rulesets. If this becomes a - // bottleneck, change it to load in a background webworker, or load - // a smaller bloom filter instead. - var targetsQuery = rulesetDBConn.createStatement("select host, ruleset_id from targets"); - this.log(DBUG, "Loading targets..."); - while (targetsQuery.executeStep()) { - var host = targetsQuery.row.host; - var id = targetsQuery.row.ruleset_id; - if (!this.targets[host]) { - this.targets[host] = [id]; - } else { - this.targets[host].push(id); - } - } - this.log(DBUG, "Loading adding targets."); - } catch(e) { - this.log(DBUG,"Rules Failed: "+e); - } - var t2 = new Date().getTime(); - this.log(NOTE,"Loading targets took " + (t2 - t1) / 1000.0 + " seconds"); - - var gitCommitQuery = rulesetDBConn.createStatement("select git_commit from git_commit"); - if (gitCommitQuery.executeStep()) { - this.GITCommitID = gitCommitQuery.row.git_commit; - } - - try { - if (HTTPSEverywhere.instance.prefs.getBoolPref("performance_tests")) { - this.testRulesetRetrievalPerformance(); - } - } catch(e) { - this.log(WARN, "Exception during testing " + e); - } - return; - }, - - checkMixedContentHandling: function() { - // Firefox 23+ blocks mixed content by default, so rulesets that create - // mixed content situations should be disabled there - var appInfo = CC["@mozilla.org/xre/app-info;1"].getService(CI.nsIXULAppInfo); - var platformVer = appInfo.platformVersion; - var versionChecker = CC["@mozilla.org/xpcom/version-comparator;1"] - .getService(CI.nsIVersionComparator); - var prefs = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService).getBranch(""); - - - // If mixed content is present and enabled, and the user hasn't opted to enable - // mixed content triggering rules, leave them out. Otherwise add them in. - if(versionChecker.compare(appInfo.version, "23.0a1") >= 0 - && prefs.getBoolPref("security.mixed_content.block_active_content") - && !prefs.getBoolPref("extensions.https_everywhere.enable_mixed_rulesets")) { - this.log(INFO, "Not activating rules that trigger mixed content errors."); - this.localPlatformRegexp = new RegExp("firefox"); - } else { - this.log(INFO, "Activating rules that would normally trigger mixed content"); - this.localPlatformRegexp = new RegExp("(firefox|mixedcontent)"); - } - }, - - scanRulefiles: function(rulefiles) { - var i = 0; - var r = null; - for(i = 0; i < rulefiles.length; ++i) { - try { - this.log(DBUG,"Loading ruleset file: "+rulefiles[i].path); - var ruleset_id = "custom_" + i; - RuleWriter.read(rulefiles[i], this, ruleset_id); - } catch(e) { - this.log(WARN, "Error in ruleset file: " + e); - if (e.lineNumber) - this.log(WARN, "(line number: " + e.lineNumber + ")"); - } - } - }, - - resetRulesetsToDefaults: function() { - // Callable from within the prefs UI and also for cleaning up buggy - // configurations... - for (var i in this.rulesets) { - this.rulesets[i].clear(); - } - }, - - rewrittenURI: function(alist, input_uri) { - // This function oversees the task of working out if a uri should be - // rewritten, what it should be rewritten to, and recordkeeping of which - // applicable rulesets are and aren't active. Previously this returned - // the new uri if there was a rewrite. Now it returns a JS object with a - // newuri attribute and an applied_ruleset attribute (or null if there's - // no rewrite). - var i = 0; - userpass_present = false; // Global so that sanitiseURI can tweak it. - // Why does JS have no tuples, again? - var blob = {}; blob.newuri = null; - if (!alist) this.log(DBUG, "No applicable list rewriting " + input_uri.spec); - this.log(NOTE, "Processing " + input_uri.spec); - - var uri = this.sanitiseURI(input_uri); - - // Get the list of rulesets that target this host - try { - var rs = this.potentiallyApplicableRulesets(uri.host); - } catch(e) { - this.log(NOTE, 'Could not check applicable rules for '+uri.spec + '\n'+e); - return null; - } - - // ponder each potentially applicable ruleset, working out if it applies - // and recording it as active/inactive/moot/breaking in the applicable list - for (i = 0; i < rs.length; ++i) { - if (!rs[i].active) { - if (alist && rs[i].wouldMatch(uri, alist)) - alist.inactive_rule(rs[i]); - continue; - } - blob.newuri = rs[i].transformURI(uri); - if (blob.newuri) { - // we rewrote the uri - this.log(DBUG, "Rewrote "+input_uri.spec); - if (alist) { - if (uri.spec in https_everywhere_blacklist) - alist.breaking_rule(rs[i]); - else - alist.active_rule(rs[i]); - } - if (userpass_present) blob.newuri.userPass = input_uri.userPass; - blob.applied_ruleset = rs[i]; - return blob; - } - if (uri.scheme == "https" && alist) { - // we didn't rewrite but the rule applies to this domain and the - // requests are going over https - if (rs[i].wouldMatch(uri, alist)) alist.moot_rule(rs[i]); - continue; - } - } - return null; - }, - - sanitiseURI: function(input_uri) { - // Rulesets shouldn't try to parse usernames and passwords. If we find - // those, apply the ruleset without them (and then add them back later). - // When .userPass is absent, sometimes it is false and sometimes trying - // to read it raises an exception (probably depending on the URI type). - var uri = input_uri; - try { - if (input_uri.userPass) { - uri = input_uri.clone(); - userpass_present = true; // tweaking a global in our caller :( - uri.userPass = null; - } - } catch(e) {} - - // example.com. is equivalent to example.com - // example.com.. is invalid, but firefox would load it anyway - try { - if (uri.host) - try { - var h = uri.host; - if (h.charAt(h.length - 1) == ".") { - while (h.charAt(h.length - 1) == ".") - h = h.slice(0,-1); - uri = uri.clone(); - uri.host = h; - } - } catch(e) { - this.log(WARN, "Failed to normalise domain: "); - try {this.log(WARN, input_uri.host);} - catch(e2) {this.log(WARN, "bang" + e + " & " + e2 + " & "+ input_uri);} - } - } catch(e3) { - this.log(INFO, "uri.host is explosive!"); - try { this.log(INFO, "(" + uri.spec + ")"); } // happens for about: uris and soforth - catch(e4) { this.log(WARN, "(and unprintable!!!!!!)"); } - } - return uri; - }, - - setInsert: function(intoList, fromList) { - // Insert any elements from fromList into intoList, if they are not - // already there. fromList may be null. - if (!fromList) return; - for (var i = 0; i < fromList.length; i++) - if (intoList.indexOf(fromList[i]) == -1) - intoList.push(fromList[i]); - }, - - loadAllRulesets: function() { - for (var host in this.targets) { - var ruleset_ids = this.targets[host]; - for (var i = 0; i < ruleset_ids.length; i++) { - var id = ruleset_ids[i]; - if (!this.rulesetsByID[id]) { - this.loadRulesetById(id); - } - } - } - }, - - // Load a ruleset by numeric id, e.g. 234 - // NOTE: This call runs synchronously, which can lock up the browser UI. Is - // there any way to fix that, given that we need to run blocking in the request - // flow? Perhaps we can preload all targets from the DB into memory at startup - // so we only hit the DB when we know there is something to be had. - loadRulesetById: function(ruleset_id) { - this.log(DBUG, "Querying DB for ruleset id " + ruleset_id); - this.queryForRuleset.params.id = ruleset_id; - - try { - if (this.queryForRuleset.executeStep()) { - this.log(INFO, "Found ruleset in DB for id " + ruleset_id); - RuleWriter.readFromString(this.queryForRuleset.row.contents, this, ruleset_id); - } else { - this.log(WARN,"Couldn't find ruleset for id " + ruleset_id); - } - } finally { - this.queryForRuleset.reset(); - } - }, - - // Get all rulesets matching a given target, lazy-loading from DB as necessary. - rulesetsByTarget: function(target) { - var rulesetIds = this.targets[target]; - - var output = []; - if (rulesetIds) { - this.log(INFO, "For target " + target + ", found ids " + rulesetIds.toString()); - for (var i = 0; i < rulesetIds.length; i++) { - var id = rulesetIds[i]; - if (!this.rulesetsByID[id]) { - this.loadRulesetById(id); - } - if (this.rulesetsByID[id]) { - output.push(this.rulesetsByID[id]); - } - } - } else { - this.log(INFO, "For target " + target + ", found no ids in DB"); - } - return output; - }, - - potentiallyApplicableRulesets: function(host) { - // Return a list of rulesets that declare targets matching this host - var i, tmp, t; - var results = []; - - var attempt = function(target) { - this.setInsert(results, this.rulesetsByTarget(target)); - }.bind(this); - - attempt(host); - - // replace each portion of the domain with a * in turn - var segmented = host.split("."); - for (i = 0; i < segmented.length; ++i) { - tmp = segmented[i]; - segmented[i] = "*"; - t = segmented.join("."); - segmented[i] = tmp; - attempt(t); - } - // now eat away from the left, with *, so that for x.y.z.google.com we - // check *.z.google.com and *.google.com (we did *.y.z.google.com above) - for (i = 2; i <= segmented.length - 2; ++i) { - t = "*." + segmented.slice(i,segmented.length).join("."); - attempt(t); - } - this.log(DBUG,"Potentially applicable rules for " + host + ":"); - for (i = 0; i < results.length; ++i) - this.log(DBUG, " " + results[i].name); - return results; - }, - - testRulesetRetrievalPerformance: function() { - // We can use this function to measure the impact of changes in the ruleset - // storage architecture, potentiallyApplicableRulesets() caching - // implementations, etc. - var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(Ci.nsIXMLHttpRequest); - req.open("GET", "https://eff.org/files/alexa-top-10000-global.txt", false); - req.send(); - var domains = req.response.split("\n"); - var domains_l = domains.length - 1; // The last entry in this thing is bogus - var prefix = ""; - this.log(WARN, "Calling potentiallyApplicableRulesets() with " + domains_l + " domains"); - var count = 0; - var t1 = new Date().getTime(); - for (var n = 0; n < domains_l; n++) { - if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0) - count++; - } - var t2 = new Date().getTime(); - this.log(NOTE, count + " hits: average call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds"); - count = 0; - t1 = new Date().getTime(); - for (var n = 0; n < domains_l; n++) { - if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0) - count++; - } - t2 = new Date().getTime(); - this.log(NOTE, count + " hits: average subsequent call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds"); - }, - - shouldSecureCookie: function(applicable_list, c, known_https) { - // Check to see if the Cookie object c meets any of our cookierule citeria - // for being marked as secure. - // @applicable_list : an ApplicableList or record keeping - // @c : an nsICookie2 - // @known_https : true if we know the page setting the cookie is https - - this.log(DBUG," rawhost: " + c.rawHost + "\n name: " + c.name + "\n host" + c.host); - var i,j; - var rs = this.potentiallyApplicableRulesets(c.host); - for (i = 0; i < rs.length; ++i) { - var ruleset = rs[i]; - if (ruleset.active) { - ruleset.ensureCompiled(); - // Never secure a cookie if this page might be HTTP - if (!known_https && !this.safeToSecureCookie(c.rawHost)) - continue; - for (j = 0; j < ruleset.cookierules.length; j++) { - var cr = ruleset.cookierules[j]; - if (cr.host_c.test(c.host) && cr.name_c.test(c.name)) { - if (applicable_list) applicable_list.active_rule(ruleset); - this.log(INFO,"Active cookie rule " + ruleset.name); - return true; - } - } - if (ruleset.cookierules.length > 0) - if (applicable_list) applicable_list.moot_rule(ruleset); - } else if (ruleset.cookierules.length > 0) { - if (applicable_list) applicable_list.inactive_rule(ruleset); - this.log(INFO,"Inactive cookie rule " + ruleset.name); - } - } - return false; - }, - - safeToSecureCookie: function(domain) { - // Check if the domain might be being served over HTTP. If so, it isn't - // safe to secure a cookie! We can't always know this for sure because - // observing cookie-changed doesn't give us enough context to know the - // full origin URI. - - // First, if there are any redirect loops on this domain, don't secure - // cookies. XXX This is not a very satisfactory heuristic. Sometimes we - // would want to secure the cookie anyway, because the URLs that loop are - // not authenticated or not important. Also by the time the loop has been - // observed and the domain blacklisted, a cookie might already have been - // flagged as secure. - - if (domain in https_blacklist_domains) { - this.log(INFO, "cookies for " + domain + "blacklisted"); - return false; - } - - // If we passed that test, make up a random URL on the domain, and see if - // we would HTTPSify that. - - try { - var nonce_path = "/" + Math.random().toString(); - nonce_path = nonce_path + nonce_path; - var test_uri = "http://" + domain + nonce_path; - } catch (e) { - this.log(WARN, "explosion in safeToSecureCookie for " + domain + "\n" - + "(" + e + ")"); - return false; - } - - this.log(INFO, "Testing securecookie applicability with " + test_uri); - var rs = this.potentiallyApplicableRulesets(domain); - for (var i = 0; i < rs.length; ++i) { - if (!rs[i].active) continue; - var rewrite = rs[i].apply(test_uri); - if (rewrite) { - this.log(INFO, "Yes: " + rewrite); - return true; - } - } - this.log(INFO, "(NO)"); - return false; - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js deleted file mode 100644 index 96c2500..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js +++ /dev/null @@ -1,263 +0,0 @@ -const IO = { - readFile: function(file, charset) { - var res; - - const is = Cc["@mozilla.org/network/file-input-stream;1"] - .createInstance(Ci.nsIFileInputStream ); - is.init(file ,0x01, 256 /*0400*/, null); - const sis = Cc["@mozilla.org/scriptableinputstream;1"] - .createInstance(Ci.nsIScriptableInputStream); - sis.init(is); - - res = sis.read(sis.available()); - is.close(); - - if (charset !== null) { // use "null" if you want uncoverted data... - const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] - .createInstance(Ci.nsIScriptableUnicodeConverter); - try { - unicodeConverter.charset = charset || "UTF-8"; - } catch(ex) { - unicodeConverter.charset = "UTF-8"; - } - res = unicodeConverter.ConvertToUnicode(res); - } - - return res; - }, - writeFile: function(file, content, charset) { - const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] - .createInstance(Ci.nsIScriptableUnicodeConverter); - try { - unicodeConverter.charset = charset || "UTF-8"; - } catch(ex) { - unicodeConverter.charset = "UTF-8"; - } - - content = unicodeConverter.ConvertFromUnicode(content); - const os = Cc["@mozilla.org/network/file-output-stream;1"] - .createInstance(Ci.nsIFileOutputStream); - os.init(file, 0x02 | 0x08 | 0x20, 448 /*0700*/, 0); - os.write(content, content.length); - os.close(); - }, - - safeWriteFile: function(file, content, charset) { - var tmp = file.clone(); - var name = file.leafName; - tmp.leafName = name + ".tmp"; - tmp.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, file.exists() ? file.permissions : 384 /*0600*/); - this.writeFile(tmp, content, charset); - tmp.moveTo(file.parent, name); - } -}; - - -function nsISupportsWrapper(wrapped) { - this.wrappedJSObject = wrapped; -} -nsISupportsWrapper.prototype = { - QueryInterface: xpcom_generateQI([]) -}; - -const IOUtil = { - asyncNetworking: true, - proxiedDNS: 0, - - attachToChannel: function(channel, key, requestInfo) { - if (channel instanceof Ci.nsIWritablePropertyBag2) - channel.setPropertyAsInterface(key, requestInfo); - }, - extractFromChannel: function(channel, key, preserve) { - if (channel instanceof Ci.nsIPropertyBag2) { - let p = channel.get(key); - if (p) { - if (!preserve && (channel instanceof Ci.nsIWritablePropertyBag)) channel.deleteProperty(key); - if (p.wrappedJSObject) return p.wrappedJSObject; - p instanceof Ci.nsIURL || p instanceof Ci.nsIURL; - return p; - } - } - return null; - }, - - extractInternalReferrer: function(channel) { - if (channel instanceof Ci.nsIPropertyBag2) { - const key = "docshell.internalReferrer"; - if (channel.hasKey(key)) - try { - return channel.getPropertyAsInterface(key, Ci.nsIURL); - } catch(e) {} - } - return null; - }, - extractInternalReferrerSpec: function(channel) { - var ref = this.extractInternalReferrer(channel); - return ref && ref.spec || null; - }, - - getProxyInfo: function(channel) { - return Ci.nsIProxiedChannel && (channel instanceof Ci.nsIProxiedChannel) - ? channel.proxyInfo - : Components.classes["@mozilla.org/network/protocol-proxy-service;1"] - .getService(Components.interfaces.nsIProtocolProxyService) - .resolve(channel.URI, 0); - }, - - - canDoDNS: function(channel) { - if (!channel || IOS.offline) return false; - - var proxyInfo = this.getProxyInfo(channel); - switch(this.proxiedDNS) { - case 1: - return !(proxyInfo && (proxyInfo.flags & Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST)); - case 2: - return true; - default: - return !proxyInfo || proxyInfo.type == "direct"; - } - - }, - - abort: function(channel, noNetwork) { - channel.cancel(Cr.NS_ERROR_ABORT); - }, - - findWindow: function(channel) { - for each(var cb in [channel.notificationCallbacks, - channel.loadGroup && channel.loadGroup.notificationCallbacks]) { - if (cb instanceof Ci.nsIInterfaceRequestor) { - if (Ci.nsILoadContext) try { - // For Gecko 1.9.1 - return cb.getInterface(Ci.nsILoadContext).associatedWindow; - } catch(e) {} - - try { - // For Gecko 1.9.0 - return cb.getInterface(Ci.nsIDOMWindow); - } catch(e) {} - } - } - return null; - }, - - readFile: IO.readFile, - writeFile: IO.writeFile, - safeWriteFIle: IO.safeWriteFile, - - _protocols: {}, // caching them we gain a 33% speed boost in URI creation :) - newURI: function(url) { - try { - let scheme = url.substring(0, url.indexOf(':')); - return (this._protocols[scheme] || - (this._protocols[scheme] = - Cc["@mozilla.org/network/protocol;1?name=" + scheme] - .getService(Ci.nsIProtocolHandler))) - .newURI(url, null, null); - } catch(e) { - return IOS.newURI(url, null, null); - } - }, - - unwrapURL: function(url) { - try { - if (!(url instanceof Ci.nsIURI)) - url = this.newURI(url); - - switch (url.scheme) { - case "view-source": - return this.unwrapURL(url.path); - case "feed": - let u = url.spec.substring(5); - if (u.substring(0, 2) == '//') u = "http:" + u; - return this.unwrapURL(u); - case "wyciwyg": - return this.unwrapURL(url.path.replace(/^\/\/\d+\//, "")); - case "jar": - if (url instanceof Ci.nsIJARURI) - return this.unwrapURL(url.JARFile); - } - } - catch (e) {} - - return url; - }, - - - get _channelFlags() { - delete this._channelFlags; - const constRx = /^[A-Z_]+$/; - const ff = {}; - [Ci.nsIHttpChannel, Ci.nsICachingChannel].forEach(function(c) { - for (var p in c) { - if (constRx.test(p)) ff[p] = c[p]; - } - }); - return this._channelFlags = ff; - }, - humanFlags: function(loadFlags) { - var hf = []; - var c = this._channelFlags; - for (var p in c) { - if (loadFlags & c[p]) hf.push(p + "=" + c[p]); - } - return hf.join("\n"); - }, - - queryNotificationCallbacks: function(chan, iid) { - var cb; - try { - cb = chan.notificationCallbacks.getInterface(iid); - if (cb) return cb; - } catch(e) {} - - try { - return chan.loadGroup && chan.loadGroup.notificationCallbacks.getInterface(iid); - } catch(e) {} - - return null; - }, - - - anonymizeURI: function(uri, cookie) { - if (uri instanceof Ci.nsIURL) { - uri.query = this.anonymizeQS(uri.query, cookie); - } else return this.anonymizeURL(uri, cookie); - return uri; - }, - anonymizeURL: function(url, cookie) { - var parts = url.split("?"); - if (parts.length < 2) return url; - parts[1] = this.anonymizeQS(parts[1], cookie); - return parts.join("?"); - }, - - _splitName: function(nv) nv.split("=")[0], - _qsRx: /[&=]/, - _anonRx: /(?:auth|s\w+(?:id|key)$)/, - anonymizeQS: function(qs, cookie) { - if (!qs) return qs; - if (!this._qsRx.test(qs)) return ''; - - var cookieNames, hasCookies; - if ((hasCookies = !!cookie)) cookieNames = cookie.split(/\s*;\s*/).map(this._splitName); - - let parms = qs.split("&"); - for (j = parms.length; j-- > 0;) { - let nv = parms[j].split("="); - let name = nv[0]; - if (this._anonRx.test(name) || cookie && cookieNames.indexOf(name) > -1) - parms.splice(j, 1); - } - return parms.join("&"); - }, - - get TLDService() { - delete this.TLDService; - return this.TLDService = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService); - } - -}; - - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js deleted file mode 100644 index 97a7e78..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js +++ /dev/null @@ -1,491 +0,0 @@ -// Copyright (c) 2011 Moxie Marlinspike <moxie@thoughtcrime.org> -// 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, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA - - -/** - * This class manages the ctypes bridge to the NSS (crypto) libraries - * distributed with Mozilla. - * - **/ - -function NSS() { - -} - -NSS.initialize = function(nssPath) { - var sharedLib; - - try { - sharedLib = ctypes.open(nssPath); - } catch (e) { - dump("Failed to find nss3 in installed directory, checking system paths.\n"); - sharedLib = ctypes.open(ctypes.libraryName("nss3")); - } - - NSS.types = new Object(); - - NSS.types.CERTDistNames = ctypes.StructType("CERTDistNames"); - - NSS.types.SECItem = ctypes.StructType("SECItem", - [{'type' : ctypes.int}, - {'data' : ctypes.unsigned_char.ptr}, - {'len' : ctypes.uint32_t}]); - - NSS.types.PLArenaPool = ctypes.StructType("PLArenaPool"); - - NSS.types.CERTCertificateList = ctypes.StructType("CERTCertificateList", - [{'certs' : NSS.types.SECItem.ptr}, - {'len' : ctypes.int}, - {'arena' : NSS.types.PLArenaPool.ptr}]), - - NSS.types.CERTAVA = ctypes.StructType("CERTAVA", - [{'type' : NSS.types.SECItem}, - {'value' : NSS.types.SECItem}]); - - NSS.types.CERTRDN = ctypes.StructType("CERTRDN", - [{'avas' : NSS.types.CERTAVA.ptr.ptr}]); - - NSS.types.SECAlgorithmID = ctypes.StructType("SECAlgorithmID", - [{'algorithm' : NSS.types.SECItem}, - {'parameters' : NSS.types.SECItem}]); - - NSS.types.CERTSignedData = ctypes.StructType("CERTSignedData", - [{'data' : NSS.types.SECItem}, - {'signatureAlgorithm' : NSS.types.SECAlgorithmID}, - {'signature' : NSS.types.SECItem}]); - - NSS.types.CERTOKDomainName = ctypes.StructType("CERTOKDomainName"); - - NSS.types.NSSCertificateStr = ctypes.StructType("NSSCertificateStr"); - - NSS.types.CERTAuthKeyID = ctypes.StructType("CERTAuthKeyID"); - - NSS.types.CERTName = ctypes.StructType("CERTName", - [{'arena' : ctypes.voidptr_t}, - {'rdns' : NSS.types.CERTRDN.ptr.ptr}]); - - NSS.types.CERTValidity = ctypes.StructType("CERTValidity", - [{'arena' : ctypes.voidptr_t}, - {'notBefore' : NSS.types.SECItem}, - {'notAfter' : NSS.types.SECItem}]); - - NSS.types.CERTCertExtension = ctypes.StructType("CERTCertExtension", - [{'id' : NSS.types.SECItem}, - {'critical' : NSS.types.SECItem}, - {'value' : NSS.types.SECItem}]); - - NSS.types.CERTCertDBHandle = ctypes.StructType("CERTCertDBHandle"); - - NSS.types.PK11SlotInfo = ctypes.StructType("PK11SlotInfo"); - - NSS.types.PK11SlotListElement = ctypes.StructType("PK11SlotListElement", - [{'next' : ctypes.StructType("PK11SlotListElement").ptr}, - {'prev' : ctypes.StructType("PK11SlotListElement").ptr}, - {'slot' : NSS.types.PK11SlotInfo.ptr}, - {'refCount' : ctypes.int}]), - - NSS.types.PK11SlotList = ctypes.StructType("PK11SlotList", - [{'head' : NSS.types.PK11SlotListElement.ptr}, - {'tail' : NSS.types.PK11SlotListElement.ptr}, - {'lock' : ctypes.StructType("PZLock").ptr}]), - - NSS.types.SECKEYPrivateKey = ctypes.StructType("SECKEYPrivateKey", - [{'arena' : NSS.types.PLArenaPool.ptr}, - {'keyType' : ctypes.int}, - {'pkcs11Slot' : NSS.types.PK11SlotInfo.ptr}, - {'pkcs11ID' : ctypes.unsigned_long}, - {'pkcs11IsTemp' : ctypes.int}, - {'wincx' : ctypes.voidptr_t}, - {'staticflags' : ctypes.int32_t}]); - - NSS.types.SECKEYPublicKey = ctypes.StructType("SECKEYPublicKey"); - - NSS.types.CERTSubjectPublicKeyInfo = ctypes.StructType("CERTSubjectPublicKeyInfo", - [{'arena' : NSS.types.PLArenaPool.ptr}, - {'algorithm' : NSS.types.SECAlgorithmID}, - {'subjectPublicKey' : NSS.types.SECItem}]); - - NSS.types.CERTCertificateRequest = ctypes.StructType("CERTCertificateRequest"); - - NSS.types.SEC_ASN1Template = ctypes.StructType("SEC_ASN1Template", - [{'kind' : ctypes.unsigned_long}, - {'offset' : ctypes.unsigned_long}, - {'sub' : ctypes.voidptr_t}, - {'size' : ctypes.unsigned_int}]); - - NSS.types.PK11RSAGenParams = ctypes.StructType("PK11RSAGenParams", - [{'keySizeInBits' : ctypes.int}, - {'pe' : ctypes.unsigned_long}]); - - NSS.types.CERTCertTrust = ctypes.StructType("CERTCertTrust", - [{'sslFlags' : ctypes.uint32_t}, - {'emailFlags' : ctypes.uint32_t}, - {'objectSigningFlags' : ctypes.uint32_t}]); - - NSS.types.CERTSubjectList = ctypes.StructType("CERTSubjectList"); - - NSS.types.CERTGeneralName = ctypes.StructType("CERTGeneralName"); - - NSS.types.CERTCertificate = ctypes.StructType("CERTCertificate", - [{'arena' : NSS.types.PLArenaPool.ptr}, - {'subjectName' : ctypes.char.ptr}, - {'issuerName' : ctypes.char.ptr}, - {'signatureWrap' : NSS.types.CERTSignedData}, - {'derCert' : NSS.types.SECItem}, - {'derIssuer' : NSS.types.SECItem}, - {'derSubject' : NSS.types.SECItem}, - {'derPublicKey' : NSS.types.SECItem}, - {'certKey' : NSS.types.SECItem}, - {'version' : NSS.types.SECItem}, - {'serialNumber' : NSS.types.SECItem}, - {'signature' : NSS.types.SECAlgorithmID}, - {'issuer' : NSS.types.CERTName}, - {'validity' : NSS.types.CERTValidity}, - {'subject' : NSS.types.CERTName}, - {'subjectPublicKeyInfo' : NSS.types.CERTSubjectPublicKeyInfo}, - {'issuerID' : NSS.types.SECItem}, - {'subjectID' : NSS.types.SECItem}, - {'extensions' : NSS.types.CERTCertExtension.ptr.ptr}, - {'emailAddr' : ctypes.char.ptr}, - {'dbhandle' : NSS.types.CERTCertDBHandle.ptr}, - {'subjectKeyID' : NSS.types.SECItem}, - {'keyIDGenerated' : ctypes.int}, - {'keyUsage' : ctypes.unsigned_int}, - {'rawKeyUsage' : ctypes.unsigned_int}, - {'keyUsagePresent' : ctypes.int}, - {'nsCertType' : ctypes.uint32_t}, - {'keepSession' : ctypes.int}, - {'timeOK' : ctypes.int}, - {'domainOK' : NSS.types.CERTOKDomainName.ptr}, - {'isperm' : ctypes.int}, - {'istemp' : ctypes.int}, - {'nickname' : ctypes.char.ptr}, - {'dbnickname' : ctypes.char.ptr}, - {'nssCertificate' : NSS.types.NSSCertificateStr.ptr}, - {'trust' : NSS.types.CERTCertTrust.ptr}, - {'referenceCount' : ctypes.int}, - {'subjectList' : NSS.types.CERTSubjectList.ptr}, - {'authKeyID' : NSS.types.CERTAuthKeyID.ptr}, - {'isRoot' : ctypes.int}, - {'options' : ctypes.voidptr_t}, - {'series' : ctypes.int}, - {'slot' : NSS.types.PK11SlotInfo.ptr}, - {'pkcs11ID' : ctypes.unsigned_long}, - {'ownSlot' : ctypes.int}]); - - NSS.types.CERTBasicConstraints = ctypes.StructType("CERTBasicConstraints", - [{'isCA': ctypes.int}, - {'pathLenConstraint' : ctypes.int}]); - - - NSS.lib = { - SEC_OID_MD5 : 3, - SEC_OID_SHA1 : 4, - SEC_OID_X509_KEY_USAGE : 81, - SEC_OID_NS_CERT_EXT_COMMENT : 75, - CKM_RSA_PKCS_KEY_PAIR_GEN : 0, - buffer : ctypes.ArrayType(ctypes.char), - ubuffer : ctypes.ArrayType(ctypes.unsigned_char), - - // CERT_CertificateTemplate : sharedLib.declare("CERT_CertificateTemplate", - // NSS.types.SEC_ASN1Template), - - NSS_Get_CERT_CertificateTemplate : sharedLib.declare("NSS_Get_CERT_CertificateTemplate", - ctypes.default_abi, - NSS.types.SEC_ASN1Template.ptr), - - PK11_HashBuf : sharedLib.declare("PK11_HashBuf", - ctypes.default_abi, - ctypes.int, - ctypes.int, - ctypes.unsigned_char.ptr, - ctypes.unsigned_char.ptr, - ctypes.int32_t), - - CERT_GetDefaultCertDB : sharedLib.declare("CERT_GetDefaultCertDB", - ctypes.default_abi, - NSS.types.CERTCertDBHandle.ptr), - - CERT_ChangeCertTrust : sharedLib.declare("CERT_ChangeCertTrust", - ctypes.default_abi, - ctypes.int32_t, - NSS.types.CERTCertDBHandle.ptr, - NSS.types.CERTCertificate.ptr, - NSS.types.CERTCertTrust.ptr), - - CERT_FindCertByNickname : sharedLib.declare("CERT_FindCertByNickname", - ctypes.default_abi, - NSS.types.CERTCertificate.ptr, - NSS.types.CERTCertDBHandle.ptr, - ctypes.char.ptr), - - CERT_FindCertByDERCert : sharedLib.declare("CERT_FindCertByDERCert", - ctypes.default_abi, - NSS.types.CERTCertificate.ptr, - NSS.types.CERTCertDBHandle.ptr, - NSS.types.SECItem.ptr), - - CERT_VerifyCertNow : sharedLib.declare("CERT_VerifyCertNow", - ctypes.default_abi, - ctypes.int, - NSS.types.CERTCertDBHandle.ptr, - NSS.types.CERTCertificate.ptr, - ctypes.int, - ctypes.int, - ctypes.voidptr_t), - - CERT_CertChainFromCert : sharedLib.declare("CERT_CertChainFromCert", - ctypes.default_abi, - NSS.types.CERTCertificateList.ptr, - NSS.types.CERTCertificate.ptr, - ctypes.int, - ctypes.int), - - PK11_FindKeyByAnyCert : sharedLib.declare("PK11_FindKeyByAnyCert", - ctypes.default_abi, - NSS.types.SECKEYPrivateKey.ptr, - NSS.types.CERTCertificate.ptr, - ctypes.voidptr_t), - - PK11_GetInternalKeySlot : sharedLib.declare("PK11_GetInternalKeySlot", - ctypes.default_abi, - NSS.types.PK11SlotInfo.ptr), - - PK11_GetAllSlotsForCert : sharedLib.declare("PK11_GetAllSlotsForCert", - ctypes.default_abi, - NSS.types.PK11SlotList.ptr, - NSS.types.CERTCertificate.ptr, - ctypes.voidptr_t), - - PK11_GetTokenName : sharedLib.declare("PK11_GetTokenName", - ctypes.default_abi, - ctypes.char.ptr, - NSS.types.PK11SlotInfo.ptr), - - PK11_GenerateKeyPair : sharedLib.declare("PK11_GenerateKeyPair", - ctypes.default_abi, - NSS.types.SECKEYPrivateKey.ptr, - NSS.types.PK11SlotInfo.ptr, - ctypes.int, - NSS.types.PK11RSAGenParams.ptr, - NSS.types.SECKEYPublicKey.ptr.ptr, - ctypes.int, - ctypes.int, - ctypes.voidptr_t), - - PK11_SetPrivateKeyNickname : sharedLib.declare("PK11_SetPrivateKeyNickname", - ctypes.default_abi, - ctypes.int, - NSS.types.SECKEYPrivateKey.ptr, - ctypes.char.ptr), - - SEC_ASN1EncodeItem : sharedLib.declare("SEC_ASN1EncodeItem", - ctypes.default_abi, - NSS.types.SECItem.ptr, - NSS.types.PLArenaPool.ptr, - NSS.types.SECItem.ptr, - ctypes.voidptr_t, - NSS.types.SEC_ASN1Template.ptr), - - SEC_DerSignData : sharedLib.declare("SEC_DerSignData", - ctypes.default_abi, - ctypes.int, - NSS.types.PLArenaPool.ptr, - NSS.types.SECItem.ptr, - ctypes.unsigned_char.ptr, - ctypes.int, - NSS.types.SECKEYPrivateKey.ptr, - ctypes.int), - - SEC_GetSignatureAlgorithmOidTag : sharedLib.declare("SEC_GetSignatureAlgorithmOidTag", - ctypes.default_abi, - ctypes.int, - ctypes.int, - ctypes.int), - - SECOID_SetAlgorithmID : sharedLib.declare("SECOID_SetAlgorithmID", - ctypes.default_abi, - ctypes.int, - NSS.types.PLArenaPool.ptr, - NSS.types.SECAlgorithmID.ptr, - ctypes.int, - NSS.types.SECItem.ptr), - - - CERT_Hexify : sharedLib.declare("CERT_Hexify", - ctypes.default_abi, - ctypes.char.ptr, - NSS.types.SECItem.ptr, - ctypes.int), - - CERT_AsciiToName : sharedLib.declare("CERT_AsciiToName", - ctypes.default_abi, - NSS.types.CERTName.ptr, - ctypes.char.ptr), - - SECKEY_CreateSubjectPublicKeyInfo : sharedLib.declare("SECKEY_CreateSubjectPublicKeyInfo", - ctypes.default_abi, - NSS.types.CERTSubjectPublicKeyInfo.ptr, - NSS.types.SECKEYPublicKey.ptr), - - CERT_CreateCertificateRequest : sharedLib.declare("CERT_CreateCertificateRequest", - ctypes.default_abi, - NSS.types.CERTCertificateRequest.ptr, - NSS.types.CERTName.ptr, - NSS.types.CERTSubjectPublicKeyInfo.ptr, - NSS.types.SECItem.ptr.ptr), - - CERT_CreateCertificate : sharedLib.declare("CERT_CreateCertificate", - ctypes.default_abi, - NSS.types.CERTCertificate.ptr, - ctypes.uint32_t, - NSS.types.CERTName.ptr, - NSS.types.CERTValidity.ptr, - NSS.types.CERTCertificateRequest.ptr), - - CERT_DestroyCertificate : sharedLib.declare("CERT_DestroyCertificate", - ctypes.default_abi, - ctypes.int, - NSS.types.CERTCertificate.ptr), - - CERT_DestroyCertificateList : sharedLib.declare("CERT_DestroyCertificateList", - ctypes.default_abi, - ctypes.int, - NSS.types.CERTCertificateList.ptr), - - CERT_NewTempCertificate : sharedLib.declare("CERT_NewTempCertificate", - ctypes.default_abi, - NSS.types.CERTCertificate.ptr, - NSS.types.CERTCertDBHandle.ptr, - NSS.types.SECItem.ptr, - ctypes.char.ptr, - ctypes.int, - ctypes.int), - - CERT_CreateValidity : sharedLib.declare("CERT_CreateValidity", - ctypes.default_abi, - NSS.types.CERTValidity.ptr, - ctypes.int64_t, - ctypes.int64_t), - - CERT_CertListFromCert : sharedLib.declare("CERT_CertListFromCert", - ctypes.default_abi, - NSS.types.CERTCertificateList.ptr, - NSS.types.CERTCertificate.ptr), - - CERT_StartCertExtensions : sharedLib.declare("CERT_StartCertExtensions", - ctypes.default_abi, - ctypes.voidptr_t, - NSS.types.CERTCertificate.ptr), - - CERT_AddExtension : sharedLib.declare("CERT_AddExtension", - ctypes.default_abi, - ctypes.int, - ctypes.voidptr_t, - ctypes.int, - NSS.types.SECItem.ptr, - ctypes.int, - ctypes.int), - - - CERT_EncodeBasicConstraintValue : sharedLib.declare("CERT_EncodeBasicConstraintValue", - ctypes.default_abi, - ctypes.int, - NSS.types.PLArenaPool.ptr, - NSS.types.CERTBasicConstraints.ptr, - NSS.types.SECItem.ptr), - - CERT_EncodeAndAddBitStrExtension : sharedLib.declare("CERT_EncodeAndAddBitStrExtension", - ctypes.default_abi, - ctypes.int, - ctypes.voidptr_t, - ctypes.int, - NSS.types.SECItem.ptr, - ctypes.int), - - CERT_EncodeAltNameExtension : sharedLib.declare("CERT_EncodeAltNameExtension", - ctypes.default_abi, - ctypes.int, - NSS.types.PLArenaPool.ptr, - NSS.types.CERTGeneralName.ptr, - NSS.types.SECItem.ptr), - - CERT_FinishExtensions : sharedLib.declare("CERT_FinishExtensions", - ctypes.default_abi, - ctypes.int, - ctypes.voidptr_t), - - CERT_ImportCerts : sharedLib.declare("CERT_ImportCerts", - ctypes.default_abi, - ctypes.int, - NSS.types.CERTCertDBHandle.ptr, - ctypes.int, - ctypes.int, - NSS.types.SECItem.ptr.ptr, - NSS.types.CERTCertificate.ptr.ptr.ptr, - ctypes.int, - ctypes.int, - ctypes.char.ptr), - - PORT_NewArena : sharedLib.declare("PORT_NewArena", - ctypes.default_abi, - NSS.types.PLArenaPool.ptr, - ctypes.uint32_t), - - PORT_ArenaZAlloc : sharedLib.declare("PORT_ArenaZAlloc", - ctypes.default_abi, - ctypes.voidptr_t, - NSS.types.PLArenaPool.ptr, - ctypes.int), - - PORT_FreeArena : sharedLib.declare("PORT_FreeArena", - ctypes.default_abi, - ctypes.void_t, - NSS.types.PLArenaPool.ptr, - ctypes.int), - - CERT_GetCommonName : sharedLib.declare("CERT_GetCommonName", - ctypes.default_abi, - ctypes.char.ptr, - NSS.types.CERTName.ptr), - - CERT_GetOrgUnitName : sharedLib.declare("CERT_GetOrgUnitName", - ctypes.default_abi, - ctypes.char.ptr, - NSS.types.CERTName.ptr), - - CERT_GetCertificateNames : sharedLib.declare("CERT_GetCertificateNames", - ctypes.default_abi, - NSS.types.CERTGeneralName.ptr, - NSS.types.CERTCertificate.ptr, - NSS.types.PLArenaPool.ptr), - - CERT_DecodeDERCertificate : sharedLib.declare("__CERT_DecodeDERCertificate", - ctypes.default_abi, - NSS.types.CERTCertificate.ptr, - NSS.types.SECItem.ptr, - ctypes.int, - ctypes.char.ptr), - - CERT_FindCertExtension : sharedLib.declare("CERT_FindCertExtension", - ctypes.default_abi, - ctypes.int, - NSS.types.CERTCertificate.ptr, - ctypes.int, - NSS.types.SECItem.ptr), - }; - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js deleted file mode 100644 index 49777fa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js +++ /dev/null @@ -1,348 +0,0 @@ -// These are concatenated md5 and sha1 fingerprints for the Firefox and -// Microsoft root CAs as of Aug 2010 - -root_ca_hashes = { - '00531D1D7201D423C820D00B6088C5D143DDB1FFF3B49B73831407F6BC8B975023D07C50' : true, - '015A99C3D64FA94B3C3BB1A3AB274CBFFC219A76112F76C1C508833C9A2FA2BA84AC087A' : true, - '019408DE857F8D806CE602CA89522848750251B2C632536F9D917279543C137CD721C6E0' : true, - '0208EE8CAAB8387A6824DCB4E26A52337E206939CC5FA883635F64C750EBF5FDA9AEE653' : true, - '0226C3015E08303743A9D07DCF37E6BF323C118E1BF7B8B65254E2E2100DD6029037F096' : true, - '034287D7C1167D18AFA4703CB8312C3E4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9' : true, - '03DC08EEC4703FFA20E5E179E81AE7C59ED18028FB1E8A9701480A7890A59ACD73DFF871' : true, - '044BFDC96CDA2A32857C598461468A64BEB5A995746B9EDF738B56E6DF437A77BE106B81' : true, - '0468E9247E41CED76C441630703DDDB9AB16DD144ECDC0FC4BAAB62ECF0408896FDE52B7' : true, - '068690F2195471FDDD3DE6EEA161CAFF7030AABF8432A800666CCCC42A887E42B7553E2B' : true, - '069F6979166690021B8C8CA2C3076F3A627F8D7827656399D27D7F9044C9FEB3F33EFA9A' : true, - '06F0171EB1E961ED7A363CA594A1374AFAAA27B8CAF5FDF5CDA98AC3378572E04CE8F2E0' : true, - '06F9EBECCC569D88BA90F5BAB01AE00216D424FE9610E17519AF232BB68774E24144BE6E' : true, - '076192047EA6B9CD5E6B007AE3BF1D0434D499426F9FC2BB27B075BAB682AAE5EFFCBA74' : true, - '087C581F522B44B43B79CD01F8C5C3C995E6ADF8D77146024DD56A21B2E73FCDF23B35FF' : true, - '0B092C1CD721866F94376FE6A7F3224D0409565B77DA582E6495AC0060A72354E64B0192' : true, - '0C412F135BA054F596662D7ECD0E03F4DA79C1711150C23439AA2B0B0C62FD55B2F9F580' : true, - '0C5ADD5AAE29F7A77679FA4151FEF035B865130BEDCA38D27F69929420770BED86EFBC10' : true, - '0C7FDD6AF42AB9C89BBD207EA9DB5C3760D68974B5C2659E8A0FC1887C88D246691B182C' : true, - '0CF89E17FCD403BDE68D9B3C0587FE8433A335C23CE8034B04E13DE5C48E791AEB8C3204' : true, - '0E40A76CDE035D8FD10FE4D18DF96CA9A9E9780814375888F20519B06D2B0D2B6016907D' : true, - '0EFA4BF7D760CD65F7A7068857986239D29F6C98BEFC6D986521543EE8BE56CEBC288CF3' : true, - '0FA01300C3558AB7D37E2D04739EDE3C8B1A1106B8E26B232980FD652E6181376441FD11' : true, - '100EADF35C841D8E035F2DC93937F552742CDF1594049CBF17A2046CC639BB3888E02E33' : true, - '10FC635DF6263E0DF325BE5F79CD6767742C3192E607E424EB4549542BE1BBC53E6174E2' : true, - '119279403CB18340E5AB664A679280DFA9628F4B98A91B4835BAD2C1463286BB66646A8C' : true, - '14F108AD9DFA64E289E71CCFA8AD7D5E3921C115C15D0ECA5CCB5BC4F07D21D8050B566A' : true, - '155EF5117AA2C1150E927E66FE3B84C3B38FECEC0B148AA686C3D00F01ECC8848E8085EB' : true, - '15ACA5C2922D79BCE87FCB67ED02CF36E7B4F69D61EC9069DB7E90A7401A3CF47D4FE8EE' : true, - '15B298A354704048703A375582C45AFA0048F8D37B153F6EA2798C323EF4F318A5624A9E' : true, - '15EE9F5AA08528DF6BDD34A3A056D8307F8A77836BDC6D068F8B0737FCC5725413068CA4' : true, - '160A1613C17FF01D887EE3D9E71261CCF88015D3F98479E1DA553D24FD42BA3F43886AEF' : true, - '173574AF7B611CEBF4F93CE2EE40F9A2925A8F8D2C6D04E0665F596AFF22D863E8256F3F' : true, - '1802B00127036A191B323B83DE9AA985D6BF7994F42BE5FA29DA0BD7587B591F47A44F22' : true, - '1898C0D6E93AFCF9B0F50CF74B014417FAB7EE36972662FB2DB02AF6BF03FDE87C4B2F9B' : true, - '18AE695D15CAB917673267D597B260C04BA7B9DDD68788E12FF852E1A024204BF286A8F6' : true, - '1AD00CB9A6E68A3B6E95860C5B8CD8195A4D0E8B5FDCFDF64E7299A36C060DB222CA78E4' : true, - '1B2E00CA2606903DADFE6F1568D36BB367650DF17E8E7E5B8240A4F4564BCFE23D69C6F0' : true, - '1BD75F76734CC0DC98CA442BCC0F78DD31E2C52CE1089BEFFDDADB26DD7C782EBC4037BD' : true, - '1C4BE2C62DB9AC3114F4400769CB1F4011C5B5F75552B011669C2E9717DE6D9BFF5FA810' : true, - '1D3554048578B03F42424DBF20730A3F02FAF3E291435468607857694DF5E45B68851868' : true, - '1D6496AF2D821A300BA0620D76BC53AA7FBB6ACD7E0AB438DAAF6FD50210D007C6C0829C' : true, - '1E240EA0F876D785A3F5F8A1493D2EBAFD1ED1E2021B0B9F73E8EB75CE23436BBCC746EB' : true, - '1E42950233926BB95FC07FDAD6B24BFCCCAB0EA04C2301D6697BDD379FCD12EB24E3949D' : true, - '1E74C3863C0C35C53EC27FEF3CAA3CD9209900B63D955728140CD13622D8C687A4EB0085' : true, - '200B4A7A88A7A942868A5F74567B880593E6AB220303B52328DCDA569EBAE4D1D1CCFB65' : true, - '206BD68B4A8F48ABE488090DE5651A500CFD83DBAE44B9A0C8F676F3B570650B94B69DBF' : true, - '2124A681C1D8F219AF4998E39DFE0BF46A174570A916FBE84453EED3D070A1D8DA442829' : true, - '21BC82AB49C4133B4BB22B5C6B909C198BAF4C9B1DF02A92F7DA128EB91BACF498604B6F' : true, - '21D84C822B990933A2EB14248D8E5FE84054DA6F1C3F4074ACED0FECCDDB79D153FB901D' : true, - '21EFB85040393F756F27FEE3EA5870EBA59C9B10EC7357515ABB660C4D94F73B9E6E9272' : true, - '222DA601EA7C0AF7F06C56433F7776D3FEB8C432DCF9769ACEAE3DD8908FFD288665647D' : true, - '224D8F8AFCF735C2BB5734907B8B22163E2BF7F2031B96F38CE6C4D8A85D3E2D58476A0F' : true, - '246DABD2F2EA4A66AE5BBCAE50AD6E56F9DD19266B2043F1FE4B3DCB0190AFF11F31A69D' : true, - '2477D9A891D13BFA882DC2FFF8CD3393D8C5388AB7301B1B6ED47AE645253A6F9F1A2761' : true, - '252AC6C5896839F9557202165EA39ED23C71D70E35A5DAA8B2E3812DC3677417F5990DF3' : true, - '255BA669B87BF8780DC18FA6EAE47063FA0882595F9CA6A11ECCBEAF65C764C0CCC311D0' : true, - '257ABA832EB6A20BDAFEF5020F08D7AD81968B3AEF1CDC70F5FA3269C292A3635BD123D3' : true, - '259DCF5EB3259D95B93F00865F47943D43F9B110D5BAFD48225231B0D0082B372FEF9A54' : true, - '266D2C1998B6706838505419EC9034600B77BEBBCB7AA24705DECC0FBD6A02FC7ABD9B52' : true, - '27DE36FE72B70003009DF4F01E6C0424DE3F40BD5093D39B6C60F6DABC076201008976C9' : true, - '27EC3947CDDA5AAFE29A016521A94CBB4D2378EC919539B5007F758F033B211EC54D8BCF' : true, - '2A5D003739469475397B11A6F29341E13F85F2BB4A62B0B58BE1614ABB0D4631B4BEF8BA' : true, - '2A954ECA79B2874573D92D90BAF99FB6A43489159A520F0D93D032CCAF37E7FE20A8B419' : true, - '2B508718392D3BFFC3917F2D7DC08A97B19DD096DCD4E3E0FD676885505A672C438D4E9C' : true, - '2B7020568682A018C807531228702172F17F6FB631DC99E3A3C87FFE1CF1811088D96033' : true, - '2C20269DCB1A4A0085B5B75AAEC201378C96BAEBDD2B070748EE303266A0F3986E7CAE58' : true, - '2C6F17A39562012065D2076EFCB83F6DB1EAC3E5B82476E9D50B1EC67D2CC11E12E0B491' : true, - '2C8C175EB154AB9317B5365ADBD1C6F2A073E5C5BD43610D864C21130A855857CC9CEA46' : true, - '2C8F9F661D1890B147269D8E86828CA96252DC40F71143A22FDE9EF7348E064251B18118' : true, - '2CC2B0D5D622C52E901EF4633F0FBB324A058FDFD761DB21B0C2EE48579BE27F42A4DA1C' : true, - '2DBBE525D3D165823AB70EFAE6EBE2E1B3EAC44776C9C81CEAF29D95B6CCA0081B67EC9D' : true, - '2E03FDC5F5D72B9464C1BE8931F1169B96995C7711E8E52DF9E34BECEC67D3CBF1B6C4D2' : true, - '30C908DDD73E63A4092814C74EB97E2CCFE4313DBA05B8A7C30063995A9EB7C247AD8FD5' : true, - '30C9E71E6BE614EB65B216692031674D3BC0380B33C3F6A60C86152293D9DFF54B81C004' : true, - '31853C62949763B9AAFD894EAF6FE0CF1F4914F7D874951DDDAE02C0BEFD3A2D82755185' : true, - '324A4BBBC863699BBE749AC6DD1D4624AD7E1C28B064EF8F6003402014C3D0E3370EB58A' : true, - '3327D16CFC9185FC8C7E98FA854EF305E70715F6F728365B5190E271DEE4C65EBEEACAF3' : true, - '33B784F55F27D76827DE14DE122AED6F0747220199CE74B97CB03D79B264A2C855E933FF' : true, - '343339FC6D033A8FA25385443270DEC45E5A168867BFFF00987D0B1DC2AB466C4264F956' : true, - '34FCB8D036DB9E14B3C2F2DB8FE494C7379A197B418545350CA60369F33C2EAF474F2079' : true, - '354895364A545A72968EE064CCEF2C8CC90D1BEA883DA7D117BE3B79F4210E1A5894A72D' : true, - '370971C4AFEB7501AE636C3016BFD1E5A399F76F0CBF4C9DA55E4AC24E8960984B2905B6' : true, - '3741491B18569A26F5ADC266FB40A54C4313BB96F1D5869BC14E6A92F6CFF63469878237' : true, - '3785445332451F20F0F395E125C4434EF48B11BFDEABBE94542071E641DE6BBE882B40B9' : true, - '37A56ED4B1258497B7FD56157AF9A200B435D4E1119D1C6690A749EBB394BD637BA782B7' : true, - '3916AAB96A41E11469DF9E6C3B72DCB6879F4BEE05DF98583BE360D633E70D3FFE9871AF' : true, - '3AB2DE229A209349F9EDC8D28AE7680D36863563FD5128C7BEA6F005CFE9B43668086CCE' : true, - '3AE550B039BEC7463633A1FE823E8D943CBB5DE0FCD6397C0588E56697BD462ABDF95C76' : true, - '3B0AE4BB416A84B39D2C575E6542BE478E1032E9245944F84791983EC9E829CB1059B4D3' : true, - '3C4C25CC0A19CAEE6AEB55160086725F23E833233E7D0CC92B7C4279AC19C2F474D604CA' : true, - '3D4129CB1EAA1174CD5DB062AFB0435BDDE1D2A901802E1D875E84B3807E4BB1FD994134' : true, - '3E455215095192E1B75D379FB187298AB1BC968BD4F49D622AA89A81F2150152A41D829C' : true, - '3E80175BADD77C104BF941B0CF1642B000EA522C8A9C06AA3ECCE0B4FA6CDC21D92E8099' : true, - '3F459639E25087F7BBFE980C3C2098E62AC8D58B57CEBF2F49AFF2FC768F511462907A41' : true, - '400125068D21436A0E43009CE743F3D5F9CD0E2CDA7624C18FBDF0F0ABB645B8F7FED57A' : true, - '410352DC0FF7501B16F0028EBA6F45C5DAC9024F54D8F6DF94935FB1732638CA6AD77C13' : true, - '41B807F7A8D109EEB49A8E704DFC1B787A74410FB0CD5C972A364B71BF031D88A6510E9E' : true, - '4265CABE019A9A4CA98C4149CDC0D57F293621028B20ED02F566C532D1D6ED909F45002F' : true, - '42769768CFA6B43824AAA11BF267DECA4178AB4CBFCE7B4102ACDAC4933E6FF50DCF715C' : true, - '4281A0E21CE35510DE558942659622E6E0B4322EB2F6A568B654538448184A5036874384' : true, - '429BD669C6D445AD2E81511D355A89624F555CE20DCD3364E0DC7C41EFDD40F50356C122' : true, - '45E1A572C5A93664409EF5E45884678C6B2F34AD8958BE62FDB06B5CCEBB9DD94F4E39F3' : true, - '45F750114EC5ADBD53688663EC7B6AE1C09AB0C8AD7114714ED5E21A5A276ADCD5E7EFCB' : true, - '468C210EAB92214659DBA6DB0061DE265A5A4DAF7861267C4B1F1E67586BAE6ED4FEB93F' : true, - '48D11E627801C26E4369A42CEE130AB564902AD7277AF3E32CD8CC1DC79DE1FD7F8069EA' : true, - '4963AE27F4D5953DD8DB2486B89C0753D3C063F219ED073E34AD5D750B327629FFD59AF2' : true, - '497904B0EB8719AC47B0BC11519B74D0D1EB23A46D17D68FD92564C2F1F1601764D8E349' : true, - '49EFA6A1F0DE8EA76AEE5B7D1E5FC4463E42A18706BD0C9CCF594750D2E4D6AB0048FDC4' : true, - '4B1C568CA0E8C79E1EF5EE32939965FE4C95A9902ABE0777CED18D6ACCC3372D2748381E' : true, - '4B6771BE33B90DB64B3A400187F08B1F7AC5FFF8DCBC5583176877073BF751735E9BD358' : true, - '4B798DD41D0392AA51EE04E5906F474954F9C163759F19045121A319F64C2D0555B7E073' : true, - '4BE2C99196650CF40E5A9392A00AFEB28CF427FD790C3AD166068DE81E57EFBB932272D4' : true, - '4C5641E50DBB2BE8CAA3ED1808AD43390483ED3399AC3608058722EDBC5E4600E3BEF9D7' : true, - '4D56677ECCE6457259B74F511172E169C0DB578157E9EE82B5917DF0DD6D82EE9039C4E2' : true, - '4FEBF1F070C280635D589FDA123CA9C4E392512F0ACFF505DFF6DE067F7537E165EA574B' : true, - '50193E2FE8B6F4055449F3AEC98B3E1947AFB915CDA26D82467B97FA42914468726138DD' : true, - '5186E81FBCB1C371B51810DB5FDCF62078E9DD0650624DB9CB36B50767F209B843BE15B3' : true, - '556EBEF54C1D7C0360C43418BC9649C1245C97DF7514E7CF2DF8BE72AE957B9E04741E85' : true, - '565FAA80611217F66721E62B6D61568E8025EFF46E70C8D472246584FE403B8A8D6ADBF5' : true, - '58EB470764D62CBAE29B96552B9700B56A6F2A8B6E2615088DF59CD24C402418AE42A3F1' : true, - '59736628512B98B410FF7D06FA22D6C8A0F8DB3F0BF417693B282EB74A6AD86DF9D448A3' : true, - '5A11B922850289E1C3F22CE14EC101844B421F7515F6AE8A6ECEF97F6982A400A4D9224E' : true, - '5B6F532CBB8188FA6C042C325DA56B967CA04FD8064C1CAA32A37AA94375038E8DF8DDC0' : true, - '5B9EFD3B6035EA688E52FE1319144AA36B81446A5CDDF474A0F800FFBE69FD0DB6287516' : true, - '5C48DCF74272EC56946D1CCC713580756631BF9EF74F9EB6C9D5A60CBA6ABED1F7BDEF7B' : true, - '5E397BDDF8BAEC82E9AC62BA0C54002BCA3AFBCF1240364B44B216208880483919937CF7' : true, - '5E809E845A0E650B1702F355182A3ED7786A74AC76AB147F9C6A3050BA9EA87EFE9ACE3C' : true, - '5F944A7322B8F7D131EC5939F78EFE6E9FC796E8F8524F863AE1496D381242105F1B78F5' : true, - '60847C5ACEDB0CD4CBA7E9FE02C6A9C0101DFA3FD50BCBBB9BB5600C1955A41AF4733A04' : true, - '649CEF2E44FCC68F5207D051738FCB3DDA40188B9189A3EDEEAEDA97FE2F9DF5B7D18A41' : true, - '65295911BB8F5166890D47824002C5AFC4674DDC6CE2967FF9C92E072EF8E8A7FBD6A131' : true, - '6558AB15AD576C1EA8A7B569ACBFFFEBE5DF743CB601C49B9843DCAB8CE86A81109FE48E' : true, - '67AC0D773011DED143AE7B737190BCA9ED8DC8386C4886AEEE079158AAC3BFE658E394B4' : true, - '67CB9DC013248A829BB2171ED11BECD4D23209AD23D314232174E40D7F9D62139786633A' : true, - '689B17C654E0E0E099551642F75A86D8027268293E5F5D17AAA4B3C3E6361E1F92575EAA' : true, - '6960ECBE8C94D76E6F2EC4782F55F08397226AAE4A7A64A59BD16787F27F841C0A001FD0' : true, - '6C397DA40E5559B23FD641B11250DE435F3B8CF2F810B37D78B4CEEC1919C37334B9C774' : true, - '6CC9A76E47F10CE3533B784C4DC26AC5B72FFF92D2CE43DE0A8D4C548C503726A81E2B93' : true, - '6D38C49B22244CA3A8B3A09345E157FA89C32E6B524E4D65388B9ECEDC637134ED4193A3' : true, - '70B57C4881953E80DC289BBAEF1EE4854072BA31FEC351438480F62E6CB95508461EAB2F' : true, - '711F0E21E7AAEA323A6623D3AB50D66996974CD6B663A7184526B1D648AD815CF51E801A' : true, - '71AA6AAF1FA5C0D50E90D40BF6AADFCC55C86F7414AC8BDD6814F4D86AF15F3710E104D0' : true, - '71E265FBCD7B0B845BE3BCD76320C598CFF810FB2C4FFC0156BFE1E1FABCB418C68D31C5' : true, - '72E44A87E369408077EABCE3F4FFF0E15F43E5B1BFF8788CAC1CC7CA4A9AC6222BCC34C6' : true, - '733A747AECBBA396A6C2E4E2C89BC0C3AEC5FB3FC8E1BFC4E54F03075A9AE800B7F7B6FA' : true, - '739DD35FC63C95FEC6ED89E58208DD897FB9E2C995C97A939F9E81A07AEA9B4D70463496' : true, - '74014A91B108C458CE47CDF0DD11530885A408C09C193E5D51587DCDD61330FD8CDE37BF' : true, - '747B820343F0009E6BB3EC47BF85A5934463C531D7CCC1006794612BB656D3BF8257846F' : true, - '74A82C81432B35609B78056B58F36582CFF360F524CB20F1FEAD89006F7F586A285B2D5B' : true, - '770D19B121FD00429C3E0CA5DD0B028E25019019CFFBD9991CB76825748D945F30939542' : true, - '774AF42C9DB027B747B515E4C762F0FCDF646DCB7B0FD3A96AEE88C64E2D676711FF9D5F' : true, - '782A02DFDB2E14D5A75F0ADFB68E9C5D4F65566336DB6598581D584A596C87934D5F2AB4' : true, - '78A5FB104BE4632ED26BFBF2B6C24B8EEC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3' : true, - '79E4A9840D7D3A96D7C04FE2434C892EA8985D3A65E5E5C4B2D7D66D40C6DD2FB19C5436' : true, - '7A79544D07923B5BFF41F00EC739A298C060ED44CBD881BD0EF86C0BA287DDCF8167478C' : true, - '7BB508999A8C18BF85277D0EAEDAB2AB24BA6D6C8A5B5837A48DB5FAE919EA675C94D217' : true, - '7C62FF749D31535E684AD578AA1EBF239F744E9F2B4DBAEC0F312C50B6563B8E2D93C311' : true, - '7CA50FF85B9A7D6D30AE545AE342A28A59AF82799186C7B47507CBCF035746EB04DDB716' : true, - '7D86908F5BF1F240C0F73D62B5A4A93B72997913EC9B0DAE65D1B6D7B24A76A3AEC2EE16' : true, - '7E234E5BA7A5B425E90007741162AED67F8AB0CFD051876A66F3360F47C88D8CD335FC74' : true, - '7F667A71D3EB6978209A51149D83DA20BE36A4562FB2EE05DBB3D32323ADF445084ED656' : true, - '803ABC22C1E6FB8D9B3B274A321B9A0147BEABC922EAE80E78783462A79F45C254FDE68B' : true, - '8135B9FBFB12CA186936EBAE6978A1F1DCBB9EB7194BC47205C111752986835B53CAE4F8' : true, - '81D6ED354F1F26D031D040DD8AE5810DE0925E18C7765E22DABD9427529DA6AF4E066428' : true, - '8212F789E10B9160A4B6229F9468119268ED18B309CD5291C0D3357C1D1141BF883866B1' : true, - '824AD493004D66B6A32CA77B3536CF0B687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44' : true, - '8292BA5BEFCD8A6FA63D55F984F6D6B7F9B5B632455F9CBEEC575F80DCE96E2CC7B278B7' : true, - '84901D95304956FC4181F045D776C46B439E525F5A6A47C32CEBC45C63ED39317CE5F4DF' : true, - '852FF4764CD5426CCB5E7DF717E835BD4EFCED9C6BDD0C985CA3C7D253063C5BE6FC620C' : true, - '85CA765A1BD16822DCA22312CAC680345BCDCDCC66F6DCE4441FE37D5CC3134C46F47038' : true, - '86386D5E49636C855CDB6DDC94B7D0F7ACED5F6553FD25CE015F1F7A483B6A749F6178C6' : true, - '86420509BCA79DEC1DF32E0EBAD81DD01D8259CA2127C3CBC16CD932F62C65298CA88712' : true, - '86ACDE2BC56DC3D98C2888D38D16131ECE6A64A309E42FBBD9851C453E6409EAE87D60F1' : true, - '86EF8E319D9F8569A2A41A127168BA1B90DECE77F8C825340E62EBD635E1BE20CF7327DD' : true, - '8714AB83C4041BF193C750E2D721EBEF30779E9315022E94856A3FF8BCF815B082F9AEFD' : true, - '879055F2CE31153C33D927C876E37DE13070F8833E4AA6803E09A646AE3F7D8AE1FD1654' : true, - '87CE0B7B2A0E4900E158719B37A893720563B8630D62D75ABBC8AB1E4BDFB5A899B24D43' : true, - '882C8C52B8A23CF3F7BB03EAAEAC420B74207441729CDD92EC7931D823108DC28192E2BB' : true, - '8949548CC8689A8329ECDC067321AB97A60F34C8626C81F68BF77DA9F667588A903F7D36' : true, - '8956AA4D441E59D805A1886DEAC828B26372C49DA9FFF051B8B5C7D4E5AAE30384024B9C' : true, - '8BCA525F7553D02C6F630D8F882E1CD78EB03FC3CF7BB292866268B751223DB5103405CB' : true, - '8CCADC0B22CEF5BE72AC411A11A8D81291C6D6EE3E8AC86384E548C299295C756C817B81' : true, - '8CD79FEBC7B8144C5478A7903BA935671F55E8839BAC30728BE7108EDE7B0BB0D3298224' : true, - '8D26FF2F316D5929DDE636A7E2CE6425720FC15DDC27D456D098FABF3CDD78D31EF5A8DA' : true, - '8D639B56C114E4EE9A128586119082A3D2441AA8C203AECAA96E501F124D52B68FE4C375' : true, - '8D7251DBA03ACF2077DFF265065EDFEFC8C25F169EF85074D5BEE8CDA2D43CAEE75FD257' : true, - '8EADB501AA4D81E48C1DD1E1140095193679CA35668772304D30A5FB873B0FA77BB70D54' : true, - '8F5D770627C4983C5B9378E7D77D9BCC7E784A101C8265CC2DE1F16D47B440CAD90A1945' : true, - '8F91E7EEE3FCDA86CAFCDC70EDB7B70C8250BED5A214433A66377CBC10EF83F669DA3A67' : true, - '911B3F6ECD9EABEE07FE1F71D2B36127E19FE30E8B84609E809B170D72A8C5BA6E1409BD' : true, - '91DE0625ABDAFD32170CBB25172A84672796BAE63F1801E277261BA0D77770028F20EEE4' : true, - '91F4035520A1F8632C62DEACFB611C8E21FCBD8E7F6CAF051BD1B343ECA8E76147F20F8A' : true, - '9265588BA21A317273685CB4A57A0748E621F3354379059A4B68309D8A2F74221587EC79' : true, - '932A3EF6FD23690D7120D42B47992BA6CBA1C5F8B0E35EB8B94512D3F934A2E90610D336' : true, - '937F901CED846717A4655F9BCB3002978781C25A96BDC2FB4C65064FF9390B26048A0E01' : true, - '93C28E117BD4F30319BD2875134A454AAB48F333DB04ABB9C072DA5B0CC1D057F0369B46' : true, - '93EB36130BC154F13E7505E5E01CD4375F4E1FCF31B7913B850B54F6E5FF501A2B6FC6CF' : true, - '93F1AD340B2BE7A85460E2738CA49431705D2B4565C7047A540694A79AF7ABB842BDC161' : true, - '9414777E3E5EFD8F30BD41B0CFE7D03075E0ABB6138512271C04F85FDDDE38E4B7242EFE' : true, - '96897D61D1552B27E25A39B42A6C446F8EFDCABC93E61E925D4D1DED181A4320A467A139' : true, - '9760E8575FD35047E5430C94368AB06290AEA26985FF14804C434952ECE9608477AF556F' : true, - '978FC66B3B3E40857724750B76BB55F8B5D303BF8682E152919D83F184ED05F1DCE5370C' : true, - '9A771918ED96CFDF1BB70EF58DB9882ECF74BFFF9B86815B08335440363E87B6B6F0BF73' : true, - '9AAEF722F533FB4EEC0A249DC63D7D255E997CA5945AAB75FFD14804A974BF2AE1DFE7E1' : true, - '9B340D1A315B97462698BCA6136A71969E6CEB179185A29EC6060CA53E1974AF94AF59D4' : true, - '9D666ACCFFD5F543B4BF8C16D12BA8998939576E178DF705780FCC5EC84F84F6253A4893' : true, - '9DFBF9ACED893322F428488325235BE0A69A91FD057F136A42630BB1760D2D51120C1650' : true, - '9E80FF78010C2EC136BDFE96906E08F34ABDEEEC950D359C89AEC752A12C5B29F6D6AA0C' : true, - '9F6C1F0F07AC1921F915BBD5C72CD82AF5C27CF5FFF3029ACF1A1A4BEC7EE1964C77D784' : true, - '9FDDDBABFF8EFF45215FF06C9D8FFE2B9656CD7B57969895D0E141466806FBB8C6110687' : true, - 'A10B44B3CA10D8006E9D0FD80F920AD1B80186D1EB9C86A54104CF3054F34C52B7E558C6' : true, - 'A208E4B33EEFDE084B60D0BF7952498D8CC4307BC60755E7B22DD9F7FEA245936C7CF288' : true, - 'A2339B4C747873D46CE7C1F38DCB5CE985371CA6E550143DCE2803471BDE3A09E8F8770F' : true, - 'A26F53B7EE40DB4A68E7FA18D9104B7269BD8CF49CD300FB592E1793CA556AF3ECAA35FB' : true, - 'A33D88FE161BDDF95C9F1A7FD8C89008A3E31E20B2E46A328520472D0CDE9523E7260C6D' : true, - 'A37D2C27E4A7F3AA5F75D4C49264026AB6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6' : true, - 'A3EC750F2E88DFFA48014E0B5C486FFB37F76DE6077C90C5B13E931AB74110B4F2E49A27' : true, - 'A66B6090239B3F2DBB986FD6A7190D46E0AB059420725493056062023670F7CD2EFC6666' : true, - 'A771FD26FC3CE540F19906EBC1936DE9E619D25B380B7B13FDA33E8A58CD82D8A88E0515' : true, - 'A7F2E41606411150306B9CE3B49CB0C9E12DFB4B41D7D9C32B30514BAC1D81D8385E2D46' : true, - 'A80D6F3978B9436D77426D985ACC23CAD6DAA8208D09D2154D24B52FCB346EB258B28A58' : true, - 'A8EDDEEB938866D82FC3BD1DBE45BE4D7639C71847E151B5C7EA01C758FBF12ABA298F7A' : true, - 'A923759BBA49366E31C2DBF2E766BA87317A2AD07F2B335EF5A1C34E4B57E8B7D8F1FCA6' : true, - 'A981C0B73A9250BC91A521FF3D47879FCB658264EA8CDA186E1752FB52C397367EA387BE' : true, - 'AA088FF6F97BB7F2B1A71E9BEAEABD79CF9E876DD3EBFC422697A3B5A37AA076A9062348' : true, - 'AA8E5DD9F8DB0A58B78D26876C823555409D4BD917B55C27B69B64CB9822440DCD09B889' : true, - 'AABFBF6497DA981D6FC6083A957033CA394FF6850B06BE52E51856CC10E180E882B385CC' : true, - 'AB57A65B7D428219B5D85826285EFDFFB12E13634586A46F1AB2606837582DC4ACFD9497' : true, - 'ABAB8D2DB740E5973D2FF2A63BDA6A05C18211328A92B3B23809B9B5E2740A07FB12EB5E' : true, - 'ABBFEAE36B29A6CCA6783599EFAD2B802F173F7DE99667AFA57AF80AA2D1B12FAC830338' : true, - 'ACB694A59C17E0D791529BB19706A6E4D4DE20D05E66FC53FE1A50882C78DB2852CAE474' : true, - 'AD8E0F9E016BA0C574D50CD368654F1ECFDEFE102FDA05BBE4C78D2E4423589005B2571D' : true, - 'AFB8336E7CDDC60264AD58FC0D4F7BCFBC7B3C6FEF26B9F7AB10D7A1F6B67C5ED2A12D3D' : true, - 'B001EE14D9AF291894768EF169332A846E3A55A4190C195C93843CC0DB722E313061F0B1' : true, - 'B147BC1857D118A0782DEC71E82A9573204285DCF7EB764195578E136BD4B7D1E98E46A5' : true, - 'B39C25B1C32E32538015309D4D02773E6782AAE0EDEEE21A5839D3C0CD14680A4F60142A' : true, - 'B3A53E77216DAC4AC0C9FBD5413DCA0658119F0E128287EA50FDD987456F4F78DCFAD6D4' : true, - 'B44ADBE85916461E5AD86EDA064352622964B686135B5DFDDD3253A89BBC24D74B08C64D' : true, - 'B465220A7CADDF41B7D544D5ADFA9A75BC9219DDC98E14BF1A781F6E280B04C27F902712' : true, - 'B4819E89AC1724FD2A4285271D0C2B5D20CB594FB4EDD895763FD5254E959A6674C6EEB2' : true, - 'B5E83436C910445848706D2E83D4B805039EEDB80BE7A03C6953893B20D2D9323A4C2AFD' : true, - 'B75274E292B48093F275E4CCD7F2EA263BC49F48F8F373A09C1EBDF85BB1C365C7D811B3' : true, - 'B774CD487C5F9A0D3BF3FE66F41B3DFA5B4E0EC28EBD8292A51782241281AD9FEEDD4E4C' : true, - 'B7B0D1EC1A033ECEA91511CCB16FB2AEE3D73606996CDFEF61FA04C335E98EA96104264A' : true, - 'B8089AF003CC1B0DC86C0B76A1756423A0A1AB90C9FC847B3B1261E8977D5FD32261D3CC' : true, - 'B816334C4C4CF2D8D34D06B4A65B4003838E30F77FDD14AA385ED145009C0E2236494FAA' : true, - 'B8D312034E8C0C5A47C9B6C59E5B97FD0560A2C738FF98D1172A94FE45FB8A47D665371E' : true, - 'BA21EA20D6DDDB8FC1578B40ADA1FCFC801D62D07B449D5C5C035C98EA61FA443C2A58FE' : true, - 'BA926442161FCBA116481AF6405C59870456F23D1E9C43AECB0D807F1C0647551A05F456' : true, - 'BC6C5133A7E9D366635415721B2192935922A1E15AEA163521F898396A4646B0441B0FA9' : true, - 'BD8ACE34A8AE6148E85EC87A1CE8CCBFD2EDF88B41B6FE01461D6E2834EC7C8F6C77721E' : true, - 'BDD6F58A7C3CC4A6F934CCC38961F6B2CABB51672400588E6419F1D40878D0403AA20264' : true, - 'BE395ABE078AB1121725CC1D46343CB2DE990CED99E0431F60EDC3937E7CD5BF0ED9E5FA' : true, - 'BF6059A35BBAF6A77642DA6F1A7B50CF5D989CDB159611365165641B560FDBEA2AC23EF1' : true, - 'BFB5E77D3DEA6F1DF08A50BC8C1CFA1DE4554333CA390E128B8BF81D90B70F4002D1D6E9' : true, - 'C1623E23C582739C03594B2BE977497F2AB628485E78FBF3AD9E7910DD6BDF99722C96E5' : true, - 'C1D43E07AEEBECFD7589E67EA84CEBCD76B76096DD145629AC7585D37063C1BC47861C8B' : true, - 'C1D951C084B86A75E82FD7D65F7EAC460B972C9EA6E7CC58D93B20BF71EC412E7209FABF' : true, - 'C22A59ABCF152F4CF7E631A316AE840C9158C5EF987301A8903CFDAB03D72DA1D88909C9' : true, - 'C2DBAB8E9652C5EEAEF25500896D55953913853E45C439A2DA718CDFB6F3E033E04FEE71' : true, - 'C45D0E48B6AC28304E0ABCF938168757D8A6332CE0036FB185F6634F7D6A066526322827' : true, - 'C463AB44201C36E437C05F279D0F6F6E97E2E99636A547554F838FBA38B82E74F89A830A' : true, - 'C4D7F0B2A3C57D6167F004CD43D3BA5890DEDE9E4C4E9F6FD88617579DD391BC65A68964' : true, - 'C570C4A2ED53780CC810538164CBD01D23E594945195F2414803B4D564D2A3A3F5D88B8C' : true, - 'C5A1B7FF73DDD6D7343218DFFC3CAD8806083F593F15A104A069A46BA903D006B7970991' : true, - 'C5DFB849CA051355EE2DBA1AC33EB028D69B561148F01C77C54578C10926DF5B856976AD' : true, - 'C5E67BBF06D04F43EDC47A658AFB6B19339B6B1450249B557A01877284D9E02FC3D2D8E9' : true, - 'C69F6D5CB379B00389CBF03FA4C09F8AEF2DACCBEABB682D32CE4ABD6CB90025236C07BC' : true, - 'C7BD11D6918A3582C53666017C6F4779634C3B0230CF1B78B4569FECF2C04A8652EFEF0E' : true, - 'C86E97F335A729144782892391A6BEC84A3F8D6BDC0E1ECFCD72E377DEF2D7FF92C19BC7' : true, - 'C91962D0DA7E1020FCA4CD0380872DF551A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE' : true, - 'C9982777281E3D0E153C8400B88503E656E0FAC03B8F18235518E5D311CAE8C24331AB66' : true, - 'CA3DD368F1035CD032FAB82B59E85ADB97817950D81C9670CC34D809CF794431367EF474' : true, - 'CB17E431673EE209FE455793F30AFA1C4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5' : true, - 'CBBDC3682DB3CB1859D32952E8C66489C9321DE6B5A82666CF6971A18A56F2D3A8675602' : true, - 'CC4DAEFB306BD838FE50EB86614BD2269C615C4D4D85103A5326C24DBAEAE4A2D2D5CC97' : true, - 'CD3B3D625B09B80936879E122F7164BA67EB337B684CEB0EC2B0760AB488278CDD9597DD' : true, - 'CD68B6A7C7C4CE75E01D4F5744619209132D0D45534B6997CDB2D5C339E25576609B5CC6' : true, - 'CD996CDB2AC296155ABF879EAEA5EE93EE29D6EA98E632C6E527E0906F0280688BDF44DC' : true, - 'CDF439F3B51850D73EA4C591A03E214BE1A45B141A21DA1A79F41A42A961D669CD0634C1' : true, - 'CE78335C5978016E18EAB936A0B92E23AE5083ED7CF45CBC8F61C621FE685D794221156E' : true, - 'CF8F3B62A3CACA711BA3E1CB4857351F5D003860F002ED829DEAA41868F788186D62127F' : true, - 'CFF4270DD4EDDC6516496D3DDABF6EDE3A44735AE581901F248661461E3B9CC45FF53A1B' : true, - 'D2EDEE7992F78272180BFED98BEC13D8A7F8390BA57705096FD36941D42E7198C6D4D9D5' : true, - 'D35376E3CE58C5B0F29FF42A05F0A1F2211165CA379FBB5ED801E31C430A62AAC109BCB4' : true, - 'D3D9BDAE9FAC6724B3C81B52E1B9A9BD4A65D5F41DEF39B8B8904A4AD3648133CFC7A1D1' : true, - 'D3F3A616C0FA6B1D59B12D964D0E112E74F8A3C3EFE7B390064B83903C21646020E5DFCE' : true, - 'D474DE575C39B2D39C8583C5C065498A5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25' : true, - 'D480656824F9892228DBF5A49A178F14016897E1A0B8F2C3B134665C20A727B7A158E28F' : true, - 'D59788DA6416E71D664AA6EA37FC7ADCEC93DE083C93D933A986B3D5CDE25ACB2FEECF8E' : true, - 'D5BEFFB5EE826CF0E2578EA7E5346F03D904080A4929C838E9F185ECF7A22DEF99342407' : true, - 'D5E98140C51869FC462C8975620FAA7807E032E020B72C3F192F0628A2593A19A70F069E' : true, - 'D63981C6527E9669FCFCCA66ED05F296B51C067CEE2B0C3DF855AB2D92F4FE39D4E70F0E' : true, - 'D6A5C3ED5DDD3E00C13D87921F1D3FE4B31EB1B740E36C8402DADC37D44DF5D4674952F9' : true, - 'D6ED3CCAE2660FAF10430D779B0409BF85B5FF679B0C79961FC86E4422004613DB179284' : true, - 'D7343DEF1D270928E131025B132BDDF7B172B1A56D95F91FE50287E14D37EA6A4463768A' : true, - 'D87E32EF69F8BF72031D4082E8A775AF42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA' : true, - 'DA26B6E6C7C2F7B79E4659B3577718653E84D3BCC544C0F6FA19435C851F3F2FCBA8E814' : true, - 'DB233DF969FA4BB9958044735E7D4183273EE12457FDC4F90C55E82B56167F62F532E547' : true, - 'DBC8F2272EB1EA6A29235DFE563E33DFC8EC8C879269CB4BAB39E98D7E5767F31495739D' : true, - 'DC32C3A76D2557C768099DEA2DA9A2D18782C6C304353BCFD29692D2593E7D44D934FF11' : true, - 'DC6D6FAF897CDD17332FB5BA9035E9CE7F88CD7223F3C813818C994614A89C99FA3B5247' : true, - 'DD753F56BFBBC5A17A1553C690F9FBCC24A40A1F573643A67F0A4B0749F6A22BF28ABB6B' : true, - 'DF0DBC7CC836B77699A1ABF0D20F896A342CD9D3062DA48C346965297F081EBC2EF68FDC' : true, - 'DF168A83EA83845DB96501C6A65D193EDBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8' : true, - 'DF3C735981E7395081044C34A2CBB37B61573A11DF0ED87ED5926522EAD056D744B32371' : true, - 'DFF28073CCF1E66173FCF542E9C57CEE99A69BE61AFE886B4D2B82007CB854FC317E1539' : true, - 'E006A1C97DCFC9FC0DC0567596D862139BAAE59F56EE21CB435ABE2593DFA7F040D11DCB' : true, - 'E14B5273D71BDB9330E5BDE4096EBEFB216B2A29E62A00CE820146D8244141B92511B279' : true, - 'E1C07EA0AABBD4B77B84C228117808A7CDD4EEAE6000AC7F40C3802C171E30148030C072' : true, - 'E2D52023ECEEB872E12B5D296FFA43DA9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7' : true, - 'E2D8F867F4509435FC5E05FC822295C30446C8BB9A6983C95C8A2E5464687C1115AAB74A' : true, - 'E2F8E080D0083F1EC1E9D23F8069AE06C73026E325FE21916B55C4B53A56B13DCAF3D625' : true, - 'E60BD2C9CA2D88DB1A710E4B78EB024140E78C1D523D1CD9954FAC1A1AB3BD3CBAA15BFC' : true, - 'E77ADCB11F6E061F746C591627C34BC07454535C24A3A758207E3E3ED324F816FB211649' : true, - 'E8CC9FB09B40C51F4FBA7421F952857A688B6EB807E8EDA5C7B17C4393D0795F0FAE155F' : true, - 'EBB04F1D3A2E372F1DDA6E27D6B680FA18F7C1FCC3090203FD5BAA2F861A754976C8DD25' : true, - 'EBF59D290D61F9421F7CC2BA6DE3150928903A635B5280FAE6774C0B6DA7D6BAA64AF2E8' : true, - 'EC407D2B765267052CEAF23A4F65F0D8A5EC73D48C34FCBEF1005AEB85843524BBFAB727' : true, - 'ED41F58C50C52B9C73E6EE6CEBC2A8261B4B396126276B6491A2686DD70243212D1F1D96' : true, - 'EE2931BC327E9AE6E8B5F751B4347190503006091D97D4F5AE39F7CBE7927D7D652D3431' : true, - 'EE7A41E0CF757D889280A21A9A7BA157679A4F81FC705DDEC419778DD2EBD875F4C242C6' : true, - 'EEFE6169656EF89CC62AF4D72B63EFA29FAD91A6CE6AC6C50047C44EC9D4A50D92D84979' : true, - 'EF5AF133EFF1CDBB5102EE12144B96C4A1DB6393916F17E4185509400415C70240B0AE6B' : true, - 'F058C503826717AB8FDA0310278E19C2CB44A097857C45FA187ED952086CB9841F2D51B5' : true, - 'F096B62FC510D5678E832532E85E2EE52388C9D371CC9E963DFF7D3CA7CEFCD625EC190D' : true, - 'F09E639376A595BC1861F19BFBD364DD80BF3DE9A41D768D194B293C85632CDBC8EA8CF7' : true, - 'F16A2218C9CDDFCE821D1DB7785CA9A57998A308E14D6585E6C21E153A719FBA5AD34AD9' : true, - 'F1BC636A54E0B527F5CDE71AE34D6E4A36B12B49F9819ED74C9EBC380FC6568F5DACB2F7' : true, - 'F20598E5964BBE5D55181B55B388E3929078C5A28F9A4325C2A7C73813CDFE13C20F934E' : true, - 'F27DE954E4A3220D769FE70BBBB3242B049811056AFE9FD0F5BE01685AACE6A5D1C4454C' : true, - 'F37E3A13DC746306741A3C38328CFBA9253F775B0E7797AB645F15915597C39E263631D1' : true, - 'F3D752A875FD18ECE17D35B1706EA59C968338F113E36A7BABDD08F7776391A68736582E' : true, - 'F4FF97428070FE66168BBED35315819BF44095C238AC73FC4F77BF8F98DF70F8F091BC52' : true, - 'F520DA5203862B92768D5CB72D8B93ADA65CB4733D94A5C865A864647C2C01272C89B143' : true, - 'F775AB29FB514EB7775EFF053C998EF5DE28F4A4FFE5B92FA3C503D1A349A7F9962A8212' : true, - 'F7B661AB03C25C463E2D2CF4A124D854FAA7D9FB31B746F200A85E65797613D816E063B5' : true, - 'F8387C7788DF2C16682EC2E2524BB8F95F3AFC0A8B64F686673474DF7EA9A2FEF9FA7A51' : true, - 'F8BEC46322C9A846748BB81D1E4A2BF661EF43D77FCAD46151BC98E0C35912AF9FEB6311' : true, - 'FB1B5D438A94CD44C676F2434B47E731F18B538D1BE903B6A6F056435B171589CAF36BF2' : true, - 'FC11B8D8089330006D23F97EEB521E0270179B868C00A4FA609152223F9F3E32BDE00562' : true, - 'FD49BE5B185A25ECF9C354851040E8D4086418E906CEE89C2353B6E27FBD9E7439F76316' : true -}; diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/STS.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/STS.js deleted file mode 100644 index 17999aa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/STS.js +++ /dev/null @@ -1,228 +0,0 @@ -// http://lists.w3.org/Archives/Public/www-archive/2009Sep/att-0051/draft-hodges-strict-transport-sec-05.plain.html
-
-const STS = {
-
- enabled: false,
-
- get db() {
- delete this.db;
- return this.initPersistentDB();
- },
-
- initPersistentDB: function() {
- return this.db = new STSDB(STSPersistence);
- },
-
- processRequest: function(chan) {
- if (this.enabled) {
- var uri = chan.URI;
- if (uri.schemeIs("https")) {
- try {
- this.db.processHeader(uri.asciiHost, chan.getResponseHeader("Strict-Transport-Security"));
- } catch (e) {}
- }
- }
- },
-
- isSTSURI: function(uri) {
- return this.enabled && this.db.matches(uri.asciiHost);
- },
-
- enterPrivateBrowsing: function() {
- try {
- this.db.save();
- } catch(e) {}
-
- this.db = new STSDB(this.db);
- },
-
- exitPrivateBrowsing: function() {
- this.initPersistentDB();
- },
-
- eraseDB: function() {
- this.db.reset();
- STSPersistence.save(this.db);
- },
-
- patchErrorPage: function(docShell, errorURI) {
- // see #errors-in-secure-transport-establishment
- if (!this.enabled) return;
-
- if (!(/^about:certerror?/.test(errorURI.spec) &&
- this.isSTSURI(docShell.currentURI))
- ) return;
-
- Thread.delay(function() {
- docShell.document.getElementById("expertContent").style.display = "none";
- }, 100);
- },
-
- dispose: function() {
- this.db.save();
- }
-};
-
-function STSDB(source) {
- this._entries = {};
- if (source && source._entries) { // clone
- var entries = source._entries;
- for (var p in entries) {
- this._entries[p] = entries[p];
- }
- } else {
- if (source && source.load) {
- this._persistence = source;
- this.load();
- }
- }
-}
-
-STSDB.prototype = {
- _persistence: null,
- _dirty: false,
- _saveTimer: null,
-
- processHeader: function(host, header) {
- if (DNS.isIP(host)) return;
-
- var m = header.match(/^\s*max-age\s*=\s*(\d+)\s*(;\s*includeSubDomains)?/i);
- if (!m) return;
- var maxAge = parseInt(m[1]);
- var includeSubDomains = !!m[2];
- var expiration = Math.round(Date.now() / 1000) + maxAge;
- if (host in this._entries) {
- var e = this._entries[host];
- if (e.expiration == expiration && e.includeSubDomains == includeSubDomains)
- return;
-
- e.expiration = expiration;
- e.includeSubDomains = includeSubDomains;
- } else {
- this.add(new STSEntry(host, expiration, includeSubDomains));
- }
- this.saveDeferred();
- },
-
- add: function(entry) {
- this._entries[entry.host] = entry;
- },
-
- matches: function(host, asSuperDomain) {
- if (host in this._entries) {
- var e = this._entries[host];
-
- if (e.expiration >= Date.now() / 1000) {
- if ((!asSuperDomain || e.includeSubDomains))
- return true;
- } else {
- delete this._entries[host];
- }
- }
-
- var dotPos = host.indexOf(".");
- var lastDotPos = host.lastIndexOf(".");
-
- if (dotPos == lastDotPos)
- return false;
-
- return this.matches(host.substring(dotPos + 1), true);
- },
-
- serialize: function() {
- var lines = [], ee = this._entries;
- var e;
- for (var h in ee) {
- e = ee[h];
- lines.push([e.host, e.expiration, e.includeSubDomains ? "*" : ""].join(";"));
- }
- return lines.join("\n");
- },
- restore: function(s) {
- s.split(/\s+/).forEach(function(line) {
- if (line) {
- var args = line.split(";");
- if (args.length > 1)
- this.add(new STSEntry(args[0], parseInt(args[1]), !!args[2]));
- }
- }, this);
- },
-
- load: function() {
- if (this._persistence) {
- this._persistence.load(this);
- this.purgeExpired();
- }
- },
-
- save: function() {
- if (this._dirty && this._persistence) {
- this.purgeExpired();
- this._persistence.save(this);
- this._dirty = false;
- }
- },
-
- saveDeferred: function() {
- if (this._dirty || !this._persistence) return;
- this._dirty = true;
- if (!this._timer) this._timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
- this._timer.initWithCallback(this, 10000, Ci.nsITimer.TYPE_ONE_SHOT);
- },
- notify: function(timer) {
- this.save();
- },
-
- purgeExpired: function() {
- var now = Math.round(Date.now() / 1000);
- for (var h in this._entries) {
- if (this._entries[h].expiration < now) delete this._entries[h];
- }
- },
-
- reset: function() {
- this._entries = {};
- this._dirty = false;
- }
-};
-
-function STSEntry(host, expiration, includeSubDomains) {
- this.host = host;
- this.expiration = expiration;
- if (includeSubDomains) this.includeSubDomains = includeSubDomains;
-}
-
-STSEntry.prototype = {
- includeSubDomains: false
-};
-
-
-const STSPersistence = {
- get _file() {
- delete this._file;
- var f = Cc["@mozilla.org/file/directory_service;1"].getService(
- Ci.nsIProperties).get("ProfD", Ci.nsIFile);
- f.append("NoScriptSTS.db");
- return this._file = f;
- },
- load: function(db) {
- var f = this._file;
- try {
- if (f.exists()) db.restore(IO.readFile(f));
- } catch (e) {
- dump("STS: Error loading db from " + f.path + "!" + e + "\n");
- return false;
- }
- return true;
- },
- save: function(db) {
- var f = this._file;
- try {
- IO.safeWriteFile(f, db.serialize());
- } catch(e) {
- dump("STS: Error saving db to " + f.path + "!" + e + "\n");
- return false;
- }
- return true;
- }
-};
diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js deleted file mode 100644 index 8c9daf6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js +++ /dev/null @@ -1,100 +0,0 @@ -
-var Thread = {
-
- hostRunning: true,
- activeLoops: 0,
- _timers: [],
-
- spin: function(ctrl) {
- ctrl.startTime = ctrl.startTime || Date.now();
- ctrl.timeout = false;
- this.activeLoops++;
- this._spinInternal(ctrl);
- this.activeLoops--;
- ctrl.elapsed = Date.now() - ctrl.startTime;
- return ctrl.timeout;
- },
-
- _spinInternal: function(ctrl) {
- var t = ctrl.startTime;
- var maxTime = parseInt(ctrl.maxTime);
- if (maxTime) {
- while(ctrl.running && this.hostRunning) {
- this.yield();
- if (Date.now() - t > maxTime) {
- ctrl.timeout = true;
- ctrl.running = false;
- break;
- }
- }
- } else while(ctrl.running && this.hostRunning) this.yield();
- },
-
- yield: function() {
- this.current.processNextEvent(true);
- },
-
- yieldAll: function() {
- var t = this.current;
- while(t.hasPendingEvents()) t.processNextEvent(false);
- },
-
- get current() {
- delete this.current;
- var obj = "@mozilla.org/thread-manager;1" in Cc
- ? Cc["@mozilla.org/thread-manager;1"].getService()
- : Cc["@mozilla.org/thread;1"].createInstance(Ci.nsIThread);
- this.__defineGetter__("current", function() { return obj.currentThread; });
- return this.current;
- },
-
- get currentQueue() {
- delete this.currentQueue;
- var eqs = null;
- const CTRID = "@mozilla.org/event-queue-service;1";
- if (CTRID in Cc) {
- const IFace = Ci.nsIEventQueueService;
- eqs = Cc[CTRID].getService(IFace);
- }
- this.__defineGetter__("currentQueue", eqs
- ? function() { return eqs.getSpecialEventQueue(IFace.CURRENT_THREAD_EVENT_QUEUE); }
- : this.__lookupGetter__("current")
- );
- return this.currentQueue;
- },
-
- delay: function(callback, time, self, args) {
- var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
- this._timers.push(timer);
- timer.initWithCallback({
- notify: this._delayRunner,
- context: { callback: callback, args: args || DUMMY_ARRAY, self: self || null }
- }, time || 1, 0);
- },
-
- dispatch: function(runnable) {
- this.current.dispatch(runnable, Ci.nsIEventTarget.DISPATCH_NORMAL);
- },
-
- asap: function(callback, self, args) {
- this.current.dispatch({
- run: function() {
- callback.apply(self, args || DUMMY_ARRAY);
- }
- }, Ci.nsIEventTarget.DISPATCH_NORMAL);
- },
-
- _delayRunner: function(timer) {
- var ctx = this.context;
- try {
- ctx.callback.apply(ctx.self, ctx.args);
- } finally {
- this.context = null;
- var tt = Thread._timers;
- var pos = tt.indexOf(timer);
- if (pos > -1) tt.splice(pos, 1);
- timer.cancel();
- }
- }
-
-};
diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js deleted file mode 100644 index b32b6e4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js +++ /dev/null @@ -1,1007 +0,0 @@ - -// These are SHA256 fingerprints for the most common chains observed by the -// Decentralized SSL Observatory. These should not be resubmitted. -// This file is automatically generated by utils/mk_client_whitelist.py - -const X509ChainWhitelist = { - '000AA4E99FE86D84F762DFB2DC29323D0614B95AA335A270AF204EBA2F2240AF' : true, - '00487384DE9545F7F6D6709574920DB9743F0DDC4D5E1518EC00ACCCC6F9866F' : true, - '0077DFC8E3CFE0E4398F208CDCB1BC5A7A78BEEF101ED256315FCB9833283B58' : true, - '012AAE6B27B392684695FA22F87C8DD3F60CDAB564EE4D4D58DF98575D99153B' : true, - '01FC275FB7BB83082EA2C546876545030D74F68355AF2B0CCB1972993B393E58' : true, - '0261C3970364E15EC2BB646934FE28F8FCE6E1D5E0B99C7539DF636ED03A9DF0' : true, - '027017BAD8EC764424A5DB3B647AD769E78F1653A92F800FAF21212C4DB6CEF8' : true, - '034AA8D4F147FC9E93CC18EB5BC06F28FE3DF4923CA61A9CAE92F4E3E078C5F3' : true, - '03985CA59706D4A023A5CE0B2E4F870EA465A8E3803CEB2AD859FC86D3569852' : true, - '04376F22DBF0B17201EB6871797B1D31FC00EBC4743317793B9C5A5BEA8CECF4' : true, - '046C78CE6601C4D88EAC305EE65068225CED3988A6BEC42E50B57B1979742245' : true, - '04AEEFBC8685B2668E25C23D77C6D63B95C7C0BA1B8ABBF434F5EAA66BC3E7F4' : true, - '052592AA10AFA8D750861F47C540D3A0653A87138ED7427BFD02C9D197D3EF8B' : true, - '0544DC1E0D529429A1C86E848D1C78B8511CC1A2128405D276FD864B452890EF' : true, - '055C88BD28194042771FF813973E086A30710231DB219FF377B79FA075E7F2AD' : true, - '05CB56F00C8DA64EEF10F2305EF696AF839CF8DD541910D760772AC86811FDAB' : true, - '05CE45708C3882B0DB81A4504FBE064C1ACD7DABDD071A7F263744FAAF040CF5' : true, - '05F70EA23C890F1C382FB250E40DFFD3488C271006DB6B10DC96BF34B6F74420' : true, - '06808645F29D708E4C31AC40FA00000733238E10A56D2067AA62803C9736E923' : true, - '0699966F623E746BF97DB3B6BBBEB83BCF2E8CAE89D907A49A731951B158216A' : true, - '06B35EEE47D7E55F278C5DB13FF137B269B6EF91B58FEB4B2E70E7CC1DB757D2' : true, - '07CF2A06F1718D6E476B98C2B42E370A35FAFE4C1F41CF7A1DE115CDB6222FAC' : true, - '07E7123B20A807889C384460FFCE4A7F53593A5C872B0E8FD45795D71CD0F9FE' : true, - '07FC57E4C188422B53059AD4839F467B9269E4EABBF902C99B30E25DEC5EB1B7' : true, - '0834241C7C2B598E20698047C331B173BCA189B96E528FA1993AFAAE3F7D51F6' : true, - '087FAD2F33E4D28A13CCFDE11F270188E01AE0EED615D2F433DA4EF05CA6BD4C' : true, - '089979504BECAC25640130E65E562AA3E3B5D49EE148FEF6A2B77A2A1CF5FC06' : true, - '08BD4BE042F6DA7D627143ED6B2BACE65615683C3C272123AC55105DE4BD723A' : true, - '08E5080C1D69F2C11524050C9C0EFDAEBFE68A27FD30EC04AAF4DE2D590F22EB' : true, - '09250AF23BC74D92973DD48812D5ED28CE1F5C110EE5F7CA791D9CFDE04A131C' : true, - '096800FDAFA82029B3B5E3947E0EAB6FB1F1D6958DE04E9256969F99F7518C57' : true, - '0A122B87C038CAEA46E8944009B11C2168E47F4DACAA9D3BBFB92CB5F5E1BCDE' : true, - '0A36586C8EEE28E5ECA1F542691D12B3CE7815CDCF722CDF7074AA71413C2550' : true, - '0A6A1FECBADAF7F1B473305A71E454F6AA8C1B0F40941FF4660B814BFF4984B3' : true, - '0A903D7CCFBB18FFEC8E3AB05FC7E592C1E7509D0EC2DBD9A2C05236BA9FD7C9' : true, - '0A91A9CAC951DA1739ABB2F29D16A6F5FAA9F49AC87516AB59CA77150D282528' : true, - '0AA5730256323B66DBE88E3056AA3F45E52BE5E2B87C1C9DBC1986CEAF97B5D9' : true, - '0B2D2C539D3D922820B6D08E159E6763D22AE797B2C32F8202B632BB93588588' : true, - '0B39ADF22CBA98C15754A7A899C5B96871337D2178EB3EBF0B5D5F88332EA971' : true, - '0B901F548AE4E0F25EF38010E311945FB198E497F203A88FE7C44970F7ECDC40' : true, - '0C114EDF67FB7C09C532297D79A5743EE5F8576A8EBE3DF69A728B8CFC0A167C' : true, - '0C7E90EF8BCD379CB001FD07530718DCC0A33E9D7D1D333F505F0143BC6A8FD6' : true, - '0CA932C2E0929B9B6C0A8822D3F094F671522419835049CAEAC51755D1F44777' : true, - '0D4F42B386775FF404B84D58859BC5AB029F1F9CC6B7AFFF32B838F8B8C71F3E' : true, - '0D8FC5F202A5668F7F3EA7F6A73521E0C7FEB5DBF6E58BA68AB7C7E01F4C532C' : true, - '0D91DE20988EA155526570498A1A6289FEC55994A5BA888C9134765F2A0B0580' : true, - '0E3AE0C9BEDFCFB38239DC4214A3AF3E6386720E2E5F8A85EEB52BD152E4DF09' : true, - '0EEAAD4FE6818F1D723A5567CD0A6569D45E346E2DA2896222A7F3367F4AE8C7' : true, - '0EF8FA5AAD4BACDB842959378F18935855B027B0BADDCBDEADC9CC958C4C603B' : true, - '0F39AF5CA9615B05CBC12DE3C94A8C4FBA71CA8CEF541952315A9D0658DB5B28' : true, - '0F7DE9806919EBD5EE47188428BF7FE13495E4684ADBB5BA980BB15D4D0B0C22' : true, - '0F8F66953B0F42560CDD573A013D3FB809D9747210E58F28F4878CDA5A8B8AD2' : true, - '0F97235268233245499D6C1319DF1BCA3AAAFB13CF9B06EB294FCA328022E82C' : true, - '0F9E066578F4AFB0ACBDC408CB25B7D7200BC5CB7FC4DA6D32532D827EA5B232' : true, - '0FA392F6EABCE0F4DA14C7B5237B21BEEE6BDA55832A8A6090CAEBB53AC8D77B' : true, - '1049EFDE8BD0E7D94AE05D50D326ABCE41E79B0572F86FDF1F7387738262F09A' : true, - '10552D044AD79FBF1AF5357998DAB9B1FFD66D7B53C8107FC2280148D66475E3' : true, - '10E82776E55D0C2D58F6598E615CF38AA14161D1EAD97C4A09182FE1D44E695B' : true, - '10FD669D6DA882678AEAFB35A5F8A0963C2E2B3084883EA515C8956FEC4207ED' : true, - '114ED15D4B557A16DDE1D01CB4074215CE6773C180FEF60F08267CEAFB670D5E' : true, - '116A5D5F3E99CFE5F72A4AFAC8699CC225C130F4B8520CDB350A1262D9585973' : true, - '118FF53B6BEB35CBFE6592D45BE082BA1228D1817E46B2CC14B8855FCC5C9D59' : true, - '11EC553AB76EED159FE553B52E7475FA71A0FF3F4B3038CF91BC7138F50B0A7E' : true, - '11F7A939F33BDF6270E16C747C0B0918902CD4501AF1843D9EA4445A2E708C58' : true, - '1243C75D0F805DA54E780D0D9C55247B1ABB31FC09EB65A7017695945F2A0D4A' : true, - '124CE9CD70225896BB3C9DF372E0457CABCEE8585D1BCB8E16D0E6D95B94AF2F' : true, - '124E430E0E0B103B580A0436D7CF436F6ECE55908279FA8EBDF475AED08A9CE9' : true, - '12826065A034136FFC2258AA1A65F9E550A582B4017E396077917C775D42E553' : true, - '1363B86EDA0BFAF10F1141CBE7569647F2FFB370F539694288101128A38261B8' : true, - '137E64BF679E2CD24F034125EC926D48F34C7404CFD6B61B23BA9E91E55D3560' : true, - '13ECB3394571030912CDF82DDAFA05B242398929BD3ACE1598B79DBF28B701F8' : true, - '142A33AB96C13ED7C7B8782D764F374B5A8F9C4E33B4DFE9B7750E878E7C5D0D' : true, - '14587E25D8BF0150F429924144E88AC551C1F77CB5DC84F6CDDE7079014ED2EE' : true, - '14E443C709A20C11205371C5BC54C20CCD53AC434750EBC91C45B30DD0D8B53A' : true, - '14F5D6BA3842E708E3AADC26B8A9CD89FE9CF2BEF46398369521839733A4504F' : true, - '150F5BC3D839579BD7DD1254A6C3C3AFE3485D7DED21C3B8123BA6875886A91A' : true, - '154C4C43AAF5F838B7B9BE748FF671521BDF0ECF3D749EB85487F9C315239778' : true, - '15F46CDF488A5BAD54DBA0F2E2F825F956F8ECF9E3AF294551E88F62A8A0CECD' : true, - '16BE849F33D16B22C495B9793329BE704AD9C681C2A963C71FDB303D526E09B3' : true, - '17A0318A02B4E7EB14792644E1E28966257748F8162A53AF4E49697A4707C9F7' : true, - '17BE5D468B1EA071C36079A4843B8A1E69B9FCAFFA0565FB54B10A02D78B7FA8' : true, - '17D0A909CE750C728FBD0F33589A3EBFDA452D00C757A18557DB4697289287B6' : true, - '17E110287D04C595DAE0C73090051A1F30F165A37429CD78C1F8FC1754549D41' : true, - '17EC9E8F98C207F4CA7FD0680193A54DC33BC97CB364669442F5B7492D36839E' : true, - '17FD21D68D53F369EEC1E22EFCC3B79B255EB8E1031D147F6461291C4D980037' : true, - '183AE55CFEE1CAC5CCBC1C58D813DED429DF750E023362FB8BEDCB27A9F94559' : true, - '186DC5DF9C693C311857A94BF9B2810BDD02F22DAD527D2BFBC0CDF24BCE26FD' : true, - '1882C2D8D817DD1078933D244E379CFC5BA8EAAE302BCF9FA22636B08FAC86CE' : true, - '188F5D081FD0D98429D1747FFBFEAB39733EA7C2B61C8BF6B0ED62F71264C619' : true, - '1974EFA39EBF5C2D3B53D5089EF28F6545D5B4937DB660385AF579A28FD17A3F' : true, - '19778EECDA512FBEFDD9AD0507A1F828AE67C35594C20831D1D531B79F8B2F99' : true, - '19AD483D37D656F9D7844F14C53281FDD56683C0C8FB2A8F3F77DE7C810C1CFC' : true, - '19C76F18839C90F94AB9E4CD3ABC4C15E0A8DA9B8705E7DD872962CF8409DAF2' : true, - '1A5C89F300E3A9835759D6588CE3361993E336D76EF4B2F64F1DFC4D913BC6F3' : true, - '1AA7EB7CB182FF1BA09FCDFD088DE1F25F8551DAE53CE2C16D4D72D1B6091CA5' : true, - '1ADFE710199AE62734EAD27EEE6D6A4EC4D6FF19D6978A7CFBDCABA69C1617E1' : true, - '1B5827F9E4B66B4895AB47A0395BB1E135D15F7A23712147C5D382C1AD805ED5' : true, - '1B8AC4A31C75996D44252AED8CCF639282DF3A180900C660804483597238D8BF' : true, - '1BAF1A75711BC2EF2C4EB8C2BEA4B5B1B183E95ACCB247DB89B3098C324870C2' : true, - '1C1BD271327C7721AFDE3C5BE6FA98B132F2EE1911BDF05F0649121349A4537F' : true, - '1C1DAB84FAA0FC35AAA8A54760840F8A48EB449B338D7CF3902397514F4D1CD7' : true, - '1C363FBCE719D6567E55DE267E6662A454494FA085180F23FE84139E9E83527C' : true, - '1C573E491ECF04E3240144B2A63D8DDB457367055B90F5947CEFB55174A6B959' : true, - '1C923C0DC4E99E8F807E44A5499EAC4BC48022C63A3EB4CE819D556349FB57BA' : true, - '1D4D6D7E6B04F507E28EEA37367012166A6E4AFD02D2F325129A70F76894512E' : true, - '1D602FC8C0A6E38288593AF300D73F04B3A5AF89F5B08A0DAC3D935A9B69D7B9' : true, - '1E15FDE9774DDD452B000A3FD8118DAE63D16F8EAC19D26806BB08A70677F42F' : true, - '1E294231C72B07AAA6E2FE3B18BA14F1095F82718B42AF1DEE071D011740550E' : true, - '1E5D810BCB8DA3AF393761C59CC88D22669ECB7D4F926760BE1EC6CD83E60765' : true, - '1E5DD6CDAA3AAB8BB891B8D7B4E99AF2EBB7F08719F1D3B3C7B8694962EE8668' : true, - '1E84A8F15A3EB4B7921D7462C1FFF8DDC182E4E0682EB48C42FB3645BA43A6E2' : true, - '1EC6CF08000A6583160FEDE1C117794E75CA5533B666D04FAB138D8F12A4ABC1' : true, - '1F1A125828C6F4A21A9D035C28E5493FACE0F4D7DE6B6F2DD5B9FD5D426B6FC7' : true, - '1F3C4550EEA0B9B8F4608632610548B64126E8929450D285DBF906752241CEF3' : true, - '1F4C963A9BA39CE44E46F135EFEAD5B30D6A0A3A43545E18CBE59DE452A6468B' : true, - '1F6AF055216D53382D7D42AE6893552B4C04C0D6CE31A2A71B7FD24F7A607A67' : true, - '1FB6F7F8DD4B392D4BEAA5E707AAF882D2AA83C5E9720C58B616F8DDDFFA6F77' : true, - '206A33714BD518CEFF68A6904E19B0837230BCADEADEA6E056EE3745774BE3EB' : true, - '20714569334D93E90D2200B253E447A249EC53311A379538BFACDCEE457D9656' : true, - '20BE732FDB6D751C0991700E7C9D401093135652D25B1A29D3387E21D60B776B' : true, - '20F2E0109442ED3DB805D939B1FCC9F4C8E17414F748FDE98883C9EFA504397E' : true, - '20FD7A6E1659C35B1870F698D182820EADD8E02ABE97A9FCD691681B4A6493E6' : true, - '215C6D97B01A9EA11CDCB7D4D62EF74D31231F99CA59F3D21104097AD5D52868' : true, - '22BA6A5C28A505A68F7C025447822720E4772BC380FD9EA58EA71C32682CF0FC' : true, - '22DD516BE482B2A7F3C5EE268E8110EB9814E86E4102654C3CF5705743BCF870' : true, - '22E6BB3D9964F458D462BAF404323775B20EEF02F174CDBB442D4381DB98C61D' : true, - '23223C3601CC5682B21E4D4C236BB85C9098082EE3942070E33CC791CDFAD31A' : true, - '23980A7B935B10CA69315CDA05E61B4ABAE7876724C0E0C3CC7BE9748E41ACCC' : true, - '243D9193A5D38C9F2C21409EA470757D3903F8C418709E12C47F01C4EC08E5D5' : true, - '24540FC5876A301AF83E2494013ED0B4F7B1312D7238EDDFA1DB0E7736082856' : true, - '24789DF7D8F1D393F224621E436675778CAFD595AF6988D2995F28553F28B629' : true, - '24AEFDF5AA4C36F89987C960EA14B8A90CB2670CCCC66957652A21E0231D2E4E' : true, - '25531D59643B0F5E1CEE67B9CE42B0332FCF9688659F62D990C77CB8C1349E10' : true, - '258296CAC41A779D819E37CB4B120D2270F55AD8BDA24747C572165BE31849D2' : true, - '25B87ACDCD18628D9B64EB9F6366C970B2FE922B39EBB7E3DD1354899260B180' : true, - '2601092E7F1A7841A9E65C6D24D0BBC0CFE986404E6DAFF628E2C2D70667EB59' : true, - '2635178113FBBCC75EABC09C497D411C994AD0170CF9DF999A4FF5C16872CDBB' : true, - '2643995B1EC6D06457AB936E18B5A5721CEDDCC82F4E116C36EEC5096BB04DC4' : true, - '2677470F2FBD067904B7014B88988BB94F72403C014240B9843AE5A5FA21661D' : true, - '26B163AB60042EB690FF4549F6086019E19A99A3B69332AD1FE85D9C46491AA9' : true, - '26D184F574A19836878B10B209825413B48BB1C92195AB69F6B01D359FD4D07E' : true, - '2710EBB98F6790081E34A1961D7716533511A1746616DDBAB9A3D64ED32B1875' : true, - '271B4C5B8689BD69CCA837BC080C554DBEE0B20C5B1C505F68544AEC29588277' : true, - '2774F85336B9446490224280339F361F69E44891C5D8F078F03FEC5BC7C37437' : true, - '27C6EFE085FD0EF2DD467630B0A650BD3624BB4065F811F5F99CA976B4C0B871' : true, - '28002E2FB259DA7341B69C144F4EC6B5B12CB9A981C34387044926957CF9152C' : true, - '28082C3B3FB30995C3ED4D971AF00E3114C75B9FA47540DEA79E120E01C03562' : true, - '28445F7C648AB6025EB469E9C5FD10C6C8D0D21B6A20F078854EFF406C55D3F7' : true, - '287821696D43B83F1EA4A3AF5F6E5695F86D770148341106757B98DACB5C979F' : true, - '287AC69E23A84ED6C79668FD778A1C5F89D93D9E85B1F84110731B3EF007852D' : true, - '288B79B657E95C6E9FF6FF795A3E36528FDD26538925F67411B0F1F715DC9905' : true, - '2895D775D2F7F4D7BFF504B3C204939766B2C2734BC607B154CB1B2E52D76012' : true, - '28B2F8B5E2ED8681AE3D47EBB733718E32FF81FD736E97EEE68E12A6CFD3C9D6' : true, - '29AE4E3FA75E6A40E5C2D8BB9446BC39D672780F4CD6334CA2527FFEC0FBBFD3' : true, - '2A00C2E13F83FE2640D9DA1B802219AED52B811CCD54F7632622FB05531CB829' : true, - '2A227A780950EC49D49437E4FBD2306EC1D213A25343B752F116B3C4203C641A' : true, - '2A2EE56590084C2B144125731B45BDF927C357840E997888F52EF90AD6361EA5' : true, - '2AE917E3AB4B867883088BCFFED53EBEF9F87988C77AE47FE325547B181931A1' : true, - '2B372D2A09743CB535C71949D24612C108A95D542D5235B443C116426F4EC740' : true, - '2B5FC256FE24DB51001FBB200C80DEDE29EF2CCA290DEDA0EA7FA5627A8400E6' : true, - '2B804DA0656D06DB6CFF31AF9EE7A41E9621F5062C855A3FA3E69208C6BED1BB' : true, - '2B96B9494AB9EF09B7D4ACC0F7C7C8B27BB23772D8203F98A635285335B476FA' : true, - '2BB158B54FA26B5A7FDA92096D214B5AB548D13D4CD0D275B967703750B03097' : true, - '2BDDDA7C2F05123A014AFE1044AE6AD3B1AA14F0BEAE4FDE812BE52DA271F992' : true, - '2C27A3FBE2D833ED7FA00DE8A00EB1E16F40043D68C21C6FAA72A34DD839A5EB' : true, - '2C43EC0374BC603A1B191B88ADBCD5C1A0409120427995C2684A1590C7AB1432' : true, - '2C6E83BE981FD0EB0ECE7D8977D665C1B7665DFEE4C0F7DBDF5138FEC3974EBB' : true, - '2D75CD1232720CFFABA233953EB8CFD860C23034BD9CF969E8D104485B251ECE' : true, - '2D978BE3F44F069B366DB5D8E3B1FE4B02775498DE8D17EA68B423259B681FDD' : true, - '2DBAF94C053FCCFA1EC09CBB22F54DAFF2DB4ABE1B3C61CFF1BEBC31260F4821' : true, - '2E23B68E6E803E74BA36D9C9006F96D8BAC39DB4CAEEBF1C12C6CC01CFDFAD6D' : true, - '2E50DDF50FA4B9220202816F9B79405227BA4F803E61FD96D6BC95A0263E49EC' : true, - '2E6193577D9F6627E5D23883970975541C6807F1DD1F48971EECF07C204C16BD' : true, - '2E726E5D6C08B18944773DECBBBA88F95E25D586248B145354596BA8DB31DDC1' : true, - '2F0D2656CFB3D34F4775E89AD96E2AA7D3A1FCDE399BCB2E03AA2BA0A035946B' : true, - '2F36C6E796C7C4047152AD68B781475E3FA3AA785DE5CC277DA2DA20F35AD52C' : true, - '2FE442C9741D5351A016B9796E3021A01BAC6867A567ABBD1C7EB08DD359DF94' : true, - '30354519FFD4794257A7EBEDB0D47DEC9A547B4E7213199000F41EB65C233EF7' : true, - '304039981650BCAEA6BAC7B1FF2E03A9BFBC8AF4C37F37E66D59D327776EAE77' : true, - '305B4CDDF744AA543DA713E7E60C19ED5537D49ED2252330B46B7E664C4E588C' : true, - '30AF2F588C872B174436F3B68ED432C0495D651C84A04787CC8C13D6D61DF63B' : true, - '3102A33CF44D88924253BC149D22198D046E6571E79D0C6CFE106F8A725364FC' : true, - '3141118408E436FF8489E07BACF80B260A33E842C5BEC83C763B6AE73701A76A' : true, - '31C4E7F6630486BF42150967E951D3DA5ED8D382AA596FD571231CA96E0F352E' : true, - '31F411310C7FCAAF8CC265F557CF93BF32E5E277589E932442A3A840E141809D' : true, - '32CFE4F78C2B8737E9A31F4E0A2513535FE242D02F1DD83C04ADA77839CC4442' : true, - '32D398E73D053561EC78257EB01F0945C2A38D9F80674F6F2B4B10BA35A2B4E4' : true, - '32FA61C84B195BCADA9A65448CD3C8CA66B1DFE252CF97D46567ACEB59BD2D83' : true, - '330457913F88C2037F663003C36F0B6B2B3071AD972C9A4DA54998A7CEB8B148' : true, - '331C02F8B180F4E4F15DFAC71D1F03F3ACA9438FEE138AC2A60264BCA35DA54A' : true, - '3379517964657D6F875971C1ED6218D9F890BEFC7390CA654C79A666D1989A18' : true, - '3386FCF2133229E0BB6481DD2149E9D87540B5277E3FC3C3DFAE50A8D81D0653' : true, - '339C59871E132711D25988F0DDB86E0EE5D34B119972C0A5E3C3B556BC293D74' : true, - '33AD12326DC0DE4AD1CCDF7B3F1E0202B8476857E1C911B056F53CC6D4A60187' : true, - '34CADA62CE9D32857D65E868355E258447C0111D3F78CDCF4360F5B7B9F7E3E4' : true, - '34F904FEE6E8CF59E4FFE90F627D688210910D0176C9B5ACF7DAE8CABA722B63' : true, - '357E325CD50420D15B1E6779D32E62FB6029A9710017B14CC23AD41DE08A400B' : true, - '35931DC7CBFF8F707BEF6D02988B66FC79B77D05DA0A09F439040F4099A69883' : true, - '359D692646482C906B77BC217B7C262E81B6D80441DAC6FC2E317C5A0C1A72DF' : true, - '35A88292416784CF9D883274B422DDA092B8692CB98FCC788C9B926987854291' : true, - '35C8C522026971801A41CE23438829BBA27D3902953FE183E2E3B84415F6ECEC' : true, - '36267B2A60E0B5997DEEE17CDBE6AC7F7D54D279C6AB4F06CD469919F442E6AE' : true, - '362BF6E353729E4F8FDA7D87DD726C825E2661DA801BB75B857F4DA622BB9704' : true, - '363C229BA74BC61CAD1DEF35B5B808146FB5D1D34E5D37C02E1FE19B5EC6C37A' : true, - '366B123FA1EA2FF7FDBCA0422E504C8E0AB62334AC8941D307060F5ACDFB58AA' : true, - '3761FB4C3FDF80BD66FB31A506612BE2B98FAC57691A6125227B4787C35C32F6' : true, - '379F1BE4B67E89183FCD2AB1C0A3B930DE70D33CAE2C8629819DB4951600A398' : true, - '37A8C0FE01BCC73FA73F8A161566E23F12C22BAD0461D7CB9D9386EB7DD63800' : true, - '383BB79AFA098696BE4D3605F26A60FDD7C455D31FB03BE8553C3EA348F479F2' : true, - '386702317DA5549A08139017D14AC498D7DD4837E0E16F91BCAD37684AA6EB97' : true, - '388AF939697463B651AFF01141B625DC877D0FB31CBC5E234A5526BAAB68E660' : true, - '392080D12E0D8985A6C35526FCCF9CFF55219D7E62E92BF05863F7CFFC42596D' : true, - '39CA68E75049A34F875DEE1CD6929FA61DE4B250B5060D613BA9088810D60B9A' : true, - '39EC99D4093CF0A60A947685856F20DBF85966FBCAB4033890361A650294A8A8' : true, - '3A9480EEDF0D65938DD92A7FE7E9BE4D797CEB0662CADDA2321D47C04818A57D' : true, - '3AFA38F8367A45AAFBA949076A38537CBAE4A0774FC4CC40BE52F944F29F7F19' : true, - '3B00662EE3F01FFE2C40842F0F3B76C039ABB785962E371767E89E2AFA311A74' : true, - '3B1FDB5890A3C11F7149C13019F3EE43D3D3A8C174E485512E946EDCBBFFFE55' : true, - '3B3A1C7A8131E1E6A66039972C1AEF65797E783ACC2C645CF10EEAA5F20BD297' : true, - '3C40EF3135CB1E82D0E6518EF75EAEDAC43DE347CB74E2A09CBC0C5A56DB2636' : true, - '3C49B9DC9307C6B33E0DBE135836504ACB9F6204B7172A412C28E797E56CA02A' : true, - '3C91A39CC52452FB91463E511257D3BFCDCA3A149EBF39978F39E55F20FB061E' : true, - '3C96B0CE3855D125998B8DDA63F2A37AA1FC5967949393D7428C1FA97D2542B4' : true, - '3CFD92A9ACFC3B9D7BF81B2994D398500413E7B57C711D711F98DB009FD142D4' : true, - '3D04D60DD221BA390696E262A7B522815BAD5A03B79D1176931F2AD5435D494F' : true, - '3D7A71BB494A12E1F21A1EB9033CBEFCD1FE81F358B131016DAF92C1C06F1A38' : true, - '3D81B541D1B04B15AFEF518152CF8DDDB9300EE0A1BADC916FB366FA034120ED' : true, - '3D9910368BB2A01AF8277EA5E26F9CFCB045DC63CEC7397EEB2827B16C0344AE' : true, - '3DE5855D87575043D52CE7496F7486CBD8177FCB9F8C686B55F5F0EE761B2DFF' : true, - '3E09F448ED5A72584FA305F82A25706D2AE756083530B4E18665DA2AE46C1410' : true, - '3E18B028DAFB97BD9A036F1743316C8EC963C17066E362328FEA24D6FF8B2A7C' : true, - '3E486CEF660870234BD56B008730D8B318B7FBD047B55939D74545B98D8176DC' : true, - '3E5558CB92AEDC7E01DB0FBCD0825CC0F51AA7B683ABFD01D1E5E04C8A4D716B' : true, - '3E7FC707C590EECFA7E9DBBD270452366C0E2F0ABA7768B3F18E7DE34B3E15BD' : true, - '3EA82DE5DF72699D567B865AACE54C72AFF800647415E5E49D4260F422C26DA7' : true, - '3EFD44B1F0C8400130C35FE003FA304C2E47FD20612A4D1C83F88723B885CE66' : true, - '3FC8022D0C28EBFD45DC1D07E14F9E83F0CAD2E7ECEDBFDB991E01EBF2400F54' : true, - '3FC92874F07DB0DEE11CCB2CA7BDF187641DC78ECE4C76E71B2253FBBC17E3FE' : true, - '3FCBCC65096D7D731244167CCEAA21757E56D6EFC05A632AB3E062643E5B380F' : true, - '402FA5AD0E7932A07356FB849DCC1AEF11649D516ED1C5617C48F3E7F9B02356' : true, - '4093A7B65486890D2575D57070237C586DC489B3A68FA913DEF136370F2DDF9F' : true, - '40E66AA57071722F0B8E8B59A74998F82E8D5020BDDBB35D0E941851ED11921D' : true, - '4147C9CD6ECA16D7C6A8939E15E419220C822956FE754DCB2F08F2C78A99C3DC' : true, - '414CB8A3E4E86E2B4E03EB2FE71312CFE17B78945B41597F8E03AF04CFFAECC9' : true, - '4196DA17789961AAEB04CEBF7F1F77621F89102F48350D3B95E66E955FA8AA8D' : true, - '4247E57738776992C6640ACA48156C9DE580F0A739CAF0A353CDDFE3417F7C46' : true, - '4248F09AC0B07BCF41B413A2D8FF50AC42C6943D6F6D20F9C37502FDD2315171' : true, - '426334353C51D4E625F2DE937D9AD9FE6769E0F4E1425AF23D7802385103B583' : true, - '429DA945C771332087229D2822684175DC050F832EB9F0ED90F868E99B6FBFC1' : true, - '42D6DFA920BABBF7876416C3F5B30598040F6A748F22E3C3E0E2D32DEF098AD1' : true, - '431F835569D356C0C577FFCF90DDBF9B17E16D7FA9027888B708071B696E818F' : true, - '4321F690235447D71149C54E13896C885D07524C80CBA133428E1BD235123234' : true, - '43555C20820B179886354E63251A21247292B3B7BA46D8BEE860A0313258136A' : true, - '4373B2B85D4FEFE97E79B4C7935AD1762380D97FAE2C64FD61E58593F8BC8C4A' : true, - '43CFA30A34E75D16640693DF32B691B40219631AFFFC6A09DA97006AFD2811FC' : true, - '44338B3B7D1302BEC14439BFF723B5AF93DC549A7E1E417112C76C1455108EB3' : true, - '44CE10B295D3908C5CB40661F3F07EA13B27A31F32041B79D12AB7F5250B4227' : true, - '44CE6D5CE40E8F7BE79569A66792B181CA71DF0C80D3CEDA59A151F2E7CD32E3' : true, - '4533B5CC20DF3613F517118ED8D5AA328EDE18610AE99E16A5B6AF21EC0FFE17' : true, - '45CFA75EF370F3B3C2271E4AA0F99106B3339B6FEFDA5B335CC863F0C6F66323' : true, - '4603C35A8304F6057C253381D39404E8B40AE0958B4EB2CEAB7777CD85802C0C' : true, - '46236B9468DB40FAF467AFB0C35B517E514251530785695F54440E6730AAE44A' : true, - '46584E2D9BFE069862BC6449C85E904AF29A71887DCAEB14C191D75ED0AC1FCF' : true, - '46853D3090658137B446AC75E481E4593CFF61E22115C348521D70EF398C05F8' : true, - '46C05D7E95263B17CE368AAED872817DB0517CD9F388396CF42568DF88C96C67' : true, - '46E74AF8240C97D2E91E118761CA4F74371BF7D2266601BAF6084BB1924B62D6' : true, - '475971EE29368BC1FB6B66D497096A1ABA32C66A30C7D554CB11FE848345B46D' : true, - '47828F3C65E9FB0113793E5B60E19A44BC9775611C44ACB65481842FEE2FA819' : true, - '478D230215F850914D64BD43327923DEC9E52B4F14EF5E7E9122B16F40B2733D' : true, - '47A1BDC994354BC3EB242FFC12768EA8633719084BB5A159E30FC4388BED59B7' : true, - '47BE050E9E76AE62AED5EFF6EA9F2E0DF1FF0E7A3EE2B6B68D60B3C849E070EA' : true, - '47E134C83737EE674C6AC46306C325701EFF7B0A4C887B968593CC1F5FCAAF0D' : true, - '480ABF7202B5437D84FC1F475A30A19C18C7F598BDA1375E8AB84829B966D596' : true, - '4810562E0CC4EFD265AC19316F353D660806DC54231D65C906C6DB1E86EEDAC2' : true, - '486F62E8D5F6323416CF210DDBD26A256AF9AD33F70A2C1CF8915866F74C149D' : true, - '48DF42F374FDCD58EB650256F421F6C1A73F663DCB8DE0972DF9421205509F8C' : true, - '49AC28CE0DDCDA953E64E7D131DEA9EF57169FF3280EC9FC6DAA88C943EA9E76' : true, - '49B7DA13E82D9DEB867193B30E48CD1279A66A6FB44236E1B93AAF62F58EE077' : true, - '49CB0BC132E548E6D6A5BCC31C2254016BC2A181755B5B13D1D27218404D1C74' : true, - '4A12F9678B1A5B4677054BDA1CB6B41AD8A4F556A184E7E4C33669EDD31EA50D' : true, - '4A60AA57F2A0858D4A3A9696C5652432997B73BDDE06880BB3DE7879FE79B87B' : true, - '4AE41D7B98B74E61B0D6EED291348B881E5531B4ECEB9940631835EF6A8CC60F' : true, - '4AF1D354BDAA3AB076BB6A02BAA3E1BAA2503D21ABE54B54001BCF62C0982721' : true, - '4B2851A38CCC082ED3A24F9DCB8C917F572D9F064CEF218D2E07ECBAAF6EDAAB' : true, - '4B6B616E1EE80E17D1BB037A2831C3AAD7E6CDE3D89A205D1F7D6E0854F3C21A' : true, - '4BF10AC1958BCBEFA06944AC7866E3458EA70E6ED97DBDDF01A84A360C3B71CA' : true, - '4C1A5506EA02230980E66C1CA936B268A3C453E997733E44074640CF4653594C' : true, - '4C3F647343026A15ADA9E047A8B4527FF88F9D01A2B7AB7241947443F75D5E96' : true, - '4C6FC9852280F11829BD4066C38BE6C1FE4E4C053F6126EE03D15EC3D0BD5B15' : true, - '4CCB36D30DA2AD2DEFBFA838DE32AE64AC8F6AE138E0A1FA46D1E0CDB688974F' : true, - '4CE6DB77F8EF355DF6EC2ABA7A5989DD0F2D0BB228DB5DE69BE7C83E3603C69E' : true, - '4CE78AB01352DC6AD84A195DD333207A43CBA0372546FEDEC9E6803DA6375403' : true, - '4D26A014A4C4007564C743D9BBF9C2DC9A5A881C05E549DFFDAFCD3814F3966C' : true, - '4D53CEABA15DE7DACABA8689C96832B59F66AC55E9E94CB595405004A1A9AF29' : true, - '4DC47950ADC2B7FF5A9A57167E343AFDDB27155DE0D031F25149B622E608B8CB' : true, - '4DD59EC33898319B54EE610C9A4DA78A87504FB8631FCA5783223F306529FABF' : true, - '4DDCB0EAA387111F7C2E0355AFF2C3325514BD9D9A3812295F7506999838B7ED' : true, - '4E0E281DBED708FB0AF032A0233F134D3BD309224DD8BE9894E749D1AE9BA37D' : true, - '4E5AD8D52C37A505176F9BA95BAF43CB5FD5A7FC4654DC71178ABEA8188E7ED6' : true, - '4E88949F1AA84802EB493CA5C6CDA9C6DED49A4DBA0C8453139C89A9CEC2E041' : true, - '4ED3C78D58943651EDB04EDDCB696F91F7B33450831CB18ACE714720AF4523EA' : true, - '4F212E4C3A8E4EA8F7D258A988D5930F05A8E61E78D86DBF9478DA2DE8F01B54' : true, - '509A3662D987A2D5D9CE7943D1878A36DFC4A786CC185CC9DE1D58E15E2EE02A' : true, - '50C1358C5AA5556E967E2CCC1397BEA364DE2E7C6704B6950E423AD5D5BBE798' : true, - '50D5DCC8D0668D34E90722924EB28C37C803E34156DE8E61DAB296DBD37F5993' : true, - '5112E6A8D06852BA07669C1DF31EFA1BA2BE7894C3F0F7B7282FEEBB698F7F4F' : true, - '512EFAAE67E525C0DC3D7AF491ABA9FFA1B7439031207D293622E9286F0BB562' : true, - '51452CADA5B15129E04773A1BAFC3166F56C59B4CCF905060BA52EB6A877E1E9' : true, - '5184A3AD148B610511D8D02CFBCD2993AFC3BBD576721B617FE7CB1DF53C070D' : true, - '51ABE9BEDE2D96CA84110007FD6626F0ADF9881A3C74870C119CEDBFF2B4CE54' : true, - '51EE14CDF007AFBCE34D598602831B21661F6FD7B6C04B0D34817757B4D007D7' : true, - '52B8E665B8191D828F946C041ABC28AC6A5719A4AA21B1C403F7611F11A84F31' : true, - '52C584E4DA8D3FD6FD63E83B2EA0FD6D98DB0413776C26122FF0420A3F0F91A0' : true, - '52F208427F03726C6DE3F5308C776D690F580EA39DDB01595DFB54364C48377D' : true, - '5376577409E17E8F37B2CC6FD486FBD356FF2AD0B5EF520DB7CDAD06C6A6F3E0' : true, - '538735DC5CF27D0DACB0FBC4FC24E0598D8838682CBE3DA8C37CDA60F60BE64C' : true, - '53C57169154423529775809598828294B218B2D2AFBCD3F2561FD072376CA188' : true, - '552771717F5948A7FBF93067CF25E5D1D67A63C8A3DD09EF98603165874E3281' : true, - '5545F754EE0194995FACDF3F30F3E6A8B0749DD750B0B5964B16A5D9B21E9FAC' : true, - '55E0EF8E07B79720C78F3E2303981BAC4BE4FB417D858E3531716DEA81BB8D67' : true, - '56B5B8AD95FC9A853F180196FAF9BF2896A8D2E053474ECA3A19295B1D214AD1' : true, - '56B6BEB3100D40CAB0EA4E450188CDDA653F473F3F182578AAB314006E66FA5C' : true, - '56CC8586CAB1C99C3EA4C1D35E91FAA568DED02AA74364D08F480A0EEE4E4FF7' : true, - '57383F2DCB3A5959514A8C0CB208205EEF70D3A899BEA2AA7D1B6FD13BB23BD8' : true, - '57A0B57635F2D75EBC9C3B166E68E35E1CF91BD074AA9D5CBCB3359D93F02859' : true, - '585CCB444BDE628F6778320DE64727701AABA22F826C31063082CFC5835742BB' : true, - '597C180F976AF183984FD9B1D015D000C55AF0B873FE4A4F8E782D191285BAC1' : true, - '5999169B7C3C7ED6E94A194BF0DFF7D07EB7581BE8C82E77B83DE42263F6A673' : true, - '59E0DDB8377B568DA0FC1E2B7C482CC6331DA441F85E7F52FA8AE280DA90D051' : true, - '59FF0CC641EA56CD3670E81E4BD76A487163C70CCA729E0710D49AD1EAD70634' : true, - '5AA16CEF791C27E12F900F07D5FC9D0B3386A1FCCF2F547D08E94AD34BABB775' : true, - '5AA7341552FF047164227AEFB41437582F7116D76B854F54920A5D6A9B72271C' : true, - '5AEDDAC786E11B696A37E5506BF5CB702A3B803BC8506BBFF720788401D595A2' : true, - '5AFD1775AD2CAA741FCF1201AE206C4A1286C0DBF751AC035BAADE571F002927' : true, - '5B11479053C46A16C629C58DD5EB40529814B75A6BBDCD6BD6FC6BA9483D9669' : true, - '5B1D47E25C53FAFDB2894D342FB536794A99B4D0F4C0BB994DAC22CF9247F166' : true, - '5B67A7FC34D1885F7351DC949794160E0DB6E6C193286145DF8E483F21E90B80' : true, - '5B9F8603E75E06129C216E4A2DF6FB4EC184CE685F6C229BB85233DFFD2335A6' : true, - '5C07B9D0BC6C5C3634102DAF631A330FC02BF579A3421E1B8483E076953FCDF5' : true, - '5C2484F4DCA59EC5D77C5935BF71EC473995A9F7D39B0F26D2264A279C6DEC96' : true, - '5C25116119EA6FCA1D13D54D4870475E5B3D34B060605E02F9C7521D3EC47441' : true, - '5C34509E57E6B30A28891841EFB2A5F0D051493059DD80157C19B2822A97EAF4' : true, - '5C95EA9F41391B1D2609E3CBFEDDC0B9B865326B4526176D5305DF2EEF5AED52' : true, - '5CDF3C4C27BB3B1BBE8C6AB81EFF3FA995BBDFE662A0BCDED869E462BE748486' : true, - '5CE0E2F94DE7BFC370B5C429E1CE1A0635E4F38D55BAF122748D4307F1709DE9' : true, - '5CF08039C4F9AC5947E941DB6D681C0CD7971AD6E068262D919060C1A66D5FB2' : true, - '5D2112B7777AF1BBA029F1DB3D166086C0379669C01C03FCB1667645F32EAA35' : true, - '5D5F5FC12AC675264FB7F2783EF62458304D84B09BF62E19EC1B91243E3E5487' : true, - '5D77443F3FFBBAEAB8C88714A8EEE37196F7D9CE89517806EDBF897DE0215763' : true, - '5DB16AA171CA274D753222AA4EC17827814F5A69CFE72D092397F048CEEB2370' : true, - '5DFF17B36C6CED5E5607FC2A8B6559964A23AB8B08181E1CAC94E3B213767A1B' : true, - '5E579D296D274F9A01D1E1A7410A24029948FFA01595E64BD2E492EEFDD1F702' : true, - '5EC75158F235F80BBFC25F40D96AB89CC35D8578BAD11410B5D32CC33428A00E' : true, - '5F05ACF54EAA38008B650AAA2DBB3722805C793616B1A21B43E1879107254E38' : true, - '5F6795C104B707429A3E966D32F847FF1B18497C73A45F6EA5E47378EF1D3823' : true, - '5F98F1AC11CB74885CCC871AB7CB1B95989E9E3E7482BDFC32895A65A783AFE9' : true, - '5FB819ACDB4D470232F59DBE853A5BC55C3713062ED6F75AD35982304E14B32A' : true, - '5FCCA125301032F32C5C915A1AF5191FB7E0ADB6E36AB4210099490CF54C2C27' : true, - '5FEFA4F01BA5AA16F36E2A4125C2E0F808B9503355BF09B3189A623B8EA42E69' : true, - '5FFD23170DA2D4AF8278447F473A80F69D41889D6C91F3A598E41B4C1170E43E' : true, - '60234A884EF08293BDFED2AA0F7A12164317F1453966758A66FEA4AA422E9A14' : true, - '6085325DD4C19C14024B66E50D6FB600D161AE12B569A70B9C1EFFECBE9C2A3D' : true, - '60B1AE233D6CEE231FA2D0B3D5888FC9842087D2ABB3CBCC6E9C230D974F5D7E' : true, - '60B7233177358390EAA910658D1D063B57CC3D5B76F70E521CB81E39DB9AD50C' : true, - '60CC6E8C652D1CCBFFA42DAD8158217DFB7F42B9EEF9DBDB795ED372EB2AA728' : true, - '613E70A1BE3CA6314EDB7C00B2477990271E0C8DE8210EED56ACD391E8CFF28F' : true, - '6167E58071C283AEE1B24B692C593747D5FAD1B3A001B1CF11569E80FDA44152' : true, - '61F83ABFF7740C9144959145660E563D682A8D21E20B92AF581237F621A5187C' : true, - '623760585A2256D234ACE51A98E31B982EB5E5BA2D3CBD673C747FC832529F60' : true, - '624A2686ED8B75686FCCC3FD9DB8284E94981BF30BDD2453817BD653F3BD9CF2' : true, - '626042CAC6DE8C95C77C0E732144FCBD63418D72ED04CCB42FCBF260B38B21D5' : true, - '62C06D5EC111BEA1222B57F5BF5FA974B5025C3554BCFC2677048DF4A2EC0170' : true, - '62C4876E637B0361493822910A5FEBD70113B70407AEE4FDEBF249585FC4A069' : true, - '62C9A052080F8EBA5E8FEB9615B5CDDFFF1D74F8467653030CB1BA12337EB5D7' : true, - '63448627F20BDD4F11B278941D82DE56AD3A689CC06064D867FF060FCFE29A49' : true, - '634783AC64589BF61818D6D57D8C3628FBECF3354AE91725CC1CC3A6B62E4E0E' : true, - '63591FA550D322410D6B2617A3B70A23046032A8CB2F96F2CFFF9111D46489BB' : true, - '635B65E10638CE83AC12795BB42A235C6DF75DCE35AB6901255D4A3B0DE05FA0' : true, - '63C46A097FF0E3D00C6ACAC2029979168DC83ACF453ABD79E9502AEDFC9736A2' : true, - '63DBD2E32AFC1025D4AC5CABF8E6E61ED4DF6D0DE50533BFBD6E3918F40E6EEB' : true, - '63E6A22E453B17B4EA3E35C6E39EB315DBB77A237B1BBA9BFB2B3BCF675A63B9' : true, - '64261C63D988D7AD86D209177AEF7DB6EE3E62151B54C6FADF8F100C2750D0CB' : true, - '644E41BA23C44182CD1D12265833CF5D62553B2192496B051118DE945E0B5BBC' : true, - '64831454483CA9CA55859BBD324F492638DA8179EAAED19EA3CC8E16FCE7A83B' : true, - '65B9EA850436692D74A1A350E112A63BB4F2B9E4B10A602707ADBEFE76B247F2' : true, - '65E435C88F831D080BA50F37D0668230281DB9A679D705FBA84820A44D822540' : true, - '668B926F5EAA59F351B7ABFCBBE5FA17B547B01C5A7D4AE385736CE8FD13359E' : true, - '66E91987E1C56D61C6210022B93C24BBFA83C039C8C13E71A4E949A252792B77' : true, - '66E9E8A83F938165FE2D1F3E6669FD46132CFF7A2F99E5D23CC3CEEE0A07EFDA' : true, - '66F68579A292313FF975514DFBE38463C59215775C62323FD02302F539E3B252' : true, - '671DBED9969959A1ADA0F9DBAAFB7DD35CB71FB06D0337DB178E34BB5CAFA9C1' : true, - '676EC356B302BAC4392ABCD0702056E398C3092F6F3C66B61CA17171FB8196A5' : true, - '67E6D8DB673E4B9ADC12C134F94EFEBC055068A7B255AC721582D7AE3FCD3D6C' : true, - '68EE7C99FB1E2B8F0DA74C5339E58C6A1F7C2697CDE363B2A8A6D8E012D2C773' : true, - '692C08B2A888E8B373FCCDB491C531D58002CAC55188368BB037DDA1F2C829F5' : true, - '692C7B1D9E68C51DE61E300811DE5521D900BFBE44AA0E5211A4622C51A1193F' : true, - '6981222723F6C1FB0E7C14D8181D0799F0657E123C470C759F70A78D995B7102' : true, - '69A828B3AAE09B3F1EFBC53DB56353AF2444809A08F188668225B2A0EB520FC3' : true, - '69C135C5854B93D0B081254262DAFDB0FB3C0603D45EE6F5E91BD6678CF5A6E9' : true, - '69D7A817007EC6958CDE66700AE1372870F1AE4710026D3F93EE1A15E024C880' : true, - '69EEB2BDE9BE075A2C6927DCF5DB9E9427FBD153953D3843BE5151A6ECC3D560' : true, - '6A14524124841DA5A7C0A27539973C88C77C79EE8C190068EAAA9218CC35AE76' : true, - '6A525C84FBFEF83BEA806634766F1530D9C5964DFAE49BD2F678984AF29FB474' : true, - '6ABF9C8C111E6353439EF682EDBFECE4F8AF8029D4E9F3F0E638C27A347DBA14' : true, - '6AC112C1828538894A1FAC7CECE0ACFEE75658118041513498E880274BD2B7C9' : true, - '6B02CD14A3675354A800006220E94D8D4D5F9774D60EC984955FF720D927E529' : true, - '6B59DAD53B5D9FAD67626890D678177BE94BBD7C8E7815986BB28C09BD60E9D2' : true, - '6BF07AE522AE438A1736D449CDFF0D8F72F7690C120CD9F51FA2CF88160E8980' : true, - '6C636B0095B2D2ADC0DA3BEA01B82A14130410220A5692C3FA2F374E07EC03AA' : true, - '6CC97CE9EB4776E7E4EE831B97F15D992FDDE766B9AA2233B41770271C0BDD88' : true, - '6D13CD353D7F6723CC79620F59D5ADC6FF6FD185B9482C0D3044B69E8B60434B' : true, - '6D3BBB6612DF6B07FDB7630F79AE3C8B7609A853AC5E95FA5061E4248BE9CE97' : true, - '6DDA1CB95F5505512C2759E9F6ACB12B2F66CDEA160527EFA91D2F1CE057079F' : true, - '6DF2BF0E57C2A025F1FFACF32B574A50464D613CA9873BD8DF692B62CB1DFD74' : true, - '6DF8AC95B45A03538483369BAEE17EC1610F591F633E29A9A4DFD0C29E28397D' : true, - '6E01105B0FBC4CEC9790A2501D4DC5536754CD3B71480AB7C200B7A671A643B5' : true, - '6E61AF6B9F05C441F3AE6B3FE2D5A6ECF9885A2B223703D1C9660D14E6102F7F' : true, - '6E7E91E395DCD00520BAB2D41630963493456B73BF32E23ACBF4C2BBD5F0A703' : true, - '6E8D6125A9037938869D2D9C291AC9A2AC3731A6E7429D9E2037970069B7659C' : true, - '6E95E8980B03A9FF276C6A4F68B46DE8D29410A9FCF4285633DA91647BE7E10C' : true, - '6F6CA3B04E355CFF85B89EEB861EDD2D91CC874EEFE99A2D9B0A3095653D9E97' : true, - '6F8652847DB9289EECB5A58CA15FA522DA5F26A60E0BAFAA1BAAA37B32FBF465' : true, - '6FBABED892623FA77A93005871EF0A6374050AE9F3D3A346A8BD4558EE3959C1' : true, - '6FCE4CF77E254C2920BE515857DAB1929ECE7638DD8C370C1AF6A374F36517A6' : true, - '701E5C167D1D2A47E29F6E0EF64D59D978CA3287D20E3590ABF531EEFDDD885F' : true, - '70202315E3423BCD73E6A3CE51D0F541A78350111E683D8BA64AE9271A9C6369' : true, - '7066B709F68AFBA83E93FC497B97DAEE440AA3B27F8E6E32DFBB1365C3F2EE68' : true, - '70751440BEBC64501417A81F17FDB0FD31052D19DC361383EDE63E647ED1D8DA' : true, - '7081C7813097A8602BE2DFE4BF202EF4574BCD4DDF51FE8C7A2F872F93481E83' : true, - '709A501B0835742664FB4C650498359C1576F74186B0D12129A6E96A5C09080F' : true, - '70EE22590F5CFBBC659A9EA9BCFA0C876694116323562076D6FA6471E79907E9' : true, - '71168AF1899C2122E92CE1FAFCB2EE64B9CDE6D14069E7412F492C9078704F26' : true, - '713C52C05CB8B1EA3B27FBBE33649956A33D8E1AC4F222EC3B90428E52C28E00' : true, - '714F1E26865618BA75AD738AD3B843B14D776EC9B7D617CA4E7C2DBC98C8E7D2' : true, - '7180F1CD379E01A81DB181F3A839C48E64734FD493D1013367A7287181C4A7DA' : true, - '72FB0C9D7767CD725184EC22406246CC4E130E49E4630E2D5BF248187EA583D0' : true, - '72FC451177A264EC01165ACC89684C137EB92467BB44EE64962C5D1AED5F8409' : true, - '731D2388EDB673DEAA419BD26B43D6AE7D27EFDFB47B6A1124EB20D30F90965F' : true, - '7356E86E8C181E623D168491A780BA7011327CF716B416619FED3C3878A425B5' : true, - '73B26EBA4831AC03380E60772E12BE78303E9A6816058678BC432BA8D640B3F6' : true, - '745D3184B509466217C4305CF4082681DA91C917D7C176D5C8FB8C9810C1EFF0' : true, - '7464C196FA42968ABF359C05DE1A029FA4CC551380CBBE661CCBFBB1C7865E70' : true, - '74711F9774C66CEC41DE4FD32197132B13A40A6758A106DC95BCADB9298A6241' : true, - '747E80C10894375B82C313C81766E6757B1B28E5BAE75AAB0BDE87A9242E8655' : true, - '74C7149B1B6739C22FC0102A7EA2DBCA770432A85F2095812DC7961831F73EC2' : true, - '74D4CF230B19F9B9E3C674DB1B1754DEBA59A837534135CEA2A9DA3496876FD2' : true, - '74E0485AFE164965FF9F982F0999B980CF05DE73016EB7F6B38B105A5E07564D' : true, - '750C7E44BD7AE01B7D2ABEE54139FF35FC53DDE34A4E0802432CB08764E211C5' : true, - '7567AE3D698B690FB2349D4468F155CEFE64ED1975B768E791D934332970791B' : true, - '7572D3C2860E9D28159C0337E8DC7C693F307AE0F1F02E0C35E091AC1C1571F6' : true, - '75B0A587771EFCF6AD7AF92EFBDEFF0F4E5CAF9883AF521B9B13C78D247B5A4E' : true, - '75B50B0EBC80D619AC5A04DBDF5C622B1FBEE1F299594B0E4CD6B6363BEFF8CB' : true, - '75F12E7E7FEE1F0AE3C22D1B94D33E4A31EC9C3B0B30338AF4EAD52856A11D26' : true, - '7607259BFE14402887557E6AC9BB570FD9D3927DA048FF9C7926758ECE32B824' : true, - '7633A1503B4C364C9C55BAAE30CC899238244FC16BEEDF7DC22E54CB9B569A6C' : true, - '765511648B44C53C9335BA4041B2808D4B9BE5A3223FFB901ED32673D5898A4A' : true, - '767EB0B508322CA5B9E37A4A1CE1CC43F5AFEB557D509AD50261F25DA73ED0DE' : true, - '76A266265F7454F38CBC307C9FECDBE80081097444B97BCA9C722D93219EA358' : true, - '76B1A25306D53B410FE5318EF1D077B29081025ADDD40CA55ED4A0A1EF557E65' : true, - '76EBE04192726D45EAEF654FC3DFE992E2297DFDEE303BBE89C8F425269F41E7' : true, - '770784FC2B1A52F110194800E972006E868F055C52A8BE467F3AD7BCD7E441CC' : true, - '77C5EFEDC19C242BDC746C5EF4A1DF4117918CBE078CF6DD65FC274DB64CFBAD' : true, - '77CDA7C1BAC564BA322B350C6CEC0B9E813104332905F2D556603B8F661AC19A' : true, - '78C30D03D640DB32D06E482ABA1084A967544E9081BE94CA87CA4FBC2141C6E9' : true, - '79244B0AFBB3B26770A470A4F23555757DC25D3856F56D0096D9F06EB47D5889' : true, - '792EE0B202E6A45AAA85E918497D9C9F16FEAC99500A7940C0FC812ECC42120C' : true, - '79B0B3A8D1BDB11D40FE8B93868460B339CEE667DE3E94C880AD9BB14E50CBFD' : true, - '79B893E3487215CD87BE3BB3CD5CE1359CF8385BEA49A5E45BD03624A0DB3D08' : true, - '79F9792935CFEB56CBCCF76F92C17E93606B2774C0F3618F2DE9BFE9506AA04F' : true, - '7A081DEE8006EF40615953A1EF9BA820BADAA31338157E69660B3EBE7852838C' : true, - '7A0F440C38F18E15DE15BBD496D670B48571AC7A71EE56F0F696E26FE1C06C92' : true, - '7A898AD8A9DC791DD00EC4F1C6CA3F1AFBF711D2A26E99E6D0740B1B5FCEFA49' : true, - '7A938A727247270556F67BCA523A333A2F22573331A6D696E6C559302C9C1912' : true, - '7B3234A53D173A266510B9777DBDA7F372E40651E07B910899A0C1063A560787' : true, - '7B40E5E9E8A2F63FFF19CE2F4EFEC73C902CD146E75DF866ED274651288DEC80' : true, - '7B45E99CAD17290A002ED52128572713BDD96FC1544094FE297EDF28E4D40063' : true, - '7B6DCA23E77F3424FAA26C0DB800ACB6E3BBC3DC13A11EE4679049EE3DF03A02' : true, - '7C6BB49D3E96F1125169FEB59751BE733ABD4F0D2860EA0A8F1A5C9B14A62968' : true, - '7CE1119D84CDCA99D2C1040485C894E22A02106EEEAB39FD20650BFBF7CC5948' : true, - '7CEE465792A72473B5B70A88F140AA27C5DAFC6C876AD88D2E45423D9CDC6C06' : true, - '7D100CF85EE12F47C6C9755F00CEDCEBBFA513CEC80993AE5E7FAF6F68289C23' : true, - '7D3EF8DEBFDDD39FA7CA90EAC62E660639521686926488A315B10FB2A0005F6A' : true, - '7D7753734C01837BEC44A0E459A049D96683FF8D0DB78878C3BEC4C9574B412A' : true, - '7D817F280F1D664E0C9E717287D6AADB1132D4F3A3E2001B94009119733C9434' : true, - '7D886B62A526E2B996C9F715AC5B23D07EDA09AD69D18E8F54F5210166AE0C8D' : true, - '7DAB96077DBBA3345EB176EDF7919AF6889938AFD1D9BD32105BD82B0D1CBCA1' : true, - '7DBF7C36818F0BBE711267E6192080F75CE8908B48C9E6EB9626DD9B05308A7D' : true, - '7DE8C95508E4933243E3EC7D7C222F82A250E1B71C5619C547FCDA51146392FD' : true, - '7E0CD7D375698FDB4C4FFDA33ECBEEDCC86ECE5ED8942F85B216B022812A3504' : true, - '7E47F4F45DE3FCA19673D070AA99E0DBFD6049A98B94D090B6B2168A1347D6E7' : true, - '7E770FF8F54B17E68443C8D43DCF1661C1082C024BF46DC66716D39B7BC6FA80' : true, - '7F0F7FB9B5975CD10469ECD29F69E5C11CDE9EC561684535E8A36CBC514D3DBC' : true, - '7F3B3BE589085EF5F314845A6F850F9411F0594FAFDDF725D3AD3BB189BBBE99' : true, - '7FCD0B25EEE0A63FA151354DC39D42CA58AC10D8ED9EB4E0B215C652C07D4E28' : true, - '8035EB81467C64D22C3624A58022AF1B5D0D4047328109CABB74CE6B580A9A8E' : true, - '806791E1F1BCA3B3AFECAB7D1EC6FD66C2616C6CF13A3256AF0D53AB0A759BCF' : true, - '8126A7034869686473438C4C7C005631DF665491A9CE81D9B3ABAA27D327CF75' : true, - '813CF894750BE7FE8A0C8B5003B362D62D400F6F08BC1FCABF247172A63B17E7' : true, - '814461D429FB2539D44E02913E03F0698FC1ECFF7894260AD3AA9C2716B99E0B' : true, - '81A524F4768E8D164B51E023E9FDC90DFBD9EB3D6111C0DA5328B8743253BE8A' : true, - '81C82F1726447A63776BE2F5E36CC6DEDF0C62F3B11C7C8B7CE17E10309C4569' : true, - '81F32F8C3E868A588E5F34A64C6FBDB483891716BABC5C59D75391A58D8C6146' : true, - '8249977B7E0D31F533255488A5416349A1C6AAA59C330D6274C82364324C3870' : true, - '8256476D83180014AF0D76C02D405990926003E2052E205DD66B158E69DAD7AC' : true, - '82668C1629CB39A7B5D9DF6BC94349FA113F915999799DDFE31FF1862FACD095' : true, - '82C49DF2DF809141CB5FB30EAA8E41A3E510AC7F51CF203FAC2B16F20C96C2E4' : true, - '82D1AEF2AFC46271D18C5FE50811DF9A5EAB812156C2FE6F531A34FD529E75A9' : true, - '837CFD4C8E9033F38B46225EAF78A12DA6636DAA0CCA197FC964B51092C55634' : true, - '83BBDAE22AE7CC2EEC0698B2435650633DEE4E0DCF849789C974976D4D641C33' : true, - '83DD8D43E88B8D6ABAEA06F3A3A2455C8F6F79059923A08A8D2AF33233F5A63F' : true, - '840B5405310320AE110F3410F585B799CE365AC1076CA0CDCD94CA6867A9166A' : true, - '84A8C623C4304D57CE03893ACBF4E51FC9975C58658B89127508E5C33BE992A7' : true, - '84F98B7850FF7A169D5642E9EF4401DDEBE465DFD5BE957C9EF18CE9988C11AD' : true, - '8524BF9691E1C2AB2BA091218096105A335A0315C8282E59B6E8346B11E36608' : true, - '8583DD0B4F3B4EF42A66A8D6E369B1E2FCB8B7C64846B242384DF6B8FA0570BD' : true, - '85C4AABFC4B38B9B5D0A4B854DC02527DEC6BA1761B28F5698141AE36ECB15D1' : true, - '85DFEE3DF0EC8DFD281A3DE35C80A220A42FC9CFA1EA353349D98FBB58DB6E64' : true, - '86154D1D0FD89E4E1FCF72511C74A8B2B0DDF4F38E675B649192ED0C9DAF84CE' : true, - '8685E22CF1BE901D8E954A0674DB6EC013D9627DDC9FB81D3EEF752BB410DCB5' : true, - '87108514AFAE3DC15C9F52574F918D7FAE18350602652906E289802FC543E61E' : true, - '8769B55BC6349F2874697988D13507CC28F9EC6630431A7A9D360046DCBB3190' : true, - '8769C6220722FE98F6EA21C5456ED2BFDD9112CBAE15847B239AFB2E6A630DBF' : true, - '87C002662AAAB5BE7B6A7CF4B1CE9036E3A2A70A0A3CD80F64005C889ECCDDBE' : true, - '87D35135D0372CC692C261453242880BE00159B60C2450AC7D7B84DF963FCF8B' : true, - '87D61B9AF0E0A2D9F836AC304E2F5A84C543275820BC4BABBE3B75A0D182DAA0' : true, - '8858520A8D4E5C88D777C33963CC7F43E796B555E7FC573681B59DCFAFB43EFA' : true, - '887A5D0381838CCC20D204BBCFFDD864AB71C20D2BA06842921BD96BB171A796' : true, - '88BDA25A602E57FFD8A0837257CE1618DEA23AFB0051874072E85CD98F740F07' : true, - '88EBF5BCAB2CF8C43095EC58E1BD0E375518B5C734CDC394BEB34F3A7B0480EC' : true, - '8919E46CD5418E4CBC8FEA766240D5918B48BB28BAE25743EB276B996E6E7B73' : true, - '89489486E767E3C410896A44B28109680C653391FA763E7A21ED1FEB13540DFE' : true, - '8974A885ADD3112CB168E00C10557410A89955EDFA94CCC4EBA3F5A51759D8E5' : true, - '899F08AAF5A4105B9B6CD106464D7634D5B27A444CDBC70264B8CFB56D290DEF' : true, - '89CBF98E81A0F82966E19BF3BB997A2E0BCC7C90FB83A2D4627FB311B6FD1D58' : true, - '89F5AB7CB2C9A8F6123C4D2F3F4FE378BEEE92B2EF506202BFE847DB058631E8' : true, - '8BA43B5CC73958FF059423C2AC018F994F6FE3A7E88C4B4E6E89ADEC692FF1E9' : true, - '8BB672CAE5B222514864A8E4FB8C89A774200D7773F2A56347C75D5094514C74' : true, - '8BE5E1A7C8736600D204B7C20EDDA49E72107EDA9AA5E03F971FB24FA8F8C686' : true, - '8C2DDBA5CA9E4CF79937A5A3AFCA79F371B6F235B37308EB53ADF12C319A7EC9' : true, - '8C6DDA18A4CB339717E1321FBFDC9A3ACC52F2FEF6FB453EA389A2B43FFFC63C' : true, - '8C7CFA7D4BB49D306857772722769DB1FB9CDC09F565F22A8EC082D956E93694' : true, - '8C85C2F6E697880B740C96BF35FAA02B4B2F718DDBC4A8ED6ECF9EBD7FBEC1E4' : true, - '8CB93E0ED93C6730B58CC0314B8158A7A92184312C53A7CDABF05B369CC7E730' : true, - '8D0CF6F0B227BE9394DA0DADABAB81A44900D104A915645ABF030220F3AE187C' : true, - '8D0EC1B68E24C1C390A7DCE081085A14CB27FE8B5CE652A60529E04825F289DC' : true, - '8D7E00642EF079DCB1B9DE964075E3FD44C63D7DD6493AA3507D87D0E277CD25' : true, - '8E6419A3781E9E9C262AFDF8318332504EEA56B39EF770B9882523D132B85AE9' : true, - '8F8515B35B665B69D0DB9661EAE9FF0829B71CF4AFEB3BBF988BEE73985F5D3B' : true, - '8F9CE539058EA5E0587C8E79E554DBFD1971FDE7C5A96DD1EF7277AFC2EF70D3' : true, - '8FDA31393381A23479C8BFCADEA59DA75A1C390693F72CB7B546C641BC698256' : true, - '8FDDF56677555109B03ACCF8F39EAF657767096D71F1652125BBF487FC6BAEFC' : true, - '903081B318092837E460229248FA67A70B01EC6DF9C9D279188ACED18F1E6BB8' : true, - '905AF56BB5517C973A43C5B576B40C5EB69F00E615BEAA8538D294E40BBA836C' : true, - '90859FF52A82829F7DC99392C6AAD9F346F54ED3D468426C26233AD5D189FBC7' : true, - '90BDE9F4CB3DD673BDB6C641361BD8B076A985903DF004AF7E74DAD95EF82E50' : true, - '90D6AE9953E31E3DA34A67533E444BC924E67CC2C610FA468DB31E59B1A35471' : true, - '90FF35B27260290E94BE3E2FD6F62F412A3FF4303E38ACF6315E190A1980A095' : true, - '916A17B983FBECECABBDBC4ECA80A330919B2EC1F3F4BE4A54832B3874EEE5AF' : true, - '91CD0D276921BD32F4C8616BF2676078C24E39AE1B30943C5263AE0377F41F21' : true, - '91CE410FCEA8EC201D33AB8E7419BC60E8EC83509B51D10BBAD728E2B6EAFB1C' : true, - '91EE28B14AB2C7571BE6CDE2D75FD4C05C960FB033DA819EDD463D5D3C494591' : true, - '92624A843DE27E186FB6C18ADEE88F30E00A984E44BAB93108BFF565AFFD2A15' : true, - '927546232861B1DE9D105031E4A2502A170A06D65340705EE3D7ADDD34F9FE0A' : true, - '930971709C7B3F9D52B30CD42E61D03BB430A1D8641F685F5A9F730760FC78A5' : true, - '9343EA576B49D46887962DA39BEBE09276ED97EBDF47A82AA8CA4F28A04AC789' : true, - '936EC5E6437D79832DE6B015C38725C84A4638D73770965D82F3CBA4EC35C0BA' : true, - '9394C03EA88D9DCD628AACC140CF1FAAEC364252F318F577380BF2623009DFFF' : true, - '93AFEA0BFBF153CA77357087301C0F31B095EF2D5A53F7E2D02F9B13DD6E7325' : true, - '93D45B29473CACF1E89444ADB8FCB8C3626C278E2339E897C88C2A51119C1C25' : true, - '93DCEAA3D67BD8992097C446EECE4A6A02DCF89EAB0008EFAE7D0C9BE26B7C00' : true, - '94C5E69A5644B4BBFF863312752633025D60B905984BC297D103F7B58F8F1CAA' : true, - '94CE12FB5F69E4273C8F813ED37ECB954AD667BC81C4E37DD27A40C291DDB12E' : true, - '951E14CC4823E3E83E2DD0CE75826B7BDBCD45CB16FCB70A1CFBE6C6BE1157D0' : true, - '95EEDB5E6C8B8552E29D7FB0C607EC68AB3D3F88A3FF97F4C70D7BA9D69C8521' : true, - '9658D54C28C27DD6E9B79098D7D86C1EA32215492E8AE9DB225E3410EEBC39CE' : true, - '96735DA929F88A1A3292D120F963FF675FD13315DECAE2555139CCF71822F408' : true, - '96B9BCDC21A4E9187BC7BB7B5BB052A1953140044A59ECFB2F1DB1C0FC648FE6' : true, - '96BC0612871BA526E0F8AB96612077A50930AD430147A0BFD37E1BE21E0C64DD' : true, - '96DC92A327E33DF81946BB760B8C22FD7F74A2C9592987BA110F7A9D211F47B8' : true, - '974149DB587C53796C2752AE8D14C7F3E7C9A1002EECE93420AEDF52B1F48558' : true, - '9787EFF64AF68F280E2778414020672F24C44010549900A5A0487F11CADF9A41' : true, - '97907F0BB6A5CFB411D9975E742C8DD55AED77AA373C56DD74ABE6B7C9892A60' : true, - '97B09B0E6CD2378FA7CED47F365C77266C94B867F8F87B01D8B667D0DB2F5DC8' : true, - '98323FED7420A24CE2E1D0A4445B73918FA0C867BF19E2FEA18449B429D935CD' : true, - '984E447F3A932B79E9373A9EA9786E0637ADEE21B6EAA6B8127B05F26D7181FF' : true, - '98AD6C8A91B962AFCC223C26F0026802B688AE55C204BA0A4ED5BFA5619D979C' : true, - '98D9DCCD4C1EF004D7F000B29AC540E935ADC074DAB919F8ABBAC7507FC35EBF' : true, - '990477B5471E1BFF7187E419CFAFEDE674FAF3E6325182F9F8C686A2BAB085B5' : true, - '99E437DA5156E02DE52D0D95AFDE0FDBAF8F626F4D3BAD2FFFE7F4C75D76BD60' : true, - '9AE40265F51732A5A72BFE9B4C3CAA7106EE84D320F7C675C443C91550E5F701' : true, - '9B340670FFFA8B98B78247E2A470627E05F1AE05ADA505FDD049350B5A8521EC' : true, - '9B573154350FBEDA3CAC21F90DC0E59C9EB0DED7F069650E099F62B0871F3615' : true, - '9B80DD5C98B0F0A7AE343DBB896DBCE45DA52EB4E31BE057287A2A738D9CE3D6' : true, - '9B98284571E5FBB2A2BE676AE24830A6F0048748FA38D1F11CBCB252505D2E62' : true, - '9B9C56A1228EFF3D6520261D3CE06F38597A96199CEE7BFEE71D95F7EA6EB54D' : true, - '9BD01B7914B81371F2FBF23E7A0876608CAC69218A0DDB78C2AE45909744E5BE' : true, - '9BE0DD4F76D60653F0C3DF854026C8A73C5403B593504B80187730E6562FC67B' : true, - '9BF6A4CE27AD782886988DB3FC3AF54CC857946C7C5E32A9A6AB13A9F7504DB1' : true, - '9C0F47FE70B9E636409CD37362B052B40B3CF765DFE80E71D999E7EB1AE1D4C2' : true, - '9C102F918224790C649D916B43E1CC9EFC4C16ACD141E22E85F199C1C6BE7DA2' : true, - '9C109FBEC4A2FC259F1C89666AFC54EC974EF4CC52C858B3C612689CC8A943FF' : true, - '9C1C2898E71561BB2B87D8859A5066940BA97950DE95E12ED293822111EC3D35' : true, - '9C7F9776163746C45FBC96E2985B57C6AF769E83428F910C3EEF0918BC5CE593' : true, - '9CF455322FC12AA2FFE88CCC43388419F61C41ED1AEC560E11D627A009DA62EC' : true, - '9D484D53782C2FC0798843979D991B84A180C1A833D717AE002E75F90E954EFB' : true, - '9D93BBA3F1A3E4BE5D1146849473DC18A987B0CF48566E506564D4386B29C50F' : true, - '9DF287B6058B72D28B1B7E4A46CEC187EC1FF32561A6B681E2F6B6E5A4937F88' : true, - '9E2F5DDC11A878B6A7D27F9FECBF10861EF27BACAA208D8EC7ADBE2682FADE95' : true, - '9E531CB7619C8C0D5C97E7ED9B20C3A269ACE189AFC5D80DF6D2034BFFD0E804' : true, - '9E6937E5BD26C280FA683490204D1347BD8662325524F0BE4B25FC17381923E8' : true, - '9E837E2CEACD82AEE4D2CCFDFCCDD0331D305E5B2D123B317E2F3C0376BAC850' : true, - '9EA5F3B71232ACCBFFFAD71FCCD08B459DEE53DE93399DCE0A212D0034E9FE6F' : true, - '9ED22741CDF43DC2AA238D354F0BD95C28F1B5557ECE9489AABA4CC37CBFC9AF' : true, - '9EF5444454DA21B0B7D6110C9B040BDD005EA0BEA27788D00BB3F1C48D9D0F36' : true, - '9F7385E656F0E8237CE9A5E9C96A1B3CA17920EE75C112ABE9219C18F77E9E97' : true, - '9F9E4DC55925D2944C0ADE2959EED5F6E55A14BC2F6109F8864A8AAD2E4A7997' : true, - '9FC08812780624B21DB7596E278F22F0023D27DE99277E37CF07BBBD4B351590' : true, - '9FC5DF8E8AECAEAA4939A5BD94A078371135107A7AAA15ED5728C9887FF4DD8B' : true, - 'A0142CE676C4FA2524F53E7626D21042BFD8A903AC54F8AB2FB977ABB760D6D5' : true, - 'A029D3A07D53CF4D88E75038E45EA719A7A04F1084FA5C327E5AE66B229E7761' : true, - 'A03D7CE2FA040738CCFEF1F20872DDC1E321745B2C34095822A51B3BDC07D9F5' : true, - 'A03DFE739C80E109658E0B3EB41D9EE1F03EEE48162C4EB97EBC3548760402AF' : true, - 'A0AF36C48B0FB8F827459F8AFE6FB82AD1CF7D5D193057AA7BE7DE3EF5E4F69A' : true, - 'A0E9635A0A993A3C15F0D7362D4D7C1EC21A50B04AFDEC18685B4A21F69E42B3' : true, - 'A1504C131B0FE702B64AA259B901DA2D9B2AE9D85AADE02F1528C1147F98E535' : true, - 'A1712F04B99848A73D978552028EB84039AB331DCFCE329E8A7A59F678139F28' : true, - 'A1B71E94B84076BBF29645578CA796F299D5FC07CA4C2049D41760F9B53035F2' : true, - 'A2152E5BF42DA70683BFF5526B3F9B90045F74B82A034EDDDFD2F8674BD20D7F' : true, - 'A21C3F2CE357822C64D1F9C26446235137559939DBE7C7C3E5CDA218376EC1EB' : true, - 'A277B893194AE7687EBBCFA344178B3578AA6228D2B430BBE2FC8D5EAEE43135' : true, - 'A2E6C7ED88E5F8103D95E02F792372AB66EEDA5AF35CE4884316493325F971E9' : true, - 'A3554186EC7CFF6B11D03F042B490700287F9CCE71A4F581B0C5C13C2A0CE643' : true, - 'A37B9444FE3BB0FB2EC43F2677926EF458D0ED4F0688FEA6443A5F243F10C2AB' : true, - 'A44473407C78C1A951194CB7DBBFBD5010A60A0C82565E02AE1E372975C8D8E4' : true, - 'A450EA9215B45056104180FAA52CD6635B94625D0FA383A2000CD8FB0B203E28' : true, - 'A45C0F1FB81BDEAED2EF4302BD5AF171F31496B6A8D502B488BC8E3E22D5E992' : true, - 'A45C8546DF176BCD32BD7D15FFE732DA2B73EDB38D387108ADABBE4B20066275' : true, - 'A4C6A2F0F5175D6C5C1D87E61ECCECB368E6B5374F056F222FEDBD0857B83F2A' : true, - 'A4D07A0F8A6A11935F63B66461D06DAFE3D8AAC0E0001B5E842A2232F327137F' : true, - 'A5278398DC472DC37141AA3EFCF4953AD7B14AC25D3730D2E99020353CDEEA25' : true, - 'A558DE705EC13AE6FF7DF6E6B1BFDB54A7CB7FFAC1499954FB109E6B884CFC03' : true, - 'A59F7C5EA7F5C48B71DC6BB678541E4982BBA6FE8E181F5C91DBB9F9FBF49A66' : true, - 'A5B9EDB84D5E06BB960BD23A73B0AFC8A0F35C95B782BB54004EEF2430CD3351' : true, - 'A6584C2334B3B29B3F7DC858D65AC229F679D8134C75DBD5A6CC1A4B897ABB2D' : true, - 'A68F08DECE7FAEC73E7F00AFE4C758B2742EA6BCB9FFC0F3D09C3D3E79E41EBF' : true, - 'A6B6702113E87CFB26DA2066CE2151698C68EC71EA906F632FD65DD35B3E0094' : true, - 'A6D113CA991875E854CB226297662EE3B083F5D4E15E03D1FBD96AF0FA6691DB' : true, - 'A6D1CFE508A9E64AC65FDE0FB8EDB8A808D3083125E2BFA975B4A1F0373FE8B9' : true, - 'A718CF6FB0B4672FDB9BA1CDB812CDB98423DD8ACC8991780BE5E0FAEB863FBC' : true, - 'A74DA51FDF285B66F86065496D236FADC4D44051DA6400B743DAB15A81FF3B13' : true, - 'A7636BE0A08F56D7F05A8D69AF0B7199FA7C05AAC123DCE71AB57C538A4D910A' : true, - 'A806A89477E76D5B381113AFAF7D082B543E172A38A1C4B5E23645A81A411E8A' : true, - 'A84DC1DB143EEE938A45743268683770BA0FB2EE69A4EB4B131841555CF1E124' : true, - 'A8E146E7A32922CB9F5908D8FC85B2928D4BBAF44E8917F370E57C60EC479EBF' : true, - 'A9266E0A665A00C7C4360A7CE3FE0B5ADBD6E7E20A32677E43BA30FCFE112E30' : true, - 'A93B07A90F55AB3B6BDD56958FD69A808C8DEFA838DB35D323F080A4AB1E4B60' : true, - 'A982473B3AABC66BDE83F206E260A07267088862EF71389082A98858BB12C3EB' : true, - 'A99953DEB7EA51793C1A353F91A070E4702D42AECC9808E4F14805A755D1866C' : true, - 'A9C8BD62DD64EBE49F3DC28459A7756B6D7D6168A9195E8C52D41D2AB9D9CE05' : true, - 'A9DAFB7E89AA7141CD52F08D5740F09F388419744351D889C96D2B4C3153A424' : true, - 'AA1716CB8EAE12CAD75B01F3A4EC5516140813349BF4041369089A6063625EDB' : true, - 'AA55A82D7DDFFAE695312FA5ADFE893D1430057D1D8ECCCD2A9E985CEBAE3989' : true, - 'AA9F7FEBC74FE835504EE24501DB2D00409FC761AACAFA92DC8A696388AE843D' : true, - 'AAA011E89B2581C1863FB1DA1E41A8FB8EF14ED0817976F16909C68E27F4E70B' : true, - 'AAB01A25BB1EE114084DBA1E0B2B8E5C84936196D40CAAA26A16E58FC50E2B93' : true, - 'AAD7DA6E17F164E00B0B63A6338330219F40EE683F8E0CA5F6B709F2E13FB3E5' : true, - 'AADA8A48FB9966CCB61E4B8C97DB2DE50F0AF34422D74D1A770501AD00C40119' : true, - 'AB34CB23DF8A006DD182B01EBBD38DC13785C4DDD433564B5CA7579DEBF3B1AC' : true, - 'AB47045D4B45B0821E851EEEF7EA9D6571F9759DAE4F3DB1EF92597BFD2B4FF9' : true, - 'ABB5673AF0583FF328D23B1D4F35B33EF6B68DDCDD482BB3BC1DCB43D2A0367D' : true, - 'ABB5D30080E3CFE6F83F249F3F8A22C731F318DDF1BAC4D4895B2B7F7A6287E4' : true, - 'ABE9809D21AFE6E0FB253DCD55E10C31DBAB32A973EC52DFDA1C15068F89D333' : true, - 'AC3D6D1C64348ED7E068376BFDDA866A015317B4AA8A7FC0C16F7E7ED4DA9682' : true, - 'ACBD5C965EBDEE4D8D3EDEE2A5FC407A6A3A7AD5E6EC120EF1854C18118953B2' : true, - 'AD046A8C4DE2A89F32973F0566452CFD38CE0586998717364C528F5995B5E2F2' : true, - 'AD05645C0957254FE67FC48F7BFAFC24D30BEBE233B82D87DAFF3B44EF7314B4' : true, - 'AD3FC05D383E384659DA700279CE3C48DAB804AC74DE2B3DD3687F6ED355F99B' : true, - 'AD40C15657CEFAB57F6A71035796462F0184B0AAA489E601087DE329F35CD757' : true, - 'AD679FC990B740191DF7F88D51947A1F23D79F862160E3C94A22BB1169A7567D' : true, - 'AE03E5FDACD94805484DE44DB4BABB96D1D2EED4F0B9CB528CB30210C8005C6A' : true, - 'AE176A4F7AAFCDBBDC0B7A69ED5D5AE0A8FD0A5BD37BE887ED0F098239D11CE6' : true, - 'AE7960061D5D4739E2A6C0BEC6BE8E98ECE3E97994940C9BF5AB2E1C2C0D9702' : true, - 'AE7BAFD9FB7AB3D87D0D58774420B314E46538D2894DC58DF5F5614DFE7F0435' : true, - 'AEF7E370874D2001D989B258853C1974A5E45676D3D7595F74662C0B650BFE8D' : true, - 'AFEC41B1302FD09F03015FB573960516918EFAE30F68D97D027D45A51C4115B7' : true, - 'B06CD6AF9B4156B4379FF3C6C1F8CA182A923527D0DD92905394DB3446A11D5C' : true, - 'B09F332B8A115069BAC41865E1F1228DFD8ADCF3A66C1F2EC9DFF41173EE7A85' : true, - 'B0FD996D85E74BF51328181823707C4FE5E96C0028C2B3FAC104A96237B63EC6' : true, - 'B0FF4F8A6FD3F8FBB19A188351CD4925C951DC2D64633B9E0446F026670A47D1' : true, - 'B15FFE5C987B12D7299D96F1DBC1C7E85B0528D1AFAF9C6FE808361F7B0D1D06' : true, - 'B183D8E672345AABE24C849B4A13D0BD99C296AAB273ABE88C00CAA229A27154' : true, - 'B1991ED1894F821B66AEF2E26E0834CC796FFB43971A79588A44CCBF7E8B3076' : true, - 'B1D9B3EE2512A48A8E703E2D2263EEB4B0A3D24963F5165DB3719CD4750D2986' : true, - 'B20BEB685F3FB617FC974C4C624ED894EB2F7FA61DE28104C7B9EDA1F52F46FE' : true, - 'B295FDC9D7462488EBD4E5FA8E5B062FE5E2D0432C6A02B99F4CAD1F9BE6D0BB' : true, - 'B319CB30FD80959806C6836129AF6E1A8A32B8B8D39AF65674532BBCAFA2CF8C' : true, - 'B31C07387E56AA457F17CA3D3A4C485683253CF387E6DCE37469B6A8E51CBF29' : true, - 'B3251BB9A1B4F219400E69789FB08CA2BBA396C6D2FD3C4B69F4B7E1C0DDB615' : true, - 'B3381C627EFBEF5DF3BCC9DB71A9B6E4C0A4F3114F7E7408A356FB33FBA5D20B' : true, - 'B36D72C8B1F436DA49520421FC0A2869A9952DA405DA5E29EC3A1919453DD6F5' : true, - 'B38D0B1FCAFA3F435FECB2B3A25804FB004BF11DE5CD691C1461A4D76792A4B0' : true, - 'B4130785116E5A84BF7B191696B213BA8877228388B18C2DA38DCB9EE14AC8CA' : true, - 'B440A043514252DA267A339059C789BB14D1339B7964B0945262D978D9AD021E' : true, - 'B5008FE6CBE7E0EC5B158E8C9CE487FB6E5349F47007F3CDD2B1AAA69098FA40' : true, - 'B51BFFBF094EBB26247D54321DE8F7CC10B24BE9EA6D9383BF908E765D5D9594' : true, - 'B5453C09F38363BC702FCACE4B64A74538B1BE40617640C00150CA9129FCDF52' : true, - 'B55BBD123C4262662BC144E0CF4BC9B47059C4BD0A136C075BB9B3E82830799D' : true, - 'B56769F28FE8395FCD50E7552BFBC2AA549F30E1092A54921BE76B07A6A800F5' : true, - 'B5A9BD7AB128FDCB0DE3C7EAE193904867BAC57822BE195F3060369520403D6A' : true, - 'B5C58EAB37201F8A7F3C520FECBB3C016A30960C5931DD7C43ECA217A1E31774' : true, - 'B5D38F895E2681F656FEE774C8677D29749C3E5ADD3DAF7A2A91043BF5A4DDA5' : true, - 'B5F004A0997E3448A1ABE7DCE45D8BD263AC631D14B05A04CA195E98D665B679' : true, - 'B61D7AEFD0BDF0DF2C8C8E68D4E3D92EF45CF9F79AFD9EDC4729D71375916019' : true, - 'B633827A97472541F7DFF77C347301FB40604D6076D08FF4244C070FCFC9B731' : true, - 'B663B6C8C60A5969BEE4F6844813AAB8945EE2CE2253CFBA67500B991CD8A07F' : true, - 'B6CEE930054D71DEE1D167A566B9881B8971F7EB4BC4A34FCFD9DDB3DE311B9C' : true, - 'B6FAC01424B5C332C72B6B218DC93AEBE54318DDBFC5BD1277E262FA7831E5B1' : true, - 'B70CE73DC10ECA5F97059AFEA5A65F1B1CD45F3137BADD7F3A12DD1D6A468D82' : true, - 'B7135730040D8EC88C4228AF1C9482AE97526F30CEED5AA117387D20A61D7159' : true, - 'B72D29A0BC3BE16C085CE7AD38D1B7A945DC96F4A6F20F126138FC5202A072C4' : true, - 'B745A72DD07E5FED73CFA723D6BC2E98FA62B6E03ED378804EBEF7DCD83725C0' : true, - 'B76BD62A287E68C2CC8F8CA7FD5196938DF4C39E6F46DD81A3A37D22B761C158' : true, - 'B7E6A641053C86E17A4A328D98700AF4BA3BDD35E5208359AF120C2690F51E3E' : true, - 'B7EC03174DAD602E897345B072749AA86CAF05151062989E183C3039DE25569D' : true, - 'B839688B9303FEF8860B4FB2EDF19FF2A0BF5306DAC007E8CE074CBA13B39A03' : true, - 'B86F85494700264E918D8706B711B9E8C3C12AA776E0B63AF35B73CE56B15BBA' : true, - 'B8845702F28C3AF9B35D8B5F1DFFFA014CE411CF592B18395F700CD8B937F3B9' : true, - 'B8F0936622984493F4B74D087ACA8438AABAB1111DA258806EA86C23C6F6617E' : true, - 'B9772693C35DE8A4B6EDC9457AFC3B4B52ECAFDBF612CEF1A27AE7F7FAB8F79C' : true, - 'B9D8E2EC3C47B6130DB45DE0741CDB790E36E4617986AAD5A2BA232B8BD8A85D' : true, - 'BA4052C530EB5FDDBBFD98FA9EB99660BC084678009D5AFB2F9996BCA40C354B' : true, - 'BAC88F443D9F2F03CC7ABFB27373EF9600AC918E084967BB77E80650B3724266' : true, - 'BADED8CA137A9AFC4A0FE344F663C743D1A549D0A8DE663426B90E788868024C' : true, - 'BB7E9348A57593802F083CAA99351386DBDF348C83AB35E554BB7BA44FE1FA55' : true, - 'BB7F20108F934620F741F678F3D25F7DB4A50A2CD216FBAA1F4773767F645AB9' : true, - 'BBAA50F752648522389B89EDD345BF8C41FE10D4593A8A1DF467B2FFA7BF870B' : true, - 'BBB99D57C9ECE54B1634DB4BD6211C5167A5EB4DC310340BDE14B1BBCE275937' : true, - 'BBEF78F8C05ED5A5C2142C3598696B0674FF3DADFC8156896025A13EC892ECC2' : true, - 'BC0B758091A4613FE070BECD6CDC0BF1FE89727C3482DB4A2353CEC027E3AB11' : true, - 'BC17CA376A3CA716F41BFA9D3A2CED2B1941431D70543BD600B7596F4EA2E440' : true, - 'BC1FE50662610B7D575931031B1EE60479D9D9E3D94048DE6FBD44C88B9FDAF1' : true, - 'BC447B8A11DA8F1DE19285AAFB97AF1A26A35157AB8FE1E4AF80AA70B11AB65B' : true, - 'BC568DC8C01D8D7595FFCA2A7E000780F15EC24CD38AAF25EDDCE7BCD41E4FAE' : true, - 'BC622EDE87E66E364218B38609D792F6906F7CF95EE5EDD1A76BE0C48B8533F3' : true, - 'BCE02BE648B8A1EE092574F3D453388649082A1B72E7AFE7ADBA310EFBD38DE6' : true, - 'BCE27288DAB9DD76CB73B5754152983F14B11DD0466B1D4F6F55B61E27A3353D' : true, - 'BCEAEC2D8B8C18B58BD320D77850EC38285F419ACA8A9E939DAE7DFDF26696D0' : true, - 'BDE511A7E1B38D779BD9E758B2EE8F7F2DD5A242D37CA573394808CB01B78FA1' : true, - 'BEDF91AB2008A01DA4111518C8065D4BFD9ED614A29CF89A16E94CBCD5F5D17F' : true, - 'BF38E5D5BE0CC67C1CFAC96B40DFD91DE065F2DAAE427AA54893FFC5ADC73707' : true, - 'BF9B71E2C87C03CF421733610A1BDAB430C041EB20DB75ADBD9ECB3D342072CA' : true, - 'BFA0CD61FEFB0FE90D0F9025E67C62A735DC730F13B5D5FBED9B54A3DB882F91' : true, - 'BFA5B4A3751715409895D27F7C9F057F2C31EE560DB075008A3BAA21DE838FF3' : true, - 'BFE49B659622D1011F4BB655CDA77638665D068FBCAF11C73829D2DE16E43BE4' : true, - 'BFEC93327E0A7A92EB67CB3E00D29C97411077E06CFD010BB84A5C0836CD2F1B' : true, - 'C0AF523C6E9B52801FCA62602022547B25D8A107CC7008C67C438E1A093FA69B' : true, - 'C0DA5CBD6F39A5B707B0E7DD33004811FD6F925DE713C817F3E2719393163E9F' : true, - 'C1AF26C31745338DD2E13C1BA98A2E643AAA3271CF1FD5B878E93B1DDA2DB868' : true, - 'C1AFF08543BBDC3D2D796884D099D8A7B8D40FBA1F37AA31CEC16EBE2AFF0D0A' : true, - 'C27D64BA2F133417986FC42073BCD7DB4668A2FA7D2D217CDE215F25D2BD5E23' : true, - 'C284387A9875E45662ACE976D665D6A33C36F3EF2B053AF26C0918DEECBE7CB6' : true, - 'C2C65F50563C7E96AFE6602B9A0B68DE74F3C7AE5C00ECDB39B98960BDFE5B91' : true, - 'C2CE30C7F0723F2D2B25A18FA209B1CBC66662624FA8CD1EBA96BF051D969625' : true, - 'C2E60ADC4803F0F11F83C644D8DAF80DAD4B9D6A67FC108B3C2CE6F2576EB69C' : true, - 'C32E558AC4FEACD1690C227683DFC38CD26FEF103953FCEC9CBE0FAB08C176DF' : true, - 'C391E32BB11DD8F6F13BF71E0B9CE225364A50006E3F91147EDE39D2AA6E70E0' : true, - 'C3C07C187D95222D855EBFDFF827193F71C471BAA3A1B51242BFE963FD4A63F1' : true, - 'C3DEDA7A5C280862654DD266D482AF59CD7CE5C09020F8F32EDA0D0FE2345B02' : true, - 'C46DC6888470BF64D41C297E1FA082ABB128D4D0EC44DAB62E05E4FF8496B18B' : true, - 'C4D51A111115A7D06422BBB16B67ECFC73D636DB08551B27596FEB532D8CC2BA' : true, - 'C4F8364FC0A36A73AA0BDA4074FF1490B3AE07A7BEA479385BF28078288F9C3E' : true, - 'C520C3FFB5C5107BEF2E8DC44C74803713E13D9BCC99A57C6838BE15ADAAC04A' : true, - 'C55B18B5DF187AE68174C086FA4E692C6443B01FF4A19DCA743EC1F6E1B7E332' : true, - 'C58F0FF2DF810FAC8EA095F349A2E6D7E0D9C09D6FBE7D45895408530E1C75F4' : true, - 'C5B2A636DE1FD6629B4BA41FD1693F261F50577130A05366D298F9CD282E4BA7' : true, - 'C5E4575B4442687C80E6F9F290846CE80217AEE8892B9977C5F455BEBE285EDA' : true, - 'C610F374CDA9036FCB01F526005ED8561D16A27790491AFB26D56A1BF0716007' : true, - 'C6479E02F20A3596203FF184483F1F6A29EF9F95DAD258EF2A84BC6125B299DC' : true, - 'C66BA6D7D5EE44E268D2DFE0A00284BA59F2FD86AE8F738E84718A1B4C5927D3' : true, - 'C6983038573EE575734E531266D91772390BDF63A276B49E9360C81F8C813EA6' : true, - 'C69E1305EEEB633DAB5055D952D0A8FFAF35FE57D0E1896A7BB24EE37F29959B' : true, - 'C6A38936450B0D72D5C38EC5BE6FA683D25CBFE604C7415BC5E55E2DEB06A946' : true, - 'C71294A0124420512711C918C36F77192D2B45CDF8C99824B4BC862D0B31C3B0' : true, - 'C7E74023ADA70B7F3BE9085E1554B8EC7AA20B0E0A38A08B2A05DD377F7177D9' : true, - 'C821C2140114FA7DDE92FA497EED3E4B9131919A9EF3D6750013C6CE7FEE0B72' : true, - 'C86D8AEC465B23370C4D5086141E9C98935D91524E3CF68BBE62C0AB231EEEBD' : true, - 'C8726499B7FA3B32022A21230BC27CC59901DF584C69F33232EE76FD7A554F3D' : true, - 'C88BF2F611A7EE5307733DC2950EFF56A96BC832961FF595196EB88EFDDF4932' : true, - 'C8B4AB5E690CF9E14D079125CBD13232EACD4FA3F15276D2D7BC48FB84BDC0C3' : true, - 'C8CC1B97C420851221D3997B0C0E3A6B87B4D9F86D348917FF90BF710DE79351' : true, - 'C950A2AC5B35DEC3F384099AD2E3BA7FDBE79E93362A132380CB5ADD1EC2E94D' : true, - 'C9F2002F6542DA1BC5833AF9A11F6F5F144B76539CDB9E1738C7DB37097523D9' : true, - 'CA157632863D3E7B499F141741724FA84DBA48AEB51B04A53A9D3DFEA7F70BF1' : true, - 'CA362B0DE34C54F91953DDCDE461D54BF30DB252EC07AB6B4C449E45750BACED' : true, - 'CA46DA728E76E97AD214DBB6AC9CB1EA2DC87202C88C35E87CE574FC1F2E0438' : true, - 'CA846077B68DCA99AE30BAC33929143E856784B64E70098CBC7FF5BBD85C824B' : true, - 'CB42AB965E2C1CC7F20BE15F308C2173AE531C532DBBF8A36B292B1E1A891A07' : true, - 'CB6C703326037CB5C4456097438DF15387452C0CACD89D9DDAB1475A2111C197' : true, - 'CB7FF00DBEDF16D72C8A10151A30595AEEEB9A2317D3F44269966624417141F4' : true, - 'CBC3C62B44E2C35250AB62FB2C3993C55F251559259727D5F76A63002148F17A' : true, - 'CC1A62E8FD6FCF9A3BE4BAAA64AE2FC0BDEA2C2F34BAEF8F9123D991262DB210' : true, - 'CC815184FE74CDD53947DCC9733B1D5E9B9E8F31C8C96154355ABAF389BF7D63' : true, - 'CCF6435DDA033106286D7A69A4C8DD727B59C4E334826CDBCF6F66C801580FF4' : true, - 'CD35C7ABA0839C0D865DEA4C1DB624F709E5EA041A68DB55842E2C189F38BAC1' : true, - 'CD7C028069F371EBE93537094CB57A51CA0CA421B9A7F8C1422D9C454F864FD3' : true, - 'CDA01229ED05A3825448BF81C4479F02828C6E02DC3F303ADC153BC0600D1FE3' : true, - 'CDE7AA628678D4BCAEF4240A9D09B5BC7BC1A1757010006931949C83DA299B9E' : true, - 'CE01F10B612255CCF31E03F308F45E0A091C0FC41A13280F575BAA7F4F7B4A58' : true, - 'CE318D567E77FA3E2B87268B09B1FE99484916CDBC7A56B99900CE7BB7B4F967' : true, - 'CE34361030AA71334FC8EAC253C91EDDDAD3E2AF0974931325384B9A445CD116' : true, - 'CEA9DC1557689CC8AFBC740C095ABE8AA617C19AB92B761EA71F19AB2B3FBA4A' : true, - 'CF19B1004488D5D9C882E2C4D0A47789618E0BCD6475F6D9C6B5591C2BF333C9' : true, - 'CF3457D98980F7909742C974AE4EEABF2007967D9870705867C18A5B47CEB2B4' : true, - 'D010B9708329342E43370125857DBFD443ABC95CF5778898A7343E5F1C61F4E9' : true, - 'D0927B6D60E3441E11D75A8FD593A38665AA7D211F691BDA3D0E815EBE303C25' : true, - 'D0ADA8B3F0D09BD13AE5877B5E448C18376D129F92DCF2D4F1BB182725A62D3D' : true, - 'D0E5727B39200CF1054391FD251191C38F6754C103612F442673BC53F1C1634D' : true, - 'D18241A820196F4910694FBB37556273E54236F41FD53B3AF75B6C6430D93B15' : true, - 'D1B116326075EB6F65C4F8F8E6742B639DB23B56CD8420F42F8219CE615303C7' : true, - 'D1C4E4D1F014FB8F889F45AFA39485BE742F64268C662BB28494855E393ADE96' : true, - 'D1C684802932EB8EBBFA0DBD55EFA5345AB3A928653CC222D548CD29D91EEBFE' : true, - 'D249C8E95880A20CAEEFADA9A9B8E80386234DBCA6D990E78CE574B430C0E6A2' : true, - 'D2D9C57B19EABF7A90BCB421283733EABE5ECC6311B1D05089D4F4251D157E3D' : true, - 'D3525FAE9E537DD0A56F0311A27A603C422DB0376928C707A12A1E3785F2BEE7' : true, - 'D387A162888C2556F1D3B9A73201A8608A57085E1115214BD2588F315B89776A' : true, - 'D41844AFC9E00E17DC87F0ED1AE4A0559C418770A4FD7033E3D9A9997C5E204E' : true, - 'D44D1A7D80BD2F9B4A62E11BFEBBB74A5780B0366CB6038CEC9FBC8C8E19439A' : true, - 'D44DF644880E56596405F1364D8C3E5301F05ACBF82FD66B671D895288C75360' : true, - 'D53C334638CE54CB75DAA15D1AAAAD70081C9A52A2393DFC79E9C3A92D54F4D6' : true, - 'D5D9E3A7DAB437D5F8967A307F6BEDD3B2AEFCF59B229BA649C4E549F01668B5' : true, - 'D5E62D9B8F9EB17D8BA84646BC72AE6271E24D0C7787D302965A92ABAEDEE2FB' : true, - 'D6061064FEC9DF923123EDB3050700BE1532B68D9FC12FAECABB9FA82CE2B887' : true, - 'D6200C1744EDDC3BA40857A1089A20F7E86EC3B29FF413CA2BE49C060A79D19C' : true, - 'D63DF52A3A887D35ED58C64463BF73252738FDDFD73E0F8B378E318AD3057D36' : true, - 'D646154250C7883E951B03FBBE9EF7D3D00E74D60281FC82876A913A23AACB1B' : true, - 'D6ADFC439E8E9FAD7C281DF1117E0030BAE78D15E481B7886F54E72DB7DD352A' : true, - 'D7266CBBD307F97B7284312CD4C2A5BADA7D4EB123237EFA43E55D8D2F5B16A6' : true, - 'D737A5AE5F875A566A4ED4CB025D07D076998270F0D25292661B4CD581B0805C' : true, - 'D7632272521683A38E88A18C2CC6AED79B2C5E854483BDB6EE83D82BF41B96CA' : true, - 'D77C2904CEF8726B748EE36E43BE65BDBD12FC48E4A4ECA4885537745B0BFD15' : true, - 'D77D31A02283F81A4E64F7512C59BD71FF603FED5EC57F24F0A240F04B846999' : true, - 'D782121A27D3EFEBF791EFE34D5A81385358DA939F5DEB17530252BFBC8E2F02' : true, - 'D78220C9BDCD563F71BD8139B40A495879DAE9FB1968AE3225BD0D04DAF294BF' : true, - 'D796DA6F4413295EF05E79C798E92CF8A6AE172A091C862D7176384D520BA2FA' : true, - 'D7D1D7F326D3DE85FC1DFA7F45F9D5A3C64473B37143EB09DA66CE56F6258FCE' : true, - 'D82602A79F22AF46AD32D0AD123D30464371FFCB7A8AFB8C51A74841463A20FF' : true, - 'D86562629BA86C435C0965C4AC302160729F27804FEBA36E211F96CDEFB5DF8E' : true, - 'D86996C0C019AAD9DF5531836BC48F54427021AB8E24BA1AD073895574A143FA' : true, - 'D8AA8D8A7A48ACCB4C1B7E6C2228B7BFBC297EAFAB1315643744E3EE4DFA7E6C' : true, - 'D9065B6D9F7F27507D51170FB465FA6250DF528EC38BB46DAD0311C1DF63ACA1' : true, - 'D9259A35701E881FD41A9939C4AB82EDAA83A18D1ABCBBBF8329FC6850A0C6DD' : true, - 'D94290750677E2B5ECE7C2DC41AD4618C6995F173EC44DF80B23CC0E333EA654' : true, - 'D9FDB29EF83808BC82A97839FB2F22C2D20DAB2E6B67BF5862C8922BB1FA9068' : true, - 'DA5D20F1A6CF6CEC3AA7028A6E17D8F2E1A60069E497758B0CC938C08F4E76BC' : true, - 'DAA384D0D2A94A18A14E3DDF7A963E59BE41C06B978F3DC8862E1EE6C8E76DD0' : true, - 'DACA572539398A22DF7049B23BA3E59DAD6F34A44ED7D5E275457D9F79B880A8' : true, - 'DB7B1361B066EC2F777AE104F88A846DC163200AEB05B47D5BFEC91B6F13AC53' : true, - 'DB995D854C4EDEF4DB5CCF20B2B30719056F3EDAA0CCF4B9D9C5C898407C5C7A' : true, - 'DBBF19EB75C47A8473F59CE4B2A318B493EEFEE4B6719BDF40FAB2E81D9DB2D9' : true, - 'DC90A8BEF7B1C62F9E4B3D3345665DBB5D6CB46077F5E7ED0628A5C0E3DFB742' : true, - 'DCC87ABAA2524536C43A280BC52710BF117E56EBB39444873F93AEF18519A502' : true, - 'DCCFAA33D28DE7243AB2C1514FF36012E967B0C0C6E62E940325CFCE982BFC23' : true, - 'DCF5F2D0FD496B041393D2151A3C6366DB5D9E3E6FC5EEAF236CEA93B7E0126D' : true, - 'DD5A1FC87107218C43D2C1C73075C5506D6901CE1289F86DC0162E6BBB80B84C' : true, - 'DD79B321EF333A6C39D48DB57DC5A138F023A111D56851CD4CBC8EB1BD094893' : true, - 'DD7B5992561C1F706A82F7D9318E45DCB1CF508A564263893350E2D3CBC41241' : true, - 'DDB4149166CCAC259D826E4E6649B5F59DB8DE3A2ABE0D0CA88F192AC891B331' : true, - 'DDC51B2E6531407BA185447AD1A9825344FCD12E93D120D81825613F016DF297' : true, - 'DDCA648AB82DF2A942AAD4B384839255D5D98ABEAFB602B2BBA2F4B115072EDC' : true, - 'DE65D592D65A64794CCF2911A10DB5DB27C28E6C88BBBF75B75FCBC2CAF5A02A' : true, - 'DEC7DC8AB8ED70C1D2FB2875F0F99FA99FB53E6BED70CD47B244ABA2104DA5AD' : true, - 'DEEBA70EA985BD2637FA63B79F69B0EEE5D261E95E3699B97855296B23D82C3D' : true, - 'DF32CD36F2BAE47DB4BDD2610D77629F44819723F9BA4FCFF6CC7F6E5709FFFD' : true, - 'DF4482289B54CB444569A5436AEEBEBFB348D966D2FBC8C5115376F3E5496303' : true, - 'DF464344337A60D78868FE886F92848BFF8713D641C9AC5EBA29524842656CCA' : true, - 'E0BD7FDC3544BBBF78F401148ADE378A4A85214C0469EDD5EC23C5246A6F5555' : true, - 'E0EFCF7FC7033248F1933BE975F931485787F32928E47DABAC84FEC9D7365CFB' : true, - 'E0F0A23CA9D564C9EF7CCD977D01D6E6E7EF5ABD585819EE64520CF369967353' : true, - 'E18545BD6D070F0C6AFE93153C190792C4921FC90953FAA775E351B1FB1BCC44' : true, - 'E25454E967CE89CBD0F51AC02466D60FC091BDDD9CBD3093ABD027B0AC4E8174' : true, - 'E26F4C34273553354334DC7A22DC56A781F2491181799287CC91F12871FEB50D' : true, - 'E27966B8B9C67C751F9AB8315D0BD1CEE334D96A8C5F60C764070EF8B8FCE61A' : true, - 'E2C42D4BD3807D802CE3B9EBC6FACC04E34EF327F4BBEC1C7A48618A1271F5E4' : true, - 'E2FBB7B66934E9C420D496089F2C0FB5AFA193A1E6F49BF35A751EE1E1F983DA' : true, - 'E2FC1229FE0EDF06A3706DB8DBD2344B61A9364840A3E61E6B29CE49A966AC8F' : true, - 'E315468836F77DF6AA146AF392C5DB7262A83AA83FD7CD75771C70D29C3F16CB' : true, - 'E35CE61842F1093D8D4AA9923AC66D17F8D1870A03C9CFCA1A27361CE8091CBC' : true, - 'E381DF6792973BFE322D23C6CF2A6C24A4ECFC77F43F03D2FC04EE39FAD7C683' : true, - 'E3EADC69740DF00FD147B0718CB1063D7E90E172E196C96956920235CF9DB382' : true, - 'E3FFE980C209BCBE10F594806CAA472BA2D4702F6E2549AEB86DC52B46DCF773' : true, - 'E4A79C0CBC9966A44EC1185DD6E66371FF395D0FAC53C1FD2619B02F6ACC9C6D' : true, - 'E4E88DE573C9161962C072B7A9C966BE3070A6027A061DE32630C553C09EB046' : true, - 'E4F069C24D7162E3C94AB295EA33C8926BDDF79934CA28D8982A35650EB60B05' : true, - 'E50C2EC0BA6891F60BB325C0762AB06271161EFA9E0B2ADD50FF520128092FBF' : true, - 'E556C54852E6E0E61097B2A34DDCB87F12EF74CA847CE07C4CAD2348FF41D3E5' : true, - 'E5E046397DC23925AB8CAD7CB66E2A12EBD989350CE41F89EED455248A109098' : true, - 'E5FB4DB1871BDADEE779D366E7BD007F7A963FBCB00B90EC14C8077477E436AD' : true, - 'E68C4E54088AD4A308EC6053041A4A8B04A213347BAE2CE86D3F1587B1518981' : true, - 'E692108B3683F3C6362DF92476D62BAE60687035B70B9119F962190C9C215B04' : true, - 'E6A029856494D7FE48E048D60E7BDE80D2B6217FF084F64A929056E166F479C2' : true, - 'E6A6EDA8D60BE3C0A5A19631D1BC3262EDABEBFCD0144F3D19513C8F6342CD12' : true, - 'E6EB9DC7D407B4A2F308B4822E5BEA7428CD4520C59934214831D61E95F2BA34' : true, - 'E70FC0431E5B6632A30C04F99A4E0E55C860187A04CCCDA4FDC08E926E94964D' : true, - 'E7382549110E59A8E0AEADFBD5D29FFA2350B5FB2923F2095744FBFD8AD54C97' : true, - 'E7CF336F6E4E8CC153474F240D9238D41091EBA635F25CDAFCFCFC3AF2A6BA43' : true, - 'E7E7A31551051BC4346069C741DF38908FB54470BEA2FAAA789DDED2D627F09D' : true, - 'E80FA3BD00D99AF27B013B520D3CEB1A8DF8BE355EC971F08B4AE44FFCE44147' : true, - 'E8165BA89FE5F637FA2B3428FCC54E7E92BDDBB80505188C61320FC70E24F86F' : true, - 'E83B3C3A3EAA32F6C60BE4D4DA918AA4A5432FF3380D4886C2844D69094EC571' : true, - 'E893B898F708775C51A0A60748972C53C4B62787A591B96EFBF8CE28E29E87D8' : true, - 'E8AD1B8DA833226A37C21D1608E0DBA8C758EED7A943EDF323ACBB779E227C86' : true, - 'E9A176C583F8B5522A9A86B6A4409AFAF614D6A7650A5D6C32E4499319F5280B' : true, - 'E9BB3A11B595B1D403FE21DF47A3A4EB4CF43ED49259DA83FB0FAAEC048422D7' : true, - 'E9DDA8C162F91A7D746A5567060DD636491C8C1441697B600F56C00FE73AC594' : true, - 'EA64F2625FAFE2EC122B493D4754C2B090153F167213AB6F07A87C1D993E5292' : true, - 'EA6973A28807C80D7558B7636F875574C9FAD887BACF23B0F686A61C26EDBFA7' : true, - 'EA9369F9AEF701B1F9699363254A2AE007F47AA824AECE077B82F1C0B6A69197' : true, - 'EB11019A7642C75F4DDC1DC9CF3B469BFB4C44B71C615693C73175F16DCA036C' : true, - 'EB5F60FED8FCE35455A15B9A8E9E200FCF1B8B5B278D1511C8C5EE67BD99FB46' : true, - 'EBABE928B643E1B9FD6F61D67ACC4BA6A9BFCC95927D31D265F701AC4613B9AE' : true, - 'EBB8403BAC78C842A81201893DC86184BE82BC2BFEC8A51748651F938F4051B0' : true, - 'EBC9928117D91D999CC375930982E891C5DC4F9E02A3960FE692DAB13D96ADA5' : true, - 'EC3097F047F40894368CA744A97CBB177C1122963AFF3D958DDBAC299F793E71' : true, - 'EC4FC179A9A40EBCF5F9508C94C0209D9C28ABFB21EE932FE11BC87F2887C490' : true, - 'EC810B437C1FF46BD3F0DABC2AE11DBC7ADE12B9889580BCF20C097540C97A7B' : true, - 'EC869ABCCE3A1C036F1AFABE5ECD4FDA581D16C0E81E16A2734E6004A55896BC' : true, - 'ECA27FBA9090EAD50CEE16362AB7462FBD060DF8B4BE27C107328E49214D6758' : true, - 'ECA4B72D4C90C2889F21F4084AE4CB53F5B8EA5D147529B0CF72D3A9093532B4' : true, - 'ED310E1BAEB1759D2AEC00BCDE6D9A86DFA33B17563EB5105585F15327831032' : true, - 'EDEEFEA60ECD1F9063448654B3D1285B8D340B4AAE455A26C34AF221F6F96F85' : true, - 'EE5D710097EAD11639F98940D1F32793ECC114F0408856CCB6536F1EF2366704' : true, - 'EE82E118167C83EC466137DE867DF824A5063074FC61CD164D21F26976741A2E' : true, - 'EF162B09A3D267BB7B8C79D44D06A7AF21EF260518D0EF3A8CFA1730D7B89231' : true, - 'EF55226DCFD0FA606BFD3496633BFCBC146925B2D6685AB4875E142D79233600' : true, - 'F010781D39EBF1A76700CA71DB56877685A52CEC2E7250D2C5684AF659887AC8' : true, - 'F055D488944F4779BE3F17FBEAD728843701CE6598D01286AA1D525F26AEDAAB' : true, - 'F07E7F2A7106743D8C1FF2E201F944E3227363968C5A0AE31112473B93BACC7B' : true, - 'F0A9E452CB90B0B6C50FB794AAE7ECBF5E56801A10124C95292B28592FA9B003' : true, - 'F0FD8D8E64636B1A1CC2557C50DBADE7A1F0536B905F5FFC06AFEF630AB9A40B' : true, - 'F1C66D3A1C4917A59AF8ADC68A0722F7193D345BD978BA00FF669E7948D44F29' : true, - 'F1DE4066AF24E5744C9075CFE974CCEAAEC75EF9E6028B48090B1A46CC218C37' : true, - 'F205928C933AFF1F1A6411AB779CFAE3FAAF43754AB86735DB52F74DB1DA81D2' : true, - 'F233DDE8F7165F2D7AA4E736E6FE1F913570FA7CA3E3C134EFD22D5F303075DE' : true, - 'F2835EDF2E61A29F9E62FEF97476165D5FF40E553A2A4F955EDE30C0A5149E12' : true, - 'F28F54684E233C9EEC646C6E1336E33684DA3732ECBEEDB2A606E09DD29801FA' : true, - 'F2C91876EDB36EAD7E4821C2A6581144F1E5A67B2DEF4A5E4AFDF79F5E1CC4D7' : true, - 'F2F7938B7E294F17565B2833CC2E0A657DA80A237814C24B5C0AAAF35C4608F8' : true, - 'F3160DD030C118B5D5835743E78CCADD0620E5C08460E0CD1F5D9D437352105B' : true, - 'F319741878D155ED3E5DD4955A82B842700A64D86AB782B511F0CB9B25C48AFA' : true, - 'F3A6A1A957C3BC86EFB3772C6153D97C33B908124CA58480AD1F62C54CD89013' : true, - 'F3B356D9CE5B37D2B690C4EBB2E04A643CB542273C1754D2EC9803D831781737' : true, - 'F3D202454336E948C83BCA2342C4D1A0DBB4335E829229BEAE04B4125F0D508E' : true, - 'F3F90821BD1454FC7AC92F768D2C9F75B5CD79FF4DD3251F4B9D647D34024F73' : true, - 'F456775CCC8DEC02CF2F92A48101E18EBCC9C880D41FA87EBE5E2EAA0E24620D' : true, - 'F460158348B017310570CAB302E33DD12FF72526698115EEE8D3DE318383ED9C' : true, - 'F47CA7623AEE6A1849B4F3F90818A93AA937A0EFA65D6674EA769BD7EC113BF8' : true, - 'F48CB2C1C2551290BA59502BBFCEC7BF137B5176967BB92B38E79D4EAA63B7E0' : true, - 'F4AD6AEF9BCAC58CF21EA81D65C3B8C85CBC9BCF6A2807FB0C5CD332C5F9BF49' : true, - 'F4C119D9DB2CD569E75B9B1F0884B990575EFD920E8C62177990AE650B7AA274' : true, - 'F4EDB536BE8520B583202E17C56768579613187741195347DDB9BCE3AE2D5150' : true, - 'F5B52148D7155BEE637459A918CE58D22D4E024FB715325FC1B36DA4C6255357' : true, - 'F5DBA16527D871BEFEEAE706C232AD0B76FA1384EFB86A844C7BA46B96917B9D' : true, - 'F5EB7AFA398131FF3966EE221B9C8F332BEFCB634D42631E349AC0BCF367E920' : true, - 'F5F8E7786E1F61643C7D2805D86031E5C4CC97AE93FC3785FE289FBC44C381E4' : true, - 'F66ABF80914FBDBE53F794409F4E0DC895129066609E8B491506FCE246A2EEB8' : true, - 'F69B01FAC28E6126F1BA71159D0273519683F2317EA764B4C483B32BB97614B0' : true, - 'F6A08E63AF8E62D51930BCE0FA7CF25DD2944512652EFA275E150EDD9C11CF51' : true, - 'F6A7FA219283E5B13E256B4E039E4CCD93CB72B84D84086E398D5534ECA42DFE' : true, - 'F74D9E23F4CB53775CA60178347F2A029F77579000B21AA08EC62A1C2932348A' : true, - 'F754352E819D0C33E6CFC06EECBB4356DB5D8BD1FD2591C7C817CCE662BE2BC4' : true, - 'F77AF5088D4EB425ADC0997C059C641EFB5AE2CAC73669EBAEEA378EDA383186' : true, - 'F7A57247F89F0C50879598293BB33B7AFF5FB74BCE37BF7B53F8955CEFBB9511' : true, - 'F7B593D9277B72E9CF376EAC2BD5535F76CD9FA0FDA3793D7EA6B4D050602E85' : true, - 'F7FC63254BF2472575C6D5DEC8DDF02B24B6F1BDCE03D807B159A69820262D4A' : true, - 'F805AE1FEDB2D94096F0D341B703ECD4975D773A179555DDC83D424F85578571' : true, - 'F823D6220F702D0547375FC4451FE27A91F0CE2AF9DA31552235F96CBBA56326' : true, - 'F82E01B697453BD37AD7012E267DC78395DF3DF4BFB0B1657F58256616F9B355' : true, - 'F8434B1782EC41F184305BD75BB3C0206721BC6CAD62442377072C06101B70DE' : true, - 'F88D1DF97289C9ED7E062D4E4B2B2463F90946DAC91785A6FA02F2599D7FE65C' : true, - 'F8E68F837C3E9452994FD6BF08F02D12D087BF6D44137BA37F72E408620F558B' : true, - 'F9971BA9EA322BB3FCB85111FED48B9CC1C9788D7BC6985E3CCE4BB7801B0DCC' : true, - 'FA14D235A95650A4CFD7A2A4DD80BAF2AF47581E01E412D640F93D6BB79D1C06' : true, - 'FADEBB24D23CEE1E8B02430C31A939E14821E9567A25367303F20F74879AB51C' : true, - 'FB674F1642EE443BBB827B29FD871CC110D77875884B1B050FC804D2884B2B3A' : true, - 'FB6814C66D6DDA2F348BF759398AB81F7795CA223F8AE9C0D82CA295162F68AD' : true, - 'FB7EF701469F77B6412100BB2D6399B1A574BB9610186FFFCC0119E14CB2021F' : true, - 'FBCC79E05CC135E183F4963C2A206F9DFDBC2DD0D379A743D5FB301741796921' : true, - 'FC2DA5A38AD07685CC019C7C388A396159FBAEF9EA491588FC995DBDF52A0B9C' : true, - 'FCF4BA663F0032118EADF9D327B65AB502C7A8B336462A397238884E9A28508E' : true, - 'FD4E54155D3117D78872DA05046A16FE944315F63C20BF0530F986F5F3797ECF' : true, - 'FD87C175594ABB82818D5CFEE506105069ECE5D5A499CFAD2E6376A88BAEB15D' : true, - 'FD8B1849A13BBD87D072F9D09506C90C0F29D7CCBD2B6446AD31335348AF9294' : true, - 'FDEE85771EF592A9E5F47D08250AFCBC73DCE96A72418B2848AE400F3CF59341' : true, - 'FE5DBE234A59B532A12BD552A36DB75AD21EF243C48C61849A0F93AF314C5896' : true, - 'FE739A748FB17DAFB6CBA0DA5B2164B8E0435E8DA7FB85E7970BBE731B428631' : true, - 'FE9E5DFD73260F732A5F7CE93B82DFA71D84F10D772A845221204A9685089FE7' : true, - 'FEB92F19B7394B8BF0FF71AEFD233E262AB656BDD531AD89FBEB9228C5378301' : true, - 'FEE5D5CF3F51FDBCD24D5D4E9BA06AFB96BFB558CB5D4249C70066749EEA8FBA' : true, - 'FEFEF80071B0D8E2B57D6601BB353A435A425EAA701827370C3585CE09F2CE50' : true, - 'FF769AAD90F56FB48D6C6CFCC86E38F9CBC6DB23774342892AFD4680ED3560FB' : true, -} ; diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js deleted file mode 100644 index 7e15f1a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js +++ /dev/null @@ -1,249 +0,0 @@ -/* - * A JavaScript implementation of the SHA256 hash function. - * - * FILE:sha256.js - * VERSION:0.8 - * AUTHOR:Christoph Bichlmeier <informatik@zombiearena.de> - * - * NOTE: This version is not tested thoroughly! - * - * Copyright (c) 2003, Christoph Bichlmeier - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * ====================================================================== - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* SHA256 logical functions */ -function rotateRight(n,x) { - return ((x >>> n) | (x << (32 - n))); -} -function choice(x,y,z) { - return ((x & y) ^ (~x & z)); -} -function majority(x,y,z) { - return ((x & y) ^ (x & z) ^ (y & z)); -} -function sha256_Sigma0(x) { - return (rotateRight(2, x) ^ rotateRight(13, x) ^ rotateRight(22, x)); -} -function sha256_Sigma1(x) { - return (rotateRight(6, x) ^ rotateRight(11, x) ^ rotateRight(25, x)); -} -function sha256_sigma0(x) { - return (rotateRight(7, x) ^ rotateRight(18, x) ^ (x >>> 3)); -} -function sha256_sigma1(x) { - return (rotateRight(17, x) ^ rotateRight(19, x) ^ (x >>> 10)); -} -function sha256_expand(W, j) { - return (W[j&0x0f] += sha256_sigma1(W[(j+14)&0x0f]) + W[(j+9)&0x0f] + - sha256_sigma0(W[(j+1)&0x0f])); -} - -/* Hash constant words K: */ -var K256 = new Array( - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - ); - -/* global arrays */ -var ihash, count, buffer; -var sha256_hex_digits = "0123456789abcdef"; - -/* Add 32-bit integers with 16-bit operations (bug in some JS-interpreters: - overflow) */ -function safe_add(x, y) -{ - var lsw = (x & 0xffff) + (y & 0xffff); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xffff); -} - -/* Initialise the SHA256 computation */ -function sha256_init() { - ihash = new Array(8); - count = new Array(2); - buffer = new Array(64); - count[0] = count[1] = 0; - ihash[0] = 0x6a09e667; - ihash[1] = 0xbb67ae85; - ihash[2] = 0x3c6ef372; - ihash[3] = 0xa54ff53a; - ihash[4] = 0x510e527f; - ihash[5] = 0x9b05688c; - ihash[6] = 0x1f83d9ab; - ihash[7] = 0x5be0cd19; -} - -/* Transform a 512-bit message block */ -function sha256_transform() { - var a, b, c, d, e, f, g, h, T1, T2; - var W = new Array(16); - - /* Initialize registers with the previous intermediate value */ - a = ihash[0]; - b = ihash[1]; - c = ihash[2]; - d = ihash[3]; - e = ihash[4]; - f = ihash[5]; - g = ihash[6]; - h = ihash[7]; - - /* make 32-bit words */ - for(var i=0; i<16; i++) - W[i] = ((buffer[(i<<2)+3]) | (buffer[(i<<2)+2] << 8) | (buffer[(i<<2)+1] - << 16) | (buffer[i<<2] << 24)); - - for(var j=0; j<64; j++) { - T1 = h + sha256_Sigma1(e) + choice(e, f, g) + K256[j]; - if(j < 16) T1 += W[j]; - else T1 += sha256_expand(W, j); - T2 = sha256_Sigma0(a) + majority(a, b, c); - h = g; - g = f; - f = e; - e = safe_add(d, T1); - d = c; - c = b; - b = a; - a = safe_add(T1, T2); - } - - /* Compute the current intermediate hash value */ - ihash[0] += a; - ihash[1] += b; - ihash[2] += c; - ihash[3] += d; - ihash[4] += e; - ihash[5] += f; - ihash[6] += g; - ihash[7] += h; -} - -/* Read the next chunk of data and update the SHA256 computation */ -function sha256_update(data, inputLen) { - var i, index, curpos = 0; - /* Compute number of bytes mod 64 */ - index = ((count[0] >> 3) & 0x3f); - var remainder = (inputLen & 0x3f); - - /* Update number of bits */ - if ((count[0] += (inputLen << 3)) < (inputLen << 3)) count[1]++; - count[1] += (inputLen >> 29); - - /* Transform as many times as possible */ - for(i=0; i+63<inputLen; i+=64) { - for(var j=index; j<64; j++) - buffer[j] = data.charCodeAt(curpos++); - sha256_transform(); - index = 0; - } - - /* Buffer remaining input */ - for(var j=0; j<remainder; j++) - buffer[j] = data.charCodeAt(curpos++); -} - -/* Finish the computation by operations such as padding */ -function sha256_final() { - var index = ((count[0] >> 3) & 0x3f); - buffer[index++] = 0x80; - if(index <= 56) { - for(var i=index; i<56; i++) - buffer[i] = 0; - } else { - for(var i=index; i<64; i++) - buffer[i] = 0; - sha256_transform(); - for(var i=0; i<56; i++) - buffer[i] = 0; - } - buffer[56] = (count[1] >>> 24) & 0xff; - buffer[57] = (count[1] >>> 16) & 0xff; - buffer[58] = (count[1] >>> 8) & 0xff; - buffer[59] = count[1] & 0xff; - buffer[60] = (count[0] >>> 24) & 0xff; - buffer[61] = (count[0] >>> 16) & 0xff; - buffer[62] = (count[0] >>> 8) & 0xff; - buffer[63] = count[0] & 0xff; - sha256_transform(); -} - -/* Split the internal hash values into an array of bytes */ -function sha256_encode_bytes() { - var j=0; - var output = new Array(32); - for(var i=0; i<8; i++) { - output[j++] = ((ihash[i] >>> 24) & 0xff); - output[j++] = ((ihash[i] >>> 16) & 0xff); - output[j++] = ((ihash[i] >>> 8) & 0xff); - output[j++] = (ihash[i] & 0xff); - } - return output; -} - -/* Get the internal hash as a hex string */ -function sha256_encode_hex() { - var output = new String(); - for(var i=0; i<8; i++) { - for(var j=28; j>=0; j-=4) - output += sha256_hex_digits.charAt((ihash[i] >>> j) & 0x0f); - } - return output; -} - -/* Main function: returns a hex string representing the SHA256 value of the - given data */ -function sha256_digest(data) { - sha256_init(); - sha256_update(data, data.length); - sha256_final(); - return sha256_encode_hex(); -} - -/* test if the JS-interpreter is working properly */ -function sha256_self_test() -{ - return sha256_digest("message digest") == - "f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650"; -} - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js deleted file mode 100644 index a0220c8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js +++ /dev/null @@ -1,161 +0,0 @@ -/* vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 foldmethod=marker: */ - -/** - * HTTPS Everywhere Firefox Extension: https://www.eff.org/https-everywhere/ - * - * Licensed under the GPL v3+. - * - * @copyright Copyright (C) 2010-2013 Mike Perry <mikeperry@fscked.org> - * Peter Eckersley <pde@eff.org> - * and many others. - */ - -// Define https everywhere variable object that will act as a namespace, so that -// global namespace pollution is avoided, although technically not required for -// windows created by add-on. -// See: https://developer.mozilla.org/en-US/docs/Security_best_practices_in_extensions#Code_wrapping -if (!httpsEverywhere) { var httpsEverywhere = {}; } - -/** - * JS Object for fetching the XML source of rulesets. - * - * @author Pavel Kazakov <nullishzero@gmail.com> - */ -httpsEverywhere.fetchSource = { - // TODO: look into class constants - CC: Components.classes, - CI: Components.interfaces, - - // Constants for generating URL from which source will be fetched - BASE_SITE: 'https://gitweb.torproject.org/https-everywhere.git/blob_plain/', - DIRECTORY: '/src/chrome/content/rules/', - HEAD_STRING: 'HEAD', - - /** - * Initializes the window to view source. - */ - init: function() { - var fs = httpsEverywhere.fetchSource; - - if("arguments" in window && window.arguments.length > 0) { - var filename = window.arguments[0].xmlName; - var id = window.arguments[0].GITCommitID; //GIT commit ID - var URL = fs.getURL(filename, id); - var source = fs.getSource(URL, filename, false); - } else { - // Should never happen - throw 'Invalid window arguments.'; - } - }, - - /** - * Generates a URL that can be used for viewing the ruleset source. - * - * @param filename name of ruleset to view, such as EFF.xml - * @param GITCommitID revision of ruleset - * - * @return string of URL - */ - getURL: function(filename, GITCommitID) { - var fs = httpsEverywhere.fetchSource; - return fs.BASE_SITE + GITCommitID + ":" + fs.DIRECTORY + filename; - }, - - /** - * Sends HTTP request to view ruleset source and updates the window with the - * ruleset source. - * - * @param URL HTTP request will be sent to this URL - * @param filename used for displaying ruleset source - * @param useHead whether send request to latest revision of ruleset - */ - getSource: function(URL, filename, useHead) { - var fs = httpsEverywhere.fetchSource; - fs.setFilenameText(filename); - fs.setPathText(URL); - - var req = fs.CC["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(fs.CI.nsIXMLHttpRequest); - - // Use HTTP GET - req.open("GET", URL); - - // Clear User-Agent so request is pseudo-anonymous - req.setRequestHeader("User-Agent", ""); - - // handle asynchronous request - req.onreadystatechange = function(params) { - if (req.readyState == 4) { - - // HTTP Request was successful - if (req.status == 200) { - fs.setSourceText(req.responseText); - } else if (!useHead) { - // HTTP request was not successful and the request wasn't sent to - // get the latest revision. Therefore, if we can't fetch current - // revision (this project's revision might newer than lastest, for - // example), try to at least display the latest revision. - var URL = fs.getURL(filename, fs.HEAD_STRING); - fs.getSource(URL, filename, true); - } else { - // at least we tried... - fs.downloadFailed(); - } - } - }; - - req.send(); - }, - - /** - * Handle a download failure of ruleset. - */ - downloadFailed: function() { - document.getElementById("source-text").hidden = true; - document.getElementById("failure-label").hidden = false; - }, - - - /** - * Convenience method for setting ruleset source text. - * - * @param text ruleset source - */ - setSourceText: function(text) { - var textBox = document.getElementById("source-text"); - textBox.value = text; - }, - - /** - * Convenience method for setting filename text. - * - * @param text file name - */ - setFilenameText: function (text) { - var textLabel = document.getElementById("filename-text"); - textLabel.value = text; - }, - - /** - * Convenience method for setting the path (URL) that was used to fetch - * ruleset. - * - * @param text path text - */ - setPathText: function(text) { - var textLabel = document.getElementById("path-text"); - textLabel.value = text; - } -}; - -// TODO: Test resizing on mulitple platforms -// adjust window resizing -window.onresize = function() { - var textBox = document.getElementById("source-text"); - // TODO: Move to constants - textBox.width = window.innerWidth - 100; - textBox.height = window.innerHeight - 150; -}; - -// hook event for init -window.addEventListener("load", httpsEverywhere.fetchSource.init, false); diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul deleted file mode 100644 index caa0048..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> - -<dialog id="https-everywhere-fetch-xml" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - title="&https-everywhere.prefs.view_xml_source;" - persist="screenX screenY width height" - style="height:80%; resize:both;" - buttons="accept" - height="600" - width="650"> - - - <script type="application/x-javascript" src="fetch-source.js"/> - <box orient="horizontal"> - <label id="filename-label" value="&https-everywhere.source.filename;:"/> - <label id="filename-text"/> - </box> - <box orient="horizontal"> - <label id="path-label" value="URL:"/> - <label id="path-text"/> - </box> - <separator class="thin"/> - <textbox id="source-text" multiline="true" readonly="true" value="&https-everywhere.source.downloading;..."/> - <label id="failure-label" hidden="true" value="&https-everywhere.source.unable_to_download;"/> -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul deleted file mode 100644 index 3e48010..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> - -<window id="https-everywhere-meta-prefs" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - title="&https-everywhere.prefs.title;" - persist="screenX screenY width height" - width="600" - height="600"> - <separator class="thin" /> - <tabbox flex="1"> - <tabs> - <tab label="HTTPS Everywhere" /> - <tab label="SSL Observatory" /> - </tabs> - <tabpanels flex="1"> - <tabpanel flex="1" orient="vertical"> - <browser src="chrome://https-everywhere/content/preferences.xul" flex="1"/> - </tabpanel> - <tabpanel flex="1" orient="vertical"> - <browser src="chrome://https-everywhere/content/observatory-preferences.xul" flex="1"/> - </tabpanel> - </tabpanels> - </tabbox> - -</window> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul deleted file mode 100644 index 60da68f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> -<window id="ssl-observatory-dialog" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - title="&ssl-observatory.popup.title;" - width="500" - height="440" - align="center" - onload="document.getElementById('ask-me-later').focus()" - > - <script type="application/x-javascript" src="observatory-xul.js" /> - <image src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> - <label style="padding:25px;">&ssl-observatory.popup.text;</label> - - <commandgroup> - <command id="enable" oncommand="enable_observatory() ; popup_done()" /> - <command id="nope" oncommand="disable_observatory() ; popup_done()" /> - <command id="later" oncommand="window.close()" /> - <command id="more-info" - oncommand='popup_done() ; - window.open("chrome://https-everywhere/content/observatory-preferences.xul","obsprefs", - "chrome, centerscreen")'/> - </commandgroup> - - <vbox flex="1"> - <spacer flex="5" /> - <separator class="thin"/> - <hbox> - <spacer flex="2" /> - <button label="&ssl-observatory.popup.yes;" tabindex="2" accesskey="y" - command='enable'/> - <spacer flex="1" /> - <button label="&ssl-observatory.popup.no;" tabindex="3" accesskey="n" - command='nope'/> - <spacer flex="2" /> - </hbox> - <separator class="thin"/> - <spacer flex="10" /> - <hbox> - <spacer flex="2" /> - <button label="&ssl-observatory.popup.details;" tabindex="4" accesskey="D" - command='more-info'/> - <spacer flex="1" /> - <button id="ask-me-later" label="&ssl-observatory.popup.later;" - tabindex="1" accesskey="A" command='later'/> - <spacer flex="2" /> - </hbox> - <separator class="thin"/> - <spacer flex="1" /> - </vbox> - - <!-- - <hbox style="padding-top:10px;"> - <label class="text-link" href="https://www.eff.org/" tabindex="3" value="&ssl-observatory.popup.details;" /> - <spacer flex="1" /> - <button label="&ssl-observatory.popup.later;" id="ask-me-later" tabindex="0" style="font-size:0.8em;" accesskey="l" - oncommand="doCancel()"/>- - </hbox>--> -</window> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul deleted file mode 100644 index 96102d0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> - -<dialog id="https-everywhere-prefs" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - buttons="accept" - buttonlabelaccept="&ssl-observatory.prefs.done;" - title="&ssl-observatory.prefs.title;" - width="800" - height="768" - persist="screenX screenY width height" - onload="observatory_prefs_init(document)" - ondialogaccept="observatory_prefs_accept()"> - <script type="application/x-javascript" src="observatory-xul.js" /> - <vbox flex="1" style="overflow:auto"> - <spacer flex="1" /> - <hbox flex="1"> - <spacer flex="1" /> - <image id="obs-title-logo" - src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> - <spacer flex="1" /> - </hbox> - <spacer flex="2" /> - <label>&ssl-observatory.prefs.explanation;</label> - <separator class="thin" /> - <label>&ssl-observatory.prefs.explanation2;</label> - <separator class="thin" /> - <commandset> - <command id="toggle-enabled" oncommand="toggle_enabled()" /> - <command id="use-obs-anon" oncommand="set_obs_anon(true)" /> - <command id="use-obs-nonanon" oncommand="set_obs_anon(false)" /> - <command id="toggle-alt-roots" oncommand="toggle_alt_roots()" /> - <command id="toggle-send-asn" oncommand="toggle_send_asn()" /> - <command id="toggle-priv-dns" oncommand="toggle_priv_dns()" /> - <command id="toggle-self-signed" oncommand="toggle_self_signed()" /> - </commandset> - <checkbox label="&ssl-observatory.prefs.use;" id="use-observatory" - command="toggle-enabled" style="font-size:1.5em;"/> - <separator class="thin"/> - <radiogroup style="margin-left:3em;" id="ssl-obs-how"> - <radio label="&ssl-observatory.prefs.anonymous;" - tooltiptext="&ssl-observatory.prefs.anonymous_tooltip;" - alt_label="&ssl-observatory.prefs.anonymous_unavailable;" - command="use-obs-anon" - class="ssl-obs-conf" id="ssl-obs-anon"/> - <radio label="&ssl-observatory.prefs.nonanon;" - tooltiptext="&ssl-observatory.prefs.nonanon_tooltip;" - command="use-obs-nonanon" - class="ssl-obs-conf" id="ssl-obs-nonanon"/> - </radiogroup> - <separator class="thin"/> - <tooltip id="asn-tip" noautohide="true"> - <label>&ssl-observatory.prefs.asn_tooltip;</label> - </tooltip> - <checkbox label="&ssl-observatory.prefs.asn;" id="send-asn" - tooltip="asn-tip" class="ssl-obs-conf" - command="toggle-send-asn"/> - <spacer flex="2" /> - <hbox> - <spacer flex="1" /> - <button label="&ssl-observatory.prefs.show;" onclick="show_advanced()" - id="show-advanced-button" class="ssl-obs-conf"/> - <button label="&ssl-observatory.prefs.hide;" onclick="hide_advanced()" - id="hide-advanced-button" hidden="true" /> - <spacer flex="1" /> - </hbox> - <spacer flex="1" /> - <vbox flex="2"> - <tooltip id="alt-roots-tip" noautohide="true"> - <label>&ssl-observatory.prefs.alt_roots_tooltip;</label> - </tooltip> - <tooltip id="priv-dns-tip" noautohide="true"> - <label>&ssl-observatory.prefs.priv_dns_tooltip;</label> - </tooltip> - <tooltip id="self-signed-tip" noautohide="true"> - <label>&ssl-observatory.prefs.self_signed_tooltip;</label> - </tooltip> - <vbox id="observatory-advanced-opts" hidden="true"> - - <groupbox hidden="true" tooltip="self-signed-tip"> - <checkbox label="&ssl-observatory.prefs.self_signed;" - class="ssl-obs-conf" id="self-signed" - command="toggle-self-signed"/> - </groupbox> - - <groupbox hidden="true" tooltip="alt-roots-tip" > - <caption hidden="true" label="&ssl-observatory.prefs.adv_priv_opts1;"/> - <checkbox label="&ssl-observatory.prefs.alt_roots;" - command="toggle-alt-roots" class="ssl-obs-conf" - id="alt-roots" /> - </groupbox> - <groupbox hidden="true" tooltip="priv-dns-tip"> - <caption hidden="true" label="&ssl-observatory.prefs.adv_priv_opts2;"/> - <checkbox label="&ssl-observatory.prefs.priv_dns;" - class="ssl-obs-conf" id="priv-dns" - command="toggle-priv-dns"/> - </groupbox> - </vbox> - </vbox> - <spacer flex="5" /> - </vbox> -</dialog> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul deleted file mode 100644 index 1f64e12..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> -<window id="ssl-observatory-dialog" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - title="&ssl-observatory.warning.title;" - width="600" - height="500" - align="center" - onload="warning_populate(window.arguments[0])" - > - <script type="application/x-javascript" src="observatory-xul.js" /> - <image src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> - <vbox flex="1"> - <vbox id="warning-container" flex="1"> - <label style="padding:25px 25px 10px;">&ssl-observatory.warning.text;</label> - <spacer flex="1" /> - </vbox> - - <commandgroup> - <command id="showcert" oncommand="show_certs()" /> - <command id="okay" oncommand='window.close()' - /> - </commandgroup> - - <spacer flex="1" /> - <label style="padding:5px 25px 0px;">&ssl-observatory.warning.defense;</label> - <separator class="thin"/> - <hbox> - <spacer flex="2" /> - <button label="&ssl-observatory.warning.showcert;" accesskey="S" - id="show-certificate" command='showcert'/> - <spacer flex="1" /> - <button label="&ssl-observatory.warning.okay;" accesskey="I" - command='okay'/> - <spacer flex="2" /> - </hbox> - <separator class="thin" /> - </vbox> - - <!-- - <hbox style="padding-top:10px;"> - <label class="text-link" href="https://www.eff.org/" tabindex="3" value="&ssl-observatory.popup.details;" /> - <spacer flex="1" /> - <button label="&ssl-observatory.popup.later;" id="ask-me-later" tabindex="0" style="font-size:0.8em;" accesskey="l" - oncommand="doCancel()"/>- - </hbox>--> -</window> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js deleted file mode 100644 index df5e623..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js +++ /dev/null @@ -1,194 +0,0 @@ -const CC = Components.classes; -const CI = Components.interfaces; -VERB=1; -DBUG=2; -INFO=3; -NOTE=4; -WARN=5; - -var ssl_observatory = CC["@eff.org/ssl-observatory;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; -var obsprefs = ssl_observatory.prefs; - -const pref_prefix = "extensions.ssl_observatory."; - -function observatory_prefs_init(doc) { - // Is the Observatory on? - var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled"); - document.getElementById("use-observatory").checked = enabled; - set_observatory_configurability(enabled); - // Other settings - document.getElementById("alt-roots").checked = - obsprefs.getBoolPref("extensions.https_everywhere._observatory.alt_roots"); - document.getElementById("priv-dns").checked = - obsprefs.getBoolPref("extensions.https_everywhere._observatory.priv_dns"); - document.getElementById("self-signed").checked = - obsprefs.getBoolPref("extensions.https_everywhere._observatory.self_signed"); - document.getElementById("send-asn").checked = - obsprefs.getBoolPref("extensions.https_everywhere._observatory.send_asn"); - - // More complicated: is it anonymised by Tor? - var obs_how = doc.getElementById("ssl-obs-how"); - var anon_radio = document.getElementById("ssl-obs-anon"); - var nonanon_radio = document.getElementById("ssl-obs-nonanon"); - var anon = !obsprefs.getBoolPref( - "extensions.https_everywhere._observatory.use_custom_proxy"); - - // first set the radios to match the current settings variables - obs_how.selectedItem = (anon) ? anon_radio : nonanon_radio; - - // But if the user hasn't turned the observatory on, - // the default should be the maximally sensible one - var torbutton_avail = ssl_observatory.proxy_test_successful; - if (!enabled) { - set_obs_anon(torbutton_avail); - obs_how.selectedItem = (torbutton_avail) ? anon_radio : nonanon_radio; - } - //scale_title_logo(); -} - -// The user has responded to the popup in a final way; don't show it to them -// again -function popup_done() { - obsprefs.setBoolPref("extensions.https_everywhere._observatory.popup_shown", true); - obsprefs.setBoolPref("extensions.https_everywhere._observatory.clean_config", true); - window.close(); -} - - -function scale_title_logo() { - // The image is naturally 500x207, but if it's shrunk we don't want it - // distorted - var img = document.getElementById("obs-title-logo"); - alert("ch is " + img.height); - if (img.height != "207") - img.width = (500.0/207.0) * img.height; -} - -// grey/ungrey UI elements that control observatory operation -function set_observatory_configurability(enabled) { - // the relevant widgets are tagged with class="ssl-obs-conf" - var ui_elements = document.querySelectorAll(".ssl-obs-conf"); - for (var i =0; i < ui_elements.length; i++) - ui_elements[i].disabled = !enabled; - // the "use tor" option can't be ungreyed unless tor is available - if (ssl_observatory.proxy_test_successful == false) { - var tor_opt = document.getElementById("ssl-obs-anon") - tor_opt.disabled = true; - tor_opt.label = tor_opt.getAttribute("alt_label"); - } - if (!enabled) - hide_advanced(); -} - -// show/hide advanced options in the preferences dialog -function show_advanced() { - var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled"); - if (enabled) { - var adv_opts_box = document.getElementById("observatory-advanced-opts"); - recursive_set(adv_opts_box, "hidden", "false"); - document.getElementById("show-advanced-button").hidden = true; - document.getElementById("hide-advanced-button").hidden = false; - } - //scale_title_logo(); -} -function hide_advanced() { - var adv_opts_box = document.getElementById("observatory-advanced-opts"); - recursive_set(adv_opts_box, "hidden", "true"); - document.getElementById("show-advanced-button").hidden = false; - document.getElementById("hide-advanced-button").hidden = true; -} - -function recursive_set(node, attrib, value) { - node.setAttribute(attrib, value); - for (var i=0; i < node.childNodes.length; i++) - recursive_set(node.childNodes[i], attrib, value) -} - - -function set_obs_anon(val) { - obsprefs.setBoolPref( "extensions.https_everywhere._observatory.use_custom_proxy", !val); -} - -// called from the popup only -function enable_observatory() { - obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", true); - var torbutton_avail = ssl_observatory.proxy_test_successful; - set_obs_anon(torbutton_avail); -} - -function disable_observatory() { - // default but be sure... - obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", false); -} - -// called from within the prefs window, we have more work to do: -function toggle_enabled() { - var use_obs = document.getElementById("use-observatory").checked; - obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", use_obs); - set_observatory_configurability(use_obs); -} - -function toggle_send_asn() { - var send_asn = document.getElementById("send-asn").checked; - obsprefs.setBoolPref("extensions.https_everywhere._observatory.send_asn", send_asn); - if (send_asn) ssl_observatory.setupASNWatcher() - else ssl_observatory.stopASNWatcher(); -} - -function toggle_alt_roots() { - var alt_roots = document.getElementById("alt-roots").checked; - obsprefs.setBoolPref("extensions.https_everywhere._observatory.alt_roots", alt_roots); -} - -function toggle_priv_dns() { - var priv_dns = document.getElementById("priv-dns").checked; - obsprefs.setBoolPref("extensions.https_everywhere._observatory.priv_dns", priv_dns); -} - -function toggle_self_signed() { - var self_signed = document.getElementById("self-signed").checked; - obsprefs.setBoolPref("extensions.https_everywhere._observatory.self_signed", self_signed); -} - -function observatory_prefs_accept() { - // This is *horrid*, but - // https://developer.mozilla.org/en/working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window - var outer = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - - if (outer) outer.close() - else alert("no outer space"); - - return true; // https://developer.mozilla.org/en/XUL/dialog#a-ondialogaccept - // also close things if there is no out meta prefs window -} - -function warning_populate(warningObj) { - // Fill in the SSL Observatory Warning labels... - var container = document.getElementById("warning-container"); - for (var hash in warningObj) { - var label=document.createElement("label"); - label.setAttribute("style","padding:5px 25px 5px;"); - label.textContent = warningObj[hash].long_desc; - container.appendChild(label); - //var spacer=document.createElement("spacer"); - //separator.setAttribute("flex","1"); - //container.appendChild(spacer); - } -} - -function show_certs() { - var parent_win = window.arguments[1]; - var cert = window.arguments[2]; - if (!parent_win) - alert("no parent window trying to show certs"); - CC["@mozilla.org/nsCertificateDialogs;1"] - .getService(CI.nsICertificateDialogs) - .viewCert(parent_win, cert); -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.css b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.css deleted file mode 100644 index 6b35c00..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.css +++ /dev/null @@ -1,11 +0,0 @@ -treechildren::-moz-tree-checkbox { /* css for unchecked cells */ - list-style-image: url("chrome://https-everywhere/skin/cross.png"); -} - -treechildren::-moz-tree-checkbox(checked) { /* css for checked cells */ - list-style-image: url("chrome://https-everywhere/skin/tick.png"); -} - -treechildren::-moz-tree-checkbox(undefined) { /* css for empty cells */ - list-style-image: url(""); -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.js deleted file mode 100644 index 557b335..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.js +++ /dev/null @@ -1,269 +0,0 @@ -const CC = Components.classes; -const CI = Components.interfaces; -VERB=1; -DBUG=2; -INFO=3; -NOTE=4; -WARN=5; - -https_everywhere = CC["@eff.org/https-everywhere;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; - -rulesets = []; - -const id_prefix = "he_enable"; -const pref_prefix = "extensions.https_everywhere."; -const GITID = https_everywhere.https_rules.GITCommitID; - -// Disable all rules. -function disable_all() { - for (var i in rulesets) { - rulesets[i].disable(); - } - - treeView.treebox.invalidate(); -} - -// Reset all rules to their default state. -function reset_defaults() { - https_everywhere.https_rules.resetRulesetsToDefaults() - treeView.treebox.invalidate(); -} - -function resetSelected() { - var start = {}; - var end = {}; - var st = document.getElementById('sites_tree'); - var sel = st.view.selection; - var numRanges = sel.getRangeCount(); - - for (var t = 0; t < numRanges; t++){ - sel.getRangeAt(t, start, end); - for (var v = start.value; v <= end.value; v++){ - var rs = treeView.rules[v]; - rs.clear(); - } - } -} - -function resetSelectedMenu() { - var start = {}; - var end = {}; - var st = document.getElementById('sites_tree'); - var sel = st.view.selection; - var numRanges = sel.getRangeCount(); - var menuitem = document.getElementById("revert_menuitem"); - - for (var t = 0; t < numRanges; t++){ - sel.getRangeAt(t, start, end); - for (var v = start.value; v <= end.value; v++){ - var rs = treeView.rules[v]; - if (rs.active !== rs.on_by_default) { - menuitem.disabled = false; - return; - } - } - } - menuitem.disabled = true; -} - -function toggleSelected() { - var start = {}; - var end = {}; - var st = document.getElementById('sites_tree'); - var sel = st.view.selection; - var numRanges = sel.getRangeCount(); - var menuitem = document.getElementById("revert_menuitem"); - - for (var t = 0; t < numRanges; t++){ - sel.getRangeAt(t, start, end); - for (var v = start.value; v <= end.value; v++){ - var rs = treeView.rules[v]; - rs.toggle(); - treeView.treebox.invalidateRow(v); - } - } -} - - -function viewXMLSource() { - var start = {}; - var end = {}; - var st = document.getElementById('sites_tree'); - var sel = st.view.selection; - var numRanges = sel.getRangeCount(); - var menuitem = document.getElementById("revert_menuitem"); - - for (var t = 0; t < numRanges; t++){ - sel.getRangeAt(t, start, end); - for (var v = start.value; v <= end.value; v++){ - var rs = treeView.rules[v]; - - //This *should* not violate TorButton's State Control, but someone should double check - //this code just in case - var aWin = CC['@mozilla.org/appshell/window-mediator;1'] - .getService(CI.nsIWindowMediator) - .getMostRecentWindow('navigator:browser'); - aWin.openDialog("chrome://https-everywhere/content/fetch-source.xul", - rs.xmlName, "chrome,centerscreen", - {xmlName: rs.xmlName, GITCommitID: GITID} ); - } - } -} - -function getValue(row, col) { - switch (col.id) { - case "site_col": - return row.name; - case "note_col": - return row.notes; - case "enabled_col": - return https_everywhere.https_rules.rulesetsByName[row.name].active; - /*var ruleActive = false; - try { - if(https_everywhere.rule_toggle_prefs.getBoolPref(row.name)) - ruleActive = true; - } catch(e) { - ruleActive = https_everywhere.https_rules.rulesetsByName[row.name].active; - } - return ruleActive;*/ - default: - return; - } -} - -function compareRules(a, b, col) { - var aval = getValue(a, col).toLowerCase(); - var bval = getValue(b, col).toLowerCase(); - var ret = 0; - if (aval < bval) { - ret = -1; - } else if (aval > bval) { - ret = 1; - } else { - ret = 0; - } - return ret; -} - -function https_prefs_init(doc) { - var st = document.getElementById('sites_tree'); - https_everywhere.https_rules.loadAllRulesets(); - rulesets = Array.slice(https_everywhere.https_rules.rulesets); - - // GLOBAL VARIABLE! - treeView = { - rules: rulesets, - rowCount: rulesets.length, - getCellValue: function(row, col) { // site names - if (!this.rules[row]) return; - return getValue(this.rules[row], col); - }, - getCellText: function(row, col) { // activation indicator - return this.getCellValue(row, col); - }, - setCellValue: function(row, col, val) { // toggle a rule's activation - var rule = this.rules[row]; - - if (val == "true") { - rule.enable(); - } else { - rule.disable(); - } - - this.treebox.invalidateRow(row); - }, - isEditable: function(row, col) { - return (col.id == "enabled_col"); - }, - setTree: function(treebox) { - this.treebox = treebox; - }, - isContainer: function(row) { return false; }, - isSeparator: function(row) { return false; }, - isSorted: function() { return false; }, - getRowProperties: function(row, props) {}, - getColumnProperties: function(colid, col, props) {}, - getCellProperties: function(row, col, props) { - if ( (col.id == "enabled_col") && !(this.rules[row]) ) { - var atomS = CC["@mozilla.org/atom-service;1"]; - atomS = atomS.getService(CI.nsIAtomService); - // Starting with 22.0a1 there is no |props| available anymore. See: - // https://bugzilla.mozilla.org/show_bug.cgi?id=407956. Looking at the - // patch the following seems to work, though. - if (!props) { - return "undefined"; - } - props.AppendElement( atomS.getAtom("undefined") ); - } - }, - getLevel: function(row) { return 0; }, - getImageSrc: function(row, col) { return null; }, - search: function(query) { - var new_rules = []; - query = query.value.toLowerCase().replace(/^\s+|\s+$/g, ""); - - for (var i in rulesets) { - var rule_name = rulesets[i].name.toLowerCase(); - if ( rule_name.indexOf(query) != -1 ) { - new_rules.push(rulesets[i]); - } - } - - this.rules = new_rules; - this.rowCount = new_rules.length; - this.treebox.invalidate(); - this.treebox.scrollToRow(rulesets[0]); - }, - cycleHeader: function (col) { - var columnName; - var order = (col.element.getAttribute("sortDirection") === "ascending" ? -1 : 1); - - var compare = function (a, b) { - return compareRules(a, b, col) * order; - }; - rulesets.sort(compare); - this.rules.sort(compare); - - var cols = st.getElementsByTagName("treecol"); - for (var i = 0; i < cols.length; i++) { - cols[i].removeAttribute("sortDirection"); - } - col.element.setAttribute("sortDirection", order === 1 ? "ascending" : "descending"); - this.treebox.invalidate(); - } - }; - - st.view = treeView; -} - -function window_opener(uri) { - // we don't use window.open, because we need to work around TorButton's state control - if(typeof gBrowser == "undefined"){ - var window = CC["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator); - var browserWindow = window.getMostRecentWindow("navigator:browser").getBrowser(); - var newTab = browserWindow.addTab(uri, null, null); - browserWindow.selectedTab = newTab; - - } - else - gBrowser.selectedTab = gBrowser.addTab(uri); -} - -function https_prefs_accept() { - // This is *horrid*, but - // https://developer.mozilla.org/en/working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window - var outer = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - - if (outer) outer.close(); - else alert("no outer space"); - - return true; // https://developer.mozilla.org/en/XUL/dialog#a-ondialogaccept - // also close things if there is no out meta prefs window -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.xul deleted file mode 100644 index ebde85b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/preferences.xul +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> - -<dialog id="https-everywhere-prefs" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - buttons="accept,extra1,extra2" - buttonlabelextra1="&https-everywhere.prefs.disable_all;" - ondialogextra1="disable_all();" - buttonlabelextra2="&https-everywhere.prefs.reset_defaults;" - ondialogextra2="reset_defaults();" - title="&https-everywhere.prefs.title;" - persist="screenX screenY width height" - style="height:80%; resize:both;" - height="600" - width="650" - onload="https_prefs_init(document)" - ondialogaccept="https_prefs_accept()"> - - <script type="application/x-javascript" src="preferences.js"/> - - <popupset> - <menupopup id="tree-contextmenu" onpopupshowing="resetSelectedMenu()"> - <menuitem label="&https-everywhere.prefs.reset_default;" oncommand="resetSelected();" id="revert_menuitem"/> - <menuitem label="&https-everywhere.prefs.toggle;" oncommand="toggleSelected();"/> - <menuitem label="&https-everywhere.prefs.view_xml_source;" oncommand="viewXMLSource();"/> - </menupopup> - </popupset> - - <groupbox flex="1"> - <caption label="&https-everywhere.prefs.list_caption;" - align="center"/> - <vbox> - &https-everywhere.prefs.search;: <textbox id="tree_search" oninput="treeView.search(this);" /> - </vbox> - <tree id="sites_tree" editable="true" flex="1" context="tree-contextmenu"> - <treecols> - <treecol id="enabled_col" type="checkbox" label="&https-everywhere.prefs.enabled;" - editable="true" class="sortDirectionIndicator" persist="sortDirection width"/> - <splitter class="tree-splitter"/> - <treecol id="site_col" label="&https-everywhere.prefs.site;" flex="1" editable="false" class="sortDirectionIndicator" persist="sortDirection width"/> - <splitter class="tree-splitter"/> - <treecol id="note_col" label="&https-everywhere.prefs.notes;" flex="1" editable="false" class="sortDirectionIndicator" persist="sortDirection width"/> - </treecols> - <treechildren/> - </tree> - </groupbox> - <separator class="thin"/> - <vbox> - &https-everywhere.prefs.ruleset_howto; - <separator class="thin"/> - <label id="ruleset link" - value="&https-everywhere.prefs.here_link;" - style="color: blue; cursor:hand; text-decoration:underline;" - onmouseover="event.target.style.cursor='pointer'" - onmouseout="event.target.style.cursor='default'" - onclick="window_opener('https://eff.org/https-everywhere/rulesets')"/>. - </vbox> -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/rules/00README b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/rules/00README deleted file mode 100644 index fcd8a77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/rules/00README +++ /dev/null @@ -1,17 +0,0 @@ -<!-- -This directory contains web site rewriting rules for the -HTTPS Everywhere software, available from -https://www.eff.org/https-everywhere - -These rules were contributed to the project by users and aim to -enable routine secure access to as many different web sites as -possible. They are automatically installed together with the -HTTPS Everywhere software. The presence of these rules does not -mean that an HTTPS Everywhere user accessed, or intended to -access, any particular web site. - -For information about how to create additional HTTPS Everywhere -rewriting rules to add support for new sites, please see - -https://www.eff.org/https-everywhere/rulesets ---> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css deleted file mode 100644 index 30dad18..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css +++ /dev/null @@ -1,14 +0,0 @@ -#ruleset-tests-status { - padding: 20px; -} -#wrapper { - text-align: center; -} -#progess-bar { - width: 300px; - height: 20px; -} -#log { - width: 400px; - height: 300px; -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js deleted file mode 100644 index 0bee33e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js +++ /dev/null @@ -1,31 +0,0 @@ -var HTTPSEverywhere = null; - -function updateStatusBar(current_test, total_tests) { - var labelText = "Test "+current_test+" of "+total_tests; - document.getElementById("progress-bar-label").value = labelText; - - var percent = current_test / total_tests; - document.getElementById("progress-bar").value = percent; -} - -function updateLog(msg) { - document.getElementById("log").value += msg+'\n'; -} - -function cancel() { - updateLog("Canceling early ..."); - HTTPSEverywhere.httpseRulesetTests.cancel = true; -} - -function start() { - HTTPSEverywhere = Components.classes["@eff.org/https-everywhere;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; - - HTTPSEverywhere.httpseRulesetTests.updateStatusBar = updateStatusBar; - HTTPSEverywhere.httpseRulesetTests.updateLog = updateLog; - HTTPSEverywhere.httpseRulesetTests.cancel = false; - - updateLog("Starting ruleset tests ..."); - HTTPSEverywhere.httpseRulesetTests.testRunner(); -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul deleted file mode 100644 index 0efcd5d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="ruleset-tests-status.css" type="text/css"?> -<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> -<window id="ruleset-tests-status" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - title="&https-everywhere.ruleset-tests.status_title;" - > - - <script type="application/x-javascript" src="ruleset-tests-status.js" /> - - <commandgroup> - <command id="cancel" oncommand="cancel();" /> - <command id="start" oncommand="start();" /> - </commandgroup> - - <html:div id="wrapper"> - <vbox flex="1" style="width:100%"> - <label id="progress-bar-label" value="Click Start to start the tests"></label> - - <spacer flex="1"/> - - <progressmeter id="progress-bar" mode="determined" value="0" /> - - <spacer flex="1"/> - - <textbox id="log" multiline="true" readonly="true" value="" /> - - <spacer flex="1"/> - - <button - id="cancel-button" - label="&https-everywhere.ruleset-tests.status_cancel_button;" - command="cancel" /> - - <button - id="start-button" - label="&https-everywhere.ruleset-tests.status_start_button;" - command="start" /> - </vbox> - </html:div> -</window> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js deleted file mode 100644 index 1aa94d8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js +++ /dev/null @@ -1,155 +0,0 @@ -// load the HTTPS Everywhere component -var HTTPSEverywhere = null; -try { - HTTPSEverywhere = Components.classes["@eff.org/https-everywhere;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; -} catch(e) { - // HTTPS Everywhere doesn't seem to be installed -} - -// attach testRunner to the HTTPS Everywhere component so that status.js can run it -if(HTTPSEverywhere) { - HTTPSEverywhere.httpseRulesetTests = { - testRunner: testRunner - }; -} - - -function openStatus() { - // make sure mixed content blocking preferences are correct - Services.prefs.setBoolPref("security.mixed_content.block_display_content", false); - Services.prefs.setBoolPref("security.mixed_content.block_active_content", true); - - // open the status tab - var statusTab = gBrowser.addTab('chrome://https-everywhere/content/ruleset-tests-status.xul'); - gBrowser.selectedTab = statusTab; -} - -function testRunner() { - Components.utils.import("resource://gre/modules/PopupNotifications.jsm"); - - const numTabs = 6; - var finished = false; - var output = []; - var urls = []; - var num = 0; - - for(var target in HTTPSEverywhere.https_rules.targets) { - if(!target.indexOf("*") != -1) { - urls.push({ - url: 'https://'+target, - target: target, - ruleset_names: HTTPSEverywhere.https_rules.targets[target] - }); - } - } - - function test() { - var i; - - HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); - - // start loading all the tabs - window.focus - for(i=0; i<numTabs; i++) { - newTab(num); - } - } - - function newTab(number) { - num +=1; - // start a test in this tab - if(urls.length) { - - // open a new tab - var tab = gBrowser.addTab(urls[number].url); - - // wait for the page to load - var intervalId = window.setTimeout(function(){ - - // detect mixed content blocker - if(PopupNotifications.getNotification("mixed-content-blocked", gBrowser.getBrowserForTab(tab))) { - // build output to log - ruleset_xmls = ''; - for(let i=0; i<urls[number].ruleset_names.length; i++) { - ruleset_xmls += urls[number].ruleset_names[i].xmlName + ', '; - } - if(ruleset_xmls != '') - ruleset_xmls = ruleset_xmls.substring(ruleset_xmls.length-2, 2); - var output = 'MCB triggered: '+urls[number].url+' ('+ruleset_xmls+')'; - - HTTPSEverywhere.httpseRulesetTests.updateLog(output); - } - - // close this tab, and open another - closeTab(tab); - - }, 10000); - - } else { - - //to run if urls is empty - if (!finished) { - finished = true; - window.setTimeout(function(){ - gBrowser.removeCurrentTab(); - }, 10000); - } - } - } - - //closes tab - function closeTab(tab) { - HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); - - gBrowser.selectedTab = tab; - gBrowser.removeCurrentTab(); - - // open a new tab, if the tests haven't been canceled - if(!HTTPSEverywhere.httpseRulesetTests.cancel) { - newTab(num); - } - } - - //manages write out of output mochilog.txt, which contains sites that trigger mcb - function writeout(weburl) { - - //initialize file - var file = Components.classes["@mozilla.org/file/directory_service;1"]. - getService(Components.interfaces.nsIProperties). - get("Home", Components.interfaces.nsIFile); - writeoutfile = "mochilog.txt"; - file.append(writeoutfile); - - //create file if it does not already exist - if(!file.exists()) { - file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420); - } - - //initialize output stream - var stream = Components.classes["@mozilla.org/network/file-output-stream;1"] - .createInstance(Components.interfaces.nsIFileOutputStream); - - //permissions are set to append (will not delete existing contents) - stream.init(file, 0x02 | 0x08 | 0x10, 0666, 0); - - var content = weburl + "\n"; - - //Deal with ascii text and write out - var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. - createInstance(Components.interfaces.nsIConverterOutputStream); - converter.init(stream, "UTF-8", 0, 0); - converter.writeString(content); - converter.close(); - - //alternative write out if ascii is not a concern - //stream.write(content,content.length); - //stream.close(); - - } - test(); -} - - - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js deleted file mode 100644 index 0e90a12..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js +++ /dev/null @@ -1,369 +0,0 @@ -window.addEventListener("load", https_everywhere_load, true); -window.addEventListener("load", function load(event) { - // need to wrap migratePreferences in another callback so that notification - // always displays on browser restart - window.removeEventListener("load", load, false); - gBrowser.addEventListener("DOMContentLoaded", migratePreferences, true); -}, false); - -const CI = Components.interfaces; -const CC = Components.classes; - -// LOG LEVELS --- -VERB=1; -DBUG=2; -INFO=3; -NOTE=4; -WARN=5; - -HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; - -// avoid polluting global namespace -// see: https://developer.mozilla.org/en-US/docs/Security_best_practices_in_extensions#Code_wrapping -if (!httpsEverywhere) { var httpsEverywhere = {}; } - -/** - * JS Object that acts as a namespace for the toolbar. - * - * Used to display toolbar hints to new users and change toolbar UI for cases - * such as when the toolbar is disabled. - */ -httpsEverywhere.toolbarButton = { - - /** - * Name of preference for determining whether to show ruleset counter. - */ - COUNTER_PREF: "extensions.https_everywhere.show_counter", - - /** - * Used to determine if a hint has been previously shown. - * TODO: Probably extraneous, look into removing - */ - hintShown: false, - - /** - * Initialize the toolbar button used to hint new users and update UI on - * certain events. - */ - init: function() { - HTTPSEverywhere.log(DBUG, 'Removing listener for toolbarButton init.'); - window.removeEventListener('load', httpsEverywhere.toolbarButton.init, false); - - var tb = httpsEverywhere.toolbarButton; - - // make sure icon is proper color during init - tb.changeIcon(); - - // make sure the checkbox for showing counter is properly set - var showCounter = tb.shouldShowCounter(); - var counterItem = document.getElementById('https-everywhere-counter-item'); - counterItem.setAttribute('checked', showCounter ? 'true' : 'false'); - - // show ruleset counter when a tab is changed - tb.updateRulesetsApplied(); - gBrowser.tabContainer.addEventListener( - 'TabSelect', - tb.updateRulesetsApplied, - false - ); - - // hook event for when page loads - var onPageLoad = function() { - // Timeout is used for a number of reasons. - // 1) For Performance since we want to defer computation. - // 2) Sometimes the page is loaded before all applied rulesets are - // calculated; in such a case, a half-second wait works. - setTimeout(tb.updateRulesetsApplied, 500); - }; - - var appcontent = document.getElementById('appcontent'); - if (appcontent) { - appcontent.addEventListener('load', onPageLoad, true); - } - - // decide whether to show toolbar hint - let hintPref = "extensions.https_everywhere.toolbar_hint_shown"; - if (!Services.prefs.getPrefType(hintPref) - || !Services.prefs.getBoolPref(hintPref)) { - // only run once - Services.prefs.setBoolPref(hintPref, true); - gBrowser.addEventListener("DOMContentLoaded", tb.handleShowHint, true); - } - }, - - /** - * Shows toolbar hint if previously not shown. - */ - handleShowHint: function() { - var tb = httpsEverywhere.toolbarButton; - if (!tb.hintShown){ - tb.hintShown = true; - const faqURL = "https://www.eff.org/https-everywhere/faq"; - var nBox = gBrowser.getNotificationBox(); - var strings = document.getElementById('HttpsEverywhereStrings'); - var msg = strings.getString('https-everywhere.toolbar.hint'); - var hint = nBox.appendNotification( - msg, - 'https-everywhere', - 'chrome://https-everywhere/skin/https-everywhere-24.png', - nBox.PRIORITY_WARNING_MEDIUM, - [], - function(action) { - // see https://developer.mozilla.org/en-US/docs/XUL/Method/appendNotification#Notification_box_events - gBrowser.selectedTab = gBrowser.addTab(faqURL); - } - ); - } - gBrowser.removeEventListener("DOMContentLoaded", tb.handleShowHint, true); - }, - - /** - * Changes HTTPS Everywhere toolbar icon based on whether HTTPS Everywhere - * is enabled or disabled. - */ - changeIcon: function() { - var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); - - var toolbarbutton = document.getElementById('https-everywhere-button'); - if (enabled) { - toolbarbutton.setAttribute('status', 'enabled'); - } else { - toolbarbutton.setAttribute('status', 'disabled'); - } - }, - - /** - * Update the rulesets applied counter for the current tab. - */ - updateRulesetsApplied: function() { - var toolbarbutton = document.getElementById('https-everywhere-button'); - var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); - var showCounter = httpsEverywhere.toolbarButton.shouldShowCounter(); - if (!enabled || !showCounter) { - toolbarbutton.setAttribute('rulesetsApplied', 0); - return; - } - - var domWin = content.document.defaultView.top; - var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); - if (!alist) { - return; - } - // Make sure the list is up to date - alist.populate_list(); - - var counter = 0; - for (var x in alist.active) { - if (!(x in alist.breaking)) { - ++counter; - } - } - for (var x in alist.moot) { - if (!(x in alist.active)) { - ++counter; - } - } - - toolbarbutton.setAttribute('rulesetsApplied', counter); - HTTPSEverywhere.log(INFO, 'Setting icon counter to: ' + counter); - }, - - /** - * Gets whether to show the rulesets applied counter. - * - * @return {boolean} - */ - shouldShowCounter: function() { - var tb = httpsEverywhere.toolbarButton; - var sp = Services.prefs; - - var prefExists = sp.getPrefType(tb.COUNTER_PREF); - - // the default behavior is to show the rulesets applied counter. - // if no preference exists (default) or its enabled, show the counter - return !prefExists || sp.getBoolPref(tb.COUNTER_PREF); - }, - - /** - * Toggles the user's preference for displaying the rulesets applied counter - * and updates the UI. - */ - toggleShowCounter: function() { - var tb = httpsEverywhere.toolbarButton; - var sp = Services.prefs; - - var showCounter = tb.shouldShowCounter(); - sp.setBoolPref(tb.COUNTER_PREF, !showCounter); - - tb.updateRulesetsApplied(); - } - -}; - -function https_everywhere_load() { - window.removeEventListener('load', https_everywhere_load, true); - // on first run, put the context menu in the addons bar - try { - var first_run; - try { - first_run = Services.prefs.getBoolPref("extensions.https_everywhere.firstrun_context_menu"); - } catch(e) { - Services.prefs.setBoolPref("extensions.https_everywhere.firstrun_context_menu", true); - first_run = true; - } - if(first_run) { - Services.prefs.setBoolPref("extensions.https_everywhere.firstrun_context_menu", false); - var navbar = document.getElementById("nav-bar"); - if(navbar.currentSet.indexOf("https-everywhere-button") == -1) { - var set = navbar.currentSet+',https-everywhere-button'; - navbar.setAttribute('currentset', set); - navbar.currentSet = set; - document.persist('nav-bar', 'currentset'); - } - } - } catch(e) { } -} - -function stitch_context_menu() { - // the same menu appears both under Tools and via the toolbar button: - var menu = document.getElementById("https-everywhere-menu"); - if (!menu.firstChild) { - var popup = document.getElementById("https-everywhere-context"); - menu.appendChild(popup.cloneNode(true)); - } -} -function stitch_context_menu2() { - // the same menu appears both under Tools and via the toolbar button: - var menu = document.getElementById("https-everywhere-menu2"); - if (!menu.firstChild) { - var popup = document.getElementById("https-everywhere-context"); - menu.appendChild(popup.cloneNode(true)); - } -} - -var rulesetTestsMenuItem = null; - -function show_applicable_list(menupopup) { - var domWin = content.document.defaultView.top; - if (!(domWin instanceof CI.nsIDOMWindow)) { - alert(domWin + " is not an nsIDOMWindow"); - return null; - } - - var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); - var weird=false; - - if (!alist) { - // This case occurs for error pages and similar. We need a dummy alist - // because populate_menu lives in there. Would be good to refactor this - // away. - alist = new HTTPSEverywhere.ApplicableList(HTTPSEverywhere.log, document, domWin); - weird = true; - } - alist.populate_menu(document, menupopup, weird); - - // should we also show the ruleset tests menu item? - if(HTTPSEverywhere.prefs.getBoolPref("show_ruleset_tests")) { - - if(!rulesetTestsMenuItem) { - let strings = document.getElementById('HttpsEverywhereStrings'); - let label = strings.getString('https-everywhere.menu.ruleset-tests'); - - rulesetTestsMenuItem = this.document.createElement('menuitem'); - rulesetTestsMenuItem.setAttribute('command', 'https-everywhere-menuitem-ruleset-tests'); - rulesetTestsMenuItem.setAttribute('label', label); - } - - if(!menupopup.contains(rulesetTestsMenuItem)) - menupopup.appendChild(rulesetTestsMenuItem); - } - -} - -function toggle_rule(rule_id) { - // toggle the rule state - HTTPSEverywhere.https_rules.rulesetsByID[rule_id].toggle(); - var domWin = content.document.defaultView.top; - /*if (domWin instanceof CI.nsIDOMWindow) { - var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); - if (alist) alist.empty(); - }*/ - reload_window(); -} - -function reload_window() { - var domWin = content.document.defaultView.top; - if (!(domWin instanceof CI.nsIDOMWindow)) { - HTTPSEverywhere.log(WARN, domWin + " is not an nsIDOMWindow"); - return null; - } - try { - var webNav = domWin.QueryInterface(CI.nsIInterfaceRequestor) - .getInterface(CI.nsIWebNavigation) - .QueryInterface(CI.nsIDocShell); - } catch(e) { - HTTPSEverywhere.log(WARN,"failed to get webNav"); - return null; - } - // This choice of flags comes from NoScript's quickReload function; not sure - // if it's optimal - webNav.reload(webNav.LOAD_FLAGS_CHARSET_CHANGE); -} - -function toggleEnabledState(){ - HTTPSEverywhere.toggleEnabledState(); - reload_window(); - - // Change icon depending on enabled state - httpsEverywhere.toolbarButton.changeIcon(); -} - -function open_in_tab(url) { - var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - var recentWindow = wm.getMostRecentWindow("navigator:browser"); - recentWindow.delayedOpenTab(url, null, null, null, null); -} - -// hook event for showing hint -HTTPSEverywhere.log(DBUG, 'Adding listener for toolbarButton init.'); -window.addEventListener("load", httpsEverywhere.toolbarButton.init, false); - -function migratePreferences() { - gBrowser.removeEventListener("DOMContentLoaded", migratePreferences, true); - let prefs_version = HTTPSEverywhere.prefs.getIntPref("prefs_version"); - - // first migration loses saved prefs - if(prefs_version == 0) { - try { - // upgrades will have old rules as preferences, such as the EFF rule - let upgrade = false; - let childList = HTTPSEverywhere.prefs.getChildList("", {}); - for(let i=0; i<childList.length; i++) { - if(childList[i] == 'EFF') { - upgrade = true; - break; - } - } - - if(upgrade) { - let nBox = gBrowser.getNotificationBox(); - let strings = document.getElementById('HttpsEverywhereStrings'); - let msg = strings.getString('https-everywhere.migration.notification0'); - nBox.appendNotification( - msg, - 'https-everywhere-migration0', - 'chrome://https-everywhere/skin/https-everywhere-24.png', - nBox.PRIORITY_WARNING_MEDIUM - ); - } - } catch(e) { - HTTPSEverywhere.log(WARN, "Migration from prefs_version 0 error: "+e); - } - - HTTPSEverywhere.prefs.setIntPref("prefs_version", prefs_version+1); - } -} - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul deleted file mode 100644 index c3cbed0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://https-everywhere/skin/https-everywhere.css" type="text/css"?> - -<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> - -<!-- helpful docs at - https://developer.mozilla.org/en/XUL/PopupGuide/PopupEvents --> - -<overlay id="https-everywhere-button-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <script type="application/x-javascript" src="chrome://https-everywhere/content/toolbar_button.js"/> - <script type="application/x-javascript" src="chrome://https-everywhere/content/ruleset-tests.js"/> - - <stringbundleset id="stringbundleset"> - <stringbundle id="HttpsEverywhereStrings" - src="chrome://https-everywhere/locale/https-everywhere.properties" /> - </stringbundleset> - - <!-- this works in Firefox, we need a Seamonkey version too... --> - <menupopup id="menu_ToolsPopup" onpopupshowing="stitch_context_menu()"> - <menu id="https-everywhere-menu" label="&https-everywhere.about.ext_name;"> - <!-- "https-everywhere-context" below gets .cloneNode()ed in here --> - </menu> - </menupopup> - - <menupopup id="toolsPopup" onpopupshowing="stitch_context_menu2()"> - <menu id="https-everywhere-menu2" label="&https-everywhere.about.ext_name;"> - <!-- "https-everywhere-context" below gets .cloneNode()ed in here --> - </menu> - </menupopup> - - <toolbarpalette id="BrowserToolbarPalette"> - <toolbarbutton - id="https-everywhere-button" - tooltiptext="&https-everywhere.about.ext_name;" - label="HTTPS" - context="https-everywhere-context-menu" - oncontextmenu="this.open = true;" - oncommand="this.open = true;" - buttonstyle="pictures" - type="menu" - rulesetsApplied="0"> - - <menupopup id="https-everywhere-context" onpopupshowing="show_applicable_list(this)"> - <!-- entries will be written here by ApplicableList.populate_menu() --> - <menuseparator /> - <menuitem type="checkbox" id="https-everywhere-counter-item" label="&https-everywhere.menu.showCounter;" - oncommand="httpsEverywhere.toolbarButton.toggleShowCounter()" /> - <menuseparator /> - <menuitem label="&https-everywhere.menu.observatory;" command="https-everywhere-menuitem-observatory" /> - <menuitem label="&https-everywhere.menu.about;" command="https-everywhere-menuitem-about" /> - </menupopup> - </toolbarbutton> - </toolbarpalette> - <commandset> - <command id="https-everywhere-menuitem-globalEnableToggle" - oncommand="toggleEnabledState();" /> - <command id="https-everywhere-menuitem-preferences" - oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/preferences.xul', 'chrome,centerscreen,resizable=yes');" /> - <command id="https-everywhere-menuitem-about" - oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/about.xul');" /> - <command id="https-everywhere-menuitem-observatory" - oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/observatory-preferences.xul', 'chrome,centerscreen,resizable=yes');" /> - <command id="https-everywhere-menuitem-donate-eff" - oncommand="open_in_tab('https://www.eff.org/donate');" /> - <command id="https-everywhere-menuitem-donate-tor" - oncommand="open_in_tab('https://www.torproject.org/donate');" /> - <command id="https-everywhere-menuitem-ruleset-tests" - oncommand="openStatus();" /> - </commandset> -</overlay> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml deleted file mode 100644 index 1981b3a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> -<!-- -Toolbar button needs to be extended to show a counter for the number of -rulesets applied, and this can be done using XBL. - -See: https://developer.mozilla.org/en-US/docs/XBL ---> -<bindings xmlns="http://www.mozilla.org/xbl" - xmlns:xbl="http://www.mozilla.org/xbl" - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - - <binding id="https-everywhere-binding"> - <content> - <!-- ruleset counter (rscounter) and rulesets applied (rsapplied) --> - <xul:stack id="rscounter"> - <xul:label id="rsapplied" xbl:inherits="value=rulesetsApplied" /> - </xul:stack> - - <!-- - Https everywhere toolbar button is already defined; just use its settings. - TODO: Look into any issues with oncommand/oncontext. - --> - <xul:toolbarbutton - class="https-everywhere-button toolbarbutton-1 chromeclass-toolbar-additional" - flex="1" - allowevents="true" - xbl:inherits="type,crop,image,label,accesskey,command,align,dir,pack,orient,wrap"> - - <children includes="menupopup" /> - </xul:toolbarbutton> - </content> - </binding> -</bindings> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd deleted file mode 100644 index 00b898e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "عن HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Ř´Ůر شبŮŘ© الإنترنت! استخدم تلقائيا تقنية HTTPS للأمان Ů…Řą الŮثير من المŮاقع."> -<!ENTITY https-everywhere.about.version "النسخة"> -<!ENTITY https-everywhere.about.created_by "أنشأه"> -<!ENTITY https-everywhere.about.librarians "جامعيْ القŮاعد"> -<!ENTITY https-everywhere.about.thanks "Ř´Ůراً Ů„ŮŮ„ من"> -<!ENTITY https-everywhere.about.contribute "إن أعجبت٠إضاŮŘ© HTTPS EverywhereŘŚ ŮŮر بـ"> -<!ENTITY https-everywhere.about.donate_tor "التبرع لتŮر"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "التبرع للـ EFF"> - -<!ENTITY https-everywhere.menu.about "عن HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "خيارات مرصد SSL"> -<!ENTITY https-everywhere.menu.globalEnable "Ůعّل HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "عطّل HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "خيارات HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Ůعّل الŮŮ„"> -<!ENTITY https-everywhere.prefs.disable_all "عطّل الŮŮ„"> -<!ENTITY https-everywhere.prefs.reset_defaults "استعادة الإعدادات الاŮتراضية"> -<!ENTITY https-everywhere.prefs.search "بŘŘ«"> -<!ENTITY https-everywhere.prefs.site "Ů…Ůقع"> -<!ENTITY https-everywhere.prefs.notes "ملاŘظات"> -<!ENTITY https-everywhere.prefs.list_caption "ŘŁŮŠ من Ů‚Ůاعد إعادة ŘŞŮجيه HTTPS يجب أن تطبق؟"> -<!ENTITY https-everywhere.prefs.enabled "Ů…Ůعّل"> -<!ENTITY https-everywhere.prefs.ruleset_howto "ŮŠŮ…Ůن٠تعلم ŮŮŠŮŮŠŘ© Ůتابة Ů‚Ůاعد خاصة ب٠(لإضاŮŘ© الدعم لمŮاقع أخرى)"> -<!ENTITY https-everywhere.prefs.here_link "هنا"> -<!ENTITY https-everywhere.prefs.toggle "بدّل"> -<!ENTITY https-everywhere.prefs.reset_default "استعادة الإعداد الاŮتراضي"> -<!ENTITY https-everywhere.prefs.view_xml_source "اŮŘص مصدر XML"> - -<!ENTITY https-everywhere.source.downloading "ŮŠŘŮŹŮ…Ů„ Řالياً"> -<!ENTITY https-everywhere.source.filename "اسم الملŮ"> -<!ENTITY https-everywhere.source.unable_to_download "تعذّر تنزيل المصدر."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "عذراً. انت Ůنت تستخدم اصدار مستقر من HTTPS EverywhereŘŚ ŮŮ„Ůن ŘŞŮ… ŘŞŘŘŻŮŠŘ« اصدار٠إلي الاصدار التجريبي عن طريق الخطء."> -<!ENTITY https-everywhere.popup.paragraph2 "هل ترغب ŮŮŠ العŮŘŻŘ© للاصدار المستقر؟"> -<!ENTITY https-everywhere.popup.paragraph3 "Ůنا نŘب ل٠Ůاصلت استخدام الاصدار التجريبي من HTTPS Everywhere لان ذل٠يساعدنا علي جعل البرنامج ŘŁŮضل! قد تجد ŮŮŠ الاصدار التجريبي بعض الأخطاء التي ŮŠŮ…Ůن٠ان تبلغ عنها بمراسلة https-everywhere@eff.org. نآس٠على الإزعاج Ů Ř´Ůراً لأستخدام٠HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "ابقني علي الاصدار التجريبي"> -<!ENTITY https-everywhere.popup.revert "ŘŮ…Ů„ الاصدار المستقر الاخير"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties deleted file mode 100644 index 2618335..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Ůعّل HTTPS Everywhere -https-everywhere.menu.globalDisable = ŘŁŮق٠HTTPS Everywhere -https-everywhere.menu.enableDisable = Ůعل / اŮق٠القŮانين -https-everywhere.menu.noRules = (هذه الصŮŘŘ© لا ŘŞŘŘŞŮŮŠ على Ů‚Ůانين) -https-everywhere.menu.unknownRules = (Ů‚Ůاين هذه الصŮŘŘ© غير معرŮŮŘ©) -https-everywhere.toolbar.hint = HTTPS Everywhere Ů…Ůعل الان. ŮŠŮ…Ůن٠تŮعيله ا٠تعطيله علي Řسب المŮقع الذي تزŮر عن طريق الضغط علي الرمز ŮŮŠ شريطة العناŮين. -https-everywhere.migration.notification0 = من أجل أن تنŮيذ Ř§ŘµŮ„Ř§Ř Ů…Ů‡Ů…ŘŚ هذا التŘŘŻŮŠŘ« يعيد Ů‚Ůانين HTTPS Everywhere إلى Řالتها الإŮتراضية. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd deleted file mode 100644 index 04e3e91..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd +++ /dev/null @@ -1,97 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "التŮاصيل ŮمعلŮمات الخصŮصية"> -<!ENTITY ssl-observatory.popup.later "إسألني لاŘقاً"> -<!ENTITY ssl-observatory.popup.no "لا"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere ŮŠŮ…Ůن له أن ŮŠŮتش٠الهجمات -ضد متصŮŘ٠عبر إرسال الشهادات التي تستقبلها إلى المرصد. -هل تريد تشغيل هذه الخاصية؟"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"هل تريد أن يستخدم HTTPS Everywhere خاصية SSL ObservatoryŘź"> - -<!ENTITY ssl-observatory.popup.yes "نعم"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"ان استخدام تل٠الخاصية آمن إلا إذا Ůنت تستخدم الإنترنت ضمن شبŮŘ© شرŮŘ© ذات إعدادات رقابية:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"آمن، إلا إذا Ůنت تستخدم شبŮŘ© شرŮŘ© داخلية تستخدم أسماء سرية لخŮادمها:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"أرسل ŮŘŞŘقق من الشهادات المŮقعة بŮاسطة سلطة غير معتمدة."> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"من الآمن (ŮالمستŘسن) ŘŞŮعيل هذا الخيار، إلا إذا Ůنت تستخدم شبŮŘ© شرŮŘ© ŘŞŘ·Ůلية أ٠برنامج ŮاسبرسŮŮŠ المضاد للڤيرŮسات الذي يراقب تصŮŘ٠عن طريق TLS برŮŮسي Ů private root Certificate Authority. إذا Ůعلت الخاصية على شبŮŘ© مماثلة، قد ينشر هذا الخيار أدلة على ŘŁŮŠ نطاقات https:// ŘŞŮ…ŘŞ زيارتها عبر ذل٠البرŮŮسي، Ůذل٠بسبب الشهادات الŮريدة التي ŮŠŮ…Ůن أن ينتجها. Ůلذل٠نŘن نترŮه غير Ů…Ůعل ŮŮŠ الإعدادات الاŮتراضية."> - -<!ENTITY ssl-observatory.prefs.anonymous "ŘŞŘقق من الشهادات باستخدام ŘŞŮر لإخŮاء الهŮŮŠŘ©"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"ŘŞŘقق من الشهادات باستخدام ŘŞŮر لإخŮاء الهŮŮŠŘ© (يتطلب ŘŞŮر)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"يتطلب هذا الخيار تثبيت ٠تشغيل ŘŞŮر"> - -<!ENTITY ssl-observatory.prefs.asn -"عندما ترى شهادة جديدة، أخبر المرصد عن هŮŮŠŘ© مزŮŘŻ خدمة الإنترنت الخاص بŮ."> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"هذا سيجلب ٠يرسل "رقم النظام المستقل" الخاص بشبŮŘŞŮ. هذا سيساعدنا على ŘŞŘŘŻŮŠŘŻ Ů…Ůقع الهجمات ضد HTTPSŘŚ ŮŘŞŘŘŻŮŠŘŻ ما إذا Ůان لدينا ملاŘظات من شبŮات ŮŮŠ أماŮن مثل ŘłŮريا Ůإيران ŘŮŠŘ« هذه الهجمات شائعة نسبياً."> - -<!ENTITY ssl-observatory.prefs.done "انتهى"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere ŮŠŮ…Ůن له أن يستخدم مرصد SSL من الـEFF Ůهذا يعني شيئين: (۱) -إرسال نسخ من شهادات HTTPS إلى المرصد لمساعدتنا على Ůش٠هجمات 'رجل-ŮŮŠ-الŮسط' - ŮŘŞŘسين الأمان على الإنترنت، Ů (٢) ŮŠŘłŮ…Ř Ů„Ů†Ř§ بتŘذير٠عن الاتصالات غير الآمنة أ٠الهجمات على متصŮŘŮ."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"على سبيل المثال، عندما ŘŞŮ‚ŮŮ… بزيارة https://www.something.com, Ůإن الشهادة -التي يتلقاها المرصد تشير إلى أن شخصاً ما قام بزيارة www.something.com, ŮŮ„Ůن ليس من قام بالزيارة -أ٠ما هي الصŮŘات التي قامŮا بقراءتها. أشر بالŮأرة ŮŮŮ‚ الخيار للمزيد من التŮاصيل:"> - -<!ENTITY ssl-observatory.prefs.hide "ŘŁŘ®Ů٠الخيارات المتقدمة"> - -<!ENTITY ssl-observatory.prefs.nonanon -"ŘŞŘقق من الشهادات Řتى ل٠لم ŮŠŮن ŘŞŮر متاŘ"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"سنŘاŮŮ„ الŘŮاظ على سرية البيانات، ŮŮ„Ůن هذا الخيار أقل أمناً"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"أرسل ŮŘŞŘقق من شهادات أسماء DNS غير العامة"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"ما لم ŮŠŘŞŮ… ŘŞŘŘŻŮŠŘŻ هذا الخيار، لن يسجل المرصد الشهادات للأسماء التي لا يستطيع Řلها عبر نظام DNS."> - -<!ENTITY ssl-observatory.prefs.show "أظهر الخيارات المتقدمة"> - -<!ENTITY ssl-observatory.prefs.title "ŘŞŮضيلات مرصد SSL"> - -<!ENTITY ssl-observatory.prefs.use "استخدم المرصد؟"> -<!ENTITY ssl-observatory.warning.title "ŘŞŘذير من مرصد SSL الخاص بـEFF"> -<!ENTITY ssl-observatory.warning.showcert "أظهر سلسة الشهادة"> -<!ENTITY ssl-observatory.warning.okay "أنا ŘŁŮهم"> -<!ENTITY ssl-observatory.warning.text "أصدر مرصد SSL من الـEFF ŘŞŘذيراً ŘŮŮ„ شهادة ( أ٠شهادات) HTTPS لهذا المŮقع:"> -<!ENTITY ssl-observatory.warning.defense "إن Ůنت مسجل الدخŮŮ„ ŮŮŠ هذا المŮقع، ننصŘ٠بتغيير Ůلمة السر عندما ŘŞŘصل علي اتصال آمن بالإنترنت."> - -<!ENTITY ssl-observatory.prefs.self_signed -"اعرض Ů ŘŞŘقق من الشهادات المŮقعة ذاتياً"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"هذا Ů…Ůضل ; ŮمشاŮŮ„ التشŮير شائعة بشŮŮ„ خاص ŮŮŠ الأجهزة المدمجة المŮقعة ذاتياً"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd deleted file mode 100644 index 6bf445f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "За HTTPS на вŃякаде"> -<!ENTITY https-everywhere.about.ext_name "HTTPS на вŃякаде"> -<!ENTITY https-everywhere.about.ext_description "Заключи интернетат! Đвтоматично ползваи HTTPS защита на много Ńтраници."> -<!ENTITY https-everywhere.about.version "ВерŃия"> -<!ENTITY https-everywhere.about.created_by "Създаване от"> -<!ENTITY https-everywhere.about.librarians "Правилни Книжарници"> -<!ENTITY https-everywhere.about.thanks "Благодаря на"> -<!ENTITY https-everywhere.about.contribute "Đко хареŃвате HTTPS на вŃякаде, можете да разгледате"> -<!ENTITY https-everywhere.about.donate_tor "Даряване към"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Даряване към ЕФФ"> - -<!ENTITY https-everywhere.menu.about "За HTTPS на вŃякаде"> -<!ENTITY https-everywhere.menu.observatory "SSL ОбŃержатория наŃтроики"> -<!ENTITY https-everywhere.menu.globalEnable "Включете HTTPS на вŃякаде"> -<!ENTITY https-everywhere.menu.globalDisable "Đзключете HTTPS на вŃякаде"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS на вŃякаде наŃтроики"> -<!ENTITY https-everywhere.prefs.enable_all "Включи Đ’Ńички"> -<!ENTITY https-everywhere.prefs.disable_all "Đзключи Đ’Ńички"> -<!ENTITY https-everywhere.prefs.reset_defaults "Đ’ŃŠĐ·Ńтанови Ńтандартните"> -<!ENTITY https-everywhere.prefs.search "ТърŃи"> -<!ENTITY https-everywhere.prefs.site "Страница"> -<!ENTITY https-everywhere.prefs.notes "Бележки"> -<!ENTITY https-everywhere.prefs.list_caption "Кой HTTPS преадреŃираня да деиŃтват?"> -<!ENTITY https-everywhere.prefs.enabled "Включен"> -<!ENTITY https-everywhere.prefs.ruleset_howto "ĐśĐľĐ¶ĐµŃ Đ´Đ° наŃŃ‡ĐµŃ Đ´Đ° пиŃĐµŃ Ń‚Đ˛ĐľĐ¸Ń‚Đµ правила(да добавяте Ńтраници)"> -<!ENTITY https-everywhere.prefs.here_link "Ń‚ŃĐş"> -<!ENTITY https-everywhere.prefs.toggle "Копче"> -<!ENTITY https-everywhere.prefs.reset_default "Đ’ŃŠĐ·Ńтанови Ńтандартните"> -<!ENTITY https-everywhere.prefs.view_xml_source "Виж XML Кода"> - -<!ENTITY https-everywhere.source.downloading "Đзтегляне"> -<!ENTITY https-everywhere.source.filename "Đме на файл"> -<!ENTITY https-everywhere.source.unable_to_download "Невъзможно да Ńвали кода."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties deleted file mode 100644 index ec16615..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Ключи HTTPS на вŃякаде -https-everywhere.menu.globalDisable = Đзключете -https-everywhere.menu.enableDisable = Включи / Đзключи Правила -https-everywhere.menu.noRules = (Няма Правила за Тази Страница) -https-everywhere.menu.unknownRules = (Непознати Правила за Тази Страница) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd deleted file mode 100644 index a0f88fd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd +++ /dev/null @@ -1,93 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Детайли и Đнформачя за Уединение"> -<!ENTITY ssl-observatory.popup.later "Попитай ме по-къŃно"> -<!ENTITY ssl-observatory.popup.no "Не"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere може да заŃече атаки -против твоя браŃĐ·ŃŠŃ€ като праща Ńертификатите, които полŃŃ‡Đ°Đ˛Đ°Ń ĐşŃŠĐĽ -Observatory. Включи тази опция?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS Everywhere да използва ли SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Да"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"БезопаŃтно е да Đ˛Đ»ŃŽŃ‡ĐµŃ Ń‚ĐľĐ˛Đ°, ĐľŃвен ако ĐżĐľĐ»Đ·Đ˛Đ°Ń ĐĽĐ˝ĐľĐłĐľ ŃпионŃка връŃка:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"БезопаŃно, ŃŃвен ако ползвате таиен интернет Ń Ń‚Đ°Đ¸Đ˝Đ¸ имена на Ńървърите:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Вкарай и провери Ńертификати подпиŃани от не-Ńтандартни CAта"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -""> - -<!ENTITY ssl-observatory.prefs.anonymous "Проверявай Ńертификати като Đ¸Đ·ĐżĐľĐ»Đ·Đ˛Đ°Ń Tor за анонимноŃŃ‚"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Проверявай Ńертификати като Đ¸Đ·ĐżĐľĐ»Đ·Đ˛Đ°Ń Tor за анонимноŃŃ‚ (изиŃква Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Тази опция изиŃква Tor и Torbutton да бъдат инŃталирани"> - -<!ENTITY ssl-observatory.prefs.asn -"Когато Đ˛Đ¸Đ´Đ¸Ń Đ˝ĐľĐ˛ Ńертификат кажи на Observatory към кой ISP Ńи Ńвързан"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -""> - -<!ENTITY ssl-observatory.prefs.done "Готово"> - -<!ENTITY ssl-observatory.prefs.explanation -""> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -""> - -<!ENTITY ssl-observatory.prefs.hide "Скрий разŃирени наŃтройки"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Проверявай Ńертификати даье ако Tor ние Ńвободен"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Đ’Ńе още Ńе опитаме да пазим данните анонимни, но тази наŃтройка е по малко Ńигорна"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Вкараи и провери Ńертификати за чаŃтни DNS имена"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -""> - -<!ENTITY ssl-observatory.prefs.show "Покажи разŃирени наŃтройки"> - -<!ENTITY ssl-observatory.prefs.title "SSL ОбŃержатория NаŃтроики"> - -<!ENTITY ssl-observatory.prefs.use "Đзползвай Observatory?"> -<!ENTITY ssl-observatory.warning.title "Đ’ĐťĐĐśĐĐťĐĐ• от SSL обŃерваторята на ЕФФ"> -<!ENTITY ssl-observatory.warning.showcert "Покажи веригата на Ńертификата"> -<!ENTITY ssl-observatory.warning.okay "Разбирам"> -<!ENTITY ssl-observatory.warning.text "SSL ОбŃерваторята на ЕФФ е дала признак за HTTPS Ńертификат(и) на тази Ńтраница:"> -<!ENTITY ssl-observatory.warning.defense "Đко Ńи влязал в тази Ńтраница, предложено е да ŃĐĽĐµĐ˝Đ¸Ń ĐżĐ°Ń€ĐľĐ»Đ°Ń‚Đ° когато Đ¸ĐĽĐ°Ń Đ±ĐµĐ·ĐľĐżĐ°Ńтна връŃка."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Вкарай и провери Ńамо-подпиŃани Ńертификати"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Това е предложено; проблеми Ń ĐşŃ€Đ¸ĐżŃ‚ĐľĐłŃ€Đ°Ń„Đ¸ŃŹ ŃŃŠ ŃпеŃифично нормални в Ńамо-подпиŃани дребни девизи "> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd deleted file mode 100644 index ce1f107..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "O aplikaci HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Zašifrujte Web! Automaticky pouĹľĂvejte HTTPS zabezpeÄŤenĂ na mnoha stránkách."> -<!ENTITY https-everywhere.about.version "Verze"> -<!ENTITY https-everywhere.about.created_by "VytvoĹ™il"> -<!ENTITY https-everywhere.about.librarians "KnihovnĂci Pravidel"> -<!ENTITY https-everywhere.about.thanks "PodÄ›kovánĂ"> -<!ENTITY https-everywhere.about.contribute "Pokud se vám lĂbĂ HTTPS Everywhere, mĹŻĹľete"> -<!ENTITY https-everywhere.about.donate_tor "PĹ™ispÄ›t na Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "PĹ™ispÄ›t na EFF"> - -<!ENTITY https-everywhere.menu.about "O aplikaci HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "NastavenĂ SSL ObservatoĹ™e"> -<!ENTITY https-everywhere.menu.globalEnable "Zapnout HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Vypnout HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "NastavenĂ HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Zapnout vše"> -<!ENTITY https-everywhere.prefs.disable_all "Vypnout vše"> -<!ENTITY https-everywhere.prefs.reset_defaults "Vrátit vĂ˝chozĂ nastavenĂ"> -<!ENTITY https-everywhere.prefs.search "Hledat"> -<!ENTITY https-everywhere.prefs.site "Stránky"> -<!ENTITY https-everywhere.prefs.notes "Poznámky"> -<!ENTITY https-everywhere.prefs.list_caption "Která pravdila HTTPS pro pĹ™esmÄ›rovánĂ majĂ platit?"> -<!ENTITY https-everywhere.prefs.enabled "Zapnuto"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Návod, jak si vytvoĹ™it vlastnĂ sadu pravidel (pro pĹ™idánĂ podpory dalšĂch webĹŻ) najdete"> -<!ENTITY https-everywhere.prefs.here_link "zde"> -<!ENTITY https-everywhere.prefs.toggle "ZmÄ›nit"> -<!ENTITY https-everywhere.prefs.reset_default "Vrátit vĂ˝chozĂ nastavenĂ"> -<!ENTITY https-everywhere.prefs.view_xml_source "Zobrazit Zdroj v XML"> - -<!ENTITY https-everywhere.source.downloading "StahovánĂ"> -<!ENTITY https-everywhere.source.filename "Název souboru"> -<!ENTITY https-everywhere.source.unable_to_download "Zdroj nelze stáhnout."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties deleted file mode 100644 index 98fb982..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Zapnout HTTPS Everywhere -https-everywhere.menu.globalDisable = Vypnout HTTPS Everywhere -https-everywhere.menu.enableDisable = Zapnout / Vypnout Pravidla -https-everywhere.menu.noRules = (Pro tuto stránku neexistujà žádná pravidla) -https-everywhere.menu.unknownRules = (Pravidla pro tuto stránku nejsou známá) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd deleted file mode 100644 index 724c842..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd +++ /dev/null @@ -1,94 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Podrobnosti a informace o soukromĂ"> -<!ENTITY ssl-observatory.popup.later "Rozhodnu se pozdÄ›ji"> -<!ENTITY ssl-observatory.popup.no "Ne"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere umĂ odhalit Ăştotky -proti vašemu prohlĂĹľeÄŤi tak, Ĺľe posĂlá certifikáty, kterĂ© obdrĹľĂte, do -ObservatoĹ™e. Zapnout tuto funkci?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Má HTTPS Everywhere pouĹľĂvat SSL ObservatoĹ™?"> - -<!ENTITY ssl-observatory.popup.yes "Ano"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Povolit tuto funkci je bezpeÄŤnĂ©, pokud nejste na velmi -dotÄ›rnĂ© firemnĂ sĂti:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"BezpeÄŤnĂ©, pokud nepouĹľĂváte firemnĂ sĂĹĄ s tajnĂ˝mi jmĂ©ny intranetovĂ˝ch serverĹŻ:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Odeslat a prověřit certikáty podepsanĂ© nestadartnĂmi koĹ™enovĂ˝mi CertifikaÄŤnĂmi Autoritami"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Je bezpeÄŤnĂ© (a doporuÄŤenĂ©) tuto moĹľnost povolit, pokud nepouĹľĂváte dotÄ›rnou firemnĂ sĂĹĄ nebo antivirovĂ˝ sofware Kaspersky kterĂ˝ monitoruje vaše surfovánĂ s TLS proxy a sorkoumou koĹ™enovou CertifikaÄŤnĂ Autoritou. Pokud ji na takovĂ© sĂti povolĂte, mĹŻĹľe tato moĹľnost publikovat dĹŻkazy o tom kterĂ© https:// servery byly skrze tuto proxy navštĂveny, kvĹŻli jedineÄŤnĂ˝m certifikátĹŻm kterĂ© by takto vznikly. Proto nechváme tuto moĹľnost ve vĂ˝chozĂm nastavenĂ vypnoutou."> - -<!ENTITY ssl-observatory.prefs.anonymous "Prověřovat certifikáty skrze Tor pro zajištÄ›nĂ anonymity"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Prověřovat certifikáty skrze Tor pro zajištÄ›nĂ anonymity (vyĹľaduje Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Pro pouĹľitĂ tĂ©to moĹľnosti je tĹ™eba mĂt nainstalovanĂ˝ Tor a Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"KdyĹľ uvidĂte novĂ˝ certifikát, Ĺ™eknÄ›te ObservatoĹ™i pĹ™es kterĂ©ho ISP jste pĹ™ipojenĂ"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Toto naÄŤte a odešle "ÄŤĂslo AutonomnĂho SystĂ©mu" vašà sĂtÄ›. PomĹŻĹľe nám to lokalizovat Ăştoky na HTTPS, a rozpoznat jestli máme hlášenĂ ze sĂtĂ v zemĂch jako je ĂŤrán a SĂ˝rie, kde jsou Ăştoky relativnÄ› ÄŤastĂ©."> - -<!ENTITY ssl-observatory.prefs.done "Hotovo"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere umĂ pouĹľĂt SSL ObservatoĹ™ od EFF. Ta udÄ›lá dvÄ› vÄ›ci: (1) -oděšle kopie HTTPS cerifikátĹŻ do observotĹ™e, coĹľ nám pomĹŻĹľe detekovat Ăştoky typu 'man in the middle' a zlepšit bezpeÄŤnost na Webu; a (2) -umoĹľnĂ nám varovat vás pĹ™ed nezabezpeÄŤnĂ˝m pĹ™ipojenĂm nebo Ăştokem na váš prohlĂĹľeÄŤ."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Pokud napĹ™Ăklad navštĂvĂte https://www.something.com, certifikát, kerĂ˝ pĹ™Ăjde do ObservatoĹ™e nás informuje o tom, Ĺľe nÄ›kdo navštĂvil -www.something.com, ale neĹ™ekne kdo to byl, ani na jakou konkrĂ©tnĂ stránku se -dĂval. Pro zobrazenĂ podrobnostĂ najeÄŹte na moĹľnosti myšĂ."> - -<!ENTITY ssl-observatory.prefs.hide "SkrĂ˝t pokroÄŤilĂ© nastavenĂ"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Prověřovat certifikáty i pokud Tor nenĂ dostupnĂ˝"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"I tak se budeme snaĹľit, aby data zĹŻstala anonymnĂ, ale tato moĹľnost nenĂ tak bezpeÄŤná"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"OdesĂlat a prověřovat certifikáty neveĹ™ejnĂ˝ch DNS jmen"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Pokud nenĂ tato moĹľnost zaškrtnutá, ObservatoĹ™ nebude zaznamenávat certifikáty pro jmĂ©na která nenajde v DNS systĂ©mu."> - -<!ENTITY ssl-observatory.prefs.show "Zobrazit pokroÄŤilĂ© nastavenĂ"> - -<!ENTITY ssl-observatory.prefs.title "NastavenĂ SSL ObservatoĹ™e"> - -<!ENTITY ssl-observatory.prefs.use "PouĹľĂvat ObservatoĹ™?"> -<!ENTITY ssl-observatory.warning.title "VAROVĂNĂŤ z SSL ObservatoĹ™e od EFF"> -<!ENTITY ssl-observatory.warning.showcert "Zobrazit Ĺ™etÄ›zec certifikátĹŻ"> -<!ENTITY ssl-observatory.warning.okay "RozumĂm"> -<!ENTITY ssl-observatory.warning.text "SSL ObservatoĹ™ od EFF vydala varovánĂ pĹ™ed HTTPS cetifikátem / certifikáty na tÄ›chto stránkách:"> -<!ENTITY ssl-observatory.warning.defense "Pokud jste se na tÄ›chto stránkách pĹ™ihlásili, doporuÄŤujeme zmÄ›nit si heslo, aĹľ budete pĹ™ipojeni bezpeÄŤnĂ˝m pĹ™ipojenĂm."> - -<!ENTITY ssl-observatory.prefs.self_signed -"OdesĂlat a provÄ›rovat certifikáty podepsanĂ© sami sebou"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Tuto moĹľnost dopruÄŤujeme zapnout; kryprografickĂ© problĂ©my jsou obzvášť ÄŤastĂ© u takto podepsanĂ˝ch vestavÄ›nĂ˝ch zaĹ™ĂzenĂ"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd deleted file mode 100644 index 83ef71a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Om HTTPS Overalt"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Overalt"> -<!ENTITY https-everywhere.about.ext_description "KryptĂ©r nettet! Brug HTTPS-sikkerhed automatisk pĂĄ mange steder."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Oprettet af"> -<!ENTITY https-everywhere.about.librarians "Regelsæt-bibliotekarer"> -<!ENTITY https-everywhere.about.thanks "Tak til"> -<!ENTITY https-everywhere.about.contribute "Hvis du kan lide HTTPS Overalt, sĂĄ vil du mĂĄske overveje"> -<!ENTITY https-everywhere.about.donate_tor "Giv bidrag til Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "da"> -<!ENTITY https-everywhere.about.donate_eff "Giv bidrag til EFF"> - -<!ENTITY https-everywhere.menu.about "Om HTTPS Overalt"> -<!ENTITY https-everywhere.menu.observatory "Indstillinger for SSL-observatorie"> -<!ENTITY https-everywhere.menu.globalEnable "AktivĂ©r HTTPS Overalt"> -<!ENTITY https-everywhere.menu.globalDisable "DeaktivĂ©r HTTPS Overalt"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Indstillinger for HTTPS Overalt"> -<!ENTITY https-everywhere.prefs.enable_all "AktivĂ©r alle"> -<!ENTITY https-everywhere.prefs.disable_all "DeaktivĂ©r alle"> -<!ENTITY https-everywhere.prefs.reset_defaults "Nulstil til standardindstillinger"> -<!ENTITY https-everywhere.prefs.search "Søg"> -<!ENTITY https-everywhere.prefs.site "Sted"> -<!ENTITY https-everywhere.prefs.notes "Noter"> -<!ENTITY https-everywhere.prefs.list_caption "Hvilke HTTPS-regler skal anvendes?"> -<!ENTITY https-everywhere.prefs.enabled "Aktiveret"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lære om at skrive dine egne regelsæt (for at føje understøttelse til andre websteder)"> -<!ENTITY https-everywhere.prefs.here_link "her"> -<!ENTITY https-everywhere.prefs.toggle "SlĂĄ til/fra"> -<!ENTITY https-everywhere.prefs.reset_default "Nulstil til standardindstilling"> -<!ENTITY https-everywhere.prefs.view_xml_source "Vis XML-kilde"> - -<!ENTITY https-everywhere.source.downloading "Henter"> -<!ENTITY https-everywhere.source.filename "Filnavn"> -<!ENTITY https-everywhere.source.unable_to_download "Kan ikke hente kilde"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 meddelelse"> -<!ENTITY https-everywhere.popup.paragraph1 "Ups. Du anvendte den stabile version af HTTPS Everywhere, men vi har ved et uheld mĂĄske opdateret til udvikler-versionen ved den sidste opdatering."> -<!ENTITY https-everywhere.popup.paragraph2 "Vil du skifte tilbage til den stabile version?"> -<!ENTITY https-everywhere.popup.paragraph3 "Vi ville sætte pris pĂĄ at du fortsatte med at anvende vores udvikler-version, og derved hjalp os med at gøre HTTPS Everywhere bedre! Der er optræder mĂĄske fejl her og der, som du kan rapportere pĂĄ https-everywhere@eff.org, pĂĄ engelsk. Vi beklager besværet. Tak fordi du anvender HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Behold udvikler-versionen"> -<!ENTITY https-everywhere.popup.revert "Hent den seneste stabile version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties deleted file mode 100644 index dcd8a36..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = AktivĂ©r HTTPS Overalt -https-everywhere.menu.globalDisable = DeaktivĂ©r HTTPS Overalt -https-everywhere.menu.enableDisable = AktivĂ©r / DeaktivĂ©r regler -https-everywhere.menu.noRules = (Der er ikke opsat regler for denne side) -https-everywhere.menu.unknownRules = (Regler for denne side ukendt) -https-everywhere.toolbar.hint = HTTPS Everywhere er nu aktiv. De kan tænde den ved et side-ved-side basis ved at klikke pĂĄ ikonet i adresse baren. -https-everywhere.migration.notification0 = For at rette en vigtig fejl, nulstiller denne opdatering dine HTTPS Everywhere indstillinger til deres oprindelige værdier. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd deleted file mode 100644 index 05722e8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Detaljer og information om privatliv"> -<!ENTITY ssl-observatory.popup.later "Spørg mig senere"> -<!ENTITY ssl-observatory.popup.no "Nej"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Overalt kan registrere angreb -mod din browser ved at sende certifikaterne du modtager til -Observatoriet. SlĂĄ dette til?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Skal HTTPS Overalt anvende SSL-observatoriet?"> - -<!ENTITY ssl-observatory.popup.yes "Ja"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Dette kan trygt aktiveres, medmindre du brug et virksomhedsnetværk -som er udsat for meget indtrængen:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Sikker, medmindre du bruger et virksomhedsnetværk med skjulte intranet-servernavne:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Indsend og tjek certifikater signeret af ikke-standardiserede rod-certifikat-autoriteter"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Det er sikkert (og en god ide) at aktivere denne valgmulighed, medmindre du bruger virksomhedsnetværk med meget indtrængen eller antivirus-software fra Kaspersky, der overvĂĄger din browserbrug med en TLS-proxy og en privat rod-certifikat-autoritet. Hvis den er aktiveret pĂĄ sĂĄdan et netværk, sĂĄ kan dette tilvalg risikere at udgive spor af hvilke https://-domæner som blev benyttet gennem proxy'en, som følge af de unikke certifikater den ville fremstille. Lad den derfor være slĂĄet fra som standard."> - -<!ENTITY ssl-observatory.prefs.anonymous "Tjek certifikater med brug af Tor for anonymitet"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Tjek certifikater med brug af Tor for anonymitet (kræver Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Dette tilvalg kræver at Tor og Torbutton er installerede."> - -<!ENTITY ssl-observatory.prefs.asn -"NĂĄr du ser et nyt certifikat, sĂĄ fortæl Observatoriet hvilken internetudbyder du er tilsluttet til"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Dette vil hente og sende det "autonome systemnummer" for dit netværk. Dette vil hjælpe os med at lokalisere angreb mod HTTPS, og afgøre hvorvidt vi har observationer fra netværk fra steder som Iran og Syrien, hvor angreb set under sammenligning forekommer hyppigt."> - -<!ENTITY ssl-observatory.prefs.done "Færdig"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Overalt kan benytte EFFs SSL-observatorie. Dette indebærer to -ting: (1) der sendes kopier af HTTPS-certifikater til observatoriet, der -hjælper os med at registrere 'manden i midten'-angreb og forøge sikkerheden pĂĄ nettet; og (2) giver os mulighed for at advare dig om usikre forbindelser eller angreb pĂĄ din browser."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Som eksempel, nĂĄr du besøger https://www.etellerandet.com, sĂĄ vil -certifikatet som Observatoriet har modtaget indikere at nogen besøgte -www.etellerandet.com, men ikke hvem som besøgte stedet, eller hvilken -specifik side de kiggede pĂĄ. Hold musen over valgmuligheder for at flere -detaljer:"> - -<!ENTITY ssl-observatory.prefs.hide "Skjul avancerede valgmuligheder"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Tjek certifikater, selv nĂĄr Tor ikke er tilgængelig"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Vi vil stadig forsøge at bevare data anonyme, men denne valgmulighed er mindre sikker"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Indsend og tjek certifikater for DNS-navne som ikke er offentlige"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Medmindre denne valgmulighed er valgt, sĂĄ vil observatoriet ikke registrere certifikater for navne som den ikke kan opløse gennem DNS-systemet."> - -<!ENTITY ssl-observatory.prefs.show "Vis avanceret valgmuligheder"> - -<!ENTITY ssl-observatory.prefs.title "Indstillinger for SSL-Observatoriet"> - -<!ENTITY ssl-observatory.prefs.use "Brug Observatoriet?"> -<!ENTITY ssl-observatory.warning.title "ADVARSEL fra EFF's SSL-observatorie"> -<!ENTITY ssl-observatory.warning.showcert "Vis certifikat-kæden"> -<!ENTITY ssl-observatory.warning.okay "Jeg forstĂĄr"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL-observatorie har udsted en advarsel om HTTPS-certifikaterne for dette sted:"> -<!ENTITY ssl-observatory.warning.defense "Hvis du er logget ind pĂĄ dette sted, sĂĄ kan det tilrĂĄdes at ændre din adgangskode nĂĄr du har etableret en sikker forbindelse. "> - -<!ENTITY ssl-observatory.prefs.self_signed -"Indsend og tjek selvsignerede certifikater"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Dette er anbefalet, da kryptografiske problemer er oftere findes i selvsignerede indlejrede enheder"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd deleted file mode 100644 index 75c8630..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Ăśber HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Sichere deine Internet Anbindung! Automatische HTTPS-Sicherheit auf vielen Web-Seiten."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Entwickelt durch"> -<!ENTITY https-everywhere.about.librarians "Regelliste"> -<!ENTITY https-everywhere.about.thanks "Dank an"> -<!ENTITY https-everywhere.about.contribute "Wenn du HTTPS-Everywhere magst, solltest du mal dieses ausprobieren"> -<!ENTITY https-everywhere.about.donate_tor "Spende an Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "de-DE"> -<!ENTITY https-everywhere.about.donate_eff "Spende an EFF"> - -<!ENTITY https-everywhere.menu.about "Ăśber HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory Einstellungen"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere aktivieren"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere deaktivieren"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Einstellungen"> -<!ENTITY https-everywhere.prefs.enable_all "Alle aktivieren"> -<!ENTITY https-everywhere.prefs.disable_all "Alle deaktivieren"> -<!ENTITY https-everywhere.prefs.reset_defaults "ZurĂĽcksetzen"> -<!ENTITY https-everywhere.prefs.search "Suchen"> -<!ENTITY https-everywhere.prefs.site "Seite"> -<!ENTITY https-everywhere.prefs.notes "Notizen"> -<!ENTITY https-everywhere.prefs.list_caption "Welche HTTPS-Weiterleitung soll gewählt werden?"> -<!ENTITY https-everywhere.prefs.enabled "Gestartet"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Lerne, deine eigene Regelliste zu schreiben (FĂĽge Regeln fĂĽr andere Web-Seiten hinzu)"> -<!ENTITY https-everywhere.prefs.here_link "Hier"> -<!ENTITY https-everywhere.prefs.toggle "Toggle"> -<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML-Quelle ansehen"> - -<!ENTITY https-everywhere.source.downloading "Downloade"> -<!ENTITY https-everywhere.source.filename "Dateiname"> -<!ENTITY https-everywhere.source.unable_to_download "Quelle konnte nicht heruntergeladen werden."> - -<!ENTITY https-everywhere.popup.title "Nachricht von HTTPS Everywhere 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. Du hattest die stabile Version von HTTPS Everywhere benutzt, aber wir haben dich möglicherweise in unserem letztdem Update auf eine Entwickler-Version geupgraded."> -<!ENTITY https-everywhere.popup.paragraph2 "Möchtest du zurĂĽck zur stabilen Version?"> -<!ENTITY https-everywhere.popup.paragraph3 "Wir wĂĽrden uns freuen, wenn du weiterhin die Entwickler-Version benutzen wĂĽrdest, um uns zu helfen HTTPS Everywhere zu verbessern! Es könnte sein, dass du hier und da einige Fehler findest, welche du an https-everywhere@eff.org melden kannst. Entschuldige die Unannehmlichkeit und danke, dass du HTTPS Everywhere benutzt."> -<!ENTITY https-everywhere.popup.keep "Entwickler-Version beibehalten."> -<!ENTITY https-everywhere.popup.revert "Die letzte stabile Version herunterladen"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties deleted file mode 100644 index c1d3438..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhere aktivieren -https-everywhere.menu.globalDisable = HTTPS Everywhere deaktivieren -https-everywhere.menu.enableDisable = Regeln Aktivieren / Deaktivieren -https-everywhere.menu.noRules = (Keine Regeln fĂĽr diese Seite) -https-everywhere.menu.unknownRules = (Regeln fĂĽr diese Seite unbekannt) -https-everywhere.toolbar.hint = HTTPS Everywhere ist nun aktiv. Sie können es fĂĽr bestimmte Seiten ein- oder ausschalten, indem Sie auf das Icon in der Adresszeile klicken. -https-everywhere.migration.notification0 = Um einen wichtigen Fix zu implementieren, wird dieses Update deine HTTPS Everywhere Regel-Einstellungen zurĂĽcksetzen. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd deleted file mode 100644 index 74483cc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd +++ /dev/null @@ -1,91 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Details und Datenschutz Informationen"> -<!ENTITY ssl-observatory.popup.later "Später nachfragen"> -<!ENTITY ssl-observatory.popup.no "Nein"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kann Angriffe gegen Ihren Browser erkennen, indem es Zertifikate, die Sie empfangen, zum SSL Observatory sendet. Einstellung aktivieren?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Soll HTTPS Everywhere SSL Observatory benutzen?"> - -<!ENTITY ssl-observatory.popup.yes "Ja"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Es ist sicher, diese Option zu aktivieren, es sei denn, Sie benutzen ein sehr aufdringliches Firmennetzwerk:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Sicher, es sei denn, Sie benutzen ein Firmennetzwerk mit geheimen Intranet Servernamen:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Sende und ĂĽberprĂĽfe Zertifikate, die nicht von Stammzertifizierungsstellen ausgestellt wurden"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Es ist sicher (und eine gute Idee), diese Option zu aktivieren, es sei denn, Sie benutzen ein aufdringliches Firmennetzwerk, oder Kaspersky Antiviren-Software, die Sie beim Browsen mittels eines TLS Proxyservers und einer privaten Zertifizierungsstelle ĂĽberwacht. Wenn diese Option in einem solchen Netzwerk verwendet wird, könnte Sie Hinweise (in Form der dadurch erstellten eindeutigen Zertifikate) auf die durch diesen Proxyserver besuchten https:// Domains hinterlassen."> - -<!ENTITY ssl-observatory.prefs.anonymous "ĂśberprĂĽfe Zertifikate mit Tor, um Anonymität zu bewahren"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"ĂśberprĂĽfte Zertifikate mit Tor, um Anonymität zu bewahren (benötigt Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Diese Option macht die Installation von Tor und Torbutton erforderlich"> - -<!ENTITY ssl-observatory.prefs.asn -"Dem SSL Observatory mitteilen, welchen ISP Sie verwenden, wenn Sie ein neues Zertifikat zu sehen bekommen"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Diese Option verwendet die 'Autonome System Zahl' Ihres Netzwerks. Das hilft uns, Angriffe gegen HTTPS zu orten und festzustellen, ob es sich um Angriffe von Netzwerken in Ländern wie Iran und Syrien handelt, in denen solche Angriffe vergleichsweise häufig sind."> - -<!ENTITY ssl-observatory.prefs.done "Fertig"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere kann EFF's SSL Observatory verwenden. Das ermöglicht uns 1. die Erkennung von 'man in the middle' Angriffen und damit eine Verbesserung der Internetsicherheit, indem Kopien der HTTPS Zertifikate an das SSL Observatory gesendet werden; und 2. können wir Sie bei unsicheren Verbindungen oder Angriffen gegen Ihren Browser warnen."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Beispiel: Wenn Sie https://www.irgendetwas.com besuchen, kann das SSL Observatory lediglich feststellen, dass irgendjemand www.irgendetwas.com besucht hat, aber nicht wer es war oder welche genaue Informationen aufgerufen wurde. FĂĽr mehr Informationen, fahren Sie mit der Maus ĂĽber diese Option:"> - -<!ENTITY ssl-observatory.prefs.hide "Verstecke erweiterte Optionen"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Zertifikate auch ĂĽberprĂĽfen, wenn Tor nicht verfĂĽgbar ist"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Wir bemĂĽhen uns, die Daten dennoch anonym zu halten, aber diese Option ist weniger sicher."> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Zertifikate fĂĽr nicht-öffentliche DNS-Namen Senden und ĂśberprĂĽfen"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Wenn diese Option nicht aktiviert ist, wird das Observatory keine Zertifikate fĂĽr Domain Namen aufnehmen, die es nicht ĂĽber das DNS-System auflösen kann."> - -<!ENTITY ssl-observatory.prefs.show "Zeige erweiterte Optionen"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory Einstellungen"> - -<!ENTITY ssl-observatory.prefs.use "SSL Observatory verwenden?"> -<!ENTITY ssl-observatory.warning.title "WARNUNG von EFF's SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "Zertifikatskette anzeigen"> -<!ENTITY ssl-observatory.warning.okay "Ich verstehe"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory hat eine Warnung zu dem HTTPS Zertifikat dieser Seite veröffentlicht:"> -<!ENTITY ssl-observatory.warning.defense "Wenn Sie auf dieser Seite eingeloggt sind, kann es empfehlenswert sein, das Passwort zu ändern, sobald Sie eine sichere Verbindung haben."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Selbstsignierte Zertifikate Senden und ĂśberprĂĽfen"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Empfehlenswert; kryptographische Probleme sind in selbstsignierten eingebetteten Geräten besonders häufig."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd deleted file mode 100644 index f8658cd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Σχετικά με το HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "ΚĎυπτογĎαφήĎτε τον ΠαγκόĎμιο ΙĎτό! ΧĎηĎιμοποιήĎτε αĎφάλεια HTTPS Ďε πολλούς δικτυακούς τόπους."> -<!ENTITY https-everywhere.about.version "ÎκδοĎη"> -<!ENTITY https-everywhere.about.created_by "ΔημιουĎγήθηκε από"> -<!ENTITY https-everywhere.about.librarians "Βιβλιοθήκες για κανόνες"> -<!ENTITY https-everywhere.about.thanks "ΕυχαĎÎąĎτούμε τους"> -<!ENTITY https-everywhere.about.contribute "Αν Ďας αĎÎĎει το HTTPS Everywhere, δοκιμάĎτε"> -<!ENTITY https-everywhere.about.donate_tor "ΔωĎÎŻĎτε Ďτο Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "ΔωĎÎŻĎτε Ďτο EFF"> - -<!ENTITY https-everywhere.menu.about "Σχετικά με το HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Î ĎοτιμήĎεις για το ΠαĎατηĎητήĎιο SSL"> -<!ENTITY https-everywhere.menu.globalEnable "ΕνεĎγοποίηĎη του HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "ΑπενεĎγοποίηĎη του HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Î ĎοτιμήĎεις του HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "ΕνεĎγοποίηĎη όλων"> -<!ENTITY https-everywhere.prefs.disable_all "ΑπενεĎγοποίηĎη όλων"> -<!ENTITY https-everywhere.prefs.reset_defaults "ΕπαναφοĎά Ď€ĎοεπιλεγμÎνων κανόνων"> -<!ENTITY https-everywhere.prefs.search "ΑναζήτηĎη"> -<!ENTITY https-everywhere.prefs.site "Δικτυακός τόπος"> -<!ENTITY https-everywhere.prefs.notes "ΣημειώĎεις"> -<!ENTITY https-everywhere.prefs.list_caption "Ποιοι κανόνες ανακατεύθυνĎης Ďε HTTPS να εφαĎÎĽÎżĎτούν;"> -<!ENTITY https-everywhere.prefs.enabled "ΕνεĎγοποιημÎνο"> -<!ENTITY https-everywhere.prefs.ruleset_howto "ΜποĎείτε να μάθετε πώς να ÎłĎάφετε τους δικούς Ďας κανόνες (ĎŽĎτε να υποĎτηĎίξετε και άλλους δικτυακούς τόπους)"> -<!ENTITY https-everywhere.prefs.here_link "εδώ"> -<!ENTITY https-everywhere.prefs.toggle "Εναλλαγή"> -<!ENTITY https-everywhere.prefs.reset_default "ΕπαναφοĎά Ď€Ďοεπιλογών"> -<!ENTITY https-everywhere.prefs.view_xml_source "Î Ďοβολή του Πηγαίου Κώδικα XML"> - -<!ENTITY https-everywhere.source.downloading "Γίνεται λήĎη"> -<!ENTITY https-everywhere.source.filename "Όνομα αĎχείου"> -<!ENTITY https-everywhere.source.unable_to_download "Αδυναμί λήĎης πηγαίου κώδικα."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties deleted file mode 100644 index 1906756..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = ΕνεĎγοποίηĎη του HTTPS Everywhere -https-everywhere.menu.globalDisable = ΑπενεĎγοποίηĎη του HTTPS Everywhere -https-everywhere.menu.enableDisable = ΕνεĎγοποίηĎη / ΑπενεĎγοποίηĎη των κανόνων -https-everywhere.menu.noRules = (Δεν υπάĎχουν κανόνες για αυτή την Ďελίδα) -https-everywhere.menu.unknownRules = (Κανόνες για αυτή τη Ďελίδα: ΆγνωĎτοι) -https-everywhere.toolbar.hint = Το HTTPS Everywhere ειναι τωĎα ενεĎγοποιημενο. ΜποĎείτε να το αλλάξετε με βάĎη την τοποθεĎία ανά τοποθεĎία, κάνοντας κλικ Ďτο εικονίδιο Ďτη ÎłĎαμμή διευθύνĎεων. -https-everywhere.migration.notification0 = Αυτή η ενημÎĎωĎη επαναφÎĎει τις ĎυθμίĎεις κανόνων του HTTPS Everywhere Ďτις Ď€ĎοεπιλεγμÎνες τιμÎĎ‚, με Ďκοπό να εφαĎÎĽÎżĎτεί μια ÎşĎÎŻĎιμη διόĎθωĎη. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd deleted file mode 100644 index 28641ed..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd +++ /dev/null @@ -1,99 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "ΛεπτομÎĎειες και ΠληĎοφοĎίες Ιδιωτικότητας"> -<!ENTITY ssl-observatory.popup.later "ÎÎλω να ΕνημεĎωθώ ΑĎγότεĎα"> -<!ENTITY ssl-observatory.popup.no "Όχι"> - -<!ENTITY ssl-observatory.popup.text "Το HTTPS Everywhere μποĎεί να εντοπίĎει επιθÎĎεις -εναντίον του φυλλομετĎητή Ďου ĎĎ„Îλνοντας τα πιĎτοποιητικά που λαμβάνεις -Ďτο ΠαĎατηĎητήĎιο. Επιθυμείς ενεĎγοποίηĎη;"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Επιθυμείς το HTTPS Everywhere να χĎηĎιμοποιεί το ΠαĎατηĎητήĎιο SSL;"> - -<!ENTITY ssl-observatory.popup.yes "Ναι"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Η ενεĎγοποίηĎη της επιλογής είναι αĎφαλής, εκτός αν χĎηĎιμοποιείς εταιĎικό δίκτυο -Ď…Ďηλής παĎεμβατικότητας:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Η ενεĎγοποίηĎη της επιλογής είναι αĎφαλής, εκτός αν χĎηĎιμοποιείς εταιĎικό δίκτυο με ÎĽĎ…Ďτικά ονόματα διακομιĎτών:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Υποβολή και Îλεγχος πιĎτοποιητικών υπογεγĎαμμÎνων από μη-εγκεκĎιμÎνες ΑĎχÎĎ‚ Î ÎąĎτοποίηĎης πιĎτοποιητικών"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Είναι αĎφαλÎĎ‚ (και καλή ιδÎα) να ενεĎγοποιηθεί η ĎυγκεκĎιμÎνη επιλογή, εκτός αν χĎηĎιμοποιείς εταιĎικό δίκτυο Ď…Ďηλής παĎεμβατικότητας ή το λογιĎμικό Ď€ĎÎżĎταĎίας από ιούς 'Kaspersky' το οποίο παĎακολουθεί την πεĎιήγηĎη ÎĽÎĎω ενός TLS διακομιĎτή μεĎολάβηĎης και μιας ιδιωτικής ΑĎχής Î ÎąĎτοποίηĎης πιĎτοποιητικών. Αν ενεĎγοποιηθεί Ďε Îνα Ď„Îτοιο δίκτυο, μποĎεί να δημοĎιοποιήĎει Ďτοιχεία για το ποια https:// ονόματα ÎąĎτοτόπων επιĎÎşÎφθηκες ÎĽÎĎω αυτού του διακομιĎτή μεĎολάβηĎης, εξαιτίας της μοναδικότητας των πιĎτοποιητικών που θα παĎάγει. Γι' αυτό το Îχουμε αφήĎει εξ' αĎχής απενεĎγοποιημÎνο."> - -<!ENTITY ssl-observatory.prefs.anonymous "Îλεγχος πιĎτοποιητικών χĎηĎιμοποιώντας το Tor για εξαĎφάλιĎη ανωνυμίας"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Îλεγχος πιĎτοποιητικών χĎηĎιμοποιώντας το Tor για εξαĎφάλιĎη ανωνυμίας (απαιτείται η εγκατάĎταĎη του Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Η ĎυγκεκĎιμÎνη επιλογή απαιτεί την εγκατάĎταĎη του Tor και του Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"Όταν βλÎπεις Îνα νÎÎż πιĎτοποιητικό, πες Ďτο ΠαĎατηĎητήĎιο με ποιον ΠάĎοχο ΥπηĎεĎιών Διαδικτύου Îχεις Ďυνδεθεί."> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Η ĎυγκεκĎιμÎνη επιλογή θα ανακτήĎει και θα αποĎτείλει τον "Αυτόνομο ΑĎιθμό ÎŁĎ…Ďτήματος" (Autonomous System number) του δικτύου Ďου. Αυτό θα μας βοηθήĎει να εντοπίĎουμε επιθÎĎεις εναντίον του HTTPS και να καθοĎÎŻĎουμε αν Îχουν παĎατηĎηθεί επιθÎĎεις από ÎĽÎĎη όπως η ÎŁĎ…Ďία και το ΙĎάν όπου αυτÎĎ‚ οι επιθÎĎεις είναι ĎυγκĎιτικά πιο ĎυνηθιĎÎĽÎνες."> - -<!ENTITY ssl-observatory.prefs.done "Îγινε"> - -<!ENTITY ssl-observatory.prefs.explanation -"Το HTTPS Everywhere μποĎεί να χĎηĎιμοποιήĎει το ΠαĎατηĎητήĎιο SSL του EFF, το οποίο Ď€Ďαγματοποιεί τα εξής: (1) -ĎĎ„Îλνει αντίγĎαφα των πιĎτοποιητικών HTTPS Ďτο ΠαĎατηĎητήĎιο, για να μας βοηθήĎει να ανιχνεύĎουμε επιθÎĎεις 'ενδιάμεĎου παĎατηĎητή' και να βελτιώĎει την αĎφάλεια του ΠαγκόĎμιου ΙĎτού (2) -μας επιτĎÎπει να Ďε Ď€Ďοειδοποιούμε Ďχετικά με μη-αĎφαλείς ĎυνδÎĎεις ή επιθÎĎεις Ďτο φυλλομετĎητή Ďου."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Για παĎάδειγμα, όταν επιĎÎşÎπτεĎαι το https://www.example.com, το πιĎτοποιητικό -που λαμβάνει το ΠαĎατηĎητήĎιο θα δείξει ότι κάποιος κάποιος επιĎÎşÎφθηκε -τον ÎąĎτότοπο www.something.com, αλλά όχι ποιος επιĎÎşÎφθηκε τον ÎąĎτότοπο ή ποια ĎυγκεκĎιμÎνη Ďελίδα -είδε. ÎŁĎŤĎε το ποντίκι πάνω από τις επιλογÎĎ‚ για πεĎÎąĎĎότεĎες πληĎοφοĎίες:"> - -<!ENTITY ssl-observatory.prefs.hide "ΑπόκĎĎ…Ďη επιλογών για Ď€ĎοχωĎημÎνους"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Îλεγχος πιĎτοποιητικών ακόμα κι αν το Tor δεν είναι διαθÎĎιμο "> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Συνεχίζουμε την Ď€ĎÎżĎπάθεια να ÎşĎατήĎουμε ανώνυμα τα δεδομÎνα, αλλά αυτή η επιλογή είναι λιγότεĎÎż αĎφαλής"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Υποβολή και Îλεγχος πιĎτοποιητικών για μη δημόĎια DNS ονόματα"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Εκτός αν η ĎυγκεκĎιμÎνη επιλογή ενεĎγοποιηθεί, το ΠαĎατηĎητήĎιο δε θα καταγĎάφει Î ÎąĎτοποιητικά για ονόματα που δε θα μποĎεί να εξακĎιβώĎει ÎĽÎĎω του ĎĎ…Ďτήματος DNS"> - -<!ENTITY ssl-observatory.prefs.show "Î Ďοβολή επιλογών για Ď€ĎοχωĎημÎνους"> - -<!ENTITY ssl-observatory.prefs.title "Î ĎοτιμήĎεις ΠαĎατηĎητηĎίου SSL"> - -<!ENTITY ssl-observatory.prefs.use "Να χĎηĎιμοποιηθεί το ΠαĎατηĎητήĎιο;"> -<!ENTITY ssl-observatory.warning.title "ΠΡΟΕΙΔΟΠΟΙΗΣΗ από το ΠαĎατηĎητήĎιο SSL του EFF"> -<!ENTITY ssl-observatory.warning.showcert "Î Ďοβολή της αλυĎίδας πιĎτοποιητικών"> -<!ENTITY ssl-observatory.warning.okay "Καταλαβαίνω"> -<!ENTITY ssl-observatory.warning.text "Το ΠαĎατηĎητήĎιο SSL του EFF Îχει εκδώĎει μια Ď€ĎοειδοποίηĎη Ďχετικά με το πιĎτοποιητικό HTTPS του ĎυγκεκĎιμÎνου ÎąĎτότοπου:"> -<!ENTITY ssl-observatory.warning.defense "Αν είĎαι ĎυνδεδεμÎνος Ďτο ĎυγκεκĎιμÎνο ÎąĎτότοπο, Ď€Ďοτείνεται να αλλάξεις τον κωδικό αĎφαλείας Ďου όταν αποκτήĎεις αĎφαλή ĎύνδεĎη."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Υποβολή και αυτο-υπογεγĎαμμÎνα πιĎτοποιητικά"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"ΣυνιĎτώμενη ενÎĎγεια· τα ÎşĎυπτογĎαφικά Ď€Ďοβλήματα είναι ιδιαιτÎĎως κοινά Ďτις αυτο-υπογεγĎαμμÎνες ενĎωματωμÎνες ĎĎ…ĎκευÎĎ‚"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd deleted file mode 100644 index 9a63c45..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd +++ /dev/null @@ -1,47 +0,0 @@ -<!ENTITY https-everywhere.about.title "About HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Created by"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "Thanks to"> -<!ENTITY https-everywhere.about.contribute "If you like HTTPS Everywhere, you might consider"> -<!ENTITY https-everywhere.about.donate_tor "Donating to Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Donating to EFF"> - -<!ENTITY https-everywhere.menu.about "About HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory Preferences"> -<!ENTITY https-everywhere.menu.globalEnable "Enable HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Disable HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> -<!ENTITY https-everywhere.prefs.enable_all "Enable All"> -<!ENTITY https-everywhere.prefs.disable_all "Disable All"> -<!ENTITY https-everywhere.prefs.reset_defaults "Reset to Defaults"> -<!ENTITY https-everywhere.prefs.search "Search"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Notes"> -<!ENTITY https-everywhere.prefs.list_caption "Which HTTPS redirection rules should apply?"> -<!ENTITY https-everywhere.prefs.enabled "Enabled"> -<!ENTITY https-everywhere.prefs.ruleset_howto "You can learn how to write your own rulesets (to add support for other web sites)"> -<!ENTITY https-everywhere.prefs.here_link "here"> -<!ENTITY https-everywhere.prefs.toggle "Toggle"> -<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> -<!ENTITY https-everywhere.prefs.view_xml_source "View XML Source"> - -<!ENTITY https-everywhere.source.downloading "Downloading"> -<!ENTITY https-everywhere.source.filename "Filename"> -<!ENTITY https-everywhere.source.unable_to_download "Unable to download source."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties deleted file mode 100644 index be83831..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Enable HTTPS Everywhere -https-everywhere.menu.globalDisable = Disable HTTPS Everywhere -https-everywhere.menu.enableDisable = Enable / Disable Rules -https-everywhere.menu.noRules = (No Rules for This Page) -https-everywhere.menu.unknownRules = (Rules for This Page Unknown) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd deleted file mode 100644 index 8564082..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd +++ /dev/null @@ -1,95 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Details and Privacy Information"> -<!ENTITY ssl-observatory.popup.later "Ask Me Later"> -<!ENTITY ssl-observatory.popup.no "No"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere can detect attacks -against your browser by sending the certificates you receive to the -Observatory. Turn this on?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Should HTTPS Everywhere use the SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Yes"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"It is safe to enable this, unless you use a very -intrusive corporate network:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Safe, unless you use a corporate network with secret intranet server names:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Submit and check certificates signed by non-standard root CAs"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"It is safe (and a good idea) to enable this option, unless you use an intrusive corporate network or Kaspersky antivirus software that monitors your browsing with a TLS proxy and a private root Certificate Authority. If enabled on such a network, this option might publish evidence of which https:// domains were being visited through that proxy, because of the unique certificates it would produce. So we leave it off by default."> - -<!ENTITY ssl-observatory.prefs.anonymous "Check certificates using Tor for anonymity"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Check certificates using Tor for anonymity (requires Tor)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"This option requires Tor to be installed and running"> - -<!ENTITY ssl-observatory.prefs.asn -'When you see a new certificate, tell the Observatory which ISP you are connected to'> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -'This will fetch and send the "Autonomous System number" of your network. This will help us locate attacks against HTTPS, and to determine whether we have observations from networks in places like Iran and Syria where attacks are comparatively common.'> - -<!ENTITY ssl-observatory.prefs.done "Done"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere can use EFF's SSL Observatory. This does two things: (1) -sends copies of HTTPS certificates to the Observatory, to help us -detect 'man in the middle' attacks and improve the Web's security; and (2) -lets us warn you about insecure connections or attacks on your browser."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"For example, when you visit https://www.something.com, the certificate -received by the Observatory will indicate that somebody visited -www.something.com, but not who visited the site, or what specific page they -looked at. Mouseover the options for further details:"> - -<!ENTITY ssl-observatory.prefs.hide "Hide advanced options"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Check certificates even if Tor is not available"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"We will still try to keep the data anonymous, but this option is less secure"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Submit and check certificates for non-public DNS names"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Unless this option is checked, the Observatory will not record certificates for names that it cannot resolve through the DNS system."> - -<!ENTITY ssl-observatory.prefs.show "Show advanced options"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory Preferences"> - -<!ENTITY ssl-observatory.prefs.use "Use the Observatory?"> -<!ENTITY ssl-observatory.warning.title "WARNING from EFF's SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "Show the certificate chain"> -<!ENTITY ssl-observatory.warning.okay "I understand"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory has issued a warning about the HTTPS certificiate(s) for this site:"> -<!ENTITY ssl-observatory.warning.defense "If you are logged in to this site, it may be advisable to change your password once you have a safe connection."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Submit and check self-signed certificates"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"This is recommended; cryptographic problems are especially common in self-signed embedded devices"> diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd deleted file mode 100644 index 70456d2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Acerca de HTTPS Everywhere (HTTPS en cualquier sitio)"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "¡Cifre la Web! Utilice automáticamente la seguridad HTTPS en muchos sitios."> -<!ENTITY https-everywhere.about.version "VersiĂłn"> -<!ENTITY https-everywhere.about.created_by "Creado por"> -<!ENTITY https-everywhere.about.librarians "Bibliotecarios de las reglas"> -<!ENTITY https-everywhere.about.thanks "Agradecimientos para"> -<!ENTITY https-everywhere.about.contribute "Si le agrada HTTPS Everywhere (HTTPS en cualquier sitio), podrĂa considerar"> -<!ENTITY https-everywhere.about.donate_tor "donar a Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "es"> -<!ENTITY https-everywhere.about.donate_eff "donar a la FundaciĂłn Fronteras ElectrĂłnicas (EFF)"> - -<!ENTITY https-everywhere.menu.about "Acerca de HTTPS Everywhere (HTTPS en cualquier sitio)"> -<!ENTITY https-everywhere.menu.observatory "Opciones del Observatorio SSL"> -<!ENTITY https-everywhere.menu.globalEnable "Activar HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Desactivar HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Preferencias de HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Habilitar todo"> -<!ENTITY https-everywhere.prefs.disable_all "Deshabilitar todo"> -<!ENTITY https-everywhere.prefs.reset_defaults "Restablecer configuraciones predeterminadas"> -<!ENTITY https-everywhere.prefs.search "Buscar"> -<!ENTITY https-everywhere.prefs.site "Sitio"> -<!ENTITY https-everywhere.prefs.notes "Notas"> -<!ENTITY https-everywhere.prefs.list_caption "ÂżQuĂ© reglas de redirecciĂłn HTTPS deberĂan aplicarse?"> -<!ENTITY https-everywhere.prefs.enabled "Habilitado"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Puede aprender a escribir sus propias reglas (para añadir soporte para otros sitios web)"> -<!ENTITY https-everywhere.prefs.here_link "aquĂ"> -<!ENTITY https-everywhere.prefs.toggle "Cambiar"> -<!ENTITY https-everywhere.prefs.reset_default "Restablecer configuraciĂłn predeterminada"> -<!ENTITY https-everywhere.prefs.view_xml_source "Ver cĂłdigo XML"> - -<!ENTITY https-everywhere.source.downloading "Descargando"> -<!ENTITY https-everywhere.source.filename "Nombre de fichero"> -<!ENTITY https-everywhere.source.unable_to_download "No fue posible descargar el cĂłdigo."> - -<!ENTITY https-everywhere.popup.title "NotificaciĂłn de HTTPS Everywhere 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "Uups. Está usted usando la versiĂłn estable de HTTPS Everywhere, pero podrĂamos haberle elevado accidentalmente a la versiĂłn de desarrollo al publicar la Ăşltima versiĂłn."> -<!ENTITY https-everywhere.popup.paragraph2 "ÂżLe gustarĂa volver a la versiĂłn estable?"> -<!ENTITY https-everywhere.popup.paragraph3 "Nos encantarĂa que continuase usando nuestra versiĂłn de desarrollo ¡y nos ayudara a hacer HTTPS Everywhere mejor! PodrĂa encontrar que hay unos pocos fallos más aquĂ y allá, de los que puede informar a 'https-everywhere@eff.org'. Disculpe la inconveniencia, y gracias por usar HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "MantĂ©nganme en la versiĂłn de desarrollo."> -<!ENTITY https-everywhere.popup.revert "Descargar la Ăşltima versiĂłn estable."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties deleted file mode 100644 index 8952158..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Activar HTTPS Everywhere -https-everywhere.menu.globalDisable = Desactivar HTTPS Everywhere -https-everywhere.menu.enableDisable = Habilitar/Deshabilitar reglas -https-everywhere.menu.noRules = (No hay reglas para esta página) -https-everywhere.menu.unknownRules = (No se conocen reglas para esta página) -https-everywhere.toolbar.hint = HTTPS Everywhere no está activo. Puede activarlo sitio por sitio haciendo clic en el icono de la barra de direcciones. -https-everywhere.migration.notification0 = Para implementar esta reparaciĂłn crucial, esta actualizaciĂłn restablece sus preferencias de reglas de HTTPS Everywhere a los valores predeterminados. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd deleted file mode 100644 index b5ded80..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Detalles e informaciĂłn de privacidad"> -<!ENTITY ssl-observatory.popup.later "Preguntarme luego"> -<!ENTITY ssl-observatory.popup.no "No"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere puede detectar ataques -contra su navegador enviando los certificados que reciba -al Observatorio. ÂżQuiere activarlo?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"ÂżDebe HTTPS Everywhere utilizar el Observatorio SSL?"> - -<!ENTITY ssl-observatory.popup.yes "SĂ"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Habilitar esto es seguro, a menos que use -una red corporativa muy intrusiva:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Seguro, a menos que use una red corporativa con nombres de servidores de intranet secretos:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"EnvĂa y verifica los certificados firmados por autoridades de certificaciĂłn raĂz (ACs/CAs) no standard"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Es seguro (y una buena idea) habilitar esta opciĂłn, a menos que utilice una red corporativa intrusiva o el software antivirus Kaspersky que monitoriza su navegaciĂłn con un proxy TLS y una Autoridad de CertificaciĂłn raĂz privada. Si se habilita en una red asĂ, esta opciĂłn podrĂa evidenciar quĂ© dominios https:// fueron visitados por medio de ese proxy, debido a los certificados Ăşnicos que producirĂa. Por ello viene desactivado por defecto."> - -<!ENTITY ssl-observatory.prefs.anonymous "Verificar certificados utilizando Tor para obtener anonimato"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Verificar certificados utilizando Tor para obtener anonimato (requiere Tor)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Esta opciĂłn precisa tener Tor instalado y ejecutandose"> - -<!ENTITY ssl-observatory.prefs.asn -"Al ver un nuevo certificado, comunicar al Observatorio a quĂ© ISP se está conectado"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Esto obtendrá y enviará el "nĂşmero de Sistema AutĂłnomo" (AS) de su red. Esto nos ayudará a ubicar ataques contra HTTPS, y a determinar si tenemos observaciones desde redes en lugares como Irán o Siria donde los ataques son comparativamente más comunes."> - -<!ENTITY ssl-observatory.prefs.done "Listo"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere puede utilizar el Observatorio SSL de EFF. Esto hace dos cosas: -(1) envĂa copias de los certificados HTTPS al Observatorio, para ayudarnos -a detectar ataques de 'hombre en el medio' (MitM) y mejorar la seguridad de la Web; y -(2) nos permite advertirle de conexiones inseguras o ataques sobre su navegador."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Por ejemplo, cuando visite https://www.algo.com, el certificado -recibido por el Observatorio indicará que alguien visitĂł -www.algo.com, pero no quiĂ©n visitĂł el sitio, o quĂ© página especĂfica -consultĂł. Pase el ratĂłn sobre las opciones para mayores detalles:"> - -<!ENTITY ssl-observatory.prefs.hide "Ocultar opciones avanzadas"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Verificar certificados incluso si Tor no está disponible"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"AĂşn trataremos de mantener anĂłnimos los datos, pero esta opciĂłn es menos segura"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Enviar y verificar certificados para nombres no pĂşblicados en DNS"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"A menos que esta opciĂłn estĂ© marcada, el Observatorio no registra certificados para nombres que no pueda resolver a travĂ©s de DNS."> - -<!ENTITY ssl-observatory.prefs.show "Mostrar opciones avanzadas"> - -<!ENTITY ssl-observatory.prefs.title "Opciones del Observatorio SSL"> - -<!ENTITY ssl-observatory.prefs.use "ÂżUtilizar el Observatorio?"> -<!ENTITY ssl-observatory.warning.title "ADVERTENCIA del Observatorio SSL de la EFF"> -<!ENTITY ssl-observatory.warning.showcert "Mostrar la cadena del certificado"> -<!ENTITY ssl-observatory.warning.okay "Entendido"> -<!ENTITY ssl-observatory.warning.text "El Observatorio SSL de la EFF ha emitido una advertencia sobre el(los) certificado(s) para este sitio:"> -<!ENTITY ssl-observatory.warning.defense "Si está autentificado en este sitio, serĂa aconsejable cambiar su contraseña una vez que se vuelva a autentificar de forma segura."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Enviar y verificar certificados auto-firmados"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Esto es recomendable; los problemas de cifrado son especialmente comunes en dispositivos embebidos auto-firmados"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd deleted file mode 100644 index bb7989c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "HTTPS Everywhere buruz"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Weba enkriptatu! Automatikoki erabili HTTPS segurtasuna leku askotan."> -<!ENTITY https-everywhere.about.version "Bertsioa"> -<!ENTITY https-everywhere.about.created_by "Sortzaileak"> -<!ENTITY https-everywhere.about.librarians "Arau-sorta Liburuzainak"> -<!ENTITY https-everywhere.about.thanks "Eskerrak"> -<!ENTITY https-everywhere.about.contribute "HTTPS Everywhere gustoko baduzu, kontutan har zenezake"> -<!ENTITY https-everywhere.about.donate_tor "Torera dohaintza eman"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "EFFra dohaintza eman"> - -<!ENTITY https-everywhere.menu.about "HTTPS Everywhere buruz"> -<!ENTITY https-everywhere.menu.observatory "SSL Behatokiaren Hobespenak"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere gaitu"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere ezgaitu"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Hobespenak"> -<!ENTITY https-everywhere.prefs.enable_all "Gaitu dena"> -<!ENTITY https-everywhere.prefs.disable_all "Ezgaitu dena"> -<!ENTITY https-everywhere.prefs.reset_defaults "Lehenetsiak berrezarri"> -<!ENTITY https-everywhere.prefs.search "Bilatu"> -<!ENTITY https-everywhere.prefs.site "Lekua"> -<!ENTITY https-everywhere.prefs.notes "Oharrak"> -<!ENTITY https-everywhere.prefs.list_caption "Zein HTTPS berbiderapen arau aplikatu beharko nituzke?"> -<!ENTITY https-everywhere.prefs.enabled "Gaituta"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Zure arau-sortak nola idatzi ikas dezakezu (beste webguneentzako laguntza gehitzeko)"> -<!ENTITY https-everywhere.prefs.here_link "hemen"> -<!ENTITY https-everywhere.prefs.toggle "Aldatu"> -<!ENTITY https-everywhere.prefs.reset_default "Lehenetsia berrezarri"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML Iturria ikusi"> - -<!ENTITY https-everywhere.source.downloading "Deskargatzen"> -<!ENTITY https-everywhere.source.filename "Fitxategi izena"> -<!ENTITY https-everywhere.source.unable_to_download "Ezin izan da iturria deskargatu"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties deleted file mode 100644 index 20460eb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhere gaitu -https-everywhere.menu.globalDisable = HTTPS Everywhere ezgaitu -https-everywhere.menu.enableDisable = Gaitu / Ezgaitu arauak -https-everywhere.menu.noRules = (Araurik ez gune honetarako) -https-everywhere.menu.unknownRules = (Gune honetarako arauak ezezagunak) -https-everywhere.toolbar.hint = HTTPS Everywhere aktibo dago orain. Gunez-gune bere egoera txandakatu dezakezu nabigazio tresna-barrako ikonoan sakatuz. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd deleted file mode 100644 index 2936b43..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd +++ /dev/null @@ -1,95 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Xehetasunak eta Pribatutasun Informazioa"> -<!ENTITY ssl-observatory.popup.later "Beranduago galdeidazu"> -<!ENTITY ssl-observatory.popup.no "Ez"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywherek zure nabigatzailearen aurkako erasoak antzeman ditzake jaso dituzun ziurtagiriak Behatokira bidaliz. Gaitu hau?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS Everywherek SSL Behatokia erabili beharko luke?"> - -<!ENTITY ssl-observatory.popup.yes "Bai"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Hau gaitzea segurua da, sare korporatibo oso intrusibo bat erabiltzen ez duzun bitartean:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Segurua, sare korporatibo bat intranet zerbitzari izen sekretuekin erabiltzen ez duzun bitartean:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"CA erro ez-estandarrek sinatutako ziurtagiriak egiaztatu eta aurkeztu"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Aukera hau gaitzea segurua (eta ideia ona) da, sare korporatibo intrusibo bat edo TLS proxy batekin eta Ziurtagiri Aginpide erro pribatu batekin zure nabigazioa jarraitzen duen Kaspersky antibirus softwarea erabiltzen ez duzun bitartean. Horrelako sare batean gaitzen baduzu, aukera honek proxy horren bitartez zein https:// domeinu bisitatu diren argitara dezake, sortuko dituen ziurtagiri bakarrengatik. Beraz itzalita uztea lehentsi dugu."> - -<!ENTITY ssl-observatory.prefs.anonymous "Egiaztatu ziurtagiriak Tor anonimotasunerako erabiliz"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Egiaztatu ziurtagiriak Tor anonimotasunerako erabiliz (Torbutton behar du)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Aukera honek Tor eta Torbutton instalatuta izatea behar du"> - -<!ENTITY ssl-observatory.prefs.asn -"Ziurtagiri berri bat ikusten duzunean, Behatokiari zein ISPra konektatuta zauden esan"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Honek zure sarearen "Sistema Autonomo zenbakia" lortu eta bidaliko du. Hau HTTPSren aurkako erasoak aurkitzen lagunduko gaitu, eta erasoak konparatiboki arruntak diren Iran eta Siria bezalako lekuetan behaketak ditugun zehaztu."> - -<!ENTITY ssl-observatory.prefs.done "Eginda"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywherek EFFren SSL Behatokia erabili dezake. Honek bi gauza egiten ditu: (1) -HTTPS ziurtagirien kopiak Behatokira bidaltzen ditu, 'man in the middle' erasoak detektatzen eta Webguneen segurtasuna hobetzen lagun gaitzan; eta (2) -seguruak ez diren konexioetaz edo zure nabigatzailearen aurkako erasoetaz abisa zaitzagun baimentzen digu."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Esate baterako, https://www.zerbait.com bisitatzen duzunean, Behatokiak jasotzen duen ziurtagiriak - norbait www.zerbait.com bisitatu duela adieraziko du, baina ez nork bisitatu duen, edo zehazki zein orri ikusi duen. -Xehetasun gehiagorako pasa ezazu sagua aukeren gainetik:"> - -<!ENTITY ssl-observatory.prefs.hide "Aukera aurreratuak ezkutatu"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Ziurtagiriak egiaztatu Tor eskuragarri ez badago ere"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Oraindik datuak anonimoki mantentzen saiatuko gara, baina aukera hau ez da hain segurua"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"DNS izen ez-publikoentzako ziurtagiriak egiaztatu eta aurkeztu"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Aukera hau gaituta ez dagoen bitartean, Behatokiak DNS sistemaren bitartez ebatzi ezin dituen izenentzako ziurtagiriak ez ditu erregistraruko."> - -<!ENTITY ssl-observatory.prefs.show "Aukera aurreratuak erakutsi"> - -<!ENTITY ssl-observatory.prefs.title "SSL Behatokiaren Hobespenak"> - -<!ENTITY ssl-observatory.prefs.use "Behatokia erabili?"> -<!ENTITY ssl-observatory.warning.title "EFFren SSL Behatokiaren ABISUA"> -<!ENTITY ssl-observatory.warning.showcert "Ziurtagiri katea erakutsi"> -<!ENTITY ssl-observatory.warning.okay "Ulertzen dut"> -<!ENTITY ssl-observatory.warning.text "EFFren SSL Behatokiak leku honen HTTPS ziurtagiri(ar)entzako abisua igorri du:"> -<!ENTITY ssl-observatory.warning.defense "Leku honetan saioa hasi baduzu, konexio seguru bat duzunean zure pasahitza aldatzea komeni da."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Bidali eta egiaztatu norberak-sinatutako ziurtagiriak"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Hau gomendatzen da; arazo kriptografikoak norberak-sinatutako kapsulatutako gailuetan bereziki arruntak dira"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd deleted file mode 100644 index 75ea17f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "درباره‌ی HTTPS همه‌جا"> -<!ENTITY https-everywhere.about.ext_name "HTTPS همه‌جا"> -<!ENTITY https-everywhere.about.ext_description "Ůب را رمزگذاری کنید! از امنیت HTTPS بصŮرت Ř®Ůدکار برای بسیاری از Ůب‌سایت‌ها استŮاده کنید."> -<!ENTITY https-everywhere.about.version "نسخه"> -<!ENTITY https-everywhere.about.created_by "نŮشته‌شده ŘŞŮسط"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "با تشکر از"> -<!ENTITY https-everywhere.about.contribute "اگر شما از HTTPS همه‌جا راضی هستید، پیشنهاد می‌کنیم"> -<!ENTITY https-everywhere.about.donate_tor "به Tor Ú©Ů…Ú© مالی کنید."> -<!ENTITY https-everywhere.about.tor_lang_code "fa"> -<!ENTITY https-everywhere.about.donate_eff "به EFF Ú©Ů…Ú© مالی کنید."> - -<!ENTITY https-everywhere.menu.about "درباره‌ی HTTPS همه‌جا"> -<!ENTITY https-everywhere.menu.observatory "تنظیم‌های رصدخانه‌ی SSL"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS همه‌جا را Ůعال کنید"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS همه‌جا را غیرŮعال کنید"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "تنظیم‌های HTTPS همه‌جا"> -<!ENTITY https-everywhere.prefs.enable_all "همه‌ی Ů…Ůارد را Ůعال کنید"> -<!ENTITY https-everywhere.prefs.disable_all "همه‌ی Ů…Ůارد را غیرŮعال کنید"> -<!ENTITY https-everywhere.prefs.reset_defaults "بازگشت به تنظیم‌های اŮلیه"> -<!ENTITY https-everywhere.prefs.search "جستجŮ"> -<!ENTITY https-everywhere.prefs.site "Ůب‌سایت"> -<!ENTITY https-everywhere.prefs.notes "یادداشت‌ها"> -<!ENTITY https-everywhere.prefs.list_caption "کدام رŮال‌های تغییر مسیر HTTPS باید اعمال Ř´Ůند؟"> -<!ENTITY https-everywhere.prefs.enabled "Ůعال"> -<!ENTITY https-everywhere.prefs.ruleset_howto "شما می‌تŮانید یادبگیرید که مجمŮعه رŮال‌های Ř®ŮŘŻ را بنŮیسید (تا از Ůب‌سایت‌های دیگر پشتیبانی کنید)"> -<!ENTITY https-everywhere.prefs.here_link "اینجا"> -<!ENTITY https-everywhere.prefs.toggle "تغییر"> -<!ENTITY https-everywhere.prefs.reset_default "بازگشت به تنظیم‌های اŮلیه"> -<!ENTITY https-everywhere.prefs.view_xml_source "مشاهده منبع XML"> - -<!ENTITY https-everywhere.source.downloading "در Řال دانلŮŘŻ"> -<!ENTITY https-everywhere.source.filename "نام Ůایل"> -<!ENTITY https-everywhere.source.unable_to_download "امکان دانلŮŘŻ منبع ŮجŮŘŻ ندارد."> - -<!ENTITY https-everywhere.popup.title "آگهی از همه جا HTTPS نسخه 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "اŮه! شما از نسخه پایدار «همه جا HTTPS» استŮاده Ů…ŰŚ کردید، اما اŘتمالا ما به Ř·Ůر تصادŮŰŚ در Řین آخرین انتشار، شما را به نسخه در Řال ŘŞŮسعه ارتقا دادیم. "> -<!ENTITY https-everywhere.popup.paragraph2 "آیا مایلید به نسخه‌ی پایدار بازگردید؟"> -<!ENTITY https-everywhere.popup.paragraph3 "ما Ř®ŮŘ´Řال Ů…ŰŚ Ř´ŮŰŚŮ… اگر شما همچنان از آخرین نسخه‌ی در Řال ŘŞŮسعه منتشر شده ما استŮاده کنید! شاید اینجا ٠آنجا به ŰŚÚ©ŰŚ ŘŻŮ Ů…Ř´Ú©Ů„ برخŮرد کنید که Ů…ŰŚ ŘŞŮانید آنها را به آدرس https-everywhere@eff.org اطلاع دهید. با عرض ŮľŮزش به خاطر مشکلات اŘتمالی ٠با تشکر به خاطر استŮاده از «همه جا HTTPS»."> -<!ENTITY https-everywhere.popup.keep "آخرین نسخه پایدار را داŮنلŮŘŻ کن"> -<!ENTITY https-everywhere.popup.revert "آخرین نسخه پایدار را داŮنلŮŘŻ کن"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties deleted file mode 100644 index 7e7959c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS همه‌جا را Ůعال کنید -https-everywhere.menu.globalDisable = HTTPS همه‌جا را غیرŮعال کنید -https-everywhere.menu.enableDisable = Ůعال/غیر Ůعال کردن Ů‚Ůانین -https-everywhere.menu.noRules = (هیچ قانŮنی برای این صŮŘه ŮجŮŘŻ ندارد) -https-everywhere.menu.unknownRules = (Ů‚Ůانین مربŮŘ· به این صŮŘه ناشناخته است) -https-everywhere.toolbar.hint = HTTPS همه‌جا Ůعال Ř´ŘŻ. می‌تŮانید آن را برای هر سایتی که Ř®Ůاستید Ůعال یا غیرŮعال کنید. کاŮیست رŮŰŚ نمایه آن در نŮار آدرس کلیک کنید. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd deleted file mode 100644 index 3bec572..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd +++ /dev/null @@ -1,91 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "جزییات Ů ŘŮظ Řریم شخصی"> -<!ENTITY ssl-observatory.popup.later "بعدا بپرس"> -<!ENTITY ssl-observatory.popup.no "خیر"> - -<!ENTITY ssl-observatory.popup.text "HTTPS همه‌جا می‌تŮاند جمله به مرŮرگر شما را از طریق ارسال ÚŻŮاهینامه‌هایی که شما دریاŮŘŞ می‌کنید به رصدگر کش٠کند. آیا می‌خŮاهید این امکان Ůعال Ř´ŮŘŻŘź"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"آیا HTTPS همه‌جا باید از رصدگر SSL استŮاده کند؟"> - -<!ENTITY ssl-observatory.popup.yes "بله"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Ůعال‌کردن این گزینه امن است، مگر این‌که شما از ŰŚÚ© شبکه‌ی کاری با درجه‌ی نظارت بالا استŮاده کنید:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"امن، مگر اینکه شما از ŰŚÚ© شبکه‌ی کاری با نام‌های Ů…Ř®ŮŰŚ در شبکه‌ی داخلی استŮاده کنید:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"ÚŻŮاهینامه‌های امضا شده ŘŞŮسط نهادهای تایید (CA) غیراستاندارد را برای بررسی ارسال کنید. "> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"این ŰŚÚ© انتخاب امن (Ů ŰŚÚ© پیشنهاد Ř®Ůب) است که شما این گزینه را Ůعال کنید، مگر اینکه شما از ŰŚÚ© شبکه‌ی کاری با درجه‌ی نظارت بالا استŮاده کنید یا نرم‌اŮزار ضدŮیرŮŘł کاسپرسکی، که رŮتار شما رŮŰŚ Ůب را به‌کمک TLS proxy Ů ŰŚÚ© نهاد تایید (CA) خصŮصی بازرسی می‌کند، رŮŰŚ کامپیŮتر شما نصب شده‌باشد. اگر رŮŰŚ شبکه‌ای مانند آن‌چه ÚŻŮته‌شد قرار دارید، این گزینه می‌تŮانند این تصŮر را ایجاد کند که آدرس‌های https:// از طریق ŰŚÚ© پرŮکسی باز شده‌اند. این به‌دلیل ÚŻŮاهینامه‌های منŘصربه‌Ůردی است که در این Ůرایند ŘŞŮلید می‌شŮند. بنابراین، ما این گزینه را بصŮرت پیشنهاده خامŮŘ´ کرده‌ایم."> - -<!ENTITY ssl-observatory.prefs.anonymous "استŮاده از Tor برای Ů…Ř®ŮŰŚ کردن هŮŰŚŘŞ در زمان آزمایش ÚŻŮاهینامه"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"استŮاده از Tor برای Ů…Ř®ŮŰŚ کردن هŮŰŚŘŞ در زمان آزمایش ÚŻŮاهینامه (نیاز به Torbutton دارد)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"برای استŮاده از این امکان لازم است Tor Ů Torbutton نصب شده‌باشند"> - -<!ENTITY ssl-observatory.prefs.asn -"ارسال نام ISPŰŚ که ارتباط را ایجاد کرده است به رصدگر زمانی که ŰŚÚ© ÚŻŮاهینامه‌ی جدید دیده Ř´ŘŻ"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"این گزینه Ů…ŘŘŞŮای Autonomous System number شما را بازیابی کرده ٠ارسال Ř®Ůاهد کرد. این اطلاع به ما Ú©Ů…Ú© Ř®Ůاهد کرد که Řمله علیه HTTPS را مکان‌یابی کنیم ٠از این طریق ما Ř®Ůاهیم دانست که آیا این مشاهدات به شبکه‌هایی در مناطقی نظیر ایران Ů ŘłŮریه مربŮŘ· هستند یا خیر. Řملاتی نظیر آنچه ÚŻŮته‌شد در این مناطق نسبتا معمŮŮ„ هستند."> - -<!ENTITY ssl-observatory.prefs.done "انجام Ř´ŘŻ"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS همه‌جا می‌تŮاند از رصدگر SSLŰŚ که ŘŞŮسط EFF اداره می‌شŮŘŻ استŮاده کند. این امکان منتهی به د٠اقدام می‌شŮŘŻ. ۱- به این‌ترتیب نسخه‌هایی از ÚŻŮاهینامه‌های HTTPS به رصدگر Ůرستاده می‌شŮند. این مساله به ما این امکان را می‌دهد که Řملات «مردی در میان» را کش٠کنیم ٠به این‌ترتیب به امنیت Ůب Ú©Ů…Ú© کنیم. ۲- ما این امکان را Ř®Ůاهیم داشت که به شما درباره‌ی ارتباطات ناامن یا Řملات به مرŮرگر شما هشدار بدهیم."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"برای مثال، زمانی که شما صŮŘه‌ی https://www.something.com را بازدید می‌کنید، ÚŻŮاهینامه‌ای که برای رصدگر ارسال می‌شŮŘŻ نشان Ř®Ůاهد داد که کسی از www.something.com بازدید کرده‌است، اما اینکه دقیقا چه‌کسی یا از چه صŮŘه‌ای بازدید کرده‌است برای رصدگر دانسته نخŮاهد بŮŘŻ. Ů…ŮŘ´Ůاره‌ را رŮŰŚ این گزینه ببرید تا اطلاعات بیشتری در این زمینه بگیرید:"> - -<!ENTITY ssl-observatory.prefs.hide "Ů…Ř®Ůی‌کردن گزینه‌های پیشرŮته"> - -<!ENTITY ssl-observatory.prefs.nonanon -"آزمایش ÚŻŮاهینامه ŘŘŞŰŚ اگر Tor نیز نصب نشده‌باشد"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"ما هم‌چنان تلاش Ř®Ůاهیم کرد که اطلاعات شما را Ů…Řرمانه نگه‌داریم، اما این گزینه امنیت کمتری دارد"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"ارسال ٠آزمایش ÚŻŮاهینامه‌ی برای نام‌های DNS غیرعمŮŮ…ŰŚ"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"اگر این گزینه انتخاب نشده‌باشد، رصدگر اطلاعات ÚŻŮاهینامه‌هایی که نام آن‌ها از طریق DNS تعیین‌تکلی٠نشŮŘŻ را ذخیره نخŮاهد کرد."> - -<!ENTITY ssl-observatory.prefs.show "نمایش گزینه‌های پیشرŮته"> - -<!ENTITY ssl-observatory.prefs.title "تنظیم‌های رصدگر SSL"> - -<!ENTITY ssl-observatory.prefs.use "آیا باید از رصدگر استŮاده Ř´ŮŘŻŘź"> -<!ENTITY ssl-observatory.warning.title "هشدار از رصدگر SSLŰŚ که ŘŞŮسط EFF اداره می‌شŮŘŻ"> -<!ENTITY ssl-observatory.warning.showcert "نمایش زنجیره‌ی ÚŻŮاهینامه"> -<!ENTITY ssl-observatory.warning.okay "می‌Ůهمم"> -<!ENTITY ssl-observatory.warning.text "رصدگر SSLŰŚ که ŘŞŮسط EFF اداره می‌شŮŘŻ برای ÚŻŮاهینامه(ها)ŰŚ HTTPS این Ůب‌سایت هشدار صادر کرده‌است:"> -<!ENTITY ssl-observatory.warning.defense "اگر شما در این Ůب‌سایت لاگین کرده‌اید، پیشنهاد می‌کنیم که زمانی که با ŰŚÚ© اتصال امن Ůارد Ř´ŘŻŰŚŘŻ رمز ŮرŮŘŻ Ř®ŮŘŻ را تغییر دهید."> - -<!ENTITY ssl-observatory.prefs.self_signed -"ارسال Ů ÚŻŮاهینامه های Ř®ŮŘŻ-امضا را بررسی کن"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"این پیشنهاد میشه؛ مشکلات رمزنگاری بŮŰŚÚه در دستگاههای تعبیه شده Ř®ŮŘŻ-امضا رایج هستند"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd deleted file mode 100644 index 91da15b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Tietoja HTTPS Everywheresta"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Salaa Web! Käytä automaattisesti HTTPS-suojausta useilla sivustoilla."> -<!ENTITY https-everywhere.about.version "Versio"> -<!ENTITY https-everywhere.about.created_by "Tekijät"> -<!ENTITY https-everywhere.about.librarians "Sääntöjen hallinnoijat"> -<!ENTITY https-everywhere.about.thanks "Kiitokset"> -<!ENTITY https-everywhere.about.contribute "Jos pidät HTTPS Everywheresta, sinun on mahdollista"> -<!ENTITY https-everywhere.about.donate_tor "lahjoittaa Torille"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "lahjoittaa EFFille"> - -<!ENTITY https-everywhere.menu.about "Tietoja HTTPS Everywheresta"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatoryn asetukset"> -<!ENTITY https-everywhere.menu.globalEnable "Ota HTTPS Everywhere käyttöön"> -<!ENTITY https-everywhere.menu.globalDisable "Poista HTTPS Everywhere käytöstä"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywheren asetukset"> -<!ENTITY https-everywhere.prefs.enable_all "Ota kaikki käyttöön"> -<!ENTITY https-everywhere.prefs.disable_all "Poista kaikki käytöstä"> -<!ENTITY https-everywhere.prefs.reset_defaults "Palauta oletusarvoihin"> -<!ENTITY https-everywhere.prefs.search "Hae"> -<!ENTITY https-everywhere.prefs.site "Sivusto"> -<!ENTITY https-everywhere.prefs.notes "Huomautus"> -<!ENTITY https-everywhere.prefs.list_caption "Mitä HTTPS-uudelleenohjauksia tulisi käyttää?"> -<!ENTITY https-everywhere.prefs.enabled "Käytössä"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Voit opetella kirjoittamaan omia sääntöjäsi (laajentaaksesi muiden sivustojen tukea)"> -<!ENTITY https-everywhere.prefs.here_link "täällä"> -<!ENTITY https-everywhere.prefs.toggle "Vaihda tilaa"> -<!ENTITY https-everywhere.prefs.reset_default "Palauta oletusasetus"> -<!ENTITY https-everywhere.prefs.view_xml_source "Katso XML-lähde"> - -<!ENTITY https-everywhere.source.downloading "Ladataan"> -<!ENTITY https-everywhere.source.filename "Tiedostonimi"> -<!ENTITY https-everywhere.source.unable_to_download "Lähteen lataaminen epäonnistui."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties deleted file mode 100644 index ada876f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Ota HTTPS Everywhere käyttöön -https-everywhere.menu.globalDisable = Poista HTTPS Everywhere käytöstä -https-everywhere.menu.enableDisable = Ota sääntöjä käyttöön / poista käytöstä -https-everywhere.menu.noRules = (Tälle sivulle ei ole sääntöjä) -https-everywhere.menu.unknownRules = (Sivun sääntöä ei tunnistettu) -https-everywhere.toolbar.hint = HTTPS Everywhere on käytössä. Voit valita, millä sivustoilla ohjelmaa käytetään, kun napsautat osoiterivissä olevaa kuvaketta. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd deleted file mode 100644 index 2d53a25..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd +++ /dev/null @@ -1,91 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Lisä- ja yksityisyystiedot"> -<!ENTITY ssl-observatory.popup.later "Kysy myöhemmin"> -<!ENTITY ssl-observatory.popup.no "Ei"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere voi tunnistaa selaimeen kohdistuvat hyökkäykset lähettämällä varmenteet Observatoryyn. Otetaanko toiminto käyttöön?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Tulisiko HTTPS Everywheren käyttää SSL Observatorya?"> - -<!ENTITY ssl-observatory.popup.yes "Kyllä"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Käyttöön ottaminen on turvallista, jos et käytä hyvin tunkeilevaa yritysverkkoa:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Turvallista, jos et käytä yritysverkkoa, jonka intranetin palvelinten nimet on salattu:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Lähetä ja tarkista varmenteet, jotka on allekirjoittanut epävirallinen päämyöntäjä"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"On turvallista (ja hyvä idea) valita tämä, jos et käytä tunkeilevaa yritysverkkoa tai Kasperskyn viruksentorjuntaohjelmaa, joka seuraa selaamista TLS-välipalvelimen ja yksityisen varmenteen päämyöntäjän avulla. Tällaisessa verkossa tämä asetus voi antaa vihjeitä siitä, missä HTTPS-verkkotunnuksissa välipalvelimen avulla on vierailtu. Vihjeiden syynä ovat niiden tuottamat ainutlaatuiset varmenteet. Tästä syystä valinta ei ole päällä oletusasetuksena."> - -<!ENTITY ssl-observatory.prefs.anonymous "Tarkista varmenteet anonyymisti Torilla"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Tarkista varmenteet anonyymisti Torilla (vaatii Torin)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Tämä valinta edellyttää, että Tor on asennettu ja käytössä."> - -<!ENTITY ssl-observatory.prefs.asn -"Kun näet uuden varmenteen, kerro Observatorylle, mihin palveluntarjoajaan olet yhteydessä"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Tämä noutaa ja lähettää verkkosi autonomisen järjestelmän numerotunnuksen (ASN). Näin pystymme paikantamaan HTTPS:ään kohdistuvat hyökkäykset ja voimme selvittää, ovatko havainnot Iranin ja Syyrian kaltaisten alueiden verkoista, joissa hyökkäykset ovat yleisiä."> - -<!ENTITY ssl-observatory.prefs.done "Valmis"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere voi hyödyntää EFFin SSL Observatorya. Sillä on kaksi tehtävää: (1) Se lähettää HTTPS-varmenteiden kopiot Observatoryyn, jotta pystyisimme tunnistamaan epärehellisen välittäjän (MitM) hyökkäykset ja edistämään WWW:n turvallisuutta. (2) Sen avulla voimme varoittaa sinua turvattomista yhteyksistä ja selaimeen kohdistuvista hyökkäyksistä."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Jos esimerkiksi käyt sivustolla https://www.something.com, Observatoryn vastaanottama varmenne kertoo, että joku on vieraillut osoitteessa www.something.com. Varmenne ei kuitenkaan kerro, kuka on käynyt sivustolla ja mitä tiettyjä sivuja on katseltu. Saat lisätietoja, kun kohdistat hiiren osoittimen valinnan päälle:"> - -<!ENTITY ssl-observatory.prefs.hide "Piilota lisäasetukset"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Tarkista varmenteet, vaikka Tor ei ole käytössä"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Yritämme pitää tiedot nimettömänä, mutta tämä valinta on aina turvattomampi."> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Lähetä ja tarkista yksityisten DNS-nimien varmenteet"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Jos tätä valintaa ei ole valittu, Observatory ei kerää varmenteita, joiden nimiä se ei pysty selvittämään nimipalvelujärjestelmällä (DNS)."> - -<!ENTITY ssl-observatory.prefs.show "Näytä lisäasetukset"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatoryn asetukset"> - -<!ENTITY ssl-observatory.prefs.use "Käytä Observatorya?"> -<!ENTITY ssl-observatory.warning.title "VAROITUS EFFin SSL Observatorylta"> -<!ENTITY ssl-observatory.warning.showcert "Näytä palvelimen varmenneketju"> -<!ENTITY ssl-observatory.warning.okay "Ymmärrän"> -<!ENTITY ssl-observatory.warning.text "EFFin SSL Observatory on varoittanut tämän sivuston yhdestä tai useammasta HTTPS-varmenteesta:"> -<!ENTITY ssl-observatory.warning.defense "Jos olet kirjautunut sivustolle, voi olla suositeltavaa vaihtaa salasana, sitten kun käytössäsi on turvallinen yhteys."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Lähetä ja tarkista sivuston itsensä allekirjoittama varmenne"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Tämä on suositeltavaa. Salaukseen liittyvät ongelmat ovat hyvin yleisiä itsensä allekirjoittaneissa sulautetuissa järjestelmissä."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd deleted file mode 100644 index bae723d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Ă€ propos de HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Chiffrer le Web ! Utilisez HTTPS automatiquement avec de nombreux sites."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Créé par"> -<!ENTITY https-everywhere.about.librarians "BibliothĂ©caires de règles"> -<!ENTITY https-everywhere.about.thanks "Merci Ă "> -<!ENTITY https-everywhere.about.contribute "Si vous aimez HTTPS Everywhere, vous pouvez"> -<!ENTITY https-everywhere.about.donate_tor "Donner Ă Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Donner Ă l'EFF"> - -<!ENTITY https-everywhere.menu.about "Ă€ propos de HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "PrĂ©fĂ©rences de l'Observatoire SSL "> -<!ENTITY https-everywhere.menu.globalEnable "Activer HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "DĂ©sactiver HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "PrĂ©fĂ©rences de HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Tout activer"> -<!ENTITY https-everywhere.prefs.disable_all "Tout dĂ©sactiver"> -<!ENTITY https-everywhere.prefs.reset_defaults "Revenir aux paramètres par dĂ©faut"> -<!ENTITY https-everywhere.prefs.search "Recherche"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Notes"> -<!ENTITY https-everywhere.prefs.list_caption "Quelles règles de redirection HTTPS devraient s'appliquer ?"> -<!ENTITY https-everywhere.prefs.enabled "ActivĂ©"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Vous pouvez apprendre Ă rĂ©diger vos propres règles de redirection (pour la prise en charge d'autres sites Internet)"> -<!ENTITY https-everywhere.prefs.here_link "Ici"> -<!ENTITY https-everywhere.prefs.toggle "Retour"> -<!ENTITY https-everywhere.prefs.reset_default "Revenir aux paramètres par dĂ©faut."> -<!ENTITY https-everywhere.prefs.view_xml_source "Regarder le code source XML"> - -<!ENTITY https-everywhere.source.downloading "TelĂ©charger"> -<!ENTITY https-everywhere.source.filename "Nom du fichier"> -<!ENTITY https-everywhere.source.unable_to_download "Impossible de tĂ©lĂ©charger le code source."> - -<!ENTITY https-everywhere.popup.title "Notification de HTTPS Everywhere 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "Oups. Vous utilisiez la version stable de HTTPS Everywhere, mais notre dernière version a pu accidentellement effectuer la mise Ă jour vers la version de dĂ©veloppement."> -<!ENTITY https-everywhere.popup.paragraph2 "Est-ce que vous souhaitez revenir vers la version stable ?"> -<!ENTITY https-everywhere.popup.paragraph3 "Nous aimerions vous voir continuer Ă utiliser notre version de dĂ©veloppement et Ă nous aider Ă amĂ©liorer HTTPS Everywhere ! Vous allez peut-ĂŞtre trouver des bugs ça et lĂ , que vous pouvez rapporter (en anglais) en Ă©crivant Ă https-everywhere@eff.org. DĂ©solĂ© pour le dĂ©rangement, et merci d'utiliser HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Rester sur la version de dĂ©veloppement"> -<!ENTITY https-everywhere.popup.revert "TĂ©lĂ©charger la dernière version stable"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties deleted file mode 100644 index a64e511..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Activer HTTPS Everywhere -https-everywhere.menu.globalDisable = DĂ©sactiver HTTPS Everywhere -https-everywhere.menu.enableDisable = Activer / DĂ©sactiver les règles -https-everywhere.menu.noRules = (Aucune règle pour cette page) -https-everywhere.menu.unknownRules = (Règles inconnues pour cette page) -https-everywhere.toolbar.hint = HTTPS Everywhere est dĂ©sormais actif. Vous pouvez l'activer sur les sites au cas par cas en cliquant sur l'icĂ´ne dans la barre d'adresse. -https-everywhere.migration.notification0 = Afin d'appliquer un correctif crucial, cette mise Ă jour rĂ©initialise vos règles de prĂ©fĂ©rences HTTPS Everywhere, Ă leurs valeurs par dĂ©faut. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd deleted file mode 100644 index 0d4d394..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd +++ /dev/null @@ -1,90 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Informations relatives Ă la vie privĂ©e"> -<!ENTITY ssl-observatory.popup.later "Plus tard"> -<!ENTITY ssl-observatory.popup.no "Non"> - -<!ENTITY ssl-observatory.popup.text " HTTPS Everywhere peut dĂ©tecter les attaques contre votre navigateur en adressant les certificats reçus Ă l'Observatoire. Souhaitez-vous activer cette fonctionnalitĂ© ?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Activer l'usage de l'Observatoire SSL par HTTPS Everywhere ?"> - -<!ENTITY ssl-observatory.popup.yes "Oui"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Cette option est sĂ©curisĂ©e, sauf si vous vous connectez via un rĂ©seau d'entreprise très intrusif :"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Cette option est sĂ©curisĂ©e, sauf si vous passez par un rĂ©seau d'entreprise qui comporte des serveurs Intranet masquĂ©s :"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Soumettre et vĂ©rifier les certificats signĂ©s par des autoritĂ©s inhabituelles"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -" Il est sĂ»r (et c'est une bonne idĂ©e) d'activer cette option, sauf si vous utilisez un rĂ©seau d'entreprise intrusif ou le logiciel antivirus Kaspersky qui surveille votre navigation avec un proxy TLS et une autoritĂ© racine privĂ©e du certificat. Si elle est activĂ©e sur un tel rĂ©seau, cette option pourrait publier des preuves que tel ou tel domaine a Ă©tĂ© visitĂ© en https:// Ă travers ce proxy, Ă cause des certificats uniques qu'elle produirait. Nous la dĂ©sactivons donc par dĂ©faut"> - -<!ENTITY ssl-observatory.prefs.anonymous "VĂ©rifier les certificats et utiliser l'outil d'anonymat TOR"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"VĂ©rifier les certificats et utiliser l'outil d'anonymat TOR (installation du TORbutton indispensable)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Cette option requiert l'installation de TOR et du Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"Quand vous voyez un nouveau certificat, indiquez Ă l'Observatoire quel FAI vous utilisez maintenant."> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Cette option rĂ©cupĂ©rera et rapportera le « Autonomous System number » de votre rĂ©seau. Cela nous aidera Ă localiser les attaques contre HTTPS, et savoir si nous avons des observations Ă partir de rĂ©seaux dans des pays comme l'Iran et la Syrie oĂą ces attaques sont frĂ©quentes."> - -<!ENTITY ssl-observatory.prefs.done "OK"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere peut Ă©galement faire appel Ă l'Observatoire SSL de l'EFF. Cela permet deux choses: (1) -cela adresse les copies des certificats HTTPS Ă l'Observatoire, ce qui permet de dĂ©tecter les attaques de type Homme du milieu et d'amĂ©liorer la sĂ©curitĂ© globale de l'Internet ; et (2) -cela nous permet de mieux vous informer quant aux connexions non sĂ©curisĂ©es et aux attaques sur votre navigateur."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Par exemple, si vous visitez https://www.something.com, le certificat reçu par l'Observatoire indiquera que quelqu'un a visitĂ© -www.something.com, mais pas qui a visitĂ© le site, ou quelle page a Ă©tĂ© lue. Passez votre souris sur les options pour plus d'informations:"> - -<!ENTITY ssl-observatory.prefs.hide "Cacher les options avancĂ©es"> - -<!ENTITY ssl-observatory.prefs.nonanon -"VĂ©rifier les certificats mĂŞme si TOR n'est pas disponible"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Nous essaierons toujours de faire en sorte que les donnĂ©es restent confidentielles, mais cette option est moins sĂ©curisĂ©e"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Soumettre et vĂ©rifier les certificats des DNS privĂ©s"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Si cette option est activĂ©e, l'Observatoire conservera les certificats des domaines qui ne peuvent ĂŞtre rĂ©solus par le système DNS public"> - -<!ENTITY ssl-observatory.prefs.show "Options avancĂ©es"> - -<!ENTITY ssl-observatory.prefs.title "PrĂ©fĂ©rences de l'Observatoire SSL"> - -<!ENTITY ssl-observatory.prefs.use "Utiliser l'Observatoire ?"> -<!ENTITY ssl-observatory.warning.title "Avertissement de l'Observatoire SSL"> -<!ENTITY ssl-observatory.warning.showcert "Montrer l'empreinte du certificat"> -<!ENTITY ssl-observatory.warning.okay "Je comprends"> -<!ENTITY ssl-observatory.warning.text "L'Observatoire SSL de l'EFF a publiĂ© un avertissement sur les certificats SSL Ă©mis par ce site :"> -<!ENTITY ssl-observatory.warning.defense "Si vous vous ĂŞtes connectĂ© Ă ce site, vous devriez changer de mot de passe dès que vous retrouvez une connexion sĂ©curisĂ©e."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Envoyer et vĂ©rifier des certificats auto-signĂ©s"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Ceci est recommandĂ© ; les problèmes cryptographiques sont particulièrement frĂ©quents dans les systèmes embarquĂ©s auto-signĂ©s"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd deleted file mode 100644 index dd33377..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "×ודות HTTPS בכל מקום"> -<!ENTITY https-everywhere.about.ext_name "HTTPS בכל מקום"> -<!ENTITY https-everywhere.about.ext_description "הצפן ×ת הרשת! השתמש ב-HTTPS ×ו×ומ×ית"> -<!ENTITY https-everywhere.about.version "גרסה"> -<!ENTITY https-everywhere.about.created_by "× ×‘× ×” על ידי"> -<!ENTITY https-everywhere.about.librarians "×ˇ×¤×¨× ×™ מערכת כללים"> -<!ENTITY https-everywhere.about.thanks "תודות ל"> -<!ENTITY https-everywhere.about.contribute "×ם ×הבת ×ת HTTPS בכל מקום, ×ולי תרצה"> -<!ENTITY https-everywhere.about.donate_tor "לתרום ל-Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "×× ×’×ś×™×Ş"> -<!ENTITY https-everywhere.about.donate_eff "תרומה לEFF"> - -<!ENTITY https-everywhere.menu.about "×ודות HTTPS בכל מקום"> -<!ENTITY https-everywhere.menu.observatory "העדפות SSL Observatory"> -<!ENTITY https-everywhere.menu.globalEnable "הפעל ×ת HTTPS בכל מקום"> -<!ENTITY https-everywhere.menu.globalDisable "השבת ×ת HTTPS בכל מקום"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "הגדרות HTTPS בכל מקום"> -<!ENTITY https-everywhere.prefs.enable_all "הפעל הכל"> -<!ENTITY https-everywhere.prefs.disable_all "השבת הכל"> -<!ENTITY https-everywhere.prefs.reset_defaults "×יפוס לברירת מחדל"> -<!ENTITY https-everywhere.prefs.search "חפש"> -<!ENTITY https-everywhere.prefs.site "×תר"> -<!ENTITY https-everywhere.prefs.notes "פתקים"> -<!ENTITY https-everywhere.prefs.list_caption "×ילו הגדרות × ×™×Ş×•×‘ HTTPS ליישם?"> -<!ENTITY https-everywhere.prefs.enabled "פועל"> -<!ENTITY https-everywhere.prefs.ruleset_howto "×תה יכול ללמוד ×יך לכתוב rulesets משלך (להוספת תמיכה ב×תרי ××™× ××¨× × ×חרים)"> -<!ENTITY https-everywhere.prefs.here_link "פה"> -<!ENTITY https-everywhere.prefs.toggle "Toggle"> -<!ENTITY https-everywhere.prefs.reset_default "החזר לברירת מחדל"> -<!ENTITY https-everywhere.prefs.view_xml_source "הצג מקור XML"> - -<!ENTITY https-everywhere.source.downloading "מוריד"> -<!ENTITY https-everywhere.source.filename "שם הקובץ"> -<!ENTITY https-everywhere.source.unable_to_download "הורדת המקור × ×›×©×ś×”"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties deleted file mode 100644 index 434edd3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = להפעיל ×ת HTTPS Everywhere -https-everywhere.menu.globalDisable = להשבית ×ת HTTPS Everywhere -https-everywhere.menu.enableDisable = להפעיל/להשבית כללים -https-everywhere.menu.noRules = (×ין כללים עבור דף ×–×”) -https-everywhere.menu.unknownRules = (כללים לדף ×–×” ××™× ×ť ידועים) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd deleted file mode 100644 index ab3ed77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd +++ /dev/null @@ -1,92 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "פר×ים ומידע ×ישי"> -<!ENTITY ssl-observatory.popup.later "ש×ל ×ותי ×חר כך"> -<!ENTITY ssl-observatory.popup.no "ל×"> - -<!ENTITY ssl-observatory.popup.text " "> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"×”×ם כד××™ ש- HTTPS בכל מקום ישתמש בתצפית SSL?"> - -<!ENTITY ssl-observatory.popup.yes "כן"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"ב×וח ל×פשר ×–×ת, ××ś× ×ם כן ×תה משתמש ברשת ת×גידית ×¤×•×ś×©× ×™×Ş מ×וד:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"ב×וח, ××ś× ×ם כן ×תה משתמש ברשת ת×גידית עם שמות שרתים סודיים ברשת ×–×ž× ×™×Ş:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"שלח ובדוק ×ישורים החתומים על ידי רשויות ×”×ישורים ×”×˘×ś×™×•× ×•×Ş ×”×ś× ×¨×’×™×ś×•×Ş"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"×–×” ב×וח (ורעיון ×וב) ל×פשר ×פשרות ×–×ת, ××ś× ×ם כן ×תה משתמש ברשת ת×גידית ×¤×•×ś×©× ×™×Ş ×ו ×Ş×•×›× ×Ş ×× ×יוירוס קספרסקי ×©×ž× ×רת ×ת הגלישה שלך עם פרוקסי TLS ורשות ×ישורים ×˘×ś×™×•× ×” ×ישית. ×ם מ×ופשרת רשת ×›×–×ת, ×פשרות ×–×ת יכולה לפרסם עדות של ×ילו כתובות שמתחילות ב https:// בוקרו דרך הפרוקסי ×”×–×”, בשל ×”×ישור המיוחד ×©×”×•× ×ž×™×™×¦×¨. לכן × ×©×יר ×–×ת כבוי כברירת מחדל."> - -<!ENTITY ssl-observatory.prefs.anonymous "בדוק ×ישורים לשימוש ב TOR ב×× ×•× ×™×ž×™×•×Ş"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"בדוק ×ישורים לשימוש ב Tor ב×× ×•× ×™×ž×™×•×Ş (דורש Tor )"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"×פשרות ×–×ת דורשת ש Tor יותקן וירוץ "> - -<!ENTITY ssl-observatory.prefs.asn -"×›×שר ×תה רו××” ×ישור חדש, תגיד למצפה ל××™×–×” ספק ×תה מחובר"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"×–×” ×ž×‘×™× ×•×©×•×ś×— ×ת "מספר המערכת ×”×× ×•× ×™×ž×™" של הרשת שלך. ×–×” יעזור ×ś× ×• למקם התקפות × ×’×“ HTTPS, ולקבוע ×”×ם יש ×ś× ×• תצפיות מרשתות במקומות כמו ×יר×ן וסוריה שבהם התקפות × ×¤×•×¦×•×Ş ב×ופן השוו×תי."> - -<!ENTITY ssl-observatory.prefs.done "הושלם"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS בכל מקום יכול להשתמש במצפה SSL של EFF. ×–×” מקיים ×©× ×™ דברים: -(1) שולח עותקים של ×ישורי HTTPS למצפה, כדי לעזור ×ś× ×• לגלות התקפות '×יש ב×מצע' ולשפר ×ת ×ב×חת הרשת; ו (2) מ×פשר ×ś× ×• להזהיר ×ותך ×ž×¤× ×™ חיבורים ×ś× ×ž×וב×חים ×ו התקפות על הדפדפן שלך."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"לדוגמ×, ×›×שר ×תה מבקר ב https://www.something.com, ×”×ישור שהתקבל על ידי המצפה יציין שמישהו ביקר ב www.something.com, ×בל ×ś× ×ž×™ ביקר ב×תר, ×ו על ××™×–×” עמוד ספציפי הם הסתכלו. תעבור עם העכבר על ×”×פשרויות בשביל פר×ים × ×•×ˇ×¤×™×ť:"> - -<!ENTITY ssl-observatory.prefs.hide "הסתר ×פשרויות מתקדמות"> - -<!ENTITY ssl-observatory.prefs.nonanon -"בדוק ×ישורים ×פילו ×ם Tor ×ś× ×–×ž×™×ź"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"עדיין × × ×ˇ×” לשמור ×ת ×”× ×Ş×•× ×™×ť ×× ×•× ×™×ž×™×™×ť, ×בל ×פשרות ×–×ת פחות מ×וב×חת"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"שלח ובדוק ×ישורים עבור שמות DNS ×ś× ×¦×™×‘×•×¨×™×™×ť"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"××ś× ×ם כן ×”×פשרות ×”×–×ת × ×‘×“×§×”, המצפה ×ś× ×™×Ş×˘×“ ×ישורים עבור שמות ×©×”×•× ×ś× ×™×›×•×ś לגלות דרך מערכת ×” DNS "> - -<!ENTITY ssl-observatory.prefs.show "הר××” ×פשרויות מתקדמות"> - -<!ENTITY ssl-observatory.prefs.title "עדיפויות מצפה SSL"> - -<!ENTITY ssl-observatory.prefs.use "×”×ם להשתמש במצפה?"> -<!ENTITY ssl-observatory.warning.title "×זהרה ממצפה SSL של EFF"> -<!ENTITY ssl-observatory.warning.showcert "הר××” ×ת שרשרת ×”×ישורים"> -<!ENTITY ssl-observatory.warning.okay "×× ×™ מבין"> -<!ENTITY ssl-observatory.warning.text "מצפה SSL של EFF עוסק ב×זהרה ×ž×¤× ×™ ×”×ישור(ים) של HTTPS עבור ×”×תר ×”×–×”:"> -<!ENTITY ssl-observatory.warning.defense "×ם × ×¨×©×ž×Ş ל×תר ×”×–×”, כד××™ ×ś×©× ×•×Ş ×ת ×”×ˇ×™×ˇ×ž× ×©×ś×š ברגע שיש לך חיבור ב×וח."> - -<!ENTITY ssl-observatory.prefs.self_signed -"שלח ובדוק ×ת ×”×ישורים החתומים על ידך"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"×–×” מומלץ; בעיות ×”×¦×¤× ×” × ×¤×•×¦×•×Ş במיוחד בכלים משובצים חתומים עצמית"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd deleted file mode 100644 index 87a30bc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "About HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Created by"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "Thanks to"> -<!ENTITY https-everywhere.about.contribute "If you like HTTPS Everywhere, you might consider"> -<!ENTITY https-everywhere.about.donate_tor "Donating to Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Donating to EFF"> - -<!ENTITY https-everywhere.menu.about "About HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory Preferences"> -<!ENTITY https-everywhere.menu.globalEnable "Enable HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Disable HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> -<!ENTITY https-everywhere.prefs.enable_all "Enable All"> -<!ENTITY https-everywhere.prefs.disable_all "Disable All"> -<!ENTITY https-everywhere.prefs.reset_defaults "Reset to Defaults"> -<!ENTITY https-everywhere.prefs.search "Search"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Notes"> -<!ENTITY https-everywhere.prefs.list_caption "Which HTTPS redirection rules should apply?"> -<!ENTITY https-everywhere.prefs.enabled "Enabled"> -<!ENTITY https-everywhere.prefs.ruleset_howto "You can learn how to write your own rulesets (to add support for other web sites)"> -<!ENTITY https-everywhere.prefs.here_link "here"> -<!ENTITY https-everywhere.prefs.toggle "Toggle"> -<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> -<!ENTITY https-everywhere.prefs.view_xml_source "View XML Source"> - -<!ENTITY https-everywhere.source.downloading "Downloading"> -<!ENTITY https-everywhere.source.filename "Filename"> -<!ENTITY https-everywhere.source.unable_to_download "Unable to download source."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties deleted file mode 100644 index 7f5aca3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Omogući HTTPS Svuda -https-everywhere.menu.globalDisable = Onemogući HTTPS Svuda -https-everywhere.menu.enableDisable = Omogući / Onemogući Pravila -https-everywhere.menu.noRules = (Nema Pravila za Ovu Stranicu) -https-everywhere.menu.unknownRules = (Pravila za Ovu Stranicu Nepoznata) -https-everywhere.toolbar.hint = HTTPS Svuda je aktivan. MoĹľete ga prebacivati od stranice do stranice tako da kliknete na ikonu na adresnoj traci. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd deleted file mode 100644 index 430846f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd +++ /dev/null @@ -1,98 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Pojedinosti i informacije privatnosti"> -<!ENTITY ssl-observatory.popup.later "Pitaj me kasnije"> -<!ENTITY ssl-observatory.popup.no "Ne"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere moĹľe otkriti napade -na vaš preglednik šaljući certifikate koje primite -Opservatoriju. Ĺ˝elite li ukljuÄŤiti ovo?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Treba li HTTPS Everywhere koristiti SSL Opservatorij?"> - -<!ENTITY ssl-observatory.popup.yes "Da"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Sigurnije je da omogućite ovo, osim ako koristite jako ometajuću korporativnu mreĹľu:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Sigurno, osim ako koristite korporativnu mreĹľu sa tajnim internet nazivima posluĹľitelja:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Prijavi i provjeri certifikate potpisanim od ne-standardnih korijenskih certifikata"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Sigurno je (i dobra je ideja) da omogućite ovu mogućnost, osim ako koristite ometajuću korporativnu mreĹľu ili Kaspersky antivirusni softver koji nadgleda vaše surfanje sa TLS proxyjem i privatnim korijenskim certifikatima ovlasti. Ako je omogućeno na takvoj mreĹľi, ova mogućnost bi mogla objaviti dokaz koja https:// domena je bila posjećena kroz taj proxy, zbog jedinstvenog certifikata kojeg bi proizvela. Stoga je zadano, ostavljena iskljuÄŤena."> - -<!ENTITY ssl-observatory.prefs.anonymous "Provjeri certifikate koristeći Tor za anonimnost"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Provjeri certifikate koristeći Tor za anonimnost (zahtijeva Tortipku)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Ova mogućnost zahtijeva instalirani Tor i Tortipku"> - -<!ENTITY ssl-observatory.prefs.asn -"Kada vidite novi certifikat, recite Opservatoriju na koji ste ISP spojeni"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Ovo će dohvatiti i poslati "Autonomni broj sustava" vaše mreĹľe. To će nam pomoći u lociranju napada na HTTPS i u otkrivanju kada nas promatraju iz mreĹľa sa mjesta poput Irana i Sirije odkuda stiĹľu uÄŤestali napadi."> - -<!ENTITY ssl-observatory.prefs.done "UÄŤinjeno"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere moĹľe koristiti EFF-ov SSL Opservatorij. Ovo ÄŤini dvije stvari: (1) -šalje kopije HTTPS certifikata Opservatoriju, da nam pomogne otkriti 'glavnog u sredini' napadaÄŤa i poboljša Web sigurnost; i (2) -da vas upozorimo o nesigurnim vezama ili napadima na vaš preglednik."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Npr., kada posjetite https://www.something.com, certifikat -primljen od Opservatorija će naznaÄŤiti da je netko posjetio -www.something.com, ali ne tko je posjetio stranicu, ili koju su odreÄ‘enu -stranicu traĹľili. Prelazak mišem za daljnje pojedinosti:"> - -<!ENTITY ssl-observatory.prefs.hide "Sakrij napredne mogućnpsti"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Provjeri certifikate iako Tor nije dostupan"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Mi ćemo još uvijek pokušati drĹľati podatke anonimnim, ali ova mogućnost je manje sigurna"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Prijavite i provjerite certifikate za ne-javne DNS nazive"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Ako ova mogućnost nije odabrana, Opservatorij neće snimati certifikate za nazive koji se ne mogu razriješiti kroz DNS sustav."> - -<!ENTITY ssl-observatory.prefs.show "PrikaĹľi napredne mogućnosti "> - -<!ENTITY ssl-observatory.prefs.title "Osobitosti SSL Opservatorija"> - -<!ENTITY ssl-observatory.prefs.use "Koristi Opservatorij?"> -<!ENTITY ssl-observatory.warning.title "UPOZORENJE iz EFF-ovog SSL Opservatorija"> -<!ENTITY ssl-observatory.warning.showcert "PrikaĹľi podatak certifikata"> -<!ENTITY ssl-observatory.warning.okay "Razumijem"> -<!ENTITY ssl-observatory.warning.text "EFF-ov SSL Opservatorij je izdao upozorenje o HTTPS certifikatu(ima) za ovu stranicu:"> -<!ENTITY ssl-observatory.warning.defense "Ako ste povezani sa ovom stranicom, preporuÄŤljivo je da promijenite svoju lozinku kada uspostavite sigurnu povezanost."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Prijavite i provijerite samopotpisane certifikate"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"To je preporuÄŤljivo; kriptografski problemi su naroÄŤito ÄŤesti u samopotpisanim ugraÄ‘enim ureÄ‘ajima"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd deleted file mode 100644 index b9fa569..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "A HTTPS Everywhere nĂ©vjegye"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "TitkosĂtsa a Web-et! Automatikusan használja a HTTPS titkosĂtást a legtöbb oldalon."> -<!ENTITY https-everywhere.about.version "VerziĂł"> -<!ENTITY https-everywhere.about.created_by "KĂ©szĂtette:"> -<!ENTITY https-everywhere.about.librarians "SzabálykĂ©szlet könyvtárosok"> -<!ENTITY https-everywhere.about.thanks "Köszönet:"> -<!ENTITY https-everywhere.about.contribute "Ha tetszik a HTTPS Everywhere, talán megfontolja a következĹ‘ket:"> -<!ENTITY https-everywhere.about.donate_tor "A Tor támogatása"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Az EFF támogatása"> - -<!ENTITY https-everywhere.menu.about "A HTTPS Everywhere nĂ©vjegye"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory BeállĂtások"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere bekapcsolása"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere kikapcsolása"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> -<!ENTITY https-everywhere.prefs.enable_all "Mind bekapcsolása"> -<!ENTITY https-everywhere.prefs.disable_all "Mind kikapcsolása"> -<!ENTITY https-everywhere.prefs.reset_defaults "VisszaállĂtás alaphelyzetre"> -<!ENTITY https-everywhere.prefs.search "KeresĂ©s"> -<!ENTITY https-everywhere.prefs.site "Oldal"> -<!ENTITY https-everywhere.prefs.notes "MegjegyzĂ©sek"> -<!ENTITY https-everywhere.prefs.list_caption "Mely HTTPS átirányĂtásokat szeretnĂ© használni?"> -<!ENTITY https-everywhere.prefs.enabled "Bekapcsolva"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Megtanulhatja, hogy adhatja hozzá a saját szabálykĂ©szletĂ©t (hogy további oldalakat támogasson) "> -<!ENTITY https-everywhere.prefs.here_link "itt"> -<!ENTITY https-everywhere.prefs.toggle "Vált"> -<!ENTITY https-everywhere.prefs.reset_default "VisszaállĂtás alaphelyzetre"> -<!ENTITY https-everywhere.prefs.view_xml_source "Az XML forrás megtekintĂ©se"> - -<!ENTITY https-everywhere.source.downloading "LetöltĂ©s"> -<!ENTITY https-everywhere.source.filename "FájlnĂ©v"> -<!ENTITY https-everywhere.source.unable_to_download "A forrás letöltĂ©se sikertelen."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties deleted file mode 100644 index 1c95984..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhere bekapcsolása -https-everywhere.menu.globalDisable = HTTPS Everywhere kikapcsolása -https-everywhere.menu.enableDisable = Szabályok EngedĂ©lyezĂ©se / Tiltása -https-everywhere.menu.noRules = (nincs szabály ehhez az oldalhoz) -https-everywhere.menu.unknownRules = (az oldalhoz tartozĂł szabályok ismeretlenek) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd deleted file mode 100644 index d8291e4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd +++ /dev/null @@ -1,96 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "RĂ©szletek Ă©s adatvĂ©delmi informáciĂłk"> -<!ENTITY ssl-observatory.popup.later "KĂ©rdezzen meg kĂ©sĹ‘bb"> -<!ENTITY ssl-observatory.popup.no "Nem"> - -<!ENTITY ssl-observatory.popup.text "A HTTPS Everywhere a böngĂ©szĹ‘ elleni támadásokat kĂ©pes Ă©szlelni, azzal ,hogy elkĂĽldi a megkapott tanĂşsĂtványokat az Observatory rĂ©szĂ©re. Bekapcsoljuk ezt a funkciĂłt?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Használja a HTTPS Everywhere az SSL Observatory-t?"> - -<!ENTITY ssl-observatory.popup.yes "Igen"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Biztonságos, ha bekapcsolja, kivĂ©ve, ha nagyon privát szfĂ©rába hatolĂł vállalati hálĂłzatot használ:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Biztonságos, ha nem használ titkos internet szerver nevekkel rendelkezĹ‘ vállalati hálĂłzatot:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"KĂĽldje be Ă©s ellenĹ‘rizze azon tanĂşsĂtványokat, amelyek nem standard tanĂşsĂtványkiadĂłtĂłl származnak"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Biztonságos (Ă©s javasolt) ha bekapcsolja ezt az opciĂłt, kivĂ©ve ha nagyon figyelt vállalati hálĂłzatrĂłl vagy Kaspersky vĂruskeresĹ‘ szoftvert használ, ami figyeli a böngĂ©szĂ©st egy TLS proxy-val, Ă©s egy helyi tanĂşsĂtványkiadĂłval. -Ha bekapcsolja, az az opciĂł nyomokat hagyhat arrĂłl, hogy mely https:// oldalakor látogatott meg azon a proxy-n keresztĂĽl, mert egyedi tanĂşsĂtványokat hoz lĂ©tre. -Tehát hagyja kikapcsolva alapĂ©rtelmezetten. -"> - -<!ENTITY ssl-observatory.prefs.anonymous "A tanĂşsĂtványok ellenĹ‘rzĂ©se Tor-on keresztĂĽl az anonimitás megĹ‘rzĂ©sĂ©hez."> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"A tanĂşsĂtványok ellenĹ‘rzĂ©se Tor-on keresztĂĽl az anonimitás megĹ‘rzĂ©sĂ©hez. (Torbutton szĂĽksĂ©ges hozzá)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Ez az opciĂł a Tor Ă©s Torbutton szoftverek telepĂtĂ©sĂ©t igĂ©nyli."> - -<!ENTITY ssl-observatory.prefs.asn -"Ha Ăşj tanĂşsĂtványt lát, kĂĽldje el az Observatory-nak, hogy mely internet szolgáltatĂłhoz csatlakozik Ă©ppen"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Ez kiolvassa Ă©s elkĂĽldi az ASN számát a hálĂłzatának. Ez segĂt a HTTPS elleni támadások Ă©szlelĂ©sĂ©ben, Ă©s lehetĹ‘vĂ© teszi az Ă©szlelĂ©st annak, hogy a támadás olyan hálĂłzatokon zajlik-e mint Irán vagy SzĂria, ahol a támadások meglehetĹ‘sen gyakoriak."> - -<!ENTITY ssl-observatory.prefs.done "KĂ©sz"> - -<!ENTITY ssl-observatory.prefs.explanation -"A HTTPS Everywhere használni tudja az EFF's SSL ObszervatĂłriumát (Observatory). Ez kĂ©t dolgot jelent: (1) -elkĂĽldi a másolatát a HTTPS kapcoslatok tanĂşsĂtványainak az ObszervatĂłriumba, hogy segĂtse a MITM támadások Ă©szlelĂ©sĂ©t, Ă©s növelje a Web biztonságát; Ă©s (2) -lehetĹ‘vĂ© teszi, hogy figyelmeztessĂĽk, ha nem biztonságos a kapcoslata, vagy valaki támadja a böngĂ©szĹ‘jĂ©t."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"PĂ©ldául, ha meglátogatja a https://www.valami.hu oldalt, a tanĂşsĂtvány amit az ObszervatĂłrium megkap, azt jelzi majd, hogy valaki meglátogatta a www.valami.hu oldalt, de nem mutatja, hogy ki, Ă©s hogy melyik oldalt nĂ©zte. HĂşzza az egeret az opciĂłk felĂ© a rĂ©szletekĂ©rt:"> - -<!ENTITY ssl-observatory.prefs.hide "Speciális beállĂtások elrejtĂ©se"> - -<!ENTITY ssl-observatory.prefs.nonanon -"A tanĂşsĂtványok ellenĹ‘rzĂ©se akkor is, ha a Tor nem elĂ©rhetĹ‘"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Továbbra is megprĂłbáljuk az adatot nĂ©vtelenĂĽl kezelni, de ez a beállĂtás kevĂ©sbĂ© biztonságos"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Nem publikus DNS nevekhez tartozĂł tanĂşsĂtványok elkĂĽldĂ©se Ă©s ellenĹ‘rzĂ©se"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Ha ez az opciĂł nicns bejelölve, akkor az Observatory nem rögzĂti azon tanĂşsĂtványokat, amelyek nem feloldhatĂłk publikus DNS rendszereken keresztĂĽl."> - -<!ENTITY ssl-observatory.prefs.show "Speciális beállĂtások megjelenĂtĂ©se"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory BeállĂtások"> - -<!ENTITY ssl-observatory.prefs.use "Az Observatory használata?"> -<!ENTITY ssl-observatory.warning.title "FIGYELMEZTETÉS az EFF SSL Observatory-tĂłl"> -<!ENTITY ssl-observatory.warning.showcert "A tanĂşsĂtványlánc megjelenĂtĂ©se"> -<!ENTITY ssl-observatory.warning.okay "MegĂ©rtettem"> -<!ENTITY ssl-observatory.warning.text "Az EFF SSL Oeservatory figyelmeztetĂ©st bocsátott az alábbi tanĂşsĂtványokrĂłl, ehhez az oldalhoz:"> -<!ENTITY ssl-observatory.warning.defense "Ha belĂ©pett erre az oldalra, ha már biztonságos kapcsolattal rendelkezik, hogy lecserĂ©lje a jelszavát."> - -<!ENTITY ssl-observatory.prefs.self_signed -"A használt önaláĂrt tanĂşsĂtványok feltöltĂ©se Ă©s ellenĹ‘rzĂ©se"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Ez ajánlott; a kriptográfiai problĂ©mák szĂ©les körben elterjedtek az önaláĂrt tanĂşsĂtvánnyal ellátott cĂ©leszközöknĂ©l."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd deleted file mode 100644 index 782711f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Informazioni su HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Cripta il Web! Usa HTTPS automaticamente su numerosi siti."> -<!ENTITY https-everywhere.about.version "Versione"> -<!ENTITY https-everywhere.about.created_by "Creato da"> -<!ENTITY https-everywhere.about.librarians "Autori regole"> -<!ENTITY https-everywhere.about.thanks "Grazie a"> -<!ENTITY https-everywhere.about.contribute "Se ti piace HTTPS Everywhere, considera anche"> -<!ENTITY https-everywhere.about.donate_tor "Donazioni a Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "it"> -<!ENTITY https-everywhere.about.donate_eff "Donazioni a EFF"> - -<!ENTITY https-everywhere.menu.about "Informazioni su HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Preferenze Osservatorio SSL"> -<!ENTITY https-everywhere.menu.globalEnable "Abilita HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Disabilita HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Preferenze di HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Abilita Tutto"> -<!ENTITY https-everywhere.prefs.disable_all "Disabilita Tutto"> -<!ENTITY https-everywhere.prefs.reset_defaults "Ripristina Predefiniti"> -<!ENTITY https-everywhere.prefs.search "Cerca"> -<!ENTITY https-everywhere.prefs.site "Sito"> -<!ENTITY https-everywhere.prefs.notes "Note"> -<!ENTITY https-everywhere.prefs.list_caption "Quali regole di reindirizzamento HTTPS dovrebbero essere applicate?"> -<!ENTITY https-everywhere.prefs.enabled "Abilitato"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Puoi imparare a scrivere i tuoi set di regole (per aggiungere supporto ad altri siti)"> -<!ENTITY https-everywhere.prefs.here_link "qui"> -<!ENTITY https-everywhere.prefs.toggle "Commuta"> -<!ENTITY https-everywhere.prefs.reset_default "Ripristina Predefiniti"> -<!ENTITY https-everywhere.prefs.view_xml_source "Mostra Sorgente XML"> - -<!ENTITY https-everywhere.source.downloading "Scaricamento"> -<!ENTITY https-everywhere.source.filename "Nome file"> -<!ENTITY https-everywhere.source.unable_to_download "Impossibile scaricare la sorgente."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties deleted file mode 100644 index a6150b2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Abilita HTTPS Everywhere -https-everywhere.menu.globalDisable = Disabilita HTTPS Everywhere -https-everywhere.menu.enableDisable = Abilita / Disabilita Regole -https-everywhere.menu.noRules = (Nessuna Regola per Questa Pagina) -https-everywhere.menu.unknownRules = (Regole per Questa Pagina Sconosciute) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd deleted file mode 100644 index 40cbb9f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd +++ /dev/null @@ -1,98 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Dettagli e informazioni sulla privacy"> -<!ENTITY ssl-observatory.popup.later "Chiedimelo piĂą tardi"> -<!ENTITY ssl-observatory.popup.no "No"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere può rilevare attacchi -contro il tuo browser inviando i certificati che ricevi all' -Osservatorio. Vuoi abilitarla?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Vuoi che HTTPS Everywhere usi l' Osservatorio SSL?"> - -<!ENTITY ssl-observatory.popup.yes "Sì"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Ă consigliato abilitarla, a meno che non utilizzi una rete aziendale molto intrusiva:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Consigliato, a meno che non utilizzi una rete aziendale con nomi server intranet segreti:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Invia e controlla certificati firmati da CA root non standard"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Ă una buona idea abilitare questa opzione, a meno che non utilizzi una rete aziendale intrusiva o l'antivirus Kaspersky che monitora la tua navigazione con un proxy TLS e una Certificate Authority root privata. Se viene abilitata in quel caso, questa opzione può pubblicare prove evidenti su quali domini https:// sono stati visitati attraverso quel proxy, a causa di certificati unici che produrrebbe. Per questo la lasciamo disabilitata in partenza."> - -<!ENTITY ssl-observatory.prefs.anonymous "Controlla i certificati usando Tor per l'anonimato"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Controlla i certificati usando Tor per l'anonimato (richiede Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Questa opzione richiede Tor e Torbutton installati"> - -<!ENTITY ssl-observatory.prefs.asn -"Quando trovi un certificato nuovo, comunica all' Osservatorio a quale ISP sei connesso"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Recupera e invia il "numero di Sistema Autonomo" della tua rete. Questo ci aiuterĂ a localizzare gli attacchi contro HTTPS e a determinare se abbiamo osservazioni provenienti da reti in luoghi come Iran e Siria dove gli attacchi sono relativamente comuni."> - -<!ENTITY ssl-observatory.prefs.done "Fatto"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere può usare l' Osservatorio SSL di EFF. Questo fa due cose: (1) -invia copie dei certificati HTTPS all' Osservatorio per aiutarci ad individuare attacchi 'man in the middle' e migliorare la sicurezza del Web; e (2) -ci consente di metterti in guardia da connessioni insicure o attacchi al tuo browser."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Ad esempio, quando visiti https://www.qualcosa.com, il certificato -ricevuto dall' Osservatorio indicherĂ che qualcuno ha visitato -www.qualcosa.com, ma non chi ha visitato il sito, o quale particolare pagina -ha visto. Passa sopra le opzioni con il mouse per maggiori dettagli:"> - -<!ENTITY ssl-observatory.prefs.hide "Nascondi opzioni avanzate"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Controlla certificati anche se Tor non è disponibile"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Cercheremo comunque di mantenere i dati anonimi, ma questa opzione è meno sicura"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Invia e controlla certificati per nomi DNS non pubblici"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"A meno che questa opzione sia selezionata, l' Osservatorio non registrerĂ i certificati per nomi che non può risolvere attraverso il sistema DNS."> - -<!ENTITY ssl-observatory.prefs.show "Mostra opzioni avanzate"> - -<!ENTITY ssl-observatory.prefs.title "Preferenze Osservatorio SSL"> - -<!ENTITY ssl-observatory.prefs.use "Usare l' Osservatorio?"> -<!ENTITY ssl-observatory.warning.title "AVVISO dall' Osservatorio SSL di EFF"> -<!ENTITY ssl-observatory.warning.showcert "Mostra la catena di certificati"> -<!ENTITY ssl-observatory.warning.okay "Capisco"> -<!ENTITY ssl-observatory.warning.text "L' Osservatorio SSL di EFF ha emesso un avviso sul(i) certificato(i) HTTPS di questo sito:"> -<!ENTITY ssl-observatory.warning.defense "Se hai effettuato l'accesso a questo sito, può essere consigliabile cambiare la password appena hai una connessione sicura."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Invia e controlla certificati autofirmati"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Consigliato; problemi di crittografia sono particolarmente comuni in dispositivi embedded autofirmati"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd deleted file mode 100644 index 724a2bd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "HTTPS Everywhereă«ă¤ă„ă¦"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "ウェă–ă®ćš—号化ďĽč‡Şĺ‹•çš„ă«ĺ¤šăŹă®ă‚µă‚¤ăă«HTTPSă‚»ă‚ăĄăŞă†ă‚Łă‚’使用ă—ăľă™ă€‚"> -<!ENTITY https-everywhere.about.version "ăăĽă‚¸ă§ăł"> -<!ENTITY https-everywhere.about.created_by "作ć者:"> -<!ENTITY https-everywhere.about.librarians "ă«ăĽă«č¨ĺ®šă©ă‚¤ă–ă©ăŞ"> -<!ENTITY https-everywhere.about.thanks "Thanks to"> -<!ENTITY https-everywhere.about.contribute "HTTPS EverywhereăŚĺĄ˝ăŤăŞă‚‰ă€ć¤śč¨Žă—ă¦ăŹă ă•ă„"> -<!ENTITY https-everywhere.about.donate_tor "Toră«ĺŻ„ä»ă™ă‚‹"> -<!ENTITY https-everywhere.about.tor_lang_code "英語"> -<!ENTITY https-everywhere.about.donate_eff "EFFă«ĺŻ„ä»ă™ă‚‹"> - -<!ENTITY https-everywhere.menu.about "HTTPS Everywhereă«ă¤ă„ă¦"> -<!ENTITY https-everywhere.menu.observatory "ssl Observatoryă®č¨ĺ®š"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhereを有効化"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhereを無効化"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhereă®č¨ĺ®š"> -<!ENTITY https-everywhere.prefs.enable_all "ĺ…¨ă¦ćś‰ĺŠąĺŚ–"> -<!ENTITY https-everywhere.prefs.disable_all "ă™ăąă¦ç„ˇĺŠąĺŚ–"> -<!ENTITY https-everywhere.prefs.reset_defaults "ă‡ă•ă‚©ă«ăă«ăŞă‚»ăă"> -<!ENTITY https-everywhere.prefs.search "検索"> -<!ENTITY https-everywhere.prefs.site "サイă"> -<!ENTITY https-everywhere.prefs.notes "履ć´"> -<!ENTITY https-everywhere.prefs.list_caption "ă©ă®HTTPSăŞă€ă‚¤ă¬ă‚ŻăスăĽă«ă‚’é©ç”¨ă—ăľă™ă‹ďĽź"> -<!ENTITY https-everywhere.prefs.enabled "有効"> -<!ENTITY https-everywhere.prefs.ruleset_howto "自ĺ†ă®ă«ăĽă«č¨ĺ®šă®ć›¸ăŤć–ąă‚’ĺ¦ăąăľă™ (ä»–ă®ă‚¦ă‚§ă–サイăă¸ă®ă‚µăťăĽăă‚’čż˝ĺŠ )"> -<!ENTITY https-everywhere.prefs.here_link "ă“ă“"> -<!ENTITY https-everywhere.prefs.toggle "ĺ‡ă‚Šć›żă"> -<!ENTITY https-everywhere.prefs.reset_default "ă‡ă•ă‚©ă«ăă«ăŞă‚»ăă"> -<!ENTITY https-everywhere.prefs.view_xml_source "XMLă‚˝ăĽă‚ąă‚’表示"> - -<!ENTITY https-everywhere.source.downloading "ă€ă‚¦ăłăăĽă‰ä¸"> -<!ENTITY https-everywhere.source.filename "ă•ァイă«ĺŤ"> -<!ENTITY https-everywhere.source.unable_to_download "ă‚˝ăĽă‚ąă‚’ă€ă‚¦ăłăăĽă‰ĺ‡şćťĄăľă›ă‚“。"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties deleted file mode 100644 index 2135ddd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhereを有効化 -https-everywhere.menu.globalDisable = HTTPS Everywhereを無効化 -https-everywhere.menu.enableDisable = ă«ăĽă«ă‚’有効化/無効化 -https-everywhere.menu.noRules = (ă“ă®ăšăĽă‚¸ă«ă«ăĽă«ăŻă‚りăľă›ă‚“) -https-everywhere.menu.unknownRules = (ă“ă®ăšăĽă‚¸ă®ă«ăĽă«ăŻä¸ŤćŽ) -https-everywhere.toolbar.hint = HTTPS EverywhereăŻă’ă‚“ă–ă„有効ă§ă™ă€‚アă‰ă¬ă‚ąăăĽă®ă‚˘ă‚¤ă‚łăłă‚’クăŞăクă™ă‚‹ă¨ă‚µă‚¤ăă”ă¨ă‚’基本ă«ĺ‡ă‚Šć›żăă‚‹ă“ă¨ăŚă§ăŤăľă™ă€‚ -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd deleted file mode 100644 index d9be24f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd +++ /dev/null @@ -1,94 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "詳細ă¨ă—ă©ă‚¤ăă‚·ăĽć…ĺ ±"> -<!ENTITY ssl-observatory.popup.later "後ă§é€šçźĄă™ă‚‹"> -<!ENTITY ssl-observatory.popup.no "ă„ă„ă"> - -<!ENTITY ssl-observatory.popup.text "HTTPS EverywhereăŻObservatoryă«ĺŹ—ă‘取る証ćŽć›¸ă‚’é€äżˇă™ă‚‹ă“ă¨ă§ă€ă‚ăŞăźă®ă–ă©ă‚¦ă‚¶ă«ĺŻľă™ă‚‹ć”»ć’を検知ă§ăŤăľă™ă€‚ă“れを有効ă«ă—ăľă™ă‹ďĽź"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS EverywhereăŻSSL Observatoryを使用ă™ă‚‹ăąăŤă§ă™ă‹ďĽź"> - -<!ENTITY ssl-observatory.popup.yes "ăŻă„"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"非常ă«é‘‘čłžă•れるäĽćĄăŤăăăŻăĽă‚Żă‚’使用ă—ă¦ă„ăŞă‘れă°ă€ă“れを有効ă«ă™ă‚‹ć–ąăŚĺ®‰ĺ…¨ă§ă™:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"次ă®ç§ĺŻ†ă‚¤ăłăă©ăŤăăă®ă‚µăĽăăĽĺŤă§äĽćĄăŤăăăŻăĽă‚Żă‚’使用ă—ăŞă‘れă°ă€ĺ®‰ĺ…¨ă§ă™:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"非標準ă®ă«ăĽăCAă«ă‚ăŁă¦ç˝˛ĺŤă•れăźč¨ĽćŽć›¸ă‚’確認ă—ă¦ć…ĺ ±ćŹäľ›ă™ă‚‹ă€‚"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"干渉ă•れるäĽćĄăŤăăăŻăĽă‚Żă‚„ă€TLSă—ăă‚ă‚·ă¨ă—ă©ă‚¤ă™ăĽăă«ăĽă認証局ă§ă‚ăŞăźă®ă–ă©ă‚¦ă‚¸ăłă‚°ă‚’ă˘ă‹ă‚żăĽă—ă¦ă„ă‚‹Kasperskyアăłăウイă«ă‚ąă‚˝ă•ăウェアを使用ă—ă¦ă„ăŞă‘れă°ă€ă“ă®ă‚Şă—ă‚·ă§ăłă‚’有効ă«ă™ă‚‹ă“ă¨ăŻĺ®‰ĺ…¨ă§ă™ (ăťă—ă¦ă€č‰Żă„アイă‡ă‚Łă‚˘ă§ă™)。ăťă®ă‚ă†ăŞăŤăăăŻăĽă‚Żă§ćś‰ĺŠąă«ă—ăźĺ ´ĺă€ă“ă®ă‚Şă—ă‚·ă§ăłăŻă€ăťă‚ŚăŚç™şčˇŚă™ă‚‹ä¸€ć„ŹăŞč¨ĽćŽć›¸ă®ăźă‚ă«ă€ă©ă‚“ăŞhttps:// domainsăŚăťă®ă—ăă‚シを通ăă¦č¨Şă‚Śă‚‰ă‚Śăźă‹ă®č¨Ľć‹ ă‚’ćŹäľ›ă—ă¦ă—ăľă†ćれăŚă‚りăľă™ă€‚ăťă®ăźă‚ă«ă€ç§ăźăˇăŻă‡ă•ă‚©ă«ăă§ăŻăťă‚Śă‚’オă•ă«ă—ă¦ă„ăľă™ă€‚"> - -<!ENTITY ssl-observatory.prefs.anonymous "匿ĺŤć€§ă®ăźă‚ă«č¨ĽćŽć›¸ă®ăă‚§ăクă«Torを使ă†ă€‚"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"匿ĺŤć€§ă®ăźă‚ă«č¨ĽćŽć›¸ă®ăă‚§ăクă«Torを使ㆠ(TorăŚĺż…č¦)。"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"ă“ă®ă‚Şă—ă‚·ă§ăłăŻTorăŚă‚¤ăłă‚ąăăĽă«ă•れă€ĺ‹•作ă—ă¦ă„ă‚‹ĺż…č¦ăŚă‚りăľă™ă€‚"> - -<!ENTITY ssl-observatory.prefs.asn -"ć–°ă—ă„証ćŽć›¸ă‚’確認ă—ăźă¨ăŤă€Observatoryă«ă‚ăŞăźăŚă©ă®ISPă«ćŽĄç¶šă—ă¦ă„ă‚‹ă®ă‹äĽťăă‚‹"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"ă“れăŻă‚ăŞăźă®ăŤăăăŻăĽă‚Żă®ă€Śč‡Şĺľ‹ă‚·ă‚ąă†ă 番号」を収集ă—ă€é€äżˇă—ăľă™ă€‚ă“れăŻç§ăźăˇăŚHTTPSă«ĺŻľă™ă‚‹ć”»ć’を検出ă—ă™ă‚‹ă®ă‚’支援ă—ăľă™ă€‚ăľăźă€ç§ăźăˇăŚć”»ć’ăŚćŻ”čĽçš„一č¬çš„ă§ă‚るイă©ăłă‚„ă‚·ăŞă‚˘ă®ă‚ă†ăŞĺ ´ć‰€ă§ăŤăăăŻăĽă‚Żă«č¦łć¸¬ć‰€ă‚’ćŚăŁă¦ă„ă‚‹ă®ă‹ç˘şčŞŤă™ă‚‹ă®ă«ĺ˝ąç«‹ăˇăľă™ă€‚"> - -<!ENTITY ssl-observatory.prefs.done "完了"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS EverywhereăŻEFFă®SSL Observatoryを使用ă™ă‚‹ă“ă¨ăŚă§ăŤăľă™ă€‚ă“れăŻďĽ’ă¤ă®ĺŤăŤă‚’ă—ăľă™: (1) -ç§ăźăˇăŚä¸é–“者攻ć’を検出ă—ă€ă‚¦ă‚§ă–ă‚»ă‚ăĄăŞă†ă‚Łă‚’ĺ‘上ă•ă›ă‚‹ă®ă‚’支援ă™ă‚‹ăźă‚ă«ă€HTTP証ćŽć›¸ă®ă‚łă”ăĽă‚’観測所ă«é€äżˇă—ăľă™ă€‚ -ăťă—ă¦ă€(2) -ç§ăźăˇăŚĺ®‰ĺ…¨ă§ăŞă„接続やă–ă©ă‚¦ă‚¶ă¸ă®ć”»ć’ă‚’č¦ĺ‘Šă§ăŤă‚‹ă‚ă†ă«ă—ăľă™ă€‚"> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"äľ‹ăă°ă€https://www.something.com を訪れるă¨ăŤă€č¦łć¸¬ć‰€ăŚĺŹ—äżˇă—ăźč¨ĽćŽć›¸ăŻčްă‹ăŚwww.something.comを訪れăźă“ă¨ă‚’示ă—ăľă™ăŚă€čްăŚă“ă®ă‚µă‚¤ăを訪れăźă®ă‹ă€ă©ă®ç‰ąĺ®šă®ăšăĽă‚¸ă‚’見ă¦ă„ăźă®ă‹ăŻç¤şă•れăľă›ă‚“。詳細ăŻă‚Şă—ă‚·ă§ăłă‚’é¸ćŠžă—ă¦ăŹă ă•ă„:"> - -<!ENTITY ssl-observatory.prefs.hide "é«ĺş¦ăŞč¨ĺ®šă‚’éš ă™"> - -<!ENTITY ssl-observatory.prefs.nonanon -"TorăŚĺ©ç”¨ă§ăŤăŞă„ĺ ´ĺă§ă‚‚証ćŽć›¸ă‚’ăă‚§ăクă™ă‚‹"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"ç§ăźăˇăŻä»Šăľă§é€šă‚Šă‡ăĽă‚żă‚’匿ĺŤă«äżťă¨ă†ă¨ă™ă‚‹ă§ă—ょă†ăŚă€ă“ă®ă‚Şă—ă‚·ă§ăłăŻĺ®‰ĺ…¨ć€§ă‚’低下ă•ă›ăľă™"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"非公開DNSĺŤă®č¨ĽćŽć›¸ă‚’確認ă—ă¦ćŹäľ›ă™ă‚‹"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"ă“ă®ă‚Şă—ă‚·ă§ăłăŚăă‚§ăクă•れă¦ă„ăŞă„ĺ ´ĺă€ObservatoryăŻDNSシスă†ă を通ă—ă¦č§Łć±şă§ăŤăŞă„ĺŤĺ‰Ťă¸ă®č¨ĽćŽć›¸ă‚’č¨éڞă—ăľă›ă‚“。"> - -<!ENTITY ssl-observatory.prefs.show "é«ĺş¦ăŞč¨ĺ®šă‚’表示ă™ă‚‹"> - -<!ENTITY ssl-observatory.prefs.title "ssl Observatoryă®č¨ĺ®š"> - -<!ENTITY ssl-observatory.prefs.use "Observatoryを使用ă—ăľă™ă‹?"> -<!ENTITY ssl-observatory.warning.title "EFFă®SSL Observatoryă‹ă‚‰č¦ĺ‘Š"> -<!ENTITY ssl-observatory.warning.showcert "証ćŽć›¸ă®ăă‚§ăĽăłă‚’表示"> -<!ENTITY ssl-observatory.warning.okay "了解ă—ăľă™"> -<!ENTITY ssl-observatory.warning.text "EFFă®SSL ObservatoryăŻă“ă®ă‚µă‚¤ăă¸ă®HTTPS証ćŽć›¸ă«ă¤ă„ă¦ă®č¦ĺ‘Šă‚’出ă—ăľă—ăźă€‚()"> -<!ENTITY ssl-observatory.warning.defense "ă“ă®ă‚µă‚¤ăă«ăグイăłă—ă¦ă„ă‚‹ĺ ´ĺă€ä¸€ĺş¦ĺ®‰ĺ…¨ăŞćŽĄç¶šă‚’ç˘şäżťă—ă¦ă‹ă‚‰ă‘スăŻăĽă‰ă‚’変更ă™ă‚‹ă®ăŚčł˘ćŽă‹ă‚‚ă—れăľă›ă‚“。"> - -<!ENTITY ssl-observatory.prefs.self_signed -"自己署ĺŤă®č¨ĽćŽć›¸ă‚’確認ă—ă¦ćŹäľ›ă™ă‚‹"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"ă“れăŻćŽ¨ĺĄ¨ă•れăľă™ă€‚暗号化ă®ĺ•ŹéˇŚăŻă€č‡Şĺ·±ç˝˛ĺŤă•れăźçµ„ăżčľĽăżă‡ăイスă§ç‰ąă«ä¸€č¬çš„ă§ă™ă€‚"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd deleted file mode 100644 index 93d22f4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd +++ /dev/null @@ -1,49 +0,0 @@ -<!ENTITY https-everywhere.about.title "HTTPS Everywhereě— ëŚ€í•ě—¬ -"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "웹 ě•”í¸í™”! ěžëŹ™ěśĽëˇś 여러 ě‚¬ěť´íŠ¸ě— HTTPS ëł´ě•ěť„ 사용합ë‹ë‹¤."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "작성"> -<!ENTITY https-everywhere.about.librarians "ę·śěą™ě„¤ě • 라이브러리"> -<!ENTITY https-everywhere.about.thanks "Thanks to"> -<!ENTITY https-everywhere.about.contribute "ëŞ¨ë“ ęłłě—서 HTTPS를 사용í•ë ¤ë©´, ęł ë ¤í•´ ëł´ě‹ě‹śě¤"> -<!ENTITY https-everywhere.about.donate_tor "Torě— ę¸°ë¶€í•기"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "EFFě— ę¸°ë¶€í•기"> - -<!ENTITY https-everywhere.menu.about "HTTPS Everywhereě— ëŚ€í•ě—¬"> -<!ENTITY https-everywhere.menu.observatory "SSL 관측 í™ę˛˝ ě„¤ě •"> -<!ENTITY https-everywhere.menu.globalEnable "ëŞ¨ë“ ęłłě—서 HTTPS 사용"> -<!ENTITY https-everywhere.menu.globalDisable "ëŞ¨ë“ ęłłě—서 HTTPS 사용 ě• í•¨"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS ëŞ¨ë“ ęłł 사용 í™ę˛˝ ě„¤ě •"> -<!ENTITY https-everywhere.prefs.enable_all "ëŞ¨ë‘ ě‚¬ěš©"> -<!ENTITY https-everywhere.prefs.disable_all "ëŞ¨ë‘ ě‚¬ěš© ě• í•¨"> -<!ENTITY https-everywhere.prefs.reset_defaults "기본값으로 다시 ě„¤ě •"> -<!ENTITY https-everywhere.prefs.search "검ě‰"> -<!ENTITY https-everywhere.prefs.site "사이트"> -<!ENTITY https-everywhere.prefs.notes "ě°¸ęł "> -<!ENTITY https-everywhere.prefs.list_caption "HTTPS ë¦¬ë””ë ‰ě… ę·śěą™ěť„ ě ěš©í•시겟습ë‹ęąŚ?"> -<!ENTITY https-everywhere.prefs.enabled "사용"> -<!ENTITY https-everywhere.prefs.ruleset_howto "ěžě‹ ěť ę·śěą™ 작성 방법을 배울 ě ěžěеë‹ë‹¤ (다른 웹 ě‚¬ěť´íŠ¸ě— ëŚ€í•ś ě§€ě› ě¶”ę°€)"> -<!ENTITY https-everywhere.prefs.here_link "여기"> -<!ENTITY https-everywhere.prefs.toggle "ě „í™"> -<!ENTITY https-everywhere.prefs.reset_default "기본값으로 다시 ě„¤ě •"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML 소스 보기"> - -<!ENTITY https-everywhere.source.downloading "다운로드"> -<!ENTITY https-everywhere.source.filename "파일명"> -<!ENTITY https-everywhere.source.unable_to_download "소스를 ë‹¤ěš´ëˇśë“śí• ě 없습ë‹ë‹¤."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties deleted file mode 100644 index 110e0b8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = ëŞ¨ë“ ęłłě—서 HTTPS 사용 -https-everywhere.menu.globalDisable = ëŞ¨ë“ ęłłě—서 HTTPS 사용 ě• í•¨ -https-everywhere.menu.enableDisable = ę·śěą™ 활성화 / 비활성화 -https-everywhere.menu.noRules = (ěť´ íŽěť´ě§€ëĄĽ 위한 ę·śěą™ 없음) -https-everywhere.menu.unknownRules = (알 ě 없는 ěť´ íŽěť´ě§€ëĄĽ 위한 ę·śěą™) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd deleted file mode 100644 index 83deb59..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd +++ /dev/null @@ -1,92 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "세부 사í•과 사ěťí™ś ě •ëł´"> -<!ENTITY ssl-observatory.popup.later "ë‚ě¤‘ě— ě•Śë¦Ľ"> -<!ENTITY ssl-observatory.popup.no "ě•„ë‹ëŹ„"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS Everywhereěť´ SSL 관측소를 사용해야 í•©ë‹ęąŚ?"> - -<!ENTITY ssl-observatory.popup.yes "ě"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"매우 ë°©í•´í•는 기업 네트워í¬ëĄĽ 사용중이지 않으면, ěť´ę˛ěť„ 사용í•는 ę˛ěť´ ě•ě „ě••ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"다음 비밀 서버 이름과 기업 네트워í¬ëĄĽ 사용í•ě§€ 않는다면, ě•ě „í•©ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.alt_roots -"비표준 루트 CA로부터 서명ëě§€ 않은 인증서를 확인í•ęł ě śëł´í•¨."> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"개인 루트 인증서 권한과 부라우징을 모ë‹í„°í•는 ë°©í•´í•는 기업 네트워í¬ë‚ TLS 프록시와 카스퍼스키 ě•티바이러스를 사용í•ě§€ 않는다면, ěť´ ěµě…ěť„ 활성화í•는 ę˛ěť€ ě•ě „í•©ë‹ë‹¤(ę·¸ë¦¬ęł ě˘‹ěť€ ěťę°ěž…ë‹ë‹¤). ę·¸ 네트워í¬ě—서 활성화ëśë‹¤ë©´, ěť´ ěµě…은 ě śęłµëě–´ě ¸ě•Ľí•는 드문 인증서 ë•Śë¬¸ě— https:// 도메인을 ę·¸ 프록시를 통해 방문한 증거를 알릴 ę˛ěž…ë‹ë‹¤. ę·¸ëžě„ś 우리는 기본값으로 ë‘는 ę˛ěť„ 추천합ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.anonymous "익명을 위해 Tor를 사용í•는 ëŹ™ě• ěť¸ě¦ťě„ś 확인"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"익명을 위해 Tor를 사용í•는 ëŹ™ě• ěť¸ě¦ťě„ś 확인 (Torcheck 권장)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"ěť´ ěµě…은 Tor와 Torbuttoněť´ 설ěąëś 경우 권장ë©ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.asn -"ě로운 인증서를 볼 때, ě–´ë–¤ ISPě— ě—°ę˛°ëě–´ ěžëŠ”ě§€ ę´€ě¸ˇě†Śě— ë§í•ě‹ě‹śě¤."> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"ěť´ę˛ěť€ ę·€í•ěť ë„¤íŠ¸ě›Śí¬ěť "ěžěś¨ 시스템 ë˛í¸"를 ěě§‘í•ęł ě „ě†ˇí• ę˛ěž…ë‹ë‹¤. ěť´ę˛ěť€ 우리가 HTTPSě— ëŚ€í•í•는 공격을 찾는 ę˛ě— 대해 도움을 줄 ę˛ěž…ë‹ë‹¤. ę·¸ë¦¬ęł ěš°ë¦¬ëŠ” 공격이 ëą„ęµě 일ë°ě 인 이란과 시리아와 같은 장소ě—서 네트워í¬ě—서 관측소를 ę°€ě§€ęł ěžëŠ”ě§€ě— ëŚ€í•ś 여부를 확인í•는 데 도움이 ë ę˛ěž…ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.done "완료"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere은 EFFěť SSL 관측소를 ě‚¬ěš©í• ě ěžěеë‹ë‹¤. ěť´ę˛ěť€ ë‘ ę°€ě§€ 일을 í•©ë‹ë‹¤: (1) -ě¤‘ę°„ěž ęłµę˛©ěť„ ę°ě§€í•ęł ě›ąěť ëł´ě•ěť„ í–Ąě시키는 ę˛ěť„ 돕기 위해, HTTPS ěť¸ě¦ťě„śěť ëłµě‚¬ëł¸ěť„ SSL 관측소로 ëł´ë…ë‹ë‹¤. ę·¸ë¦¬ęł (2) 우리가 ę·€í•ě—게 ëł´ě•ě ěť´ě§€ 않는 ě—°ę˛°ěť´ë‚ ë¸ŚëťĽěš°ě €ě— ëŚ€í•ś ęłµę˛©ě— ëŚ€í•´ ę˛˝ęł í•도록 í•©ë‹ë‹¤."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"ě를 들어, https://www.something.coměť„ ë°©ë¬¸í• ë•Ś, 관측소ě—서 받은 인증서는 ë„ę°€ 사이트를 방문í–는지가 아닌, ë„ę°€ www.something.coměť„ 방문í–ę±°ë‚, 그들이 본 íŠąě •í•ś íŽěť´ě§€ 키를 í‘śě‹śí• ę˛ěž…ë‹ë‹¤. 더 많은 세부사í•ěť„ 위해 ěµě…ěť„ ě„ íťí•ě‹ě‹śě¤."> - -<!ENTITY ssl-observatory.prefs.hide "ęł ę¸‰ ě„¤ě • ě¨ę¸°ę¸°"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Torę°€ 가능í•ě§€ 않더라도 인증서 확인"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"우리는 계속 데이터를 익명으로 ëł´ë‚´ę˛ ě§€ë§Ś, ěť´ ě„ íťěť€ 덜 ëł´ě•ě ěž…ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.priv_dns -"non-public DNS 이름을 위한 인증서 확인과 ě śě¶ś"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"ěť´ ěµě…ěť´ ě„ íťëě§€ 않는다면, 관측소는 DNS 시스템을 통해 분석ë ě 없는 인증서를 기록í•ě§€ 않을 ę˛ěž…ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.show "ęł ę¸‰ ě„¤ě • 보이기"> - -<!ENTITY ssl-observatory.prefs.title "SSL 관측소 ě„¤ě •"> - -<!ENTITY ssl-observatory.prefs.use "관측소 사용?"> -<!ENTITY ssl-observatory.warning.title "EFFěť SSL ę´€ě¸ˇě†Śëˇśë¶€í„°ěť ę˛˝ęł "> -<!ENTITY ssl-observatory.warning.showcert "인증서 체인 보이기"> -<!ENTITY ssl-observatory.warning.okay "ěť´í•´í–습ë‹ë‹¤."> -<!ENTITY ssl-observatory.warning.text "EFFěť SSL 관측소가 다음 사이트를 위한 HTTPS ěť¸ě¦ťě„śě— ëŚ€í•ś ę˛˝ęł ëĄĽ 보내왔습ë‹ë‹¤."> -<!ENTITY ssl-observatory.warning.defense "ë§Śě•˝ ěť´ ě‚¬ěť´íŠ¸ě— ëˇśę·¸ěť¸ëě–´ ěžë‹¤ë©´, ě•ě „í•ś ě—°ę˛°ě— ěťĽë‹¨ 연결한 ë’¤, 비밀ë˛í¸ëĄĽ 바꾸는 ę˛ěť´ 권장ë©ë‹ë‹¤."> - -<!ENTITY ssl-observatory.prefs.self_signed -"ěžě‹ -서명 인증서 확인 ë°Ź ě śëł´"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"ěť´ę˛ěť€ 추천ë©ë‹ë‹¤: ě•”í¸í™” ë¬¸ě śëŠ” ěžę¸° ě„śëŞ…ëś ěž„ë˛ ë””ë“ś 장ěąě—서 íŠąíž ěťĽë°ě ěž…ë‹ë‹¤."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd deleted file mode 100644 index e249494..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Apie HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Ĺ ifruokite ĹľiniatinklÄŻ! Automatiškai naudokite HTTPS apsaugÄ… daugelyje svetainiĹł."> -<!ENTITY https-everywhere.about.version "Versija"> -<!ENTITY https-everywhere.about.created_by "SukĹ«rÄ—"> -<!ENTITY https-everywhere.about.librarians "TaisykliĹł bibliotekininkai"> -<!ENTITY https-everywhere.about.thanks "DÄ—kojame"> -<!ENTITY https-everywhere.about.contribute "Jei Jums patinka HTTPS Everywhere, galbĹ«t norÄ—site"> -<!ENTITY https-everywhere.about.donate_tor "Paaukoti Tor projektui"> -<!ENTITY https-everywhere.about.tor_lang_code "lt"> -<!ENTITY https-everywhere.about.donate_eff "Paaukoti EFF"> - -<!ENTITY https-everywhere.menu.about "Apie HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatorijos nustatymai"> -<!ENTITY https-everywhere.menu.globalEnable "Ä®galinti HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Išjungti HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere nustatymai"> -<!ENTITY https-everywhere.prefs.enable_all "Ä®galinti visas"> -<!ENTITY https-everywhere.prefs.disable_all "UĹľdrausti visas"> -<!ENTITY https-everywhere.prefs.reset_defaults "Atstatyti numatytas"> -<!ENTITY https-everywhere.prefs.search "Ieškoti"> -<!ENTITY https-everywhere.prefs.site "Tinklapis"> -<!ENTITY https-everywhere.prefs.notes "Pastabos"> -<!ENTITY https-everywhere.prefs.list_caption "Kurias HTTPS nukreipimo taisykles naudoti?"> -<!ENTITY https-everywhere.prefs.enabled "Ä®galinta"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Galite suĹľinoti, kaip patiems rašyti nukreipimo taisykles (kad pridÄ—tumÄ—te kitĹł svetainiĹł palaikymÄ…)"> -<!ENTITY https-everywhere.prefs.here_link "ÄŤia"> -<!ENTITY https-everywhere.prefs.toggle "Perjungti"> -<!ENTITY https-everywhere.prefs.reset_default "Atstatyti numatytÄ…"> -<!ENTITY https-everywhere.prefs.view_xml_source "Ĺ˝iĹ«rÄ—ti XML šaltinÄŻ"> - -<!ENTITY https-everywhere.source.downloading "AtsisiunÄŤiama"> -<!ENTITY https-everywhere.source.filename "Failo pavadinimas"> -<!ENTITY https-everywhere.source.unable_to_download "Nepavyko atsisiĹłsti šaltinio"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties deleted file mode 100644 index 00fdde9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = \u012ejungti HTTPS Everywhere -https-everywhere.menu.globalDisable = I\u0161jungti HTTPS Everywhere -https-everywhere.menu.enableDisable = Ijungti/i\u0161jungti taisykles -https-everywhere.menu.noRules = (\u0160iam puslapiui taisykli\u0173 n\u0117ra) -https-everywhere.menu.unknownRules = (\u0160io puslapio taisykl\u0117s ne\u017einomos) -https-everywhere.toolbar.hint = HTTPS Everywhere aktyvuotas. Galite \u012fjungti/i\u0161jungti j\u012f konkre\u010dioje svetain\u0117je spausdami \u017eenkliuk\u0105 adresyno juostoje. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd deleted file mode 100644 index f17e52c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "DetalÄ—s ir informacija apie privatumÄ…"> -<!ENTITY ssl-observatory.popup.later "Klausti vÄ—liau"> -<!ENTITY ssl-observatory.popup.no "Ne"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere gali aptikti atakas -nukreiptas prieš jĹ«sĹł naršyklÄ™, siĹłsdama gautus sertifikatus ÄŻ SSL -ObservatorijÄ…. Ar ÄŻjungti?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Ar HTTPS Everywhere turÄ—tĹł naudoti SSL ObservatorijÄ…?"> - -<!ENTITY ssl-observatory.popup.yes "Taip"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Ä®jungti yra saugu, nebent naudojate labai ribojamÄ… -korporatyvinÄŻ tinklÄ…:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Saugu, nebent naudojate korporatyvinÄŻ tinklÄ… su slaptais vidinio tinklo serveriĹł pavadinimais:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"SiĹłsti ir tikrinti sertifikatus, pasirašytus nestandartiniĹł sertifikavimo centrĹł"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Ä®jungti šiÄ… parinktÄŻ yra saugu (ir gera mintis), nebent naudojate ribojamÄ… korporatyvinÄŻ tinklÄ…, kuris stebi jĹ«sĹł naršymÄ… su TLS ÄŻgaliotuoju serveriu ir privaÄŤiu sertifikavimo centru. Jei ÄŻjungsite tokiame tinkle, ši parinktis gali palikti informacijos apie tai, kurios https:// svetainÄ—s buvo aplankytos naudojant šį ÄŻgaliotÄ…jÄŻ serverÄŻ, nes bus naudojami unikalĹ«s sertifikatai. TodÄ—l pagal nutylÄ—jimÄ… tai išjungiame."> - -<!ENTITY ssl-observatory.prefs.anonymous "Tikrinti sertifikatus naudojant Tor tinklÄ… anonimiškumui"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Tikrinti sertifikatus naudojant Tor tinklÄ… anonimiškumui (reikalauja Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Ĺ i parinktis reikalauja, kad bĹ«tĹł ÄŻdiegti Tor ir Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"Sutikus naujÄ… sertifikatÄ… pranešti Observatorijai, prie kokio interneto paslaugĹł tiekÄ—jo esate prisijungÄ™"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Gaus ir išsiĹłs jĹ«sĹł tinklo "autonominÄŻ sistemos numerÄŻ". Tai padÄ—s mums aptikti atakas nukreiptas prieš HTTPS ir nustatyti, ar mes turime duomenĹł apie tinklus iš tokiĹł vietĹł kaip Iranas ar Sirija, kur atakos yra gana daĹľnos."> - -<!ENTITY ssl-observatory.prefs.done "Atlikta"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere gali naudoti EFF SSL ObservatorijÄ…. Ji atlieka du dalykus: (1) -siunÄŤia HTTPS sertifikatĹł kopijas ÄŻ ObservatorijÄ…, kad padÄ—tĹł mums -aptikti 'Ĺľmogaus viduryje' atakas ir pagerinti Ĺľiniatinkio saugumÄ…; ir (2) -leidĹľia mums ÄŻspÄ—ti jus apie nesaugius prisijungimus ar atakas nukreiptas prieš jĹ«sĹł naršyklÄ™."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"PavyzdĹľiui, kai aplankote https://www.kazkas.com, Observatorijos -gautas sertifikatas rodys, kad kaĹľkas aplankÄ— www.kazkas.com, -bet ne tai, kas aplankÄ— svetainÄ™, ar kokÄŻ konkreÄŤiai puslapÄŻ jie -ĹľiĹ«rÄ—jo. Išsamesniai informacijai, uĹľveskite pelÄ—s ĹľymeklÄŻ virš parinkÄŤiĹł:"> - -<!ENTITY ssl-observatory.prefs.hide "SlÄ—pti išsamesnius nustatymus"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Tikrinti sertifikatus net jei Tor nepasiekiamas"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Mes vis vien bandysime išlaikyti duomenis anonimiškus, bet ši parinktis yra maĹľiau saugi"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"SiĹłsti ir tikrinti sertifikatus gautus iš neviešų DNS vardĹł"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Jei ši parinktis išjungta, Observatorija neÄŻrašinÄ—s tĹł sertifikatĹł, kuriĹł vardĹł nepavyksta gauti per DNS sistemÄ…."> - -<!ENTITY ssl-observatory.prefs.show "Rodyti išsamesnius nustatymus"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatorijos nustatymai"> - -<!ENTITY ssl-observatory.prefs.use "Naudoti ObservatorijÄ…?"> -<!ENTITY ssl-observatory.warning.title "Ä®SPÄ–JIMAS iš EFF SSL Observatorijos"> -<!ENTITY ssl-observatory.warning.showcert "Rodyti sertifikatĹł grandinÄ™"> -<!ENTITY ssl-observatory.warning.okay "Suprantu"> -<!ENTITY ssl-observatory.warning.text "EFF SSL Observatorija ÄŻspÄ—ja apie šiĹł svetainiĹł HTTPS sertifikatus:"> -<!ENTITY ssl-observatory.warning.defense "Jei esate prisiregistravÄ™ prie šios svetainÄ—s, patartina pasikeisti slaptaĹľodÄŻ, kai turÄ—site saugĹł ryšį."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Teikti ir tikrinti savo paties pasirašytus sertifikatus"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Rekomenduojama. Kriptografijos problemos ypaÄŤ daĹľnos savo paties pasirašytuose ÄŻmontuotuosiuose ÄŻtaisuose"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd deleted file mode 100644 index c7659af..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Par HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Ĺ ifrÄ“t tÄ«mekli! AutomÄtiski lietot HTTPS drošību daudzÄs vietnÄ“s."> -<!ENTITY https-everywhere.about.version "Versija"> -<!ENTITY https-everywhere.about.created_by "Autori"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "Pateicoties"> -<!ENTITY https-everywhere.about.contribute "ja Jums patÄ«k HTTPS Everywhere, iespÄ“jams vÄ“laties"> -<!ENTITY https-everywhere.about.donate_tor "ziedot Tor'am"> -<!ENTITY https-everywhere.about.tor_lang_code "an"> -<!ENTITY https-everywhere.about.donate_eff "ziedot EFF'am"> - -<!ENTITY https-everywhere.menu.about "Par HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory preferences"> -<!ENTITY https-everywhere.menu.globalEnable "IespÄ“jot HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "AtspÄ“jot HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere preferences"> -<!ENTITY https-everywhere.prefs.enable_all "IespÄ“jot visus"> -<!ENTITY https-everywhere.prefs.disable_all "AtspÄ“jot visus"> -<!ENTITY https-everywhere.prefs.reset_defaults "AtiestatÄ«t uz noklusÄ“juma vÄ“rtÄ«bÄm"> -<!ENTITY https-everywhere.prefs.search "MeklÄ“t"> -<!ENTITY https-everywhere.prefs.site "Vietne"> -<!ENTITY https-everywhere.prefs.notes "PiezÄ«mes"> -<!ENTITY https-everywhere.prefs.list_caption "Kurus HTTPS pÄradresÄcijas noteikumus lietot?"> -<!ENTITY https-everywhere.prefs.enabled "IespÄ“jots"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Variet iemÄcÄ«ties kÄ rakstÄ«t savus noteikumu komplektus (lai pievienotu citu tÄ«mekÄĽa vietņu atbalstu)"> -<!ENTITY https-everywhere.prefs.here_link "te"> -<!ENTITY https-everywhere.prefs.toggle "PÄrslÄ“gt"> -<!ENTITY https-everywhere.prefs.reset_default "AtiestatÄ«t uz noklusÄ“juma vÄ“rtÄ«bÄm"> -<!ENTITY https-everywhere.prefs.view_xml_source "SkatÄ«t XML avotu"> - -<!ENTITY https-everywhere.source.downloading "LejupielÄdÄ“"> -<!ENTITY https-everywhere.source.filename "Datnes_nosaukums"> -<!ENTITY https-everywhere.source.unable_to_download "Nevar lejupielÄdÄ“t avotu."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 paziņojums"> -<!ENTITY https-everywhere.popup.paragraph1 "OpÄ! JĹ«s lietojÄt stabilu HTTPS Everywhere versiju, bet, iespÄ“jams, mĹ«su jaunÄkajÄ laidienÄ mÄ“s nejauši jauninÄjÄm JĹ«su lÄ«dzšinÄ“jo versiju ar izstrÄdÄtÄju versiju."> -<!ENTITY https-everywhere.popup.paragraph2 "Vai vÄ“laties atgriezties pie stabilÄs versijas?"> -<!ENTITY https-everywhere.popup.paragraph3 "MÄ“s ÄĽoti priecÄtos, ja JĹ«s turpinÄtu lietot izstrÄdÄtÄju versiju un palÄ«dzÄ“tu padarÄ«t HTTPS Everywhere labÄku! IespÄ“jams, ka laiku pa laikam pamanÄ«sit kÄdas kÄĽĹ«das, par kurÄm varat ziņot rakstot angÄĽu valodÄ https-everywhere@eff.org . Atvainojamies par sagÄdÄtajÄm neÄ“rtÄ«bÄm un pateicamies par to, ka lietojat HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "IzvÄ“los strÄdÄt ar izstrÄdÄtÄja versiju"> -<!ENTITY https-everywhere.popup.revert "LejuplÄdÄ“t jaunÄko stabilo versiju"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties deleted file mode 100644 index aeef29d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = IespÄ“jot HTTPS visur -https-everywhere.menu.globalDisable = IzslÄ“gt HTTPS visur -https-everywhere.menu.enableDisable = IespÄ“jot / IzslÄ“gt kÄrtulas -https-everywhere.menu.noRules = (Ĺ ai lapai kÄrtulu nav) -https-everywhere.menu.unknownRules = (šīs lapas kÄrtulas nav zinÄmas) -https-everywhere.toolbar.hint = HTTPS Everywhere tagad ir aktÄ«vs. Klikšķinot ikonu adreses joslÄ, JĹ«s varat to pÄrslÄ“gt ikvienÄ vietnÄ“. -https-everywhere.migration.notification0 = Lai ieviestu kritisku labojumu, šis jauninÄjums atiestata JĹ«su HTTPS visur kÄrtulu preferences uz to noklusÄ“juma vÄ“rtÄ«bÄm. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd deleted file mode 100644 index a0e33e3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd +++ /dev/null @@ -1,99 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Papildu informÄcija un privÄtums"> -<!ENTITY ssl-observatory.popup.later "JautÄt man vÄ“lÄk"> -<!ENTITY ssl-observatory.popup.no "NÄ“"> - -<!ENTITY ssl-observatory.popup.text "HTTPS visur var atklÄt uzbrukumus JĹ«su pÄrlĹ«kam, nosĹ«tot uz Observatory sertifikÄtus, kurus saņemat. -IeslÄ“gt šo funkciju?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Vai HTTPS visur jÄizmanto SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "JÄ"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"IespÄ“jot ir droši, ja vien neizmantojat -ÄĽoti traucÄ“jošu jeb uzmÄcÄ«gu korporatÄ«vo tÄ«klu:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Droši, ja vien neizmantojat korporatÄ«vo tÄ«klu ar slepeniem iekštÄ«kla serveru vÄrdiem:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Iesniegt un pÄrbaudÄ«t sertifikÄtus, kurus parakstÄ«jušas nestandarta saknes CA jeb sertifikÄcijas iestÄdes"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Ir droši (un arÄ« ir laba doma) iespÄ“jot šo opciju, ja vien neizmantojat traucÄ“jošu jeb uzmÄcÄ«gu korporatÄ«vu tÄ«klu, kurš jĹ«su veiktajai pÄrlĹ«košanai seko, izmantojot TLS starpniekserveri un privÄto saknes sertifikÄcijas iestÄdi. -Opcija, kas iespÄ“jota šÄdÄ tÄ«klÄ, varÄ“tu publicÄ“t pierÄdÄ«jumus tam, kuri https:// domÄ“ni tiek skatÄ«ti caur šo starpniekserveri, tÄ izsniegto unikÄlo sertifikÄtu dēļ. TÄdēļ, pÄ“c noklusÄ“juma, mÄ“s šo izvÄ“li esam izslÄ“guši."> - -<!ENTITY ssl-observatory.prefs.anonymous "AnonimitÄtes nodrošinÄšanai pÄrbaudÄ«t sertifikÄtus izmantojot Tor"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"AnonimitÄtes nodrošinÄšanai pÄrbaudÄ«t sertifikÄtus izmantojot Tor (nepieciešams Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Opcijas lietošanai nepieciešams instalÄ“t Tor un Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"Kad redzat jaunu sertifikÄtu, informÄ“jiet Observatory par ISP, pie kura esat pieslÄ“dzies"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"DarbÄ«ba nolasÄ«s un nosĹ«tÄ«s jĹ«su tÄ«kla "Autonomo sistÄ“mas numuru". -Tas palÄ«dzÄ“s mums noteikt uzbrukumus pret HTTPS, un atklÄt vai no tÄ«kliem tiek veikta pÄrraudzÄ«ba tÄdÄs valstÄ«s kÄ IrÄna un SÄ«rija, kur uzbrukumi notiek salÄ«dzinoši bieĹľi."> - -<!ENTITY ssl-observatory.prefs.done "Gatavs"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS visur var lietot EFF's SSL Observatory. -Tas veic divas darbÄ«bas: (1) -sĹ«ta Obsevatory HTTPS sertifikÄtu kopijas, lai palÄ«dzÄ“tu mums -noteikt "starpnieka" uzbrukumus, un palielinÄtu tÄ«mekÄĽa drošību, un (2) -ÄĽauj mums brÄ«dinÄt jĹ«s par nedrošiem savienojumiem vai uzbrukumiem jĹ«su pÄrlĹ«kam."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"PiemÄ“ram, kad apmeklÄ“jat https://www.something.com , tad sertifikÄts, kuru saņem Observatory, rÄdÄ«s, ka kÄds ir apmeklÄ“jis www.something.com , bet nerÄdÄ«s ne to, kurš ir apmeklÄ“jis šo vietni, ne ari to kuras lapas skatÄ«tas. Slidiniet peli pÄr opcijÄm, lai iegĹ«tu papildu informÄciju:"> - -<!ENTITY ssl-observatory.prefs.hide "SlÄ“pt papildu opcijas"> - -<!ENTITY ssl-observatory.prefs.nonanon -"PÄrbaudÄ«t sertifikÄtus pat ja Tor nav pieejams"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"MÄ“s joprojÄm centÄ«simies nodrošinÄt datu anonimitÄti, tomÄ“r šī opcija ir mazÄk droša"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Iesniegt un pÄrbaudÄ«t sertifikÄtus DNS nosaukumiem, kuri nav publiski "> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Ja vien šī opcija nav atzÄ«mÄ“ta, Observatory neierakstÄ«s sertifikÄtus nosaukumiem, kurus tÄ nevar atrisinÄt caur DNS sistÄ“mu."> - -<!ENTITY ssl-observatory.prefs.show "ParÄdÄ«t papildu opcijas"> - -<!ENTITY ssl-observatory.prefs.title "Observatory SSL preferences"> - -<!ENTITY ssl-observatory.prefs.use "Izmantot Observatory?"> -<!ENTITY ssl-observatory.warning.title "EFF's Observatory SSL BRÄŞDINÄ€JUMS"> -<!ENTITY ssl-observatory.warning.showcert "ParÄdÄ«t sertificēšanas Ä·Ä“di"> -<!ENTITY ssl-observatory.warning.okay "Es saprotu"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory SSL izsniedza brÄ«dinÄjumu saistÄ«bÄ ar norÄdÄ«tÄs vietnes HTTPS sertifikÄtu(iem):"> -<!ENTITY ssl-observatory.warning.defense "Ja šajÄ vietnÄ“ esat reÄŁistrÄ“jies darbam, tad pÄ“c droša savienojuma izveides apsveriet paroles maiņu."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Iesniegt un pÄrbaudÄ«t pašparakstÄ«tus sertifikÄtus"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Tiek rekomendÄ“ts; ar šifrēšanu saistÄ«tas problÄ“mas ir Ä«paši bieĹľas iegultÄs, pašparakstošÄs iekÄrtÄs"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd deleted file mode 100644 index 358e781..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Mengenai HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Encrypt laman sesawang! Gunakan HTTPS secara automatik di kebanyakan laman sesawang."> -<!ENTITY https-everywhere.about.version "Versi"> -<!ENTITY https-everywhere.about.created_by "Dihasilkan oleh"> -<!ENTITY https-everywhere.about.librarians "Pustaka set aturan"> -<!ENTITY https-everywhere.about.thanks "Terima kasih kepada"> -<!ENTITY https-everywhere.about.contribute "Sekiranya anda menyukai HTTPS Everywhere, anda mungkin ingin mempertimbangkan untuk"> -<!ENTITY https-everywhere.about.donate_tor "Menderma kepada Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "ms-MY"> -<!ENTITY https-everywhere.about.donate_eff "Menderma kepada EFF"> - -<!ENTITY https-everywhere.menu.about "Mengenai HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Tetapan Pemantau SSL"> -<!ENTITY https-everywhere.menu.globalEnable "Pengaktifan HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Nyah-aktifkan HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Tetapan HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Pengaktifan semua"> -<!ENTITY https-everywhere.prefs.disable_all "Nyah-aktifkan All"> -<!ENTITY https-everywhere.prefs.reset_defaults "Tetapan semula kepada asal"> -<!ENTITY https-everywhere.prefs.search "Carian"> -<!ENTITY https-everywhere.prefs.site "Laman"> -<!ENTITY https-everywhere.prefs.notes "Nota"> -<!ENTITY https-everywhere.prefs.list_caption "Penghalaan aturan HTTPS yang manakah patut digunakan?"> -<!ENTITY https-everywhere.prefs.enabled "Pengaktifan"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Anda boleh mempelajari penulisan set aturan tersendiri (bagi menambah sokongan kepada laman sesawang yang lain)"> -<!ENTITY https-everywhere.prefs.here_link "di sini"> -<!ENTITY https-everywhere.prefs.toggle "Togol"> -<!ENTITY https-everywhere.prefs.reset_default "Tetapan semula kepada asal"> -<!ENTITY https-everywhere.prefs.view_xml_source "Papar Sumber XML"> - -<!ENTITY https-everywhere.source.downloading "Sedang memuat turun"> -<!ENTITY https-everywhere.source.filename "Nama fail"> -<!ENTITY https-everywhere.source.unable_to_download "Gagal untuk memuat turun sumber."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties deleted file mode 100644 index c369b37..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Pengaktifan HTTPS Everywhere -https-everywhere.menu.globalDisable = Nyah-aktifkan HTTPS Everywhere -https-everywhere.menu.enableDisable = Enable / Disable Rules -https-everywhere.menu.noRules = (No Rules for This Page) -https-everywhere.menu.unknownRules = (Rules for This Page Unknown) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd deleted file mode 100644 index 9b95cc0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd +++ /dev/null @@ -1,104 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Keterangan dan Maklumat Privasi"> -<!ENTITY ssl-observatory.popup.later "Tanya Saya Kemudian"> -<!ENTITY ssl-observatory.popup.no "Tidak"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere boleh mengesan serangan -terhadap pelayar web anda dengan menghantar sijil SSL yang anda terima ke -Pemantau SSL. Aktifkan fungsi ini?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Perlukah HTTPS Everywhere mengunakan Pemantau SSL?"> - -<!ENTITY ssl-observatory.popup.yes "Ya"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Ianya adalah selamat untuk pengaktifan, melainkan -anda menggunakan rangkaian koprat yang sangat merejah:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Selamat, melainkan anda menggunakan rangkaian koprat -dengan pelayan nama internet rahsia:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Hantar dan semak sijil SSL yang ditandatangani oleh -root CA yang tidak standard"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Ianya adalah selamat (dan satu idea yang bagus) untuk mengaktifkan pilihan ini, melainkan anda menggunakan rangkaian koprat yang sangat merejah atau perisian Kaspersky antivirus yang memantau pelayaran anda dengan proksi TLS dan root Certificate Authority persendirian. Sekiranya diaktifkan di atas rangkaian berkenaan, pilihan ini mungkin akan memaparkan bukti domain https:// yang telah dilawati menggunakan proksi tersebut, disebabkan oleh sijil SSL yang unik yang dihasilkan. Oleh itu kami, secara asalnya kami biarkan ia tidak aktif."> - -<!ENTITY ssl-observatory.prefs.anonymous "Semak sijil SSL menggunakan Tor untuk ujuan anonymiti"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Semak sijil SSL menggunakan Tor untuk tujuan anonimiti (memerlukan Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Pemilihan ini memerlukan Tor and Torbutton sedia terpasang"> - -<!ENTITY ssl-observatory.prefs.asn -"Apabila terpapar sijil SSL yang baru, maklumkan kepada Pemantau SSL tentang ISP yang telah berjaya disambungkan"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Ini akan capai dan hantar "Autonomous System number" rangkaian anda. Ia akan membantu mengesan serangan terhadap HTTPS, dan untuk menentukan samada terdapat pemantauan dari rangkaian seperti Iran dan Syria di mana serangan sering berlaku."> - -<!ENTITY ssl-observatory.prefs.done "Selesai"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere boleh menggunakan Pemantau SSL EFF. Terdapat dua -perkara yang dilakukan iaitu: (1) menghantar salinan sijil SSL kepada -Pemantau bagi tujuan mengesan serangan "man in the middle" serta -menambah baik keselamatan web; dan (2) memberi amaran kepada anda tentang -rangkaian yang tidak selamat atau serangan ke atas pelayar web anda."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Contohnya, apabila melawati laman https://www.something.com, sijil SSL -yang diterima oleh Pemantau SSL akan memberitahu bahawa ada pelawat yang -telah ke laman tersebut, tetapi bukan siapa yang telah melawatinya, atau -halaman yang mereka telah kunjungi. Halakan tetikus kepada senarai pilihan -untuk butiran lanjut:"> - -<!ENTITY ssl-observatory.prefs.hide "Sembunyikan tetapan maju"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Semak sijil SSL walaupun ketiadaan Tor"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Kami akan cuba menyimpan data secara anonimus, namun langkah ini adalah kurang selamat"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Hantar dan semak sijil SSL untuk nama DNS yang tidak awam"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Pemantau SSL tidak akan merakam sijil SSL yang namanya tidak dapat diselesaikan oleh sistem DNS, selagi pilihan ini tidak terpilih."> - -<!ENTITY ssl-observatory.prefs.show "Paparkan pilihan maju"> - -<!ENTITY ssl-observatory.prefs.title "Tetapan Pemantau SSL"> - -<!ENTITY ssl-observatory.prefs.use "Gunakan Pemantau SSL?"> -<!ENTITY ssl-observatory.warning.title "AMARAN dari Pemantau SSL EFF"> -<!ENTITY ssl-observatory.warning.showcert "Paparkan rantaian sijil SSL"> -<!ENTITY ssl-observatory.warning.okay "Saya faham"> -<!ENTITY ssl-observatory.warning.text "Amaran tentang sijil SSL untuk laman ini telah diberikan oleh Pemantau SSL EFF:"> -<!ENTITY ssl-observatory.warning.defense "Jika anda berjaya memasuki laman sesawang ini, anda dinasihatkan supaya menukar kata laluan setelah berada dalam sambungan yang selamat."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Hantar dan periksa sijil sendiri-bertanda"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Disarankan, masalah kriptografik adalah biasa pada peranti self-signed "> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd deleted file mode 100644 index 797be6f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Om HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "KryptĂ©r nettet. Bruk HTTPS-sikkerhet automatisk pĂĄ mange nettsider."> -<!ENTITY https-everywhere.about.version "Versjon"> -<!ENTITY https-everywhere.about.created_by "Lagd av"> -<!ENTITY https-everywhere.about.librarians "Regelsettbibliotekarer"> -<!ENTITY https-everywhere.about.thanks "Takk til"> -<!ENTITY https-everywhere.about.contribute "Hvis du liker HTTPS Everywhere, vurder ĂĄ"> -<!ENTITY https-everywhere.about.donate_tor "DonĂ©re til Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "DonĂ©re til EFF"> - -<!ENTITY https-everywhere.menu.about "Om HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory Innstillinger"> -<!ENTITY https-everywhere.menu.globalEnable "Aktiver HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Deaktiver HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Innstillinger"> -<!ENTITY https-everywhere.prefs.enable_all "Aktiver Alle"> -<!ENTITY https-everywhere.prefs.disable_all "Deaktiver Alle"> -<!ENTITY https-everywhere.prefs.reset_defaults "Gjenopprett Standardinnstillinger"> -<!ENTITY https-everywhere.prefs.search "Søk"> -<!ENTITY https-everywhere.prefs.site "Side"> -<!ENTITY https-everywhere.prefs.notes "Merknader"> -<!ENTITY https-everywhere.prefs.list_caption "Hvilke HTTPS omdirigeringsregler skal gjelde?"> -<!ENTITY https-everywhere.prefs.enabled "Aktivert"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lære mer om hvordan du lager dine egne regelsett (for ĂĄ støtte andre websider)"> -<!ENTITY https-everywhere.prefs.here_link "her"> -<!ENTITY https-everywhere.prefs.toggle "Av/PĂĄ"> -<!ENTITY https-everywhere.prefs.reset_default "Gjenopprett Standardinnstilling"> -<!ENTITY https-everywhere.prefs.view_xml_source "Vis XML Kilde"> - -<!ENTITY https-everywhere.source.downloading "Laster ned"> -<!ENTITY https-everywhere.source.filename "Filnavn"> -<!ENTITY https-everywhere.source.unable_to_download "Klarte ikke ĂĄ laste ned kilde."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties deleted file mode 100644 index 0bf50bc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Aktiver HTTPS Everywhere -https-everywhere.menu.globalDisable = Deaktiver HTTPS Everywhere -https-everywhere.menu.enableDisable = Aktiver / Deaktiver Regler -https-everywhere.menu.noRules = (Ingen regler for denne siden) -https-everywhere.menu.unknownRules = (Reglene for denne siden er ukjente) -https-everywhere.toolbar.hint = HTTPS Everywhere er nĂĄ aktiv. Du kan aktivere/deaktivere fra side til side ved ĂĄ klikke pĂĄ ikonet i adresselinjen. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd deleted file mode 100644 index a7fce63..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Detaljer og Personvernsinformasjon"> -<!ENTITY ssl-observatory.popup.later "Spør Meg Senere"> -<!ENTITY ssl-observatory.popup.no "Nei"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kan oppdage angrep -mot nettleseren din ved ĂĄ sende sertifikatene du mottar til -Observatory. Aktivere dette?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Skal HTTPS Everywhere bruke SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Ja"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Det er trygt ĂĄ aktivere dette, hvis du ikke er pĂĄ et veldig -pĂĄtrengende bedriftsnettverk:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Trygt, med mindre du bruker et bedriftsnettverk med hemmelige intranett servernavn."> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Send inn og sjekk sertifikater signert av ikke-standardiserte rotsertifiseringsinstanser"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Det er trygt (og en god idĂ©) ĂĄ aktivere denne innstillingen, med mindre du bruker et pĂĄtrengende bedriftsnettverk eller Kaspersky antivirusprogramvare som overvĂĄker surfingen din med en TLS proxy og en privat rotsertifiseringsinstans. Hvis du aktiverer dette pĂĄ et slikt nettverk, kan innstillingen publisere bevis pĂĄ hvilke https://-domener som ble besøk gjennom den proxyen, som følge av de unike sertifkatene den vil lage. SĂĄ vi deaktiverer den som standard."> - -<!ENTITY ssl-observatory.prefs.anonymous "Sjekk sertifikatene ved ĂĄ bruke Tor for anonymitet"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Sjekk sertifikater anonymt ved ĂĄ bruke Tor (Tor kreves)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Denne innstillingen krever at Tor installeres og aktiveres"> - -<!ENTITY ssl-observatory.prefs.asn -"NĂĄr du ser et nytt sertifikat, fortell Observatory hvilken internettleverandør du er tilkoblet"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Dette vil hente og sende ditt nettverks "autonome systemnummer". Dette vil hjelpe oss med ĂĄ lokalisere angrep mot HTTPS og med ĂĄ avgjøre om vi har observasjoner fra nettverk i Iran og Syria, hvor angrep er relativt vanlige."> - -<!ENTITY ssl-observatory.prefs.done "Ferdig"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere kan bruke EFF's SSL Observatory. Dette gjør to ting: (1) -sender kopier av HTTPS sertifikater til Observatory, for ĂĄ hjelpe oss ĂĄ -avsløre 'mellommann'-angrep og forbedre sikkerheten pĂĄ nettet; og (2) -lar oss advare deg mot usikre tilkoblinger og angrep pĂĄ nettleseren din."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"For eksempel, hvis du besøker https://www.something.com, vil sertifikatet -Observatory mottar indikere at noen besøkte -www.something.com, men ikke hvem som besøkte siden, eller spesifikt hvilken side -de sĂĄ pĂĄ. Hold muspekeren over innstillingene for flere detaljer:"> - -<!ENTITY ssl-observatory.prefs.hide "Skjul avanserte innstillinger"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Sjekk sertifikater selv om Tor ikke er tilgjengelig."> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Vil vil fortsatt prøve ĂĄ holde dataene anonyme, men denne innstillingen er mindre sikker"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Send inn og sjekk sertifikater til DNS-navn som ikke er offentlige"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Hvis denne innstillingen ikke er aktivert, vil ikke Observatory registrere sertikatene til navn som ikke kan analyseres gjennom DNS-systemet."> - -<!ENTITY ssl-observatory.prefs.show "Vis avanserte innstillinger"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory Innstillinger"> - -<!ENTITY ssl-observatory.prefs.use "Bruke Observatory?"> -<!ENTITY ssl-observatory.warning.title "ADVARSEL fra EFF's SSL Observatory "> -<!ENTITY ssl-observatory.warning.showcert "Vis sertifikatkjede"> -<!ENTITY ssl-observatory.warning.okay "Jeg forstĂĄr"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory har utstedt en advarsel om bruk av HTTPS sertifikatene pĂĄ denne siden:"> -<!ENTITY ssl-observatory.warning.defense "Hvis du er innlogget pĂĄ denne siden, er det anbefalt at du forandrer passordet sĂĄ snart du har en sikker tilkobling."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Send og sjekk selvsignerte sertifikater"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Dette er anbefalt; kryptografiske problemer er spesielt vanlig i selvsignerte enheter"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd deleted file mode 100644 index 04bb6c5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Over HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Versleutel het web! Gebruik HTTPS-beveiliging automatisch op vele sites."> -<!ENTITY https-everywhere.about.version "Versie"> -<!ENTITY https-everywhere.about.created_by "Gemaakt door"> -<!ENTITY https-everywhere.about.librarians "Regelsetbibliothecarissen"> -<!ENTITY https-everywhere.about.thanks "Met dank aan"> -<!ENTITY https-everywhere.about.contribute "Als HTTPS Everywhere u bevalt, kunt u overwegen"> -<!ENTITY https-everywhere.about.donate_tor "te doneren aan Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "te doneren aan het EFF"> - -<!ENTITY https-everywhere.menu.about "Over HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL-observatoriumvoorkeuren"> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere inschakelen"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere uitschakelen"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere-voorkeuren"> -<!ENTITY https-everywhere.prefs.enable_all "Alles inschakelen"> -<!ENTITY https-everywhere.prefs.disable_all "Alles uitschakelen"> -<!ENTITY https-everywhere.prefs.reset_defaults "Standaardwaarden herstellen"> -<!ENTITY https-everywhere.prefs.search "Zoeken"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Opmerkingen"> -<!ENTITY https-everywhere.prefs.list_caption "Welke HTTPS-omleidingsregels moeten worden toegepast?"> -<!ENTITY https-everywhere.prefs.enabled "Ingeschakeld"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Om ondersteuning voor andere websites toe te voegen, kunt u"> -<!ENTITY https-everywhere.prefs.here_link "zelf regelsets opstellen"> -<!ENTITY https-everywhere.prefs.toggle "Schakelen"> -<!ENTITY https-everywhere.prefs.reset_default "Standaardwaarden herstellen"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML-broncode bekijken"> - -<!ENTITY https-everywhere.source.downloading "Bezig met downloaden"> -<!ENTITY https-everywhere.source.filename "Bestandsnaam"> -<!ENTITY https-everywhere.source.unable_to_download "Kan broncode niet downloaden."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 bericht"> -<!ENTITY https-everywhere.popup.paragraph1 "Oeps! U gebruikte de stabiele versie van HTTPS Everywhere, maar het is mogelijk dat we u tijdens de laatste uitgave per ongeluk naar de ontwikkelversie hebben geupgrade."> -<!ENTITY https-everywhere.popup.paragraph2 "Wilt u teruggaan naar de stabiele versie?"> -<!ENTITY https-everywhere.popup.paragraph3 "We zouden het op prijs stellen als u doorging met het gebruik van onze ontwikkelde versie en ons hielp met het verbeteren van HTTPS Everywhere! U zult hier en daar wat bugs tegenkomen, die u kunt melden aan https-everywhere@eff.org. Excuses voor het ongemak, en veel dank voor het gebruik van HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Hou me op de ontwikkelde versie"> -<!ENTITY https-everywhere.popup.revert "Download de meest recenste stabiele uitgave."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties deleted file mode 100644 index a96fdc7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties +++ /dev/null @@ -1,7 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhere inschakelen -https-everywhere.menu.globalDisable = HTTPS Everywhere uitschakelen -https-everywhere.menu.enableDisable = Regels in-/uitschakelen -https-everywhere.menu.noRules = (Geen regels voor deze pagina) -https-everywhere.menu.unknownRules = (Regels voor deze pagina zijn onbekend) -https-everywhere.toolbar.hint = HTTPS Everywhere is nu geactiveerd. Je kan dit aanpassen door op een site-by-site basis te clicken op het icoon naast de adres bar. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd deleted file mode 100644 index e576db5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd +++ /dev/null @@ -1,99 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Details en privacy-informatie"> -<!ENTITY ssl-observatory.popup.later "Later opnieuw vragen"> -<!ENTITY ssl-observatory.popup.no "Nee"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kan aanvallen op uw browser detecteren door -de certificaten die u ontvangt, naar het observatorium door te sturen. Wilt u dit inschakelen?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"SSL-observatorium gebruiken?"> - -<!ENTITY ssl-observatory.popup.yes "Ja"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Het is veilig om dit in te schakelen, tenzij u een zeer indringend bedrijfsnetwerk gebruikt:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Veilig, tenzij u een bedrijfsnetwerk met geheime intranetservernamen gebruikt:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Certificaten ondertekend door niet-standaard hoofd-CA’s opsturen en controleren"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Het is veilig (en aangeraden) om deze optie in te schakelen, tenzij u een indringend -bedrijfsnetwerk gebruikt dat uw surfgedrag met een TLS-proxy en een -privĂ©-hoofdcertificaatautoriteit monitort. Indien deze optie op een dergelijk netwerk is ingeschakeld, -kan deze bewijs publiceren over welke HTTPS-domeinen via die proxy werden bezocht, vanwege de unieke -certificaten die dan worden geproduceerd. De optie is daarom standaard uitgeschakeld."> - -<!ENTITY ssl-observatory.prefs.anonymous "Certificaten omwille van anonimiteit via Tor controleren"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Certificaten omwille van anonimiteit via Tor controleren (vereist Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Voor deze optie zijn Tor en Torbutton vereist"> - -<!ENTITY ssl-observatory.prefs.asn -"Melden met welke ISP u bent verbonden indien u een nieuwe certificaat ziet"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Dit zal het Autonoom Systeem-nummer van uw netwerk ophalen en verzenden als het observatorium een -waarschuwing afgeeft over een certificaat dat u zag. Dit helpt ons aanvallen op HTTPS te lokaliseren."> - -<!ENTITY ssl-observatory.prefs.done "OK"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere kan het SSL-observatorium van EFF gebruiken. Dit doet twee dingen: ten eerste zendt -het kopieĂ«n van HTTPS-certificaten naar het observatorium om ons te helpen man-in-the-middle-aanvallen -te detecteren en de veiligheid van het web te verbeteren; ten tweede laat het ons u waarschuwen over -onveilige verbindingen en aanvallen op uw browser."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Als u bijvoorbeeld https://www.iets.nl bezoekt, geeft het certificaat dat het observatorium ontvangt aan -dat iemand www.iets.nl bezocht, maar niet wie de site bezocht of welke specifieke pagina de bezoeker -bekeek. Plaats uw muis boven de opties voor meer details:"> - -<!ENTITY ssl-observatory.prefs.hide "Geavanceerde opties verbergen"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Certificaten controleren zelfs als Tor niet beschikbaar is"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"We zullen nog steeds proberen de gegevens anoniem te houden, maar deze optie is minder veilig"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Certificaten voor niet-openbare DNS-namen opsturen en controleren"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Tenzij deze optie is aangevinkt, legt het observatorium geen certificaten vast voor namen die niet via -het DNS-systeem zijn op te lossen."> - -<!ENTITY ssl-observatory.prefs.show "Geavanceerde opties tonen"> - -<!ENTITY ssl-observatory.prefs.title "Voorkeuren SSL-observatorium"> - -<!ENTITY ssl-observatory.prefs.use "Het observatorium gebruiken?"> -<!ENTITY ssl-observatory.warning.title "WAARSCHUWING van SSL-observatorium van EFF"> -<!ENTITY ssl-observatory.warning.showcert "Toon de certificaatketen"> -<!ENTITY ssl-observatory.warning.okay "Ik begrijp het"> -<!ENTITY ssl-observatory.warning.text "Het SSL-observatorium van EFF heeft een waarschuwing uitgegeven over een HTTPS-certificaat voor deze site:"> -<!ENTITY ssl-observatory.warning.defense "Als u bent ingelogd op deze site, is het aan te raden uw wachtwoord te wijzigen zodra u een veilige verbinding hebt."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Verstuur en controleer zelf-getekende certificaten"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Dit is aanbevolen; cryptografische problemen zijn veel voorkomend in zelf-getekende embedded apparaten"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd deleted file mode 100644 index e0194a6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Szyfruj sieć! Automatycznie uĹĽywaj zabezpieczeĹ„ HTTPS na wielu stronach."> -<!ENTITY https-everywhere.about.version "Wersja"> -<!ENTITY https-everywhere.about.created_by "Stworzone przez"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "DziÄ™ki dla"> -<!ENTITY https-everywhere.about.contribute "JeĹĽeli lubisz HTTPS Everywhere, moĹĽesz rozwaĹĽyć "> -<!ENTITY https-everywhere.about.donate_tor "Dotacje dla Tora"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Dotacje dla Electronic Frontier Foundation"> - -<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Ustawienia SSL Observatory"> -<!ENTITY https-everywhere.menu.globalEnable "Włącz HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Wyłącz HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Ustawienia HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Włącz wszystko"> -<!ENTITY https-everywhere.prefs.disable_all "Wyłącz wszystko"> -<!ENTITY https-everywhere.prefs.reset_defaults "Przywróć ustawienia fabryczne"> -<!ENTITY https-everywhere.prefs.search "Szukaj"> -<!ENTITY https-everywhere.prefs.site "Strona"> -<!ENTITY https-everywhere.prefs.notes "Notatki"> -<!ENTITY https-everywhere.prefs.list_caption "KtĂłre z opcji przekierowaĹ„ HTTPS naleĹĽy zastosować?"> -<!ENTITY https-everywhere.prefs.enabled "Włączone"> -<!ENTITY https-everywhere.prefs.ruleset_howto "MoĹĽesz nauczyć siÄ™ jak pisać wĹ‚asne pakiety reguĹ‚ (by dać wsparcie innym stronom)"> -<!ENTITY https-everywhere.prefs.here_link "tutaj"> -<!ENTITY https-everywhere.prefs.toggle "Przełączanie"> -<!ENTITY https-everywhere.prefs.reset_default "Przywróć ustawienia fabryczne"> -<!ENTITY https-everywhere.prefs.view_xml_source "Zobacz ĹşrĂłdĹ‚o XML "> - -<!ENTITY https-everywhere.source.downloading "ĹšciÄ…ganie"> -<!ENTITY https-everywhere.source.filename "Nazwa pliku"> -<!ENTITY https-everywhere.source.unable_to_download "Nie moĹĽna Ĺ›ciÄ…gnąć ĹşrĂłdĹ‚a. "> - -<!ENTITY https-everywhere.popup.title "Powiadomienie o wersji HTTPS Everywhere 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "Ojej. UĹĽywaĹ‚eĹ› stabilnej wersji HTTPS Everywhere, ale mogliĹ›my wraz z najnowszÄ… wersjÄ… przypadkowo zaktualizować TwĂłj system do wersji rozwojowej."> -<!ENTITY https-everywhere.popup.paragraph2 "Czy chciaĹ‚byĹ› wrĂłcić do wersji stabilnej?"> -<!ENTITY https-everywhere.popup.paragraph3 "PragnÄ™libyĹ›my abyĹ› dalej uĹĽywaĹ‚ naszej wersji rozwojowej i pomĂłgĹ‚ nam uczyć HTTPS Everywhere lepszym! MoĹĽe siÄ™ okazać, ĹĽe jest trochÄ™ wiÄ™cej błędĂłw tu i tam, ktĂłre moĹĽesz zgĹ‚osić pod adres https-everywhere@eff.org. Wybacz proszÄ™ tÄ™ niedogodność. DziÄ™kujemy za uĹĽywanie HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "PozostaĹ„ przy wersji rozwojowej"> -<!ENTITY https-everywhere.popup.revert "Pobierz najnowszÄ… wersjÄ™ stabilnÄ…"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties deleted file mode 100644 index 03428a2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Włącz HTTPS Everywhere -https-everywhere.menu.globalDisable = Wyłącz HTTPS Everywhere -https-everywhere.menu.enableDisable = Włącz/Wyłącz reguĹ‚y -https-everywhere.menu.noRules = (brak reguĹ‚ dla tej strony) -https-everywhere.menu.unknownRules = (reguĹ‚y dla strony nieznane) -https-everywhere.toolbar.hint = HTTPS Everywhere jest teraz aktywne. MoĹĽesz przełączać to dla poszczegĂłlnych stron, klikajÄ…c ikonÄ™ w pasku adresu. -https-everywhere.migration.notification0 = W celu implementacji pewnej kluczowej poprawki, ta aktualizacja zresetuje ustawienia reguĹ‚ HTTPS Everywhere do ich domyĹ›lnych wartoĹ›ci. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd deleted file mode 100644 index bd515b3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd +++ /dev/null @@ -1,91 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Szczegóły i Polityka PrywatnoĹ›ci"> -<!ENTITY ssl-observatory.popup.later "Zapytaj mnie później"> -<!ENTITY ssl-observatory.popup.no "Nie"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere moĹĽe wykryć ataki -na twojÄ… przeglÄ…darkÄ™ przez wysyĹ‚anie do ciebie certyfikatĂłw, ktĂłre otrzymujesz -do "SSL Observatory". Włączyć tÄ… opcjÄ™?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Czy HTTPS Everywhere ma uĹĽywać "SSL Observatory"?"> - -<!ENTITY ssl-observatory.popup.yes "Tak"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Bezpiecznym jest uĹĽywanie tej opcji, chyba ĹĽe korzystasz -z intruzywnej sieci korporacyjnej."> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Bezpieczne, jeĹĽeli uĹĽywasz sieci korporacyjnej z ukrytymi nazwami serwerĂłw Intranetowych."> - -<!ENTITY ssl-observatory.prefs.alt_roots -"WysyĹ‚aj i sprawdzaj certyfikaty podpisane przez niestandardowe oĹ›rodki certyfikacji"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Jest bezpiecznym, (i dobrym pomysĹ‚em), by włączyć tÄ… opcjÄ™, chyba ĹĽe uĹĽywasz intruzywnej sieci korporacyjnej lub antywirusa firmy Kaspersky, ktĂłre monitorujÄ… twoje przeglÄ…danie za pomocÄ… TLS proxy i prywatnego roota CA. JeĹĽeli ta opcja jest włączona na takich wĹ‚aĹ›nie sieciach, opcja ta moĹĽe przyczynić siÄ™ do publikacji dowodĂłw na temat stron, ktĂłre byĹ‚y odwiedzane przez ten proxy, poniewaĹĽ unikalne certyfikaty zostanÄ… utworzone. Dlatego teĹĽ opcja ta domyĹ›lnie jest wyłączona."> - -<!ENTITY ssl-observatory.prefs.anonymous "SprawdĹş certyfikaty uĹĽywajÄ…c Tora dla prywatnoĹ›ci"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"SprawdĹş certyfikaty uĹĽywajÄ…c Tora dla prywatnoĹ›ci (wymaga aplikacji Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Ta opcja, do instalacji, wymaga Tora oraz aplikacji Torbutton "> - -<!ENTITY ssl-observatory.prefs.asn -"JeĹĽeli dostrzeĹĽesz nowe certyfikaty, potwierdĹş SLL Observatory, do ktĂłrego ISP jesteĹ› obecnie podłączony"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"To pobierze i wyĹ›le "numer Autonomicznego Systemu" Twojej sieci. -To pomoĹĽe nam zlokalizować ataki na HTTPS i okreĹ›lić, czy mamy obserwacje sieci w miejscach takich jak Iran czy Syria, gdzie ataki sÄ… porĂłwnywalnie czÄ™ste."> - -<!ENTITY ssl-observatory.prefs.done "Gotowe"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere moĹĽe uĹĽywać EFF's SSL Observatory. Daje to dwie rzeczy: (1) wysyĹ‚a kopie certyfikatĂłw HTTPS do SSL Observatory, pomagajÄ…c nam wykryć ataki osĂłb podsĹ‚uchujÄ…cych; i (2) daje nam znać o niezabezpieczonych połączeniach lub atakach na twojÄ… przeklÄ…darkÄ™."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Dla przykĹ‚adu, jeĹĽeli odwiedzasz https://www.something.com, certyfikat otrzymany przez SSL Observatory wskaĹĽe, ĹĽe ktoĹ› odwiedziĹ‚ https://www.something.com ale nie wskaĹĽe kto dokĹ‚adnie jÄ… odwiedzaĹ‚ i jakie strony przeglÄ…daĹ‚. NajedĹş kursorem na opcje by zobaczyć wiÄ™cej szczegółów "> - -<!ENTITY ssl-observatory.prefs.hide "Schowaj zaawansowane opcje"> - -<!ENTITY ssl-observatory.prefs.nonanon -"SprawdĹş certyfikaty nawet jeĹĽeli Tor nie jest dostÄ™pny"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Postaramy siÄ™ zachować anonimowość twoich danych, jednak ta opcja jest mniej bezpieczna."> - -<!ENTITY ssl-observatory.prefs.priv_dns -"WyĹ›lij i sprawdĹş certyfikaty dla niepublicznych nazw DNSĂłw"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"JeĹ›li ta opcja nie jest włączona, Obserwatorium nie zarejestruje certyfikatĂłw dla nazw, ktĂłrych nie moĹĽna znaleźć w systemie DNS."> - -<!ENTITY ssl-observatory.prefs.show "PokaĹĽ zaawansowane opcje"> - -<!ENTITY ssl-observatory.prefs.title "Preferencje SLL Observatory"> - -<!ENTITY ssl-observatory.prefs.use "UĹĽyj Observatory?"> -<!ENTITY ssl-observatory.warning.title "OSTRZEĹ»ENIE od EFF's SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "PokaĹĽ Ĺ‚aĹ„cuch certyfikatu"> -<!ENTITY ssl-observatory.warning.okay "Tak rozumie"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory wystawiĹ‚ ostrzeĹĽenie na temat certyfikatĂłw HTTPS dla tej stron:"> -<!ENTITY ssl-observatory.warning.defense "JeĹĽeli zalogowaĹ‚eĹ› siÄ™ do tej strony, bezpiecznym bÄ™dzie zmiana hasĹ‚a, po ponownym połączeniu siÄ™ z bezpiecznÄ… sieciÄ…."> - -<!ENTITY ssl-observatory.prefs.self_signed -"WysyĹ‚aj i sprawdzaj samopodpisane certyfikaty"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"To jest zalecane; problemy kryptograficzne sÄ… szczegĂłlnie czÄ™ste w samopodpisanych urzÄ…dzeniach wbudowanych."> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd deleted file mode 100644 index 805b7c5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Sobre o HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Criptografe a Web! Use automaticamente a segurança HTTPS em diversos sites."> -<!ENTITY https-everywhere.about.version "VersĂŁo"> -<!ENTITY https-everywhere.about.created_by "Criado por"> -<!ENTITY https-everywhere.about.librarians "Bibliotecários dos Conjuntos de Regras"> -<!ENTITY https-everywhere.about.thanks "Obrigado a"> -<!ENTITY https-everywhere.about.contribute "Se vocĂŞ gostar do HTTPS Everywhere, considere"> -<!ENTITY https-everywhere.about.donate_tor "Fazer uma doação para o Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Fazer uma doação para a EFF"> - -<!ENTITY https-everywhere.menu.about "Sobre o HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "PreferĂŞncias do ObservatĂłrio SSL"> -<!ENTITY https-everywhere.menu.globalEnable "Habilitar HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Desabilitar HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "PreferĂŞncias do HTTPS Everywhere "> -<!ENTITY https-everywhere.prefs.enable_all "Habilitar tudo"> -<!ENTITY https-everywhere.prefs.disable_all "Desabilitar tudo"> -<!ENTITY https-everywhere.prefs.reset_defaults "Restaurar as configurações padrĂŁo"> -<!ENTITY https-everywhere.prefs.search "Procurar"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Notas"> -<!ENTITY https-everywhere.prefs.list_caption "Quais regras de redirecionamento HTTPS devem ser aplicadas?"> -<!ENTITY https-everywhere.prefs.enabled "Habilitado(a)"> -<!ENTITY https-everywhere.prefs.ruleset_howto "VocĂŞ pode aprender como escrever seu prĂłprio conjunto de regras (para adicionar suporte para outros websites)"> -<!ENTITY https-everywhere.prefs.here_link "aqui"> -<!ENTITY https-everywhere.prefs.toggle "Alternar"> -<!ENTITY https-everywhere.prefs.reset_default "Restaurar as configurações padrĂŁo"> -<!ENTITY https-everywhere.prefs.view_xml_source "Ver Fonte XML"> - -<!ENTITY https-everywhere.source.downloading "Fazendo download"> -<!ENTITY https-everywhere.source.filename "Nome do Arquivo"> -<!ENTITY https-everywhere.source.unable_to_download "ImpossĂvel fazer download da origem."> - -<!ENTITY https-everywhere.popup.title "Aviso do HTTPS Everywhere 4.0development.11"> -<!ENTITY https-everywhere.popup.paragraph1 "Desculpe. VocĂŞ usava a versĂŁo estável do HTTPS Everywhere, mas, na nossa Ăşltima liberação, sem querer podemos ter atualizado seu navegador para a versĂŁo de desenvolvimento."> -<!ENTITY https-everywhere.popup.paragraph2 "Gostaria de voltar Ă versĂŁo estável?"> -<!ENTITY https-everywhere.popup.paragraph3 "Seria Ăştil para o nosso projeto se quiser continuar a usar a versĂŁo de desenvolvimento para ajudar-nos a melhorar o HTTPS Everywhere. PorĂ©m, pode encontrar mais bugs; pode informar sobre eles escrevendo para https-everywhere@eff.org. Desculpe pelo incĂ´modo, e obrigado por usar o HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Manter o navegador na versĂŁo de desenvolvimento"> -<!ENTITY https-everywhere.popup.revert "Baixar a versĂŁo estável mais recente"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties deleted file mode 100644 index 66160e4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Habilitar HTTPS Everywhere -https-everywhere.menu.globalDisable = Desabilitar HTTPS Everywhere -https-everywhere.menu.enableDisable = Habilitar / Desabilitar Regras -https-everywhere.menu.noRules = (NĂŁo há Regras para Esta Página) -https-everywhere.menu.unknownRules = (Regras Desconhecidas para Esta Página) -https-everywhere.toolbar.hint = HTTPS Everywhere foi ativado. VocĂŞ pode habilitá-lo individualmente para cada site, clicando no Ăcone na barra de endereços. -https-everywhere.migration.notification0 = Para implementar uma reparação crucial, esta atualização limpa sua preferĂŞncia de regras do HTTPS Everywhere para valores padrĂŁo. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd deleted file mode 100644 index 7ef2617..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd +++ /dev/null @@ -1,94 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Detalhes e Informações sobre a Privacidade"> -<!ENTITY ssl-observatory.popup.later "Pergunte-me mais tarde"> -<!ENTITY ssl-observatory.popup.no "NĂŁo"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere detecta ataques -contra seu navegador enviando os certificados que vocĂŞ receber -ao ObservatĂłrio. VocĂŞ gostaria de ativá-lo?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"O HTTPS Everywhere deverá usar o ObservatĂłrio SSL?"> - -<!ENTITY ssl-observatory.popup.yes "Sim"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"É seguro habilitar isto, a nĂŁo ser que vocĂŞ use uma -rede corporativa muito intrusiva:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Seguro, a nĂŁo ser que vocĂŞ use uma rede corporativa com nomes de servidores secretos na intranet:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Submeta e verifique os certificados assinados pelas non-standard root CAs"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"É seguro (e uma boa idĂ©ia) habilitar esta opção, a nĂŁo ser que vocĂŞ use uma rede corporativa intrusiva ou o Kapersky antivirus que monitora sua navegação com uma proxy TLS e um certificado Certificate Authority privado raiz. Se habilitado em uma rede deste tipo, esta opção pode publicar evidĂŞncias de quais domĂnios httpss:// foram visitados atravĂ©s daquele proxy, por causa dos certificados Ăşnicos que serĂŁo produzidos. EntĂŁo nĂłs deixamos isto desabilitado por padrĂŁo."> - -<!ENTITY ssl-observatory.prefs.anonymous "Checar certificados usando Tor para anonimato"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Checar certificados usando Tor para anonimato (requer Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Esta opção requer que o Tor e o Torbutton estejam instalados"> - -<!ENTITY ssl-observatory.prefs.asn -"Quando vocĂŞ vir um novo certificado, diga ao ObservatĂłrio a qual ISP vocĂŞ está conectado"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Isto irá buscar e enviar o "Autonomous System Number" de sua rede. Isto irá nos ajudar a localizar ataques contra HTTPS, e a determinar se nĂłs temos observações das redes localizadas em lugares como IrĂŁ e SĂria, onde os ataques sĂŁo relativamente mais comuns."> - -<!ENTITY ssl-observatory.prefs.done "Pronto"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere pode usar o ObservatĂłrio SSL de EFF, para realizar duas funções: (1) enviar cĂłpias dos certificados HTTPS ao ObservatĂłrio, para ajudar-nos -a detectar o "homem no meio" dos ataques e melhorar a segurança da Web; e (2) -Avisar-nos sobre conexões nĂŁo seguras ou ataques ao seu navegador."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Por exemplo, quando vocĂŞ visita https://www.algumacoisa.com, o certificado -recebido pelo ObservatĂłrio indicará que alguĂ©m visitou -www.algumacoisa.com, mas nĂŁo quem visitou o site, ou qual página especĂfica foi vista. Passe o mouse sobre as opções para mais detalhes:"> - -<!ENTITY ssl-observatory.prefs.hide "Ocultar opções avançadas"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Checar os certificados mesmo se o Tor nĂŁo estiver disponĂvel"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"NĂłs continuaremos tentando manter os dados anĂ´nimos, mas esta opção Ă© menos segura"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Submeter e checar os certificados para nomes de DNS nĂŁo-pĂşblicos"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"A nĂŁo ser que esta opção esteja marcada, o ObservatĂłrio gravará os certificados para os nomes impossĂveis de resolver atravĂ©s do sistema DNS."> - -<!ENTITY ssl-observatory.prefs.show "Mostrar opções avançadas"> - -<!ENTITY ssl-observatory.prefs.title "PreferĂŞncias do ObservatĂłrio SSL"> - -<!ENTITY ssl-observatory.prefs.use "Usar este ObservatĂłrio?"> -<!ENTITY ssl-observatory.warning.title "AVISO do ObservatĂłrio SSL de EFF"> -<!ENTITY ssl-observatory.warning.showcert "Mostrar a sĂ©rie do certificado"> -<!ENTITY ssl-observatory.warning.okay "Eu entendi"> -<!ENTITY ssl-observatory.warning.text "O ObservatĂłrio SSL de EFF emitiu um aviso sobre o(s) certificados(s) HTTPS para este site:"> -<!ENTITY ssl-observatory.warning.defense "Se vocĂŞ estiver logado neste site, Ă© aconselhável trocar sua senha assim que vocĂŞ tiver uma conexĂŁo segura."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Envie e verifique os certificados auto-assinados"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Isto Ă© recomendado; problemas de criptografia sĂŁo especialmente comuns em certificados auto-assinados de sistemas embarcados"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd deleted file mode 100644 index 86d3da2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Đž HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "ЗаŃифрŃйте Ńеть! ĐвтоматичеŃки переключайтеŃŃŚ на безопаŃный протокол HTTPS там, где это возможно."> -<!ENTITY https-everywhere.about.version "ВерŃия"> -<!ENTITY https-everywhere.about.created_by "Đвторы"> -<!ENTITY https-everywhere.about.librarians "Хранители правил"> -<!ENTITY https-everywhere.about.thanks "БлагодарноŃти"> -<!ENTITY https-everywhere.about.contribute "Đ•Ńли Вам нравитŃŃŹ HTTPS Everywhere, возможно, Đ’Ń‹ хотели бы Ńделать"> -<!ENTITY https-everywhere.about.donate_tor "пожертвование Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "ru"> -<!ENTITY https-everywhere.about.donate_eff "пожертвование EFF"> - -<!ENTITY https-everywhere.menu.about "Đž HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "НаŃтройки SSL Observatory"> -<!ENTITY https-everywhere.menu.globalEnable "Включить HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Выключить HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "НаŃтройки HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "Включить вŃŃ‘"> -<!ENTITY https-everywhere.prefs.disable_all "Выключить вŃŃ‘"> -<!ENTITY https-everywhere.prefs.reset_defaults "По Ńмолчанию"> -<!ENTITY https-everywhere.prefs.search "ПоиŃĐş"> -<!ENTITY https-everywhere.prefs.site "Сайт"> -<!ENTITY https-everywhere.prefs.notes "Примечания"> -<!ENTITY https-everywhere.prefs.list_caption "Какие правила перенаправлений ŃледŃет иŃпользовать?"> -<!ENTITY https-everywhere.prefs.enabled "Включено"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Đ ŃководŃтво по Ńозданию новых правил находитŃŃŹ"> -<!ENTITY https-everywhere.prefs.here_link "здеŃŃŚ"> -<!ENTITY https-everywhere.prefs.toggle "Переключить"> -<!ENTITY https-everywhere.prefs.reset_default "СброŃить Đş значению по Ńмолчанию"> -<!ENTITY https-everywhere.prefs.view_xml_source "ПроŃмотреть иŃходник XML"> - -<!ENTITY https-everywhere.source.downloading "ЗагрŃзка"> -<!ENTITY https-everywhere.source.filename "ĐĐĽŃŹ файла"> -<!ENTITY https-everywhere.source.unable_to_download "Не ĐĽĐľĐłŃ Đ·Đ°ĐłŃ€Ńзить иŃходник"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 Ńведомление"> -<!ENTITY https-everywhere.popup.paragraph1 "Ой. Đ’Ń‹ иŃпользовали ŃтабильнŃŃŽ верŃию HTTPS Everywhere, но ĐĽŃ‹, возможно, ŃĐ»Ńчайно обновили Вам её Đ´Đľ разрабатываемой верŃии."> -<!ENTITY https-everywhere.popup.paragraph2 "Хотели бы Đ’Ń‹ вернŃтьŃŃŹ Đş Ńтабильной верŃии?"> -<!ENTITY https-everywhere.popup.paragraph3 "Мы были бы рады, еŃли бы Đ’Ń‹ продолжили иŃпользовать разрабатываемŃŃŽ верŃию, и помогли нам Ńделать HTTPS Everywhere Đ»ŃчŃе! Đ’Ń‹ могли бы найти неŃколько ĐľŃибок, и приŃлать их нам на https-everywhere@eff.org. Đзвините за неŃдобŃтва, и ŃпаŃибо за иŃпользование HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "ĐžŃтатьŃŃŹ на разрабатываемой верŃии"> -<!ENTITY https-everywhere.popup.revert "ЗагрŃзить поŃледнюю ŃтабильнŃŃŽ верŃию"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties deleted file mode 100644 index 36530f3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Включить HTTPS Everywhere -https-everywhere.menu.globalDisable = Выключить HTTPS Everywhere -https-everywhere.menu.enableDisable = Включить / Выключить правила -https-everywhere.menu.noRules = Нет правил для этой Ńтраницы -https-everywhere.menu.unknownRules = Правила для этой Ńтраницы неизвеŃтны -https-everywhere.toolbar.hint = HTTPS Everywhere активен. Đ’Ń‹ можете отключить его для этого Ńайта кликнŃв по значкŃ. -https-everywhere.migration.notification0 = Đ’ целях реализации критичеŃких иŃправлений, это обновление ŃбраŃывает наŃтройки правил HTTPS Everywhere Đş значениям по Ńмолчанию. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd deleted file mode 100644 index f0f06bd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd +++ /dev/null @@ -1,120 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Подробная информация и Ńведения Đľ конфиденциальноŃти"> -<!ENTITY ssl-observatory.popup.later "СпроŃить позже"> -<!ENTITY ssl-observatory.popup.no "Нет"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere может раŃпознавать атаки на Đ’Đ°Ń Đ±Ń€Đ°Ńзер, -ĐżŃтём отправки полŃчаемых Ńертификатов в SSL Observatory. -Включить даннŃŃŽ опцию?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Должен ли HTTPS Everywhere иŃпользовать SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Да"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"Включение данной опции безопаŃно, кроме ŃĐ»Ńчая когда -Đ’Ń‹ иŃпользŃете очень навязчивŃŃŽ корпоративнŃŃŽ Ńеть"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"БезопаŃно, кроме ŃĐ»Ńчая когда Đ’Ń‹ иŃпользŃете -корпоративнŃŃŽ Ńеть Ń Ńекретными именами Ńерверов"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Отправить и проверить Ńертификаты, подпиŃанные -неŃтандартными корневыми центрами Ńертификации"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"Đто безопаŃно (а так же хороŃая идея) включить даннŃŃŽ опцию, -кроме ŃĐ»Ńчая, когда Đ’Ń‹ иŃпользŃете навязчивŃŃŽ корпоративнŃŃŽ Ńеть -или ĐнтивирŃŃ ĐšĐ°ŃперŃкого, который Ńледит за ВаŃей работой в Ńети -Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ TLS прокŃи и чаŃтного корневого Центра Сертификации. -Đ•Ńли она бŃдет включена в такой Ńети, то может обнародовать -Ńведения Đľ том какие домены https:// были поŃещены через этот -прокŃи, вŃледŃтвие Ńникальных Ńертификатов которые он бŃдет -издавать. ĐźĐľŃŤŃ‚ĐľĐĽŃ ĐĽŃ‹ ĐľŃтавили её выключенной по Ńмолчанию."> - -<!ENTITY ssl-observatory.prefs.anonymous "Проверить Ńертификаты иŃпользŃемые Tor для анонимноŃти"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Проверить Ńертификаты иŃпользŃемые Tor -для анонимноŃти (требŃет Tor)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Đта опция требŃет наличия ŃŃтановленного и включенного Tor."> - -<!ENTITY ssl-observatory.prefs.asn -"При полŃчении нового Ńертификата, Ńообщить -SSL Observatory Đş ĐşĐ°ĐşĐľĐĽŃ ĐżŃ€ĐľĐ˛Đ°ĐąĐ´ĐµŃ€Ń Đ’Ń‹ подключены"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Đ‘Ńдет полŃчать и отправлять "Номер Đвтономной СиŃтемы" -ВаŃей Ńети. Đто поможет нам локализовать атаки против HTTPS -и определить наличие наблюдений для Ńетей в таких меŃтах как -Đран и Сирия, где атаки Ńравнительно чаŃты."> - -<!ENTITY ssl-observatory.prefs.done "Готово"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere может иŃпользовать SSL Observatory. Đто -обеŃпечивает две вещи: (1) отправляет копии Ńертификатов в SSL -Observatory, что бы помочь нам определить атаки 'человек -поŃередине' и ŃĐ»ŃчŃить безопаŃноŃть Веб; и (2) позволяет нам -предŃпреждать Đ’Đ°Ń Đľ небезопаŃных Ńоединениях или атаках на -Đ’Đ°Ń Đ±Ń€Đ°Ńзер."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Например, когда Đ’Ń‹ заходите на https://www.something.com, -Ńертификат полŃченный SSL Observatory бŃдет означать что кто-то -поŃетил www.something.com, но не кто именно его поŃетил, или -какŃŃŽ конкретнŃŃŽ ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń ĐľĐ˝ проŃматривал. Наведите ĐşŃŃ€Ńор на -опции для более подробной информации:"> - -<!ENTITY ssl-observatory.prefs.hide "Скрыть дополнительные опции"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Проверять Ńертификаты даже еŃли Tor недоŃŃ‚Ńпен"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Мы по-ĐżŃ€ĐµĐ¶Đ˝ĐµĐĽŃ ŃтараемŃŃŹ Ńохранить ВаŃи -данные анонимными, но эта опция менее безопаŃна."> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Отправить и проверить Ńертификаты для непŃбличных DNS имён"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Đ•Ńли данная опция выключена, SSL Observatory не бŃдет -региŃтрировать Ńертификаты для имён, которые он не может -разреŃить через DNS."> - -<!ENTITY ssl-observatory.prefs.show "Показать дополнительные опции"> - -<!ENTITY ssl-observatory.prefs.title "НаŃтройки SSL Observatory"> - -<!ENTITY ssl-observatory.prefs.use "ĐŃпользовать SSL Observatory?"> -<!ENTITY ssl-observatory.warning.title "ПРЕДУПРЕЖДЕНĐĐ• от SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "Показать Ń†ĐµĐżĐľŃ‡ĐşŃ Ńертификатов"> -<!ENTITY ssl-observatory.warning.okay "ĐŻ понимаю"> -<!ENTITY ssl-observatory.warning.text "SSL Observatory выдал предŃпреждение -для Ńертификат(-а/-ов) данного Ńайта:"> -<!ENTITY ssl-observatory.warning.defense "Đ•Ńли Đ’Ń‹ воŃли в ŃчётнŃŃŽ запиŃŃŚ на данном Ńайте, может быть -целеŃообразно Ńменить пароль поŃле ŃŃтановки безопаŃного -Ńоединения."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Подтвердите и проверьте ŃобŃтвенные Ńертификаты"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"РекомендŃетŃŃŹ. КриптографичеŃкие проблемы ĐľŃобенно -раŃпроŃтранены в ŃамоподпиŃанных вŃтраиваемых ŃŃтройŃтвах."> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd deleted file mode 100644 index f528d07..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "HTTPS Everywhere පිලිබඳව"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "ŕ¶¶ŕ·śŕ·„ŕ·ť වෙබ් අඩවි ŕ·ŕ¶łŕ·„ŕ·Ź HTTPS ආරක්ෂාව ŕ·ŕ·Šŕ·€ŕ¶şŕ¶‚ක්‍රීයව පාවිච්චි කරන්න."> -<!ENTITY https-everywhere.about.version "ŕ·ŕ¶‚ŕ·ŕ·Šŕ¶šŕ¶»ŕ¶«ŕ¶ş"> -<!ENTITY https-everywhere.about.created_by "නිර්මිŕ¶"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "ŕ·ŕ·Šŕ¶ŕ·”ŕ¶ŕ·’ŕ¶ş"> -<!ENTITY https-everywhere.about.contribute "HTTPS Everywhere පිලිබඳව ඔබ ŕ¶šŕ·ŕ¶¸ŕ¶ŕ·’නම් මේවා ŕ·ŕ¶˝ŕ¶šŕ·Ź ŕ¶¶ŕ·ŕ¶˝ŕ·’ŕ¶ş ŕ¶şŕ·”ŕ¶ŕ·”ŕ¶ş"> -<!ENTITY https-everywhere.about.donate_tor "Tor වලට ආධාර කිරීම"> -<!ENTITY https-everywhere.about.tor_lang_code "ඉංග්‍රීŕ·ŕ·’"> -<!ENTITY https-everywhere.about.donate_eff " EFF වලට ආධාර කරන්න"> - -<!ENTITY https-everywhere.menu.about "HTTPS Everywhere පිලිබඳව"> -<!ENTITY https-everywhere.menu.observatory "SSL නිරික්ෂණාගාර මනාප "> -<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere ක්‍රියාකරවන්න"> -<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere ක්‍රියාවිරහිචකරවන්න"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere මනාප "> -<!ENTITY https-everywhere.prefs.enable_all "ŕ·ŕ·’යල්ල ŕ·ŕ¶¶ŕ¶˝ කරන්න "> -<!ENTITY https-everywhere.prefs.disable_all "ŕ·ŕ·’යල්ල ŕ¶…ŕ¶¶ŕ¶˝ කරන්න "> -<!ENTITY https-everywhere.prefs.reset_defaults "යථා ŕ¶ŕ¶ŕ·Šŕ·€ŕ¶şŕ¶§ ŕ¶´ŕ¶ŕ·Š කරන්න"> -<!ENTITY https-everywhere.prefs.search "ŕ·ŕ·śŕ¶şŕ¶±ŕ·Šŕ¶±"> -<!ENTITY https-everywhere.prefs.site "අඩවිය"> -<!ENTITY https-everywhere.prefs.notes "ŕ·ŕ¶§ŕ·„න්"> -<!ENTITY https-everywhere.prefs.list_caption "කුමන HTTPS ŕ·„ŕ·ŕ¶»ŕ·€ŕ·”ම් කොන්දේŕ·ŕ·’ŕ¶ş ŕ¶ŕ·ťŕ¶»ŕ¶śŕ¶±ŕ·Šŕ¶±ŕ¶Ż ? "> -<!ENTITY https-everywhere.prefs.enabled "ŕ·ŕ¶¶ŕ¶˝ කරන ලදී "> -<!ENTITY https-everywhere.prefs.ruleset_howto "ඔබගේ rulesets ලියන ආකාරය ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż ඔබට ඉගෙනගචහŕ·ŕ¶š(අනෙකුŕ¶ŕ·Š වෙබ් අඩවි ŕ·ŕ¶Żŕ·„ŕ·Ź ŕ·ŕ·„ŕ¶ş ŕ¶‘ŕ¶šŕ¶ŕ·” කිරීමට) "> -<!ENTITY https-everywhere.prefs.here_link "මෙහි "> -<!ENTITY https-everywhere.prefs.toggle "ටොගලය "> -<!ENTITY https-everywhere.prefs.reset_default "යථා ŕ¶ŕ¶ŕ·Šŕ·€ŕ¶şŕ¶§ ŕ¶´ŕ¶ŕ·Š කරන්න"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML කේචපෙන්වන්න "> - -<!ENTITY https-everywhere.source.downloading "භාගචවෙමින්"> -<!ENTITY https-everywhere.source.filename "ගොනු නම"> -<!ENTITY https-everywhere.source.unable_to_download "භාගචකිරීම ŕ·ŕ·’දුකල නොහŕ·ŕ¶š."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties deleted file mode 100644 index 7cdeccb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = HTTPS Everywhere ŕ·ŕ¶¶ŕ¶˝ කරවන්න -https-everywhere.menu.globalDisable = HTTPS Everywhere ŕ¶…ŕ¶¶ŕ¶˝ කරවන්න -https-everywhere.menu.enableDisable = ŕ·ŕ¶¶ŕ¶˝/ දුබල කරවීමේ නීŕ¶ŕ·’ -https-everywhere.menu.noRules = (මෙම පිටුව ŕ·ŕ¶Żŕ·„ŕ·Ź නීŕ¶ŕ·’ ŕ¶šŕ·’ŕ·ŕ·’වක් ŕ¶±ŕ·ŕ¶) -https-everywhere.menu.unknownRules = (මෙම පිටුව ŕ·ŕ¶¸ŕ·Šŕ¶¶ŕ¶±ŕ·Šŕ¶Ż නීŕ¶ŕ·’ ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż ŕ·ŕ¶Żŕ·„නක් ŕ¶±ŕ·ŕ¶) -https-everywhere.toolbar.hint = HTTPS Everywhere ŕ¶Żŕ·ŕ¶±ŕ·Š ක්‍රියාŕ¶ŕ·Šŕ¶¸ŕ¶šŕ¶şŕ·’. ඔබට ŕ¶‘ŕ¶ş ŕ¶Żŕ·ŕ¶±ŕ·Š යොමු ŕ¶ŕ·“රුවේ ඇŕ¶ŕ·’ නිරූපකය ඔබමින් අඩවියෙන් අඩවියට ටොගල් ŕ¶šŕ¶˝ ŕ·„ŕ·ŕ¶š. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd deleted file mode 100644 index 0064466..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "විŕ·ŕ·Šŕ¶ŕ¶» ŕ·„ŕ·Ź පෞද්ගලික ŕ¶ŕ·śŕ¶»ŕ¶ŕ·”රු "> -<!ENTITY ssl-observatory.popup.later "ŕ¶´ŕ·ŕ·”ŕ·€ මගෙන් ŕ¶…ŕ·ŕ¶±ŕ·Šŕ¶±."> -<!ENTITY ssl-observatory.popup.no "ŕ¶±ŕ·ŕ¶"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere ඔබේ බ්‍රව්ŕ·ŕ¶»ŕ¶şŕ¶§ එරෙහිව ඇŕ¶ŕ·’වන ආක්‍රමණ -හදුනාගන්නා ŕ¶…ŕ¶ŕ¶», ඔබට ŕ¶˝ŕ·ŕ¶¶ŕ·™ŕ¶± ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š නිරික්ෂණාගාරයට යවයි. -මෙම ක්‍රියාවලිය ŕ·ŕ·’දුකරනවාට ඔබ ŕ¶šŕ·ŕ¶¸ŕ¶ŕ·’ŕ¶Ż?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS Everywhere SSL නිරික්ෂණාගාරය භාවිŕ¶ŕ·Ź ŕ¶šŕ¶˝ ŕ¶şŕ·”ŕ¶ŕ·”ŕ¶Ż?"> - -<!ENTITY ssl-observatory.popup.yes "ඔව්"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"ආගන්ŕ¶ŕ·”ŕ¶š ŕ·ŕ¶‚යුක්චජාලයක් භාවිŕ¶ŕ·Ź කරන විට ŕ·„ŕ·ŕ¶»ŕ·™ŕ¶±ŕ·Šŕ¶± -මෙය ŕ·ŕ¶¶ŕ¶˝ කිරීම ŕ·ŕ·”රක්ෂිචවේ:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"ඔබ රහŕ·ŕ·’ගචඅන්ŕ¶ŕ¶ŕ¶˘ŕ·Źŕ¶˝ ŕ·ŕ·šŕ·€ŕ·Źŕ¶Żŕ·Źŕ¶şŕ¶š නමක් ŕ·ŕ¶¸ŕ¶ś ŕ·ŕ¶‚යුක්චජාලයක් භාවිŕ¶ŕ·Ź නොකරන්නේ නම් ඔබ ŕ·ŕ·”රක්ෂිŕ¶ŕ¶ş."> - -<!ENTITY ssl-observatory.prefs.alt_roots -"යොමුකරීමෙන් ŕ¶´ŕ·ŕ·” ŕ¶…ŕ·ŕ¶¸ŕ·Šŕ¶¸ŕ¶ මුල ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š බලධාරීන් ŕ¶…ŕ¶ŕ·Šŕ·ŕ¶±ŕ·Š ŕ¶šŕ¶˝ ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š පරික්ෂා කරන්න."> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"ආගන්ŕ¶ŕ·”ŕ¶š ŕ·ŕ¶‚යුක්චජාලයක් ŕ·„ŕ·ť TLS proxy ŕ·„ŕ·Ź පෞද්ගලික ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š බලධාරියා විŕ·ŕ·’න් ඔබේ පිරික්ŕ·ŕ·”ම් නිරීක්ෂණය කරන ලබන Kaspersky ප්‍රŕ¶ŕ·’වයිර෠මŕ·ŕ¶Żŕ·”ŕ¶šŕ·Źŕ¶‚ŕ¶śŕ¶şŕ¶šŕ·Š ŕ·„ŕ·ť භාවිŕ¶ŕ·Ź කරන විට මෙම විකල්පය ŕ·ŕ¶¶ŕ¶˝ කිරීම ŕ·ŕ·”රක්ෂිචනොවේ (එමෙන්ම මෙය අනුවණ ŕ¶…ŕ¶Żŕ·„ŕ·ŕ¶šŕ·’). මෙවŕ·ŕ¶±ŕ·’ ජාලයක මෙම විකල්පය ŕ·ŕ¶¶ŕ¶˝ ŕ¶šŕ¶» ŕ¶ŕ·ŕ¶¶ŕ·”වහොŕ¶ŕ·Š එම proxy ŕ¶şŕ·śŕ¶Żŕ·Ź ŕ¶śŕ·’ŕ¶ş https:// ŕ·€ŕ·ŕ¶¸ŕ·Š ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż ŕ·ŕ·Źŕ¶šŕ·Šŕ·‚ŕ·’ හෙළිවිය ŕ·„ŕ·ŕ¶š. ŕ¶’ නිŕ·ŕ·Ź මෙම විකල්පය ŕ·ŕ·Źŕ¶¸ŕ·Źŕ¶±ŕ·Šâ€Ťŕ¶şŕ¶şŕ·™ŕ¶±ŕ·Š ŕ¶…ŕ¶¶ŕ¶˝ ŕ¶šŕ¶» ඇŕ¶."> - -<!ENTITY ssl-observatory.prefs.anonymous "නිර්නාමිකŕ¶ŕ·Źŕ·€ ŕ·ŕ¶Żŕ·„ŕ·Ź Tor යොදාගන්නා ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š බලන්න."> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"නිර්නාමිකŕ¶ŕ·Źŕ·€ ŕ¶‹ŕ¶Żŕ·™ŕ·ŕ·Ź Tor භාවිŕ¶ŕ·Ź කරන (Tor ŕ¶…ŕ·€ŕ·ŕ·Šâ€Ťŕ¶ş වන) ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š පරික්ෂා කරන්න"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"මෙම විකල්පය ŕ·ŕ¶Żŕ·„ŕ·Ź Tor ŕ·ŕ·Šŕ¶®ŕ·Źŕ¶´ŕ¶±ŕ¶ş ŕ¶šŕ¶» ක්‍රියාŕ¶ŕ·Šŕ¶¸ŕ¶š ŕ¶šŕ¶˝ ŕ¶şŕ·”ŕ¶ŕ·”ŕ¶şŕ·’."> - -<!ENTITY ssl-observatory.prefs.asn -"ඔබ නව ŕ·ŕ·„ŕ¶ŕ·’ŕ¶šŕ¶şŕ¶šŕ·Š දකිනවිට නිරික්ෂනාගාරයට ඔබ ŕ·ŕ¶¸ŕ·Šŕ¶¶ŕ¶±ŕ·Šŕ¶° වී ඇŕ¶ŕ·’ ISPŕ¶ş ŕ¶´ŕ·€ŕ·ŕ¶±ŕ·Šŕ¶±."> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"මෙමගින් ඔබේ ජාලයේ "ŕ·ŕ·Šŕ·€ŕ¶ŕ¶±ŕ·Šŕ¶ŕ·Šâ€Ťŕ¶» ŕ¶´ŕ¶Żŕ·Šŕ¶°ŕ¶ŕ·’ ŕ¶…ŕ¶‚ŕ¶šŕ¶ş" අමුණා යවයි. මෙමගින් ŕ¶…ŕ¶´ŕ¶§ HTTPS වලට විරුද්ධව හටගන්නා ආක්‍රමණ හදුනාගŕ·ŕ¶±ŕ·“මටŕ¶ŕ·Š, ŕ¶…ŕ¶´ŕ¶śŕ·š ජාලය කවුරුන් ŕ·„ŕ·ť නිරීක්ෂණය කරන්නේ ŕ¶Żŕ·ŕ¶şŕ·’ ŕ¶Żŕ·ŕ¶±ŕ¶śŕ·ŕ¶±ŕ·“මටŕ¶ŕ·Š උපකාරී වේ. ŕ·ŕ·’රියාව ŕ·„ŕ·Ź ඉරානය ŕ·€ŕ·ŕ¶±ŕ·’ රටවල්වල මෙවŕ·ŕ¶±ŕ·’ ආක්‍රමණ ඉŕ¶ŕ·Ź ŕ·ŕ·”ලබ වේ."> - -<!ENTITY ssl-observatory.prefs.done "කාර්යය ඉටු කරන ලදී"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere මගින් EFF's SSL නිරික්ෂණාගාරය භාවිŕ¶ŕ·Ź ŕ¶šŕ¶˝ ŕ·„ŕ·ŕ¶š. මෙමගින් කර්ŕ¶ŕ·€ŕ·Šâ€Ťŕ¶şŕ¶şŕ¶±ŕ·Š 2 ŕ¶šŕ·Š ŕ·ŕ·’දුවේ: (1) -HTTPS ŕ·ŕ·„ŕ¶ŕ·’කවල අනුපිටපŕ¶ŕ·Š නිරික්ෂණාගාරයට ŕ¶şŕ·ŕ·€ŕ·“මෙන්, -'man in the middle' ආක්‍රමණය හදුනාගŕ·ŕ¶±ŕ·“මට ŕ·„ŕ·Ź ජාල ආරක්ෂාව ŕ·ŕ¶Żŕ·„ŕ·Ź උපකාරී වේ; ŕ¶ŕ·€ŕ¶Ż (2) -මෙමගින් ඔබට අනාරක්ෂිචŕ·ŕ¶¶ŕ·ŕ¶Żŕ·’ŕ¶şŕ·Ź ŕ·„ŕ·Ź ඔබේ බ්‍රව්ŕ·ŕ¶»ŕ¶şŕ¶§ එල්ලවන ආක්‍රමණය ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż ŕ¶…ŕ¶±ŕ¶ŕ·”රු අගවයි."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"උදාහරණයක් ලෙ෠ඔබ https://www.something.com නම් වෙබ් අඩවියට ඇŕ¶ŕ·”ŕ·…ŕ·” වූ විට, -නිරික්ෂණාගාරයට ŕ¶˝ŕ·ŕ¶¶ŕ·™ŕ¶± ŕ·ŕ·„ŕ¶ŕ·’කයෙන් යම් පුද්ගලයෙක් www.something.com වෙබ් අඩවියට ප්‍රවේ෠වූ ŕ¶¶ŕ·€ ŕ·ŕ¶Żŕ·„න් කෙරුනද, - මෙම වෙබ් අඩවියට ප්‍රවේ෠කල පුද්ගලයා ŕ·„ŕ·ť එම පුද්ගලයා නරඹන ලද වෙබ් පිටුවන් ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż ŕ¶ŕ·śŕ¶»ŕ¶ŕ·”රු ŕ¶˝ŕ·ŕ¶¶ŕ·™ŕ¶±ŕ·Šŕ¶±ŕ·š ŕ¶±ŕ·ŕ¶. -ŕ·€ŕ·ŕ¶©ŕ·’පුර විŕ·ŕ·Šŕ¶ŕ¶» ŕ¶Żŕ·ŕ¶±ŕ¶śŕ·ŕ¶±ŕ·“මට මෙම විකල්ප මචමුŕ·ŕ¶šŕ¶ş ŕ¶ŕ¶¶ŕ¶±ŕ·Šŕ¶±:"> - -<!ENTITY ssl-observatory.prefs.hide "ප්‍රගමන විකල්ප ŕ·ŕ¶śŕ·€ŕ¶±ŕ·Šŕ¶±."> - -<!ENTITY ssl-observatory.prefs.nonanon -"Tor උපයෝජ්‍ය නොවන ŕ¶…ŕ·€ŕ·ŕ·Šŕ¶®ŕ·Ź වලදී ŕ¶Ż ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š පරික්ෂා කරන්න."> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"මෙම විකල්පය ŕ¶‘ŕ¶ŕ¶»ŕ¶¸ŕ·Š ŕ·ŕ·”රක්ෂිචනොවන නමුදු, ඔබේ ŕ¶Żŕ¶ŕ·Šŕ¶ නිර්නාමිකව ŕ¶ŕ¶¶ŕ·Źŕ¶śŕ·ŕ¶±ŕ·“මට ŕ¶…ŕ¶´ ŕ¶‹ŕ¶ŕ·Šŕ·ŕ·„ කරමු"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"යොමුකිරීමෙන් ŕ¶´ŕ·ŕ·” ŕ¶´ŕ·śŕ¶Żŕ·” -නොවන DNS නම් ŕ·ŕ¶Żŕ·„ŕ·Ź ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š පරික්ෂා කරන්න "> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"මෙම විකල්පය ŕ¶ŕ·ťŕ¶»ŕ·Źŕ¶śŕ·™ŕ¶± නොමŕ·ŕ¶ŕ·’ නම්, නිරික්ෂණාගාරය මගින් DNS නාම නිŕ·ŕ·Šŕ¶ ŕ¶ş කරගŕ·ŕ¶±ŕ·“මට නොහŕ·ŕ¶šŕ·’ ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š ŕ·ŕ¶§ŕ·„න් කරගන්නේ ŕ¶±ŕ·ŕ¶. "> - -<!ENTITY ssl-observatory.prefs.show "ප්‍රගමන විකල්පයන් පෙන්වන්න "> - -<!ENTITY ssl-observatory.prefs.title "SSL නිරික්ෂණාගාර මනාප "> - -<!ENTITY ssl-observatory.prefs.use "නිරික්ෂණාගාරය භාවිŕ¶ŕ·Ź කරයි ŕ¶Ż?"> -<!ENTITY ssl-observatory.warning.title "EFF ŕ·„ŕ·“ SSL නිරික්ෂණාගාරය අවවාදයක් නිකුŕ¶ŕ·Š කරයි "> -<!ENTITY ssl-observatory.warning.showcert "ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š දාමය පෙන්වන්න "> -<!ENTITY ssl-observatory.warning.okay "මම වටහාගŕ¶ŕ·’මි"> -<!ENTITY ssl-observatory.warning.text "EFF ŕ·„ŕ·“ SSL නිරික්ෂණාගාරය මෙම වෙබ් අඩවියෙහි HTTPS ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š(ŕ¶ş) ŕ¶´ŕ·’ŕ·…ŕ·’ŕ¶¶ŕ¶Ż අවවාදයක් නිකුŕ¶ŕ·Š ŕ¶šŕ¶» ඇŕ¶:"> -<!ENTITY ssl-observatory.warning.defense "ඔබ මෙම වෙබ් අඩවියට පුරන වී ඇŕ¶ŕ·’ නම්, ඔබට ŕ·ŕ·”රක්ෂිචŕ·ŕ¶¸ŕ·Šŕ¶¶ŕ¶±ŕ·Šŕ¶°ŕ¶ŕ·Źŕ·€ŕ¶šŕ·Š ඇŕ¶ŕ·’විට ඔබේ මුරපදය වෙනŕ·ŕ·Š කිරීම වඩා උචිචවේ."> - -<!ENTITY ssl-observatory.prefs.self_signed -"යොමු කිරීමෙන් ŕ¶´ŕ·ŕ·” ŕ·ŕ·Šŕ·€ŕ¶şŕ¶‚-ŕ¶…ŕ¶ŕ·Šŕ·ŕ¶±ŕ·Š ŕ¶şŕ·śŕ¶Żŕ¶± ලද ŕ·ŕ·„ŕ¶ŕ·’ŕ¶š පරික්ෂා කරන්න."> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"මෙය නිර්දේŕ·ŕ·’ŕ¶ŕ¶şŕ·’; ŕ·ŕ¶‚ŕ¶šŕ·šŕ¶ŕ¶± ŕ¶śŕ·ŕ¶§ŕ¶˝ŕ·” ŕ·ŕ·Šâ€Śŕ·€ŕ¶şŕ¶‚-ŕ¶…ŕ¶ŕ·Šŕ·ŕ¶±ŕ·Š කරන ලද උපක්‍රමවල බහුලය."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd deleted file mode 100644 index 3ea4ae8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Zašifruj Web! AutomatickĂ© pouĹľitie HTTPS zabezpeÄŤenia na mnohĂ˝ch stránkach."> -<!ENTITY https-everywhere.about.version "Verzia"> -<!ENTITY https-everywhere.about.created_by "Autori"> -<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> -<!ENTITY https-everywhere.about.thanks "PoÄŹakovanie"> -<!ENTITY https-everywhere.about.contribute "Ak sa Vám páči HTTPS Everywhere, mĂ´Ĺľno by ste mohli"> -<!ENTITY https-everywhere.about.donate_tor "PrispieĹĄ na Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "sk"> -<!ENTITY https-everywhere.about.donate_eff "PrispieĹĄ na EFF"> - -<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Nastavenia SSL Observatory"> -<!ENTITY https-everywhere.menu.globalEnable "PovoliĹĄ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "ZakázaĹĄ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Nastavenia HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "PovoliĹĄ všetko"> -<!ENTITY https-everywhere.prefs.disable_all "ZakázaĹĄ všetko"> -<!ENTITY https-everywhere.prefs.reset_defaults "ObnoviĹĄ predvolenĂ©"> -<!ENTITY https-everywhere.prefs.search "HÄľadaĹĄ"> -<!ENTITY https-everywhere.prefs.site "Stránka"> -<!ENTITY https-everywhere.prefs.notes "Poznámky"> -<!ENTITY https-everywhere.prefs.list_caption "KtorĂ© pravidlá pre HTTPS presmerovanie mám pouĹľiĹĄ?"> -<!ENTITY https-everywhere.prefs.enabled "PovolenĂ©"> -<!ENTITY https-everywhere.prefs.ruleset_howto "MĂ´Ĺľete sa nauÄŤiĹĄ ako napĂsaĹĄ svoje vlastnĂ© pravidlá (pridaĹĄ podporu pre ÄŹalšie webovĂ© stránky)"> -<!ENTITY https-everywhere.prefs.here_link "tu"> -<!ENTITY https-everywhere.prefs.toggle "Prepnúť"> -<!ENTITY https-everywhere.prefs.reset_default "ObnoviĹĄ predvolenĂ©"> -<!ENTITY https-everywhere.prefs.view_xml_source "ZobraziĹĄ zdroj XML"> - -<!ENTITY https-everywhere.source.downloading "SĹĄahovanie"> -<!ENTITY https-everywhere.source.filename "Názov sĂşboru"> -<!ENTITY https-everywhere.source.unable_to_download "Nie je moĹľnĂ© stiahnuĹĄ zdroj."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties deleted file mode 100644 index 9ceec89..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = PovoliĹĄ HTTPS Everywhere -https-everywhere.menu.globalDisable = ZakázaĹĄ HTTPS Everywhere -https-everywhere.menu.enableDisable = PovoliĹĄ / ZakázaĹĄ Pravidlá -https-everywhere.menu.noRules = (Pre TĂşto Stránku NeexistujĂş Ĺ˝iadne Pravidlá) -https-everywhere.menu.unknownRules = (Pravidlá Pre TĂşto Stránku SĂş Neznáme) -https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd deleted file mode 100644 index 7fd9f57..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Podrobnosti a Informácie o sĂşkromĂ"> -<!ENTITY ssl-observatory.popup.later "OpĂ˝tajte sa ma neskĂ´r"> -<!ENTITY ssl-observatory.popup.no "Nie"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere dokáže detekovaĹĄ Ăştoky -na Váš prehliadaÄŤ tak, Ĺľe pošle certifikát, ktorĂ˝ ste dostali do -Observatory. Zapnúť tĂşto funkciu?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Má HTTPS Everywhere pouĹľiĹĄ SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Ăno"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"PouĹľitie tejto funkcie je bezpeÄŤnĂ©, pokiaÄľ nepouĹľĂvate -firemnĂş sieĹĄ:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"BezpeÄŤnĂ©, pokiaÄľ nepouĹľĂvate firemnĂş sieĹĄ s menami utajenĂ˝ch intranetovĂ˝ch serverov:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Pošli a skontroluj certifikáty podpĂsanĂ© neštandardnou koreĹovou certifikaÄŤnou autoritou"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"PovoliĹĄ tĂşto moĹľnosĹĄ je bezpeÄŤnĂ© (a aj dobrĂ˝ nápad) pokiaÄľ nepouĹľĂvate firemnĂş sieĹĄ alebo antivĂrovĂ˝ softvĂ©r Kaspersky, ktorĂ˝ monitoruje Vaše prehliadanie s TLS proxy a sĂşkromnĂ© koreĹovĂ© certifikaÄŤnĂ© autority. Ak povolĂte tĂşto moĹľnosĹĄ na takejto sieti, tak pomocou unikátnych certifikátov sa mĂ´Ĺľu uverejniĹĄ dĂ´kazy o tom akĂ© https:// domĂ©ny ste navštĂvili cez tĂşto proxy. Tak sme ju nechali v predvolenom nastavenĂ vypnutĂş."> - -<!ENTITY ssl-observatory.prefs.anonymous "SkontrolovaĹĄ certifikát pomocou Tor kvĂ´li anonymite"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"SkontrolovaĹĄ certifikát pomocou Tor kvĂ´li anonymite (vyĹľaduje Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Aby ste mohli pouĹľiĹĄ toto nastavenie, musĂte maĹĄ nainštalovanĂ˝ Tor a Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"Ak zistĂš novĂ˝ certifikát, povedz Observatory, ku ktorĂ©mu poskytovateÄľovi internetovĂ©ho pripojenia si pripojenĂ˝"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Toto stiahne a pošle "Autonomous System Number" Vašej siete. PomĂ´Ĺľe nám to lokalizovaĹĄ Ăştok proti HTTPS a urÄŤiĹĄ ÄŤi máme pozorovania zo sietĂ z miest ako je Iran a Syria, kde sĂş Ăştoky pomerne ÄŤastĂ©."> - -<!ENTITY ssl-observatory.prefs.done "Hotovo"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere mĂ´Ĺľe pouĹľĂvaĹĄ SSL Observatory od EFF. Toto spravĂ dve veci: (1) -pošle kĂłpie HTTPS certifikátov do Observatory, aby nám pomohli detekovaĹĄ -'man in the middle' Ăştoky a zdokonaÄľovaĹĄ bezpeÄŤnosĹĄ na Webe; a (2) -umoĹľnĂ nám varovaĹĄ Vás o nebezpeÄŤnĂ˝ch pripojeniach alebo Ăştokoch na Váš prehliadaÄŤ."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"NaprĂklad, ak navštĂvite https://www.nieÄŤo.com, certifikát prijatĂ˝ pomocou -Observatory indikuje, Ĺľe niekto navštĂvil www.nieÄŤo.com, ale nie kto ju navštĂvil -alebo ÄŤo konkrĂ©tne pozeral. Prejdite kurzorom nad jednotlivĂ© moĹľnosti -pre ÄŹalšie podrobnosti."> - -<!ENTITY ssl-observatory.prefs.hide "SkryĹĄ pokroÄŤilĂ© moĹľnosti"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Skontrolujte certifikát, aj keÄŹ Tor nebude k dispozĂciĂ"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"PokĂşsime sa aj naÄŹalej udrĹľaĹĄ dáta anonymnĂ©, lenĹľe táto moĹľnosĹĄ je menej bezpeÄŤná"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Pošli a skontroluj certifikáty pre neverejnĂ© názvy DNS"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Ak je táto voÄľba aktĂvna, tak Observatory nebude zaznamenávaĹĄ certifikáty pre názvy, ktorĂ© nedokáže rozoznaĹĄ pomocou systĂ©mu DNS."> - -<!ENTITY ssl-observatory.prefs.show "UkázaĹĄ pokroÄŤilĂ© moĹľnosti"> - -<!ENTITY ssl-observatory.prefs.title "Nastavenia SSL Observatory"> - -<!ENTITY ssl-observatory.prefs.use "PouĹľiĹĄ Observatory?"> -<!ENTITY ssl-observatory.warning.title "VAROVANIE od EFF SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "ZobraziĹĄ reĹĄaz certifikátov"> -<!ENTITY ssl-observatory.warning.okay "Porozumel som"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory vydalo varovanie o HTTPS certifikáte(certifikátoch) pre tĂşto stránku:"> -<!ENTITY ssl-observatory.warning.defense "Ak ste prihlásenĂ˝ na tejto stránke, tak sa odporúča, aby ste si zmenili heslo hneÄŹ ako budete maĹĄ bezpeÄŤnĂ© pripojenie"> - -<!ENTITY ssl-observatory.prefs.self_signed -"PosielaĹĄ a preverovaĹĄ certifikáty podpĂsanĂ© samĂ© sebou"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Toto sa odporúča; kryptografickĂ© problĂ©my sĂş veÄľmi ÄŤastĂ© u vstavanĂ˝ch zariadenĂ, ktorĂ© sĂş podpĂsanĂ© samĂ© sebou"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd deleted file mode 100644 index 13bbd7d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Zakodirajte internet! Samodejno uporabite HTTPS zaščito na mnogih spletnih straneh."> -<!ENTITY https-everywhere.about.version "RazliÄŤica"> -<!ENTITY https-everywhere.about.created_by "Izdelal"> -<!ENTITY https-everywhere.about.librarians "Izdelovalci pravil"> -<!ENTITY https-everywhere.about.thanks "Zahvala"> -<!ENTITY https-everywhere.about.contribute "ÄŚe vam je HTTPS Everywhere všeÄŤ, razmislite o"> -<!ENTITY https-everywhere.about.donate_tor "donaciji za Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "donaciji za EFF"> - -<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "Nastavitve SSL Observatorija"> -<!ENTITY https-everywhere.menu.globalEnable "OmogoÄŤi HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "OnemogoÄŤi HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "Nastavitve HTTPS Everywhere"> -<!ENTITY https-everywhere.prefs.enable_all "OmogoÄŤi vse"> -<!ENTITY https-everywhere.prefs.disable_all "OnemogoÄŤi vse"> -<!ENTITY https-everywhere.prefs.reset_defaults "Ponastavi na privzeto"> -<!ENTITY https-everywhere.prefs.search "Išči"> -<!ENTITY https-everywhere.prefs.site "Stran"> -<!ENTITY https-everywhere.prefs.notes "Opombe"> -<!ENTITY https-everywhere.prefs.list_caption "Katera pravila za preusmeritev HTTPS naj bodo upoštevana?"> -<!ENTITY https-everywhere.prefs.enabled "OmogoÄŤeno"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Lahko se nauÄŤite pisati svoja pravila (da dodate podporo za druge spletne strani)"> -<!ENTITY https-everywhere.prefs.here_link "tukaj"> -<!ENTITY https-everywhere.prefs.toggle "Preklopi"> -<!ENTITY https-everywhere.prefs.reset_default "Ponastavi na privzeto"> -<!ENTITY https-everywhere.prefs.view_xml_source "Ogled XML kode"> - -<!ENTITY https-everywhere.source.downloading "Prenos"> -<!ENTITY https-everywhere.source.filename "Ime datoteke"> -<!ENTITY https-everywhere.source.unable_to_download "Ne morem prenesti izvora."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties deleted file mode 100644 index f70d2ee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = OmogoÄŤi HTTPS Everywhere -https-everywhere.menu.globalDisable = OnemogoÄŤi HTTPS Everywhere -https-everywhere.menu.enableDisable = OmogoÄŤi / OnemogoÄŤi pravila -https-everywhere.menu.noRules = (Za to stran ni pravil) -https-everywhere.menu.unknownRules = (Pravila za to stran neznana) -https-everywhere.toolbar.hint = HTTPS Everywhere je sedaj aktiven. Za posamezne spletne strani ga lahko preklapljate s klikom na ikono v naslovni vrstici. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd deleted file mode 100644 index 26917a3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd +++ /dev/null @@ -1,97 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Podrobnosti in informacije o zasebnosti"> -<!ENTITY ssl-observatory.popup.later "Vprašaj me kasneje"> -<!ENTITY ssl-observatory.popup.no "Ne"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere lahko zazna napade -na vaš brskalnik tako, da pošlje certifikate ki jih prejmete v -Observatorij. Ĺ˝elite to vkljuÄŤiti?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Ali naj HTTPS Everywhere uporablja SSL Observatorij?"> - -<!ENTITY ssl-observatory.popup.yes "Da"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"OmogoÄŤanje tega je varno, razen ÄŤe uporabljate zelo -vsiljivo poslovno omreĹľje:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Varno, razen ÄŤe uporabljate poslovno omreĹľje s tajnimi imeni lokalnih streĹľnikov:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"PredloĹľi in preveri certifikate nestandardnih overoviteljev"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"OmogoÄŤanje tega je varno (in priporoÄŤljivo), razen ÄŤe uporabljate vsiljivo poslovno omreĹľje ali protivirusni program Kaspersky, ki spremlja vaše brskanje s TLS proksijem in privatnim overoviteljem certifikatov. ÄŚe je omogoÄŤeno v takem omreĹľju lahko ta moĹľnost objavi dokazila o tem, katere https:// domene so bile obiskane preko tega proksija, ker bi ustvarila edinstvene certifikate. Zato je to privzeto izkljuÄŤeno."> - -<!ENTITY ssl-observatory.prefs.anonymous "Anonimno preveri certifikate preko omreĹľja Tor"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Anonimno preveri certifikate preko omreĹľja Tor (potrebuje Tor)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Za to moĹľnost mora biti Tor nameščen in zagnan"> - -<!ENTITY ssl-observatory.prefs.asn -"Ko zasledite nov certifikat povejte Observatoriju h kateremu internetnemu ponudniku ste prikljuÄŤeni"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"To bo pridobilo in poslalo "Avtonomno številko sistema" (ASN) vašega omreĹľja. To nam bo pomagalo locirati napade na HTTPS in doloÄŤiti, ali so opaĹľanja iz omreĹľij na podroÄŤjih kot so Iran in Sirija, kjer so napadi razmeroma pogosti."> - -<!ENTITY ssl-observatory.prefs.done "KonÄŤano"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere lahko uporablja EFF SSL Observatorij. S tem naredi dvoje: (1) -pošlje kopije HTTPS certifikatov observatoriju, da nam pomaga odkriti napade 'man in the middle' in izboljšati varnost medmreĹľja; (2) -nam omogoÄŤi, da vas opozorimo na nevarne povezave ali napade na vaš brskalnik."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Ko na primer obiščete https://www.nekadomena.com bo certifikat, ki ga sprejme observatorij, nakazal, da je nekdo obiskal www.nekadomena.com, ne pa kdo je to bil ali katero stran si je ogledal. -PridrĹľite miško nad moĹľnosti za veÄŤ podrobnosti:"> - -<!ENTITY ssl-observatory.prefs.hide "Skrij napredne moĹľnosti"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Preveri certifikate tudi ÄŤe ni Tor omreĹľja"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Poskušali bomo ohraniti anonimnost podatkov, vendar je ta moĹľnost manj varna"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"PredloĹľi in preveri certifikate za ne-javna imena DNS"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"ÄŚe je ta moĹľnost ni izbrana, observatorij ne bo zabeleĹľil potrdil za imena, ki jih ni mogoÄŤe razkriti s sistemom DNS."> - -<!ENTITY ssl-observatory.prefs.show "PokaĹľi napredne moĹľnosti"> - -<!ENTITY ssl-observatory.prefs.title "Nastavitve SSL Observatorija"> - -<!ENTITY ssl-observatory.prefs.use "Uporabim Observatorij?"> -<!ENTITY ssl-observatory.warning.title "OPOZORILO s strani EFF SSL Observatorija"> -<!ENTITY ssl-observatory.warning.showcert "PokaĹľi certifikatno verigo"> -<!ENTITY ssl-observatory.warning.okay "Razumem"> -<!ENTITY ssl-observatory.warning.text "EFF SSL Observatorij je izdal opozorilo za HTTPS certifikat(e) za to stran:"> -<!ENTITY ssl-observatory.warning.defense "ÄŚe ste vpisani na tej strani je priporoÄŤljivo, da spremenite geslo, ko boste varno povezani."> - -<!ENTITY ssl-observatory.prefs.self_signed -"PredloĹľite in preverite samopodpisana potrdila"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"To je priporoÄŤljivo; teĹľave s šifriranjem so posebej pogoste pri samopodpisanih vgnezdenih napravah."> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd deleted file mode 100644 index e43cae0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Om HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Kryptera webben! Använd HTTPS automatiskt pĂĄ mĂĄnga sidor."> -<!ENTITY https-everywhere.about.version "Version"> -<!ENTITY https-everywhere.about.created_by "Skapat av"> -<!ENTITY https-everywhere.about.librarians "Regelförfattare"> -<!ENTITY https-everywhere.about.thanks "Tack till"> -<!ENTITY https-everywhere.about.contribute "Om du gillar HTTPS Everywhere, kanske du kan tänka dig"> -<!ENTITY https-everywhere.about.donate_tor "Donera till Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "Donera till EFF"> - -<!ENTITY https-everywhere.menu.about "Om HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL observerings inställningar"> -<!ENTITY https-everywhere.menu.globalEnable "Aktivera HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "Inaktivera HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Visa räknare"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere: Inställningar"> -<!ENTITY https-everywhere.prefs.enable_all "Aktivera alla"> -<!ENTITY https-everywhere.prefs.disable_all "Inaktivera alla"> -<!ENTITY https-everywhere.prefs.reset_defaults "Ă…terställ till standardvärden"> -<!ENTITY https-everywhere.prefs.search "Sök"> -<!ENTITY https-everywhere.prefs.site "Sida"> -<!ENTITY https-everywhere.prefs.notes "Kommentarer"> -<!ENTITY https-everywhere.prefs.list_caption "Vilka HTTPS omdirigerings regler skall gälla?"> -<!ENTITY https-everywhere.prefs.enabled "Aktiverad"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lära dig att skriva egna regler (för att lägga till stöd för andra sidor"> -<!ENTITY https-everywhere.prefs.here_link "här"> -<!ENTITY https-everywhere.prefs.toggle "Växla"> -<!ENTITY https-everywhere.prefs.reset_default "Ă…terställ till standardvärden"> -<!ENTITY https-everywhere.prefs.view_xml_source "Visa XML källa"> - -<!ENTITY https-everywhere.source.downloading "Laddar ner"> -<!ENTITY https-everywhere.source.filename "Filnamn"> -<!ENTITY https-everywhere.source.unable_to_download "Kan inte ladda ner."> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Hoppsan. Du använde den stabila versionen av HTTPS Everywhere, men vi har kanske av misstag uppdaterat dig till utvecklingsversionen i den senaste publiceringen."> -<!ENTITY https-everywhere.popup.paragraph2 "Vill du gĂĄ tillbaka till den stabila versionen?"> -<!ENTITY https-everywhere.popup.paragraph3 "Vi skulle vara tacksamma ifall du fortsatte använda utvecklingsversionen och hjälpte oss göra HTTPS Everywhere ännu bättre! Du kanske hittar nĂĄgon bugg här och där, som du kan rapportera till https-everywhere@eff.org. Vi ber om ursäkt för besväret. Tack för att du använder HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Fortsätt använda utvecklingsversionen"> -<!ENTITY https-everywhere.popup.revert "Ladda ner den senaste stabila versionen"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "Testa alla HTTPS Everywhere regler"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Avbryt"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Starta"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties deleted file mode 100644 index fb1cb14..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = Aktivera HTTPS Everywhere -https-everywhere.menu.globalDisable = Inaktivera HTTPS Everywhere -https-everywhere.menu.enableDisable = Aktivera / inaktivera regler -https-everywhere.menu.noRules = (Inga Regler för Denna Sida) -https-everywhere.menu.unknownRules = (Regler för Denna Sida Okänt) -https-everywhere.toolbar.hint = HTTPS Everywhere är nu aktivt. Du kan ändra aktivera / inaktivera det per sida genom att klicka pĂĄ ikonen i adressfältet. -https-everywhere.migration.notification0 = För att implementera en kritiskt fix, ĂĄteställer denna uppdatering dina HTTPS Everywhere regelinställningar till dereas standardvärden. -https-everywhere.menu.ruleset-tests = Kör alla regel tester för HTTPS Everywhere. diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd deleted file mode 100644 index 4cfac8b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Details and Privacy Information"> -<!ENTITY ssl-observatory.popup.later "Ask Me Later"> -<!ENTITY ssl-observatory.popup.no "No"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere can detect attacks -against your browser by sending the certificates you receive to the -Observatory. Turn this on?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"Should HTTPS Everywhere use the SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "Yes"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"It is safe to enable this, unless you use a very -intrusive corporate network:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"Safe, unless you use a corporate network with secret intranet server names:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Submit and check certificates signed by non-standard root CAs"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"It is safe (and a good idea) to enable this option, unless you use an intrusive corporate network that monitors your browsing with a TLS proxy and a private root Certificate Authority. If enabled on such a network, this option might publish evidence of which https:// domains were being visited through that proxy, because of the unique certificates it would produce. So we leave it off by default."> - -<!ENTITY ssl-observatory.prefs.anonymous "Check certificates using Tor for anonymity"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"Check certificates using Tor for anonymity (requires Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"This option requires Tor and Torbutton to be installed"> - -<!ENTITY ssl-observatory.prefs.asn -"When you see a new certificate, tell the Observatory which ISP you are connected to"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"This will fetch and send the "Autonomous System number" of your network. This will help us locate attacks against HTTPS, and to determine whether we have observations from networks in places like Iran and Syria where attacks are comparatively common."> - -<!ENTITY ssl-observatory.prefs.done "Done"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere can use EFF's SSL Observatory. This does two things: (1) -sends copies of HTTPS certificates to the Observatory, to help us -detect 'man in the middle' attacks and improve the Web's security; and (2) -lets us warn you about insecure connections or attacks on your browser."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"For example, when you visit https://www.something.com, the certificate -received by the Observatory will indicate that somebody visited -www.something.com, but not who visited the site, or what specific page they -looked at. Mouseover the options for further details:"> - -<!ENTITY ssl-observatory.prefs.hide "Hide advanced options"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Check certificates even if Tor is not available"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"We will still try to keep the data anonymous, but this option is less secure"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Submit and check certificates for non-public DNS names"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Unless this option is checked, the Observatory will not record certificates for names that it cannot resolve through the DNS system."> - -<!ENTITY ssl-observatory.prefs.show "Show advanced options"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory Preferences"> - -<!ENTITY ssl-observatory.prefs.use "Use the Observatory?"> -<!ENTITY ssl-observatory.warning.title "WARNING from EFF's SSL Observatory"> -<!ENTITY ssl-observatory.warning.showcert "Show the certificate chain"> -<!ENTITY ssl-observatory.warning.okay "I understand"> -<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory has issued a warning about the HTTPS certificiate(s) for this site:"> -<!ENTITY ssl-observatory.warning.defense "If you are logged in to this site, it may be advisable to change your password once you have a safe connection."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Skicka och kolla själv-signerade certifikat"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Detta är rekommenderat; kryptografiska problem är särskilt vanliga i själv-signerad inbäddad utrustning"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd deleted file mode 100644 index e686d19..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "Hakkında"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "İnternet'i Ĺźifrele ! Bir çok sitede otomatik olarak HTTPS kullan."> -<!ENTITY https-everywhere.about.version "SĂĽrĂĽm"> -<!ENTITY https-everywhere.about.created_by "Yaratıcı"> -<!ENTITY https-everywhere.about.librarians "Kural Seti KĂĽtĂĽphaneleri"> -<!ENTITY https-everywhere.about.thanks "TeĹźekkĂĽrler"> -<!ENTITY https-everywhere.about.contribute "EÄźer HTTPS Everywhere'i sevdiysen, sen de destek olabilirsin"> -<!ENTITY https-everywhere.about.donate_tor "Tor'a bağışla"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "EFF'e bağışla"> - -<!ENTITY https-everywhere.menu.about "Hakkında"> -<!ENTITY https-everywhere.menu.observatory "SSL Gözlemcisi Tercihleri"> -<!ENTITY https-everywhere.menu.globalEnable "EtkinleĹźtir"> -<!ENTITY https-everywhere.menu.globalDisable "Devre Dışı Bırak"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Tercihleri"> -<!ENTITY https-everywhere.prefs.enable_all "TĂĽmĂĽnĂĽ EtkinleĹźtir"> -<!ENTITY https-everywhere.prefs.disable_all "TĂĽmĂĽnĂĽ Devre Dışı Bırak"> -<!ENTITY https-everywhere.prefs.reset_defaults "Varsayılana Dön"> -<!ENTITY https-everywhere.prefs.search "Ara"> -<!ENTITY https-everywhere.prefs.site "Site"> -<!ENTITY https-everywhere.prefs.notes "Notlar"> -<!ENTITY https-everywhere.prefs.list_caption "Hangi HTTPS yönlendirme kuralları etkin olarak uygulansın?"> -<!ENTITY https-everywhere.prefs.enabled "Etkin"> -<!ENTITY https-everywhere.prefs.ruleset_howto "Kendi kural setini nasıl yazabileceÄźini"> -<!ENTITY https-everywhere.prefs.here_link "öğrenebilirsin."> -<!ENTITY https-everywhere.prefs.toggle "DeÄźiĹźtir"> -<!ENTITY https-everywhere.prefs.reset_default "Varsayılana Dön"> -<!ENTITY https-everywhere.prefs.view_xml_source "XML Kaynağını GörĂĽntĂĽle"> - -<!ENTITY https-everywhere.source.downloading "İndiriliyor"> -<!ENTITY https-everywhere.source.filename "Dosya Adı"> -<!ENTITY https-everywhere.source.unable_to_download "Kaynak indirmeye uygun deÄźil"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> -<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> -<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> -<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> -<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> -<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties deleted file mode 100644 index 37182cf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = EtkinleĹźtir -https-everywhere.menu.globalDisable = Devre dışı -https-everywhere.menu.enableDisable = Kuralları Aç / Kapa -https-everywhere.menu.noRules = (Bu sayfa için hiçbir kural yok) -https-everywhere.menu.unknownRules = (Bu sayfa için hangi kuralların kullanılacağı bilinmiyor) -https-everywhere.toolbar.hint = HTTPS Everywhere Ĺźuan etkin. Adres çubuÄźundaki simgeye tıklayarak istediÄźiniz sitelerde etkinliÄźini deÄźiĹźtirebilirsiniz. -https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd deleted file mode 100644 index f9fd37c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd +++ /dev/null @@ -1,96 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "Detaylar ve Gizlilik Bilgileri"> -<!ENTITY ssl-observatory.popup.later "Daha Sonra Sor"> -<!ENTITY ssl-observatory.popup.no "Hayır"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere tarayıcınıza -karşı yapılacak saldırıları Gözlemci'ye alır. -Bu özelliÄźi aktif etmek ister misiniz?"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"HTTPS Everywhere SSL Gözlemcisini kullansın mı?"> - -<!ENTITY ssl-observatory.popup.yes "Evet"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"ElveriĹźsiz bir Ĺźirket ağı kullanmıyorsanız, -etkinleĹźtirmek sizin için gĂĽvenlidir."> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"GĂĽvenli, gizli intranet Ĺźirket sunucularını kullanmadığınız sĂĽrece:"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"Geçerli bir otorite tarafından imzalanmamış sertifikaları gönder ve kontrol et"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"EÄźer ki TLS proxy veya özel kök Sertifika Otoritesi ile internet gezintilerini gözlemleyebilen Kaspersky antivirĂĽs yazılımı ya da araya girilebilen bir Ĺźirket ağı kullanmıyorsanız bu özelliÄźi etkinleĹźtirmek gĂĽvenlidir (ve akıllıca), EÄźer aÄź ĂĽzerinde bunlar etkinse, bu seçenek eĹźsiz sertifikalar verdiÄźinden vekil sunucu ĂĽzerinden https:// adreslerine eriĹźtiÄźinize kanıt olmuĹźturur. Dolayısıyla varsayılan ayarlarda kapalı bıraktık."> - -<!ENTITY ssl-observatory.prefs.anonymous "GizliliÄźim için Tor kullanırken de sertifikaları kontrol et"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"GizliliÄźim için Tor kullanırken de sertifikaları kontrol et (Torbutton gerektirir)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"Bu özellik Tor ve Torbutton'un yĂĽklĂĽ olmasını gerektirir."> - -<!ENTITY ssl-observatory.prefs.asn -"Yeni bir sertifika gördüğünde, hangi ISS'den baÄźlandığımı Gözlemci'ye bildir"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"Bu ağın "Ă–zerk Sistemi numarası" alıp göndereceÄźiz. Bu bize HTTPS'e karşı gerçekleĹźtirilen yerel saldırıları belirlemekte ve nispeten İran ve Suriye gibi yerlerde aÄźlara karşı gözlemler olup olmadığını belirlemek için yardımcı olacaktır."> - -<!ENTITY ssl-observatory.prefs.done "Tamamlandı"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere EFF'nin SSL Gözlemcisini kullanır. Gözlemci iki olay gerçekleĹźtirir:(1) -HTTPS sertifikalarının kopyalarını Gözlemci'ye yollar ki MITM saldırılarının tespitinde yardım edelim, internet gĂĽvenliÄźini geliĹźtirebilelim; ve (2) -seni gĂĽvensiz baÄźlantılar hakkında uyarabilelim."> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"Ă–rneÄźin, https://www.hack4career.com adresini ziyaret ettiÄźinde ve eÄźer ki sayfayı daha önce hiç kimse ziyaret etmemiĹźse sertifika Gözlemci tarafından ileride bu siteyi ziyaret edecekler için alınır. Daha fazla bilgi için aĹźağıdan gözlemciyi aktif etmelisiniz:"> - -<!ENTITY ssl-observatory.prefs.hide "GeliĹźmiĹź ayarları gizle"> - -<!ENTITY ssl-observatory.prefs.nonanon -"Tor uygun olmadığında dahi sertifikaları kontrol et"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"Verilerini anonim tutmaya çalışıyoruz, ama bu özellik pek gĂĽvenli deÄźil"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"Ă–zel DNS isimleri için olan sertifikaları gönder ve kontrol et"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"Bu seçenek iĹźaretlenmediÄźi sĂĽrece, Gözlemci DNS sistemleri ĂĽzerinden çözĂĽmleyemediÄźi sertifika isimlerini kaydetmeyecektir."> - -<!ENTITY ssl-observatory.prefs.show "GeliĹźmiĹź ayarları göster"> - -<!ENTITY ssl-observatory.prefs.title "SSL Gözlemci Tercihleri"> - -<!ENTITY ssl-observatory.prefs.use "Gözlemci kullanılsın mı?"> -<!ENTITY ssl-observatory.warning.title " EFF'in SSL Gözlemcisi'nden UYARI"> -<!ENTITY ssl-observatory.warning.showcert "Sertifika zincirini göster"> -<!ENTITY ssl-observatory.warning.okay "Anladım"> -<!ENTITY ssl-observatory.warning.text "EFF SSL Gözlemcisi bu sitenin HTTPS serfikası (ları) hakkında bir sorun olduÄźunu belirtiyor:"> -<!ENTITY ssl-observatory.warning.defense "EÄźer bu siteye giriĹź yaptıysan, gĂĽvenli bir baÄźlantı saÄźlandığında site sana Ĺźifreni deÄźiĹźtirmeni tavsiye edebilir."> - -<!ENTITY ssl-observatory.prefs.self_signed -"Kendinden imzalı sertifikaları gönder ve kontrol et"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"Bu bir öneridir; özellikle kendinden imzalanmış gömĂĽlĂĽ cihazlarda Ĺźifreleme problemleri mevcut "> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd deleted file mode 100644 index d53c43c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd +++ /dev/null @@ -1,48 +0,0 @@ -<!ENTITY https-everywhere.about.title "关于 HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "ĺŠ ĺŻ†ç˝‘ç»śćµŹč§ďĽŚč‡ŞĺŠ¨ä˝żç”¨ HTTPS čżžćŽĄč®żé—®ç«™ç‚ąďĽŚć›´ĺŠ ĺ®‰ĺ…¨ă€‚"> -<!ENTITY https-everywhere.about.version "ç‰ćś¬"> -<!ENTITY https-everywhere.about.created_by "ĺ›ĺ»şč€…"> -<!ENTITY https-everywhere.about.librarians "č§„ĺ™ç®ˇç†ĺ‘"> -<!ENTITY https-everywhere.about.thanks "致谢"> -<!ENTITY https-everywhere.about.contribute "如果喜欢 HTTPS Everywhere,您可以č€č™‘"> -<!ENTITY https-everywhere.about.donate_tor "ćŤĺŠ© Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "en"> -<!ENTITY https-everywhere.about.donate_eff "ćŤĺŠ©ç”µĺ前线基金会 (EFF)"> - -<!ENTITY https-everywhere.menu.about "关于 HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL Observatory 首选项"> -<!ENTITY https-everywhere.menu.globalEnable "ĺŻç”¨ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "ç¦ç”¨ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere 首选项"> -<!ENTITY https-everywhere.prefs.enable_all "ĺ…¨é¨ĺŻç”¨"> -<!ENTITY https-everywhere.prefs.disable_all "ĺ…¨é¨ç¦ç”¨"> -<!ENTITY https-everywhere.prefs.reset_defaults "重置为é»č®¤ĺ€Ľ"> -<!ENTITY https-everywhere.prefs.search "ćśç´˘"> -<!ENTITY https-everywhere.prefs.site "站点"> -<!ENTITY https-everywhere.prefs.notes "注释"> -<!ENTITY https-everywhere.prefs.list_caption "应用哪些 HTTPS 重定ĺ‘č§„ĺ™ďĽź"> -<!ENTITY https-everywhere.prefs.enabled "ĺ·˛ĺŻç”¨"> -<!ENTITY https-everywhere.prefs.ruleset_howto "您可以ĺ¦äą 如何编写您自己的规ĺ™ďĽä»Ąĺ˘žĺŠ ĺŻąĺ…¶ä»–ç˝‘ç«™çš„ć”ŻćŚďĽ‰"> -<!ENTITY https-everywhere.prefs.here_link "这里"> -<!ENTITY https-everywhere.prefs.toggle "ĺ‡ćŤ˘"> -<!ENTITY https-everywhere.prefs.reset_default "重置为é»č®¤ĺ€Ľ"> -<!ENTITY https-everywhere.prefs.view_xml_source "查看 XML ć ĽĺĽŹçš„ćşä»Łç "> - -<!ENTITY https-everywhere.source.downloading "ćŁĺś¨ä¸‹č˝˝"> -<!ENTITY https-everywhere.source.filename "文件ĺŤ"> -<!ENTITY https-everywhere.source.unable_to_download "ć— ćł•ä¸‹č˝˝ćşä»Łç 。"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 通知"> -<!ENTITY https-everywhere.popup.paragraph1 "抱ć‰ďĽŚä˝ äą‹ĺ‰Ťç”¨çš„ćŻ HTTPS Everywhere 稳定ç‰ďĽŚĺś¨ä¸Šć¬ˇĺŹ‘ĺ¸ć—¶ďĽŚć‘们可č˝ä¸Ťĺ°Źĺżĺ°†ä˝ 用的ç‰ćś¬ĺŤ‡çş§ä¸şĺĽ€ĺŹ‘ç‰ă€‚"> -<!ENTITY https-everywhere.popup.paragraph2 "ćŻĺ¦éś€č¦ćŤ˘ä¸şç¨łĺ®šç‰ďĽź"> -<!ENTITY https-everywhere.popup.paragraph3 "如果您愿意,ć‘们非常欢迎您继ç»ä˝żç”¨ć‘们的开发ç‰ćś¬ďĽŚĺą¶ä»Ąć¤ĺ¸®ĺŠ©ć‘们改善 HTTPS EverywhereďĽć‚¨äąźč®¸äĽšé‡ĺ°ć›´ĺ¤šçš„缺陷问é˘ďĽŚć‚¨ĺŹŻä»ĄćŠĄĺ‘Šĺ° https-everywhere@eff.org。对ć¤ĺ¸¦ćťĄçš„不便ć‘们深感抱ć‰ďĽŚć„źč°˘ć‚¨ä˝żç”¨ HTTPS Everywhere。"> -<!ENTITY https-everywhere.popup.keep "ć‘č¦ç»§ç»ä˝żç”¨ĺĽ€ĺŹ‘ç‰"> -<!ENTITY https-everywhere.popup.revert "下载最新稳定ç‰"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties deleted file mode 100644 index 0e24891..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = ĺŻç”¨ HTTPS Everywhere -https-everywhere.menu.globalDisable = ç¦ç”¨ HTTPS Everywhere -https-everywhere.menu.enableDisable = ĺŻç”¨/ç¦ç”¨č§„ĺ™ -https-everywhere.menu.noRules = ďĽćś¬éˇµéť˘ć— č§„ĺ™ďĽ‰ -https-everywhere.menu.unknownRules = ďĽć¤éˇµéť˘č§„ĺ™ćśŞçźĄďĽ‰ -https-everywhere.toolbar.hint = HTTPS Everywhere ĺ˝“ĺ‰Ťĺ·˛ćż€ć´»ă€‚ć ąćŤ®ćŻŹä¸Şç˝‘ç«™ďĽŚĺŹŻç‚ąĺ‡»ĺś°ĺť€ć Źä¸ĺ›ľć ‡ĺŻç”¨ć–ç¦ç”¨čŻĄĺŠźč˝ă€‚ -https-everywhere.migration.notification0 = 为了é¨ç˝˛é‡Ťč¦äż®č®˘ďĽŚčŻĄć›´ć–°ĺ°† HTTPS Everywhere č§„ĺ™ĺŹĺĄ˝é‡Ťç˝®ä¸şé»č®¤ĺ€Ľă€‚ -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd deleted file mode 100644 index 6998aa6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd +++ /dev/null @@ -1,98 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "详ć…与éšç§äżˇćŻ"> -<!ENTITY ssl-observatory.popup.later "以ĺŽĺ†ŤčŻ´"> -<!ENTITY ssl-observatory.popup.no "ĺ¦"> - -<!ENTITY ssl-observatory.popup.text "通过将接收ĺ°çš„čŻäঠ-ćŹäş¤č‡ł Observatory,HTTPS Everywhere č˝ĺ¤źćـ㵋é’对浏č§ĺ™¨çš„攻击。 -ćŻĺ¦ĺŻç”¨čŻĄĺŠźč˝ďĽź"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"ćŻĺ¦ĺ…许 HTTPS Everywhere 使用 SSL Observatory?"> - -<!ENTITY ssl-observatory.popup.yes "ćŻ"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"ĺŻç”¨čż™ä¸ŞĺŠźč˝ćŻĺ®‰ĺ…¨çš„ďĽŚé™¤éťžä˝ ć‰€ç”¨çš„ćŻé«äľµĺ…Ąć€§çš„äĽä¸šç˝‘络:"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"安全,除非所用的äĽä¸šç˝‘ç»śĺ…·ćś‰ĺŠ ĺŻ†çš„ĺ†…é¨ç˝‘服务器ĺŤç§°ďĽš"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"ćŹäş¤ĺą¶ćŁ€ćźĄç”±éťžć ‡ĺ‡†ć ą CA 所çľĺŤçš„čŻäą¦"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"ĺŻç”¨ć¤é€‰éˇąćŻĺ®‰ĺ…¨ďĽč€Śä¸”有益的),除非所用的ćŻé«äľµĺ…Ąć€§çš„公司网络,ć–者使用卡巴斯基é˛ç—…毒软件通过本地 TLS 代ç†ä¸Žç§ćś‰ć ąčŻäą¦č®¤čŻć–ąćŁ€ćµ‹äş’č”网浏č§čˇŚä¸şă€‚ĺŻąäşŽčż™ć ·çš„ç˝‘ç»śďĽŚç”±äşŽç”źć的数ĺ—čŻäą¦ćŻĺ”Żä¸€çš„,ĺŻç”¨čŻĄé€‰éˇąĺŹŻč˝ĺ°†ĺ…¬ĺĽ€é€ščż‡čŻĄä»Łç†č®żé—®çš„ https:// 网域ĺŤç§°ďĽŚĺ› ć¤é»č®¤ĺ…łé—该功č˝ă€‚"> - -<!ENTITY ssl-observatory.prefs.anonymous "通过 Tor 网络进行数ĺ—čŻäą¦çš„检查,以保护匿ĺŤć€§"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"通过 Tor 网络进行数ĺ—čŻäą¦çš„检查,以保护匿ĺŤć€§ďĽéś€č¦ćś‰ Tor)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"ć¤é€‰éˇąéś€č¦ĺ·˛ç»Źĺ®‰čŁ…ĺą¶čżčˇŚ Tor"> - -<!ENTITY ssl-observatory.prefs.asn -"é‡ĺ°ć–°çš„ć•°ĺ—čŻäą¦ć—¶ďĽŚé€šçźĄ Observatory 当前使用的互č”网服务ćŹäľ›ĺ•† (ISP)"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"这将抓取网络的“自治系统号ç ”(Autonomous System number)。这将有助于找出对 HTTPS 发动攻击的ćşĺ¤´ďĽŚĺą¶ĺ¤ć–在攻击相对常č§çš„地区网络上,如伊朗和叙ĺ©äşšďĽŚć‘们ćŻĺ¦ĺ…·ćś‰č§‚测数据。"> - -<!ENTITY ssl-observatory.prefs.done "完ć"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere 可以使用 EFF çš„ SSL 观测站 。 这有两个功č˝ďĽš -(1) ĺ°† HTTPS ć•°ĺ—čŻäą¦ĺŻ„é€ĺ°č§‚测站,以协助ć‘们侦测ä¸é—´äşşĺĽŹçš„攻击 -并改善网络的安全性; -(2) é’ĺŻąä¸Ťĺ®‰ĺ…¨çš„čżžćŽĄä»ĄĺŹŠĺŻąä˝ çš„ćµŹč§ĺ™¨čż›čˇŚçš„攻击,ĺ‘ä˝ ĺŹ‘ĺ‡şč¦ĺ‘Šă€‚"> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"例如,在访问 https://www.something.com 时,观测站收ĺ°çš„ć•°ĺ—čŻäą¦ćľç¤ş -ćźäşşč®żé—®äş† www.something.com,但不会ćľç¤şćŻč°č®żé—®äş†čŻĄç«™ç‚ąć–者浏č§äş† -ĺ“Şäş›éˇµéť˘ă€‚ĺ°†éĽ ć ‡ç§»č‡łčŻĄé€‰éˇąĺŹŻäş†č§Łć›´ĺ¤ščŻ¦ç»†äżˇćŻďĽš"> - -<!ENTITY ssl-observatory.prefs.hide "éšč—Źé«çş§é€‰éˇą"> - -<!ENTITY ssl-observatory.prefs.nonanon -"在没有 Tor 网络的ć…况下依然检查数ĺ—čŻäą¦"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"ć‘们仍将尽力确保数据的匿ĺŤć€§ďĽŚä˝†čŻĄé€‰éˇąçš„ĺ®‰ĺ…¨ć€§čľä˝Ž"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"ćŹäş¤ĺą¶ćŁ€ćźĄéťžĺ…¬ĺĽ€ DNS ĺŤç§°çš„ć•°ĺ—čŻäą¦"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"除非勾选该选项,ĺ¦ĺ™č§‚测站将不会记录通过 DNS çł»ç»źć— ćł•č§ŁćžĺźźĺŤçš„čŻäą¦ă€‚"> - -<!ENTITY ssl-observatory.prefs.show "ćľç¤şé«çş§é€‰éˇą"> - -<!ENTITY ssl-observatory.prefs.title "SSL Observatory 首选项"> - -<!ENTITY ssl-observatory.prefs.use "ćŻĺ¦ä˝żç”¨č§‚测站?"> -<!ENTITY ssl-observatory.warning.title "EFF çš„ SSL 观测站发ĺ¸çš„č¦ĺ‘Š"> -<!ENTITY ssl-observatory.warning.showcert "ćľç¤şć•°ĺ—čŻäą¦é“ľ"> -<!ENTITY ssl-observatory.warning.okay "ć‘已了解"> -<!ENTITY ssl-observatory.warning.text "EFF çš„ SSL 观测站已对该 HTTPS ć•°ĺ—čŻäą¦ĺŹ‘ĺ‡şč¦ĺ‘ŠďĽš"> -<!ENTITY ssl-observatory.warning.defense "如果已登录该站点,在使用安全连接时,可č˝ĺ»şč®®ä˝ 修改该站点的密ç 。"> - -<!ENTITY ssl-observatory.prefs.self_signed -"ćŹäş¤ĺą¶ćŁ€ćźĄč‡ŞçľĺŤčŻäą¦"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"ć‘们推čŤčŻĄé€‰éˇąďĽ›ĺś¨č‡ŞçľĺŤçš„嵌入式设备ä¸ďĽŚĺŠ ĺŻ†é—®é˘ĺ°¤ä¸şĺ¸¸č§"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd deleted file mode 100644 index 1b56a63..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd +++ /dev/null @@ -1,49 +0,0 @@ -<!ENTITY https-everywhere.about.title "é—ść–Ľ HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> -<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites. -ä˝żç¶˛č·ŻĺŠ ĺŻ†ďĽć–Ľçśľĺ¤šç¶˛ç«™ä¸Šč‡Şĺ‹•使用 HTTPS 安全連線。"> -<!ENTITY https-everywhere.about.version "ç‰ćś¬"> -<!ENTITY https-everywhere.about.created_by "建立於"> -<!ENTITY https-everywhere.about.librarians "規則庫管ç†"> -<!ENTITY https-everywhere.about.thanks "致謝"> -<!ENTITY https-everywhere.about.contribute "č‹Ąĺ–śćˇ HTTPS Everywhere,ć–許您可以č€ć…®"> -<!ENTITY https-everywhere.about.donate_tor "贊助 Tor"> -<!ENTITY https-everywhere.about.tor_lang_code "zh-TW"> -<!ENTITY https-everywhere.about.donate_eff "贊助 EFF"> - -<!ENTITY https-everywhere.menu.about "é—ść–Ľ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.observatory "SSL 觀測站ĺŹĺĄ˝č¨ĺ®š"> -<!ENTITY https-everywhere.menu.globalEnable "啟用 HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.globalDisable "ĺśç”¨ HTTPS Everywhere"> -<!ENTITY https-everywhere.menu.showCounter "Show Counter"> - -<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere ĺŹĺĄ˝č¨ĺ®š"> -<!ENTITY https-everywhere.prefs.enable_all "ĺ…¨é¨ĺ•źç”¨"> -<!ENTITY https-everywhere.prefs.disable_all "ĺ…¨é¨ĺśç”¨"> -<!ENTITY https-everywhere.prefs.reset_defaults "ć˘ĺľ©é č¨ĺ€Ľ"> -<!ENTITY https-everywhere.prefs.search "ćśĺ°‹"> -<!ENTITY https-everywhere.prefs.site "網站"> -<!ENTITY https-everywhere.prefs.notes "備註"> -<!ENTITY https-everywhere.prefs.list_caption "č¦ä˝żç”¨ĺ“Şäş› HTTPS ĺ°Žĺ‘規則?"> -<!ENTITY https-everywhere.prefs.enabled "已啟用"> -<!ENTITY https-everywhere.prefs.ruleset_howto "č¦äş†č§Łĺ¦‚何編寫自訂規則(ä»Ąĺ˘žĺŠ ĺ°Ťĺ…¶ä»–ç¶˛ç«™çš„ć”ŻćŹ´)"> -<!ENTITY https-everywhere.prefs.here_link "請看這裡"> -<!ENTITY https-everywhere.prefs.toggle "ĺ‡ćŹ›"> -<!ENTITY https-everywhere.prefs.reset_default "ć˘ĺľ©é č¨ĺ€Ľ"> -<!ENTITY https-everywhere.prefs.view_xml_source "檢視 XML 原始碼"> - -<!ENTITY https-everywhere.source.downloading "下載ä¸"> -<!ENTITY https-everywhere.source.filename "檔ćˇĺŤç¨±"> -<!ENTITY https-everywhere.source.unable_to_download "無法下載原始碼"> - -<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0 dev.11通知"> -<!ENTITY https-everywhere.popup.paragraph1 "糟糕。以前您一直使用HTTPS Everywhere 穩定ç‰ćś¬ďĽŚä˝†ć‘們可č˝ĺ·˛ç¶“不小ĺżĺŤ‡ç´šć‚¨ĺś¨ć‘們最新ç‰ćś¬ä¸ç‚şé–‹ç™Ľä¸ç‰ćś¬ă€‚"> -<!ENTITY https-everywhere.popup.paragraph2 "您ćłĺ›žĺľ©ç‚şç©©ĺ®šç‰ćś¬ďĽź"> -<!ENTITY https-everywhere.popup.paragraph3 "如果您繼續使用ć‘們的開發ä¸ç‰ćś¬ďĽŚä¸¦ĺą«ĺŠ©ć‘們使得HTTPS Everywhere變得更好,ć‘們也ĺľéˇć„ŹďĽć‚¨ĺŹŻč˝ćśç™ĽçŹľé€™čŁˇĺ’Śé‚ŁčŁˇćś‰ä¸€äş›ć›´ĺ¤šçš„éŚŻčŞ¤ďĽŚć‚¨ĺŹŻä»Ąĺ‘https-everywhere@eff.orgćŹäş¤ĺ ±ĺ‘ŠďĽŚĺ°Ťä¸Ťčµ·ć‚¨ć·»éş»ç…©äş†ďĽŚć„źč¬ťć‚¨ä˝żç”¨HTTPS Everywhere。"> -<!ENTITY https-everywhere.popup.keep "讓ć‘為ćŚć–Ľé–‹ç™Ľä¸ç‰ćś¬"> -<!ENTITY https-everywhere.popup.revert "下載最新的穩定ç‰ćś¬"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties deleted file mode 100644 index e944b0d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties +++ /dev/null @@ -1,8 +0,0 @@ -https-everywhere.menu.globalEnable = 啟用 HTTPS Everywhere -https-everywhere.menu.globalDisable = ĺśç”¨ HTTPS Everywhere -https-everywhere.menu.enableDisable = 啟用 / ĺśç”¨č¦Źĺ‰‡ -https-everywhere.menu.noRules = (沒有規則é©ç”¨ć–Ľć¤ç¶˛é ) -https-everywhere.menu.unknownRules = (é©ç”¨ć¤ç¶˛é 的規則不ćŽ) -https-everywhere.toolbar.hint = HTTPS Everywhere ĺ·˛ĺ•źç”¨ă€‚ć‚¨ĺŹŻä»Ąć ąć“šç¶˛ç«™ç«™é»žĺźşç¤Žä¸Šé€ŹéŽĺ‡ćŹ›ç¶˛ĺť€ĺ—圖示以啟用。 -https-everywhere.migration.notification0 = 為了徹底č˝ĺŻ¦é—śéŤµäż®ćŁďĽŚć›´ć–°é‡Ťç˝®ć‚¨çš„HTTPS Everywhere 規則č¨ĺ®šč‡łĺ®ĺ€‘çš„é č¨ĺ€Ľă€‚ -https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd deleted file mode 100644 index 496c3df..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd +++ /dev/null @@ -1,91 +0,0 @@ -<!-- Observatory popup window --> -<!ENTITY ssl-observatory.popup.details "詳細資料č‡éš±ç§č¨ŠćŻ"> -<!ENTITY ssl-observatory.popup.later "稍後再詢問"> -<!ENTITY ssl-observatory.popup.no "取ć¶"> - -<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere č˝ĺ°‡ć‚¨ć”¶ĺ°çš„憑č‰é€ĺ°č§€ć¸¬ç«™ďĽŚä»Ąĺµć¸¬ĺ‡şĺ°Ťć‚¨ç€Źč¦˝ĺ™¨çš„攻擊。č¦ĺ•źç”¨ćś¬ĺŠźč˝ĺ—ŽďĽź"> - -<!--<!ENTITY ssl-observatory.popup.text -"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting -and auditing the certificates being presented to your browser. Would you like -to turn it on?">--> - -<!ENTITY ssl-observatory.popup.title -"č¦č®“ HTTPS Everywhere 使用 SSL 觀測站嗎?"> - -<!ENTITY ssl-observatory.popup.yes "確定"> - -<!-- Observatory preferences dialog --> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts1 -"啟用這個é¸é …ćŻĺ®‰ĺ…¨çš„,除非您使用é«äľµĺ…Ąć€§çš„äĽćĄç¶˛č·ŻďĽcorporate network):"> - -<!ENTITY ssl-observatory.prefs.adv_priv_opts2 -"啟用這個é¸é …ćŻĺ®‰ĺ…¨çš„,除非您使用ĺ«ćś‰éš±ĺŻ†ĺ…§é¨ç¶˛č·ŻäĽşćśŤĺ™¨ĺŤç¨±çš„äĽćĄç¶˛č·ŻďĽcorporate network):"> - -<!ENTITY ssl-observatory.prefs.alt_roots -"é€ĺ‡şä¸¦ćŞ˘ćźĄç”±éťžćŁč¦Źçš„ć ąć†‘č‰ć‰€ç°˝ç˝˛çš„憑č‰"> - -<!ENTITY ssl-observatory.prefs.alt_roots_tooltip -"啟用這個é¸é …ćŻĺ®‰ĺ…¨çš„ďĽč€Śä¸”也推薦啟用),除非您使用侵入性的äĽćĄç¶˛č·ŻďĽŚć–者 Kaspersky é˛ćŻ’č»źé«”ç›ŁćŽ§ĺ°ć‚¨é€ŹéŽ TLS proxy 瀏覽並使用ç§äşşçš„ć ąć†‘č‰ă€‚ 在這類的網路環ĺ˘ĺ•źç”¨ć¤é¸é …,可č˝ćśĺ› 為所產生的特有憑č‰ďĽŚĺ°Žč‡´ç¶“ç”±ć¤ä»Łç†äĽşćśŤĺ™¨ç€Źč¦˝ç‰ąĺ®š https:// 網域的č‰ćŽč˘«ĺ…¬é–‹ă€‚ ĺ› ć¤é č¨ç‚şä¸Ťĺ•źç”¨ć¤é¸é …。"> - -<!ENTITY ssl-observatory.prefs.anonymous "以 Tor 匿ĺŤćŞ˘ć¸¬ć†‘č‰"> -<!ENTITY ssl-observatory.prefs.anonymous_unavailable -"以 Tor 匿ĺŤćŞ˘ć¸¬ć†‘č‰ďĽéś€ĺ®‰čŁť Torbutton)"> -<!ENTITY ssl-observatory.prefs.anonymous_tooltip -"這個é¸é …ĺż…é 安裝 Tor 及 Torbutton"> - -<!ENTITY ssl-observatory.prefs.asn -"çś‹ĺ°ć–°çš„憑č‰ć™‚,告訴觀測站您連線的 ISP"> - -<!ENTITY ssl-observatory.prefs.asn_tooltip -"這個é¸é …ćśĺŹ–ĺľ—ä¸¦ĺ›žĺ‚łć‚¨çš„ç¶˛č·Żçš„č‡Şć˛»çł»çµ±č™źç˘ĽďĽAutonomous System Number)。 這個動作č˝ĺŤ”助ć‘們定位對 HTTPS 的攻擊,並ĺ¤ĺ®šć‘們所觀測ĺ°ç™Ľč‡ŞäĽŠćś—及ć•ĺ©äşžç‰ĺś°ç¶˛č·Żçš„攻擊ćŻĺ¦čĽç‚şĺ¸¸č¦‹ă€‚"> - -<!ENTITY ssl-observatory.prefs.done "完ć"> - -<!ENTITY ssl-observatory.prefs.explanation -"HTTPS Everywhere 可以使用 EFF çš„ SSL 觀測站。這麼ĺšćś‰ĺ…©ĺ€‹ć•果:(1) ĺ°‡ HTTPS 憑č‰çš„副本傳é€ĺ°č§€ć¸¬ç«™ďĽŚĺŤ”助ć‘們ĺµć¸¬ă€Śä¸é–“人」攻擊並增進網路安全性;(2) 當您é‡ĺ°ä¸Ťĺ®‰ĺ…¨çš„連線ć–瀏覽器éĺ°ć”»ć“Šć™‚,ć‘們č˝ĺ¤ ćŹĺ‡şč¦ĺ‘Šă€‚"> - -<!--<!ENTITY ssl-observatory.prefs.explanation2 -"When you visit https://www.example.com, the Observatory will learn that -somebody visited that site, but will not know who or what page they looked at. -Mouseover the options for further details:">--> - -<!ENTITY ssl-observatory.prefs.explanation2 - -"例如當您開啟 https://www.something.comďĽçŻ„äľ‹ç¶˛ĺť€ďĽ‰ć™‚ďĽŚč§€ć¸¬ç«™ć‰€ć”¶ĺ°çš„憑č‰ćśéˇŻç¤şćś‰äşşç€Źč¦˝ www.something.com,但不ćśćŚ‡ĺ‡şç€Źč¦˝č€…čş«ĺ†ć–者觀看的ćŻĺ“Şäş›ç‰ąĺ®šé 面。將游標移至é¸é …上可得ĺ°č©łç´°čŞŞćŽ:"> - -<!ENTITY ssl-observatory.prefs.hide "隱藏進階é¸é …"> - -<!ENTITY ssl-observatory.prefs.nonanon -"在 Tor 無法使用時仍檢查憑č‰"> - -<!ENTITY ssl-observatory.prefs.nonanon_tooltip -"ć‘們仍ćśč©¦ĺś–ç¶ćŚčł‡ć–™çš„匿ĺŤć€§ďĽŚä˝†é€™ĺ€‹é¸é …的安全性čĽä˝Ž"> - -<!ENTITY ssl-observatory.prefs.priv_dns -"é€ĺ‡şä¸¦ćŞ˘ćźĄéťžĺ…¬ĺ…±ĺźźĺŤçł»çµ±ďĽnon-public DNS)ĺŤç¨±çš„憑č‰"> - -<!ENTITY ssl-observatory.prefs.priv_dns_tooltip -"觀測站不ćśč¨éŚ„ĺŤç¨±ćśŞç¶“ DNS 系統解ćžçš„憑č‰ďĽŚé™¤éťžć‚¨ćś‰ĺ‹ľé¸é€™ĺ€‹é¸é …。"> - -<!ENTITY ssl-observatory.prefs.show "顯示進階é¸é …"> - -<!ENTITY ssl-observatory.prefs.title "SSL 觀測站ĺŹĺĄ˝č¨ĺ®š"> - -<!ENTITY ssl-observatory.prefs.use "使用觀測站?"> -<!ENTITY ssl-observatory.warning.title "EFF çš„ SSL 觀測站ćŹĺ‡şč¦ĺ‘Š"> -<!ENTITY ssl-observatory.warning.showcert "顯示憑č‰éŤŠďĽcertificate chain)"> -<!ENTITY ssl-observatory.warning.okay "ć‘了解"> -<!ENTITY ssl-observatory.warning.text "EFF çš„ SSL 觀測站對這個網站的 HTTPS 憑č‰ćŹĺ‡şč¦ĺ‘Š:"> -<!ENTITY ssl-observatory.warning.defense "若您已登入ć¤ç¶˛ç«™ďĽŚç•¶ć‚¨č˝ä˝żç”¨ĺ®‰ĺ…¨é€Łç·šć™‚最好變更一下密碼。"> - -<!ENTITY ssl-observatory.prefs.self_signed -"é€ĺ‡şä¸¦ćŞ˘ćźĄč‡Şć‘簽署的憑č‰"> -<!ENTITY ssl-observatory.prefs.self_signed_tooltip -"建č°ĺ•źç”¨ďĽ›ĺŠ ĺŻ†ĺ•ŹéˇŚĺś¨č‡Şć‘簽署的嵌入式裝置極為常見。"> - -<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> -<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> -<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> - diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/cross.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/cross.png Binary files differdeleted file mode 100644 index e39a083..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/cross.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png Binary files differdeleted file mode 100644 index dc362dc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png Binary files differdeleted file mode 100644 index a207180..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png Binary files differdeleted file mode 100644 index 9cf0798..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png Binary files differdeleted file mode 100644 index b4bffc0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg Binary files differdeleted file mode 100644 index 6154da6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png Binary files differdeleted file mode 100644 index b4bffc0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css deleted file mode 100644 index 6c03b83..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css +++ /dev/null @@ -1,72 +0,0 @@ -#https-everywhere-button { - -moz-binding: url("chrome://https-everywhere/content/toolbar_button_binding.xml#https-everywhere-binding"); -} - -#https-everywhere-button > .https-everywhere-button { - list-style-image: url("chrome://https-everywhere/skin/https-everywhere-24.png"); -} - -toolbar[iconsize="small"] #https-everywhere-button > .https-everywhere-button { - list-style-image: url("chrome://https-everywhere/skin/https-everywhere-16.png"); -} - -toolbar #https-everywhere-button, -toolbar #https-everywhere-button > .https-everywhere-button { - -moz-box-orient: horizontal; -} - -/* Use CSS attribute selector for changing icon */ -#https-everywhere-button[status="disabled"] > .https-everywhere-button { - list-style-image: url("chrome://https-everywhere/skin/https-everywhere-24-gray.png"); -} - -toolbar[iconsize="small"] #https-everywhere-button[status="disabled"] > .https-everywhere-button { - list-style-image: url("chrome://https-everywhere/skin/https-everywhere-16-gray.png"); -} - -/* ruleset counter */ -#rscounter { - margin: 3px -12px 0 -8px; - display: block; - -moz-box-sizing: border-box; -} - -/* increase negative margins in the palette and panel so the button isn't too wide. */ -#wrapper-https-everywhere-button[place="palette"] > #https-everywhere-button > #rscounter, -#https-everywhere-button[cui-areatype="menu-panel"] > #rscounter { - margin: 3px -16px 0 -8px; -} - -/* rulesets applied label */ -#rsapplied { - -moz-box-sizing: border-box; - font-size: 12px; - color: #000; - background-color: #FFF; - border-width: 1px; - border-style: solid; - padding: 1px 1px 1px 1px; - visibility: hidden; -} - -#https-everywhere-button:not([rulesetsApplied="0"]) #rsapplied { - visibility: visible; -} - -#https-everywhere-button menuitem.active-item label { - color: #9AD100; - font-weight: bold; -} -#https-everywhere-button menuitem.moot-item label { - color: #9AD100; - opacity: 0.5; - font-weight: bold; -} -#https-everywhere-button menuitem.breaking-item label { - color: #b99999; - font-weight: bold; -} -#https-everywhere-button menuitem.inactive-item label { - color: #999999; - font-weight: bold; -} diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png Binary files differdeleted file mode 100644 index 5e21688..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/loop.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/loop.png Binary files differdeleted file mode 100644 index 33dfd42..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/loop.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg Binary files differdeleted file mode 100644 index 84c43e9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png Binary files differdeleted file mode 100644 index 5d3c085..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick.png b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick.png Binary files differdeleted file mode 100644 index f055312..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/chrome/skin/tick.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/https-everywhere.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/https-everywhere.js deleted file mode 100644 index 90f55e2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/https-everywhere.js +++ /dev/null @@ -1,832 +0,0 @@ -// LOG LEVELS --- - -VERB=1; -DBUG=2; -INFO=3; -NOTE=4; -WARN=5; - -// PREFERENCE BRANCHES -PREFBRANCH_ROOT=0; -PREFBRANCH_RULE_TOGGLE=1; - -//--------------- - -https_domains = {}; // maps domain patterns (with at most one - // wildcard) to RuleSets - -https_everywhere_blacklist = {}; // URLs we've given up on rewriting because - // of redirection loops - -https_blacklist_domains = {}; // domains for which there is at least one - // blacklisted URL - -// -const CI = Components.interfaces; -const CC = Components.classes; -const CU = Components.utils; -const CR = Components.results; -const Ci = Components.interfaces; -const Cc = Components.classes; -const Cu = Components.utils; -const Cr = Components.results; - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/FileUtils.jsm"); - -const CP_SHOULDPROCESS = 4; - -const SERVICE_CTRID = "@eff.org/https-everywhere;1"; -const SERVICE_ID=Components.ID("{32c165b4-fe5e-4964-9250-603c410631b4}"); -const SERVICE_NAME = "Encrypts your communications with a number of major websites"; - -const LLVAR = "LogLevel"; - -const IOS = CC["@mozilla.org/network/io-service;1"].getService(CI.nsIIOService); -const OS = CC['@mozilla.org/observer-service;1'].getService(CI.nsIObserverService); -const LOADER = CC["@mozilla.org/moz/jssubscript-loader;1"].getService(CI.mozIJSSubScriptLoader); -const _INCLUDED = {}; - -// NoScript uses this blob to include js constructs that stored in the chrome/ -// directory, but are not attached to the Firefox UI (normally, js located -// there is attached to an Overlay and therefore is part of the UI). - -// Reasons for this: things in components/ directory cannot be split into -// separate files; things in chrome/ can be - -const INCLUDE = function(name) { - if (arguments.length > 1) - for (var j = 0, len = arguments.length; j < len; j++) - INCLUDE(arguments[j]); - else if (!_INCLUDED[name]) { - // we used to try/catch here, but that was less useful because it didn't - // produce line numbers for syntax errors - LOADER.loadSubScript("chrome://https-everywhere/content/code/" - + name + ".js"); - _INCLUDED[name] = true; - } -}; - -const WP_STATE_START = CI.nsIWebProgressListener.STATE_START; -const WP_STATE_STOP = CI.nsIWebProgressListener.STATE_STOP; -const WP_STATE_DOC = CI.nsIWebProgressListener.STATE_IS_DOCUMENT; -const WP_STATE_START_DOC = WP_STATE_START | WP_STATE_DOC; -const WP_STATE_RESTORING = CI.nsIWebProgressListener.STATE_RESTORING; - -const LF_VALIDATE_ALWAYS = CI.nsIRequest.VALIDATE_ALWAYS; -const LF_LOAD_BYPASS_ALL_CACHES = CI.nsIRequest.LOAD_BYPASS_CACHE | CI.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE; - -const NS_OK = 0; -const NS_BINDING_ABORTED = 0x804b0002; -const NS_BINDING_REDIRECTED = 0x804b0003; -const NS_ERROR_UNKNOWN_HOST = 0x804b001e; -const NS_ERROR_REDIRECT_LOOP = 0x804b001f; -const NS_ERROR_CONNECTION_REFUSED = 0x804b000e; -const NS_ERROR_NOT_AVAILABLE = 0x804b0111; - -const LOG_CONTENT_BLOCK = 1; -const LOG_CONTENT_CALL = 2; -const LOG_CONTENT_INTERCEPT = 4; -const LOG_CHROME_WIN = 8; -const LOG_XSS_FILTER = 16; -const LOG_INJECTION_CHECK = 32; -const LOG_DOM = 64; -const LOG_JS = 128; -const LOG_LEAKS = 1024; -const LOG_SNIFF = 2048; -const LOG_CLEARCLICK = 4096; -const LOG_ABE = 8192; - -const HTML_NS = "http://www.w3.org/1999/xhtml"; - -const WHERE_UNTRUSTED = 1; -const WHERE_TRUSTED = 2; -const ANYWHERE = 3; - -const N_COHORTS = 1000; - -const DUMMY_OBJ = {}; -DUMMY_OBJ.wrappedJSObject = DUMMY_OBJ; -const DUMMY_FUNC = function() {}; -const DUMMY_ARRAY = []; - -const EARLY_VERSION_CHECK = !("nsISessionStore" in CI && typeof(/ /) === "object"); - -// This is probably obsolete since the switch to the channel.redirectTo API -const OBSERVER_TOPIC_URI_REWRITE = "https-everywhere-uri-rewrite"; - -// XXX: Better plan for this? -// We need it to exist to make our updates of ChannelReplacement.js easier. -var ABE = { - consoleDump: false, - log: function(str) { - https_everywhereLog(WARN, str); - } -}; - -function xpcom_generateQI(iids) { - var checks = []; - for each (var iid in iids) { - checks.push("CI." + iid.name + ".equals(iid)"); - } - var src = checks.length - ? "if (" + checks.join(" || ") + ") return this;\n" - : ""; - return new Function("iid", src + "throw Components.results.NS_ERROR_NO_INTERFACE;"); -} - -function xpcom_checkInterfaces(iid,iids,ex) { - for (var j = iids.length; j-- >0;) { - if (iid.equals(iids[j])) return true; - } - throw ex; -} - -INCLUDE('ChannelReplacement', 'IOUtil', 'HTTPSRules', 'HTTPS', 'Thread', 'ApplicableList'); - -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); - -// This is black magic for storing Expando data w/ an nsIDOMWindow -// See http://pastebin.com/qY28Jwbv , -// https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIControllers - -StorageController.prototype = { - QueryInterface: XPCOMUtils.generateQI( - [ Components.interfaces.nsISupports, - Components.interfaces.nsIController ]), - wrappedJSObject: null, // Initialized by constructor - supportsCommand: function (cmd) {return (cmd == this.command);}, - isCommandEnabled: function (cmd) {return (cmd == this.command);}, - onEvent: function(eventName) {return true;}, - doCommand: function() {return true;} -}; - -function StorageController(command) { - this.command = command; - this.data = {}; - this.wrappedJSObject = this; -} - -/*var Controller = Class("Controller", XPCOM(CI.nsIController), { - init: function (command, data) { - this.command = command; - this.data = data; - }, - supportsCommand: function (cmd) cmd === this.command -});*/ - -function HTTPSEverywhere() { - - // Set up logging in each component: - HTTPS.log = HTTPSRules.log = RuleWriter.log = this.log = https_everywhereLog; - - this.log = https_everywhereLog; - this.wrappedJSObject = this; - this.https_rules = HTTPSRules; - this.INCLUDE=INCLUDE; - this.ApplicableList = ApplicableList; - this.browser_initialised = false; // the browser is completely loaded - - this.prefs = this.get_prefs(); - this.rule_toggle_prefs = this.get_prefs(PREFBRANCH_RULE_TOGGLE); - - // We need to use observers instead of categories for FF3.0 for these: - // https://developer.mozilla.org/en/Observer_Notifications - // https://developer.mozilla.org/en/nsIObserverService. - // https://developer.mozilla.org/en/nsIObserver - // We also use the observer service to let other extensions know about URIs - // we rewrite. - this.obsService = CC["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - - if(this.prefs.getBoolPref("globalEnabled")){ - this.obsService.addObserver(this, "profile-before-change", false); - this.obsService.addObserver(this, "profile-after-change", false); - this.obsService.addObserver(this, "sessionstore-windows-restored", false); - this.obsService.addObserver(this, "browser:purge-session-history", false); - } - - var pref_service = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefBranchInternal); - var branch = pref_service.QueryInterface(Components.interfaces.nsIPrefBranchInternal); - - branch.addObserver("extensions.https_everywhere.enable_mixed_rulesets", - this, false); - branch.addObserver("security.mixed_content.block_active_content", - this, false); - - return; -} - - -// nsIContentPolicy interface -// we use numeric constants for performance sake: -const TYPE_OTHER = 1; -const TYPE_SCRIPT = 2; -const TYPE_IMAGE = 3; -const TYPE_STYLESHEET = 4; -const TYPE_OBJECT = 5; -const TYPE_DOCUMENT = 6; -const TYPE_SUBDOCUMENT = 7; -const TYPE_REFRESH = 8; -const TYPE_XBL = 9; -const TYPE_PING = 10; -const TYPE_XMLHTTPREQUEST = 11; -const TYPE_OBJECT_SUBREQUEST = 12; -const TYPE_DTD = 13; -const TYPE_FONT = 14; -const TYPE_MEDIA = 15; -// -------------- -// REJECT_SERVER = -3 -// ACCEPT = 1 - - -// Some of these types are known by arbitrary assertion at -// https://bugzilla.mozilla.org/show_bug.cgi?id=677643#c47 -// TYPE_FONT was required to fix https://trac.torproject.org/projects/tor/ticket/4194 -// TYPE_SUBDOCUMENT was required to fix https://trac.torproject.org/projects/tor/ticket/4149 -// I have NO IDEA why JS won't let me use the constants above in defining this -const shouldLoadTargets = { - 1 : true, - 3 : true, - 5 : true, - 12 : true, - 14 : true, - 7 : true -}; - - - -/* -In recent versions of Firefox and HTTPS Everywhere, the call stack for performing an HTTP -> HTTPS rewrite looks like this: - -1. HTTPSEverywhere.observe() gets a callback with the "http-on-modify-request" topic, and the channel as a subject - - 2. HTTPS.replaceChannel() - - 3. HTTPSRules.rewrittenURI() - - 4. HTTPSRules.potentiallyApplicableRulesets uses <target host=""> elements to identify relevant rulesets - - foreach RuleSet: - - 4. RuleSet.transformURI() - - 5. RuleSet.apply() does the tests and rewrites with RegExps, returning a string - - 4. RuleSet.transformURI() makes a new uri object for the destination string, if required - - 2. HTTPS.replaceChannel() calls channel.redirectTo() if a redirect is needed - - -In addition, the following other important tasks happen along the way: - -HTTPSEverywhere.observe() aborts if there is a redirect loop - finds a reference to the ApplicableList or alist that represents the toolbar context menu - -HTTPS.replaceChannel() notices redirect loops (and used to do much more complex XPCOM API work in the NoScript-based past) - -HTTPSRules.rewrittenURI() works around weird URI types like about: and http://user:pass@example.com/ - and notifies the alist of what it should display for each ruleset - -*/ - -// This defines for Mozilla what stuff HTTPSEverywhere will implement. - -// ChannelEventSink used to be necessary in order to handle redirects (eg -// HTTP redirects) correctly. It may now be obsolete? XXX - -HTTPSEverywhere.prototype = { - prefs: null, - // properties required for XPCOM registration: - classDescription: SERVICE_NAME, - classID: SERVICE_ID, - contractID: SERVICE_CTRID, - - _xpcom_factory: { - createInstance: function (outer, iid) { - if (outer != null) - throw Components.results.NS_ERROR_NO_AGGREGATION; - if (!HTTPSEverywhere.instance) - HTTPSEverywhere.instance = new HTTPSEverywhere(); - return HTTPSEverywhere.instance.QueryInterface(iid); - }, - - QueryInterface: XPCOMUtils.generateQI( - [ Components.interfaces.nsISupports, - Components.interfaces.nsIModule, - Components.interfaces.nsIFactory ]) - }, - - // [optional] an array of categories to register this component in. - _xpcom_categories: [ - { - category: "app-startup", - }, - ], - - // QueryInterface implementation, e.g. using the generateQI helper - QueryInterface: XPCOMUtils.generateQI( - [ Components.interfaces.nsIObserver, - Components.interfaces.nsISupports, - Components.interfaces.nsISupportsWeakReference, - Components.interfaces.nsIWebProgressListener, - Components.interfaces.nsIWebProgressListener2, - Components.interfaces.nsIChannelEventSink ]), - - wrappedJSObject: null, // Initialized by constructor - - getWeakReference: function () { - return Components.utils.getWeakReference(this); - }, - - // An "expando" is an attribute glued onto something. From NoScript. - getExpando: function(domWin, key) { - var c = domWin.controllers.getControllerForCommand("https-everywhere-storage"); - try { - if (c) { - c = c.wrappedJSObject; - //this.log(DBUG, "Found a controller, returning data"); - return c.data[key]; - } else { - this.log(INFO, "No controller attached to " + domWin); - return null; - } - } catch(e) { - // Firefox 3.5 - this.log(WARN,"exception in getExpando"); - this.getExpando = this.getExpando_old; - this.setExpando = this.setExpando_old; - return this.getExpando_old(domWin, key, null); - } - }, - setExpando: function(domWin, key, value) { - var c = domWin.controllers.getControllerForCommand("https-everywhere-storage"); - try { - if (!c) { - this.log(DBUG, "Appending new StorageController for " + domWin); - c = new StorageController("https-everywhere-storage"); - domWin.controllers.appendController(c); - } else { - c = c.wrappedJSObject; - } - c.data[key] = value; - } catch(e) { - this.log(WARN,"exception in setExpando"); - this.getExpando = this.getExpando_old; - this.setExpando = this.setExpando_old; - this.setExpando_old(domWin, key, value); - } - }, - - // This method is straight out of NoScript... we fall back to it in FF 3.*? - getExpando_old: function(domWin, key, defValue) { - var domObject = domWin.document; - return domObject && domObject.__httpsEStorage && domObject.__httpsEStorage[key] || - (defValue ? this.setExpando(domObject, key, defValue) : null); - }, - setExpando_old: function(domWin, key, value) { - var domObject = domWin.document; - if (!domObject) return null; - if (!domObject.__httpsEStorage) domObject.__httpsEStorage = {}; - if (domObject.__httpsEStorage) domObject.__httpsEStorage[key] = value; - else this.log(WARN, "Warning: cannot set expando " + key + " to value " + value); - return value; - }, - - // We use onLocationChange to make a fresh list of rulesets that could have - // applied to the content in the current page (the "applicable list" is used - // for the context menu in the UI). This will be appended to as various - // content is embedded / requested by JavaScript. - onLocationChange: function(wp, req, uri) { - if (wp instanceof CI.nsIWebProgress) { - if (!this.newApplicableListForDOMWin(wp.DOMWindow)) - this.log(WARN,"Something went wrong in onLocationChange"); - } else { - this.log(WARN,"onLocationChange: no nsIWebProgress"); - } - }, - - getWindowForChannel: function(channel) { - // Obtain an nsIDOMWindow from a channel - let loadContext; - try { - loadContext = channel.notificationCallbacks.getInterface(CI.nsILoadContext); - } catch(e) { - try { - loadContext = channel.loadGroup.notificationCallbacks.getInterface(CI.nsILoadContext); - } catch(e) { - this.log(NOTE, "No loadContext for " + channel.URI.spec); - return null; - } - } - - let domWin = loadContext.associatedWindow; - if (!domWin) { - this.log(NOTE, "failed to get DOMWin for " + channel.URI.spec); - return null; - } - - domWin = domWin.top; - return domWin; - }, - - // the lists get made when the urlbar is loading something new, but they - // need to be appended to with reference only to the channel - getApplicableListForChannel: function(channel) { - var domWin = this.getWindowForChannel(channel); - return this.getApplicableListForDOMWin(domWin, "on-modify-request w " + domWin); - }, - - newApplicableListForDOMWin: function(domWin) { - if (!domWin || !(domWin instanceof CI.nsIDOMWindow)) { - this.log(WARN, "Get alist without domWin"); - return null; - } - var dw = domWin.top; - var alist = new ApplicableList(this.log,dw.document,dw); - this.setExpando(dw,"applicable_rules",alist); - return alist; - }, - - getApplicableListForDOMWin: function(domWin, where) { - if (!domWin || !(domWin instanceof CI.nsIDOMWindow)) { - //this.log(WARN, "Get alist without domWin"); - return null; - } - var dw = domWin.top; - var alist= this.getExpando(dw,"applicable_rules",null); - if (alist) { - //this.log(DBUG,"get AL success in " + where); - return alist; - } else { - //this.log(DBUG, "Making new AL in getApplicableListForDOMWin in " + where); - alist = new ApplicableList(this.log,dw.document,dw); - this.setExpando(dw,"applicable_rules",alist); - } - return alist; - }, - - observe: function(subject, topic, data) { - // Top level glue for the nsIObserver API - var channel = subject; - //this.log(VERB,"Got observer topic: "+topic); - - if (topic == "http-on-modify-request") { - if (!(channel instanceof CI.nsIHttpChannel)) return; - - this.log(DBUG,"Got http-on-modify-request: "+channel.URI.spec); - var lst = this.getApplicableListForChannel(channel); // null if no window is associated (ex: xhr) - if (channel.URI.spec in https_everywhere_blacklist) { - this.log(DBUG, "Avoiding blacklisted " + channel.URI.spec); - if (lst) lst.breaking_rule(https_everywhere_blacklist[channel.URI.spec]); - else this.log(NOTE,"Failed to indicate breakage in content menu"); - return; - } - HTTPS.replaceChannel(lst, channel); - } else if (topic == "http-on-examine-response") { - this.log(DBUG, "Got http-on-examine-response @ "+ (channel.URI ? channel.URI.spec : '') ); - HTTPS.handleSecureCookies(channel); - } else if (topic == "http-on-examine-merged-response") { - this.log(DBUG, "Got http-on-examine-merged-response "); - HTTPS.handleSecureCookies(channel); - } else if (topic == "cookie-changed") { - // Javascript can add cookies via document.cookie that are insecure. - if (data == "added" || data == "changed") { - // subject can also be an nsIArray! bleh. - try { - subject.QueryInterface(CI.nsIArray); - var elems = subject.enumerate(); - while (elems.hasMoreElements()) { - var cookie = elems.getNext() - .QueryInterface(CI.nsICookie2); - if (!cookie.isSecure) { - HTTPS.handleInsecureCookie(cookie); - } - } - } catch(e) { - subject.QueryInterface(CI.nsICookie2); - if(!subject.isSecure) { - HTTPS.handleInsecureCookie(subject); - } - } - } - } else if (topic == "profile-before-change") { - this.log(INFO, "Got profile-before-change"); - var catman = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); - catman.deleteCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, true); - Thread.hostRunning = false; - } else if (topic == "profile-after-change") { - this.log(DBUG, "Got profile-after-change"); - - if(this.prefs.getBoolPref("globalEnabled")){ - OS.addObserver(this, "cookie-changed", false); - OS.addObserver(this, "http-on-modify-request", false); - OS.addObserver(this, "http-on-examine-merged-response", false); - OS.addObserver(this, "http-on-examine-response", false); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.addProgressListener(this, CI.nsIWebProgress.NOTIFY_LOCATION); - this.log(INFO,"ChannelReplacement.supported = "+ChannelReplacement.supported); - - HTTPSRules.init(); - - Thread.hostRunning = true; - var catman = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); - // hook on redirections (non persistent, otherwise crashes on 1.8.x) - catman.addCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, - SERVICE_CTRID, false, true); - } - } else if (topic == "sessionstore-windows-restored") { - this.log(DBUG,"Got sessionstore-windows-restored"); - this.maybeShowObservatoryPopup(); - this.browser_initialised = true; - } else if (topic == "nsPref:changed") { - // If the user toggles the Mixed Content Blocker settings, reload the rulesets - // to enable/disable the mixedcontent ones - - // this pref gets set to false and then true during FF 26 startup! - // so do nothing if we're being notified during startup - if (!this.browser_initialised) - return; - switch (data) { - case "security.mixed_content.block_active_content": - case "extensions.https_everywhere.enable_mixed_rulesets": - var p = CC["@mozilla.org/preferences-service;1"].getService(CI.nsIPrefBranch); - var val = p.getBoolPref("security.mixed_content.block_active_content"); - this.log(INFO,"nsPref:changed for "+data + " to " + val); - HTTPSRules.init(); - break; - } - } else if (topic == "browser:purge-session-history") { - // The list of rulesets that have been loaded from the sqlite DB - // constitutes a parallel history store, so we have to clear it. - this.log(DBUG, "History cleared, reloading HTTPSRules to avoid information leak."); - HTTPSRules.init(); - } - return; - }, - - maybeShowObservatoryPopup: function() { - // Show the popup at most once. Users who enabled the Observatory before - // a version that would have shown it to them, don't need to see it - // again. - var ssl_observatory = CC["@eff.org/ssl-observatory;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; - var shown = ssl_observatory.myGetBoolPref("popup_shown"); - var enabled = ssl_observatory.myGetBoolPref("enabled"); - var that = this; - var obs_popup_callback = function(result) { - if (result) that.log(INFO, "Got positive proxy test."); - else that.log(INFO, "Got negative proxy text."); - // We are now ready to show the popup in its most informative state - that.chrome_opener("chrome://https-everywhere/content/observatory-popup.xul"); - }; - if (!shown && !enabled) - ssl_observatory.registerProxyTestNotification(obs_popup_callback); - - if (shown && enabled) - this.maybeCleanupObservatoryPrefs(ssl_observatory); - }, - - maybeCleanupObservatoryPrefs: function(ssl_observatory) { - // Recover from a past UI processing bug that would leave the Obsevatory - // accidentally disabled for some users - // https://trac.torproject.org/projects/tor/ticket/10728 - var clean = ssl_observatory.myGetBoolPref("clean_config"); - if (clean) return; - - // unchanged: returns true if a pref has not been modified - var unchanged = function(p){return !ssl_observatory.prefs.prefHasUserValue("extensions.https_everywhere._observatory."+p)}; - var cleanup_obsprefs_callback = function(tor_avail) { - // we only run this once - ssl_observatory.prefs.setBoolPref("extensions.https_everywhere._observatory.clean_config", true); - if (!tor_avail) { - // use_custom_proxy is the variable that is often false when it should be true; - if (!ssl_observatory.myGetBoolPref("use_custom_proxy")) { - // however don't do anything if any of the prefs have been set by the user - if (unchanged("alt_roots") && unchanged("self_signed") && unchanged ("send_asn") && unchanged("priv_dns")) { - ssl_observatory.prefs.setBoolPref("extensions.https_everywhere._observatory.use_custom_proxy", true); - } - } - } - } - ssl_observatory.registerProxyTestNotification(cleanup_obsprefs_callback); - }, - - - getExperimentalFeatureCohort: function() { - // This variable is used for gradually turning on features for testing and - // scalability purposes. It is a random integer [0,N_COHORTS) generated - // once and stored thereafter. - // - // This is not currently used/called in the development branch - var cohort; - try { - cohort = this.prefs.getIntPref("experimental_feature_cohort"); - } catch(e) { - cohort = Math.round(Math.random() * N_COHORTS); - this.prefs.setIntPref("experimental_feature_cohort", cohort); - } - return cohort; - }, - - // nsIChannelEventSink implementation - // XXX This was here for rewrites in the past. Do we still need it? - onChannelRedirect: function(oldChannel, newChannel, flags) { - const uri = newChannel.URI; - this.log(DBUG,"Got onChannelRedirect to "+uri.spec); - if (!(newChannel instanceof CI.nsIHttpChannel)) { - this.log(DBUG, newChannel + " is not an instance of nsIHttpChannel"); - return; - } - var alist = this.juggleApplicableListsDuringRedirection(oldChannel, newChannel); - HTTPS.replaceChannel(alist,newChannel); - }, - - juggleApplicableListsDuringRedirection: function(oldChannel, newChannel) { - // If the new channel doesn't yet have a list of applicable rulesets, start - // with the old one because that's probably a better representation of how - // secure the load process was for this page - var domWin = this.getWindowForChannel(oldChannel); - var old_alist = null; - if (domWin) - old_alist = this.getExpando(domWin,"applicable_rules", null); - domWin = this.getWindowForChannel(newChannel); - if (!domWin) return null; - var new_alist = this.getExpando(domWin,"applicable_rules", null); - if (old_alist && !new_alist) { - new_alist = old_alist; - this.setExpando(domWin,"applicable_rules",new_alist); - } else if (!new_alist) { - new_alist = new ApplicableList(this.log, domWin.document, domWin); - this.setExpando(domWin,"applicable_rules",new_alist); - } - return new_alist; - }, - - asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) { - this.onChannelRedirect(oldChannel, newChannel, flags); - callback.onRedirectVerifyCallback(0); - }, - - get_prefs: function(prefBranch) { - if(!prefBranch) prefBranch = PREFBRANCH_ROOT; - - // get our preferences branch object - // FIXME: Ugly hack stolen from https - var branch_name; - if(prefBranch == PREFBRANCH_RULE_TOGGLE) - branch_name = "extensions.https_everywhere.rule_toggle."; - else - branch_name = "extensions.https_everywhere."; - var o_prefs = false; - var o_branch = false; - // this function needs to be called from inside https_everywhereLog, so - // it needs to do its own logging... - var econsole = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService); - - o_prefs = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); - - if (!o_prefs) - { - econsole.logStringMessage("HTTPS Everywhere: Failed to get preferences-service!"); - return false; - } - - o_branch = o_prefs.getBranch(branch_name); - if (!o_branch) - { - econsole.logStringMessage("HTTPS Everywhere: Failed to get prefs branch!"); - return false; - } - - if(prefBranch == PREFBRANCH_ROOT) { - // make sure there's an entry for our log level - try { - o_branch.getIntPref(LLVAR); - } catch (e) { - econsole.logStringMessage("Creating new about:config https_everywhere.LogLevel variable"); - o_branch.setIntPref(LLVAR, WARN); - } - } - - return o_branch; - }, - - chrome_opener: function(uri, args) { - // we don't use window.open, because we need to work around TorButton's - // state control - args = args || 'chrome,centerscreen'; - return CC['@mozilla.org/appshell/window-mediator;1'] - .getService(CI.nsIWindowMediator) - .getMostRecentWindow('navigator:browser') - .open(uri,'', args ); - }, - - tab_opener: function(uri) { - var gb = CC['@mozilla.org/appshell/window-mediator;1'] - .getService(CI.nsIWindowMediator) - .getMostRecentWindow('navigator:browser') - .gBrowser; - var tab = gb.addTab(uri); - gb.selectedTab = tab; - return tab; - }, - - toggleEnabledState: function() { - if(this.prefs.getBoolPref("globalEnabled")){ - try{ - this.obsService.removeObserver(this, "profile-before-change"); - this.obsService.removeObserver(this, "profile-after-change"); - this.obsService.removeObserver(this, "sessionstore-windows-restored"); - OS.removeObserver(this, "cookie-changed"); - OS.removeObserver(this, "http-on-modify-request"); - OS.removeObserver(this, "http-on-examine-merged-response"); - OS.removeObserver(this, "http-on-examine-response"); - - var catman = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); - catman.deleteCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, true); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.removeProgressListener(this); - - this.prefs.setBoolPref("globalEnabled", false); - } - catch(e){ - this.log(WARN, "Couldn't remove observers: " + e); - } - } - else{ - try{ - this.obsService.addObserver(this, "profile-before-change", false); - this.obsService.addObserver(this, "profile-after-change", false); - this.obsService.addObserver(this, "sessionstore-windows-restored", false); - OS.addObserver(this, "cookie-changed", false); - OS.addObserver(this, "http-on-modify-request", false); - OS.addObserver(this, "http-on-examine-merged-response", false); - OS.addObserver(this, "http-on-examine-response", false); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.addProgressListener(this, CI.nsIWebProgress.NOTIFY_LOCATION); - - this.log(INFO,"ChannelReplacement.supported = "+ChannelReplacement.supported); - - if(!Thread.hostRunning) - Thread.hostRunning = true; - - var catman = Components.classes["@mozilla.org/categorymanager;1"] - .getService(Components.interfaces.nsICategoryManager); - // hook on redirections (non persistent, otherwise crashes on 1.8.x) - catman.addCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, - SERVICE_CTRID, false, true); - - HTTPSRules.init(); - this.prefs.setBoolPref("globalEnabled", true); - } - catch(e){ - this.log(WARN, "Couldn't add observers: " + e); - } - } - } -}; - -var prefs = 0; -var econsole = 0; -function https_everywhereLog(level, str) { - if (prefs == 0) { - prefs = HTTPSEverywhere.instance.get_prefs(); - econsole = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService); - } - try { - var threshold = prefs.getIntPref(LLVAR); - } catch (e) { - econsole.logStringMessage( "HTTPS Everywhere: Failed to read about:config LogLevel"); - threshold = WARN; - } - if (level >= threshold) { - dump("HTTPS Everywhere: "+str+"\n"); - econsole.logStringMessage("HTTPS Everywhere: " +str); - } -} - -/** -* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). -* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6). -*/ -if (XPCOMUtils.generateNSGetFactory) - var NSGetFactory = XPCOMUtils.generateNSGetFactory([HTTPSEverywhere]); -else - var NSGetModule = XPCOMUtils.generateNSGetModule([HTTPSEverywhere]); - -/* vim: set tabstop=4 expandtab: */ diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/ssl-observatory.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/ssl-observatory.js deleted file mode 100644 index 7b301d1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/components/ssl-observatory.js +++ /dev/null @@ -1,1026 +0,0 @@ -const Ci = Components.interfaces; -const Cc = Components.classes; -const Cr = Components.results; - -const CI = Components.interfaces; -const CC = Components.classes; -const CR = Components.results; -const CU = Components.utils; - -// Log levels -VERB=1; -DBUG=2; -INFO=3; -NOTE=4; -WARN=5; - -BASE_REQ_SIZE=4096; -MAX_OUTSTANDING = 20; // Max # submission XHRs in progress -MAX_DELAYED = 32; // Max # XHRs are waiting around to be sent or retried -TIMEOUT = 60000; - -ASN_PRIVATE = -1; // Do not record the ASN this cert was seen on -ASN_IMPLICIT = -2; // ASN can be learned from connecting IP -ASN_UNKNOWABLE = -3; // Cert was seen in the absence of [trustworthy] Internet access - -// XXX: We should make the _observatory tree relative. -LLVAR="extensions.https_everywhere.LogLevel"; - -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -Components.utils.import("resource://gre/modules/ctypes.jsm"); - - -const OS = Cc['@mozilla.org/observer-service;1'].getService(CI.nsIObserverService); - -const SERVICE_CTRID = "@eff.org/ssl-observatory;1"; -const SERVICE_ID=Components.ID("{0f9ab521-986d-4ad8-9c1f-6934e195c15c}"); -const SERVICE_NAME = "Anonymously Submits SSL certificates to EFF for security auditing."; -const LOADER = CC["@mozilla.org/moz/jssubscript-loader;1"].getService(CI.mozIJSSubScriptLoader); - -const _INCLUDED = {}; - -const INCLUDE = function(name) { - if (arguments.length > 1) - for (var j = 0, len = arguments.length; j < len; j++) - INCLUDE(arguments[j]); - else if (!_INCLUDED[name]) { - try { - LOADER.loadSubScript("chrome://https-everywhere/content/code/" - + name + ".js"); - _INCLUDED[name] = true; - } catch(e) { - dump("INCLUDE " + name + ": " + e + "\n"); - } - } -}; - -INCLUDE('Root-CAs'); -INCLUDE('sha256'); -INCLUDE('X509ChainWhitelist'); -INCLUDE('NSS'); - -function SSLObservatory() { - this.prefs = CC["@mozilla.org/preferences-service;1"] - .getService(CI.nsIPrefBranch); - - try { - // Check for torbutton - this.tor_logger = CC["@torproject.org/torbutton-logger;1"] - .getService(CI.nsISupports).wrappedJSObject; - this.torbutton_installed = true; - } catch(e) { - this.torbutton_installed = false; - } - - this.HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; - - /* The proxy test result starts out null until the test is attempted. - * This is for UI notification purposes */ - this.proxy_test_successful = null; - this.proxy_test_callback = null; - this.cto_url = "https://check.torproject.org/?TorButton=true"; - // a regexp to match the above URL - this.cto_regexp = RegExp("^https://check\\.torproject\\.org/"); - - this.public_roots = root_ca_hashes; - - // Clear these on cookies-cleared observer event - this.already_submitted = {}; - this.delayed_submissions = {}; - - // Figure out the url to submit to - this.submit_host = null; - this.findSubmissionTarget(); - - // Used to track current number of pending requests to the server - this.current_outstanding_requests = 0; - - // We can't always know private browsing state per request, sometimes - // we have to guess based on what we've seen in the past - this.everSeenPrivateBrowsing = false; - - // Generate nonce to append to url, to catch in nsIProtocolProxyFilter - // and to protect against CSRF - this.csrf_nonce = "#"+Math.random().toString()+Math.random().toString(); - - this.compatJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); - - var pref_service = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefBranchInternal); - var branch = pref_service.QueryInterface(Components.interfaces.nsIPrefBranchInternal); - - branch.addObserver("extensions.https_everywhere._observatory.enabled", - this, false); - - if (this.myGetBoolPref("enabled")) { - OS.addObserver(this, "cookie-changed", false); - OS.addObserver(this, "http-on-examine-response", false); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.addProgressListener(this, - Ci.nsIWebProgress.NOTIFY_STATE_REQUEST); - } - - // Register protocolproxyfilter - this.pps = CC["@mozilla.org/network/protocol-proxy-service;1"] - .getService(CI.nsIProtocolProxyService); - - this.pps.registerFilter(this, 0); - this.wrappedJSObject = this; - - this.client_asn = ASN_PRIVATE; - if (this.myGetBoolPref("send_asn")) - this.setupASNWatcher(); - - try { - NSS.initialize(""); - } catch(e) { - this.log(WARN, "Failed to initialize NSS component:" + e); - } - - this.testProxySettings(); - - this.log(DBUG, "Loaded observatory component!"); -} - -SSLObservatory.prototype = { - // QueryInterface implementation, e.g. using the generateQI helper - QueryInterface: XPCOMUtils.generateQI( - [ CI.nsIObserver, - CI.nsIProtocolProxyFilter, - //CI.nsIWifiListener, - CI.nsIWebProgressListener, - CI.nsISupportsWeakReference, - CI.nsIInterfaceRequestor]), - - wrappedJSObject: null, // Initialized by constructor - - // properties required for XPCOM registration: - classDescription: SERVICE_NAME, - classID: SERVICE_ID, - contractID: SERVICE_CTRID, - - // https://developer.mozilla.org/En/How_to_check_the_security_state_of_an_XMLHTTPRequest_over_SSL - getSSLCertChain: function(channel) { - try { - // Do we have a valid channel argument? - if (!channel instanceof Ci.nsIChannel) { - return null; - } - var secInfo = channel.securityInfo; - - // Print general connection security state - if (secInfo instanceof Ci.nsITransportSecurityInfo) { - secInfo.QueryInterface(Ci.nsITransportSecurityInfo); - } else { - return null; - } - - if (secInfo instanceof Ci.nsISSLStatusProvider) { - return secInfo.QueryInterface(Ci.nsISSLStatusProvider). - SSLStatus.QueryInterface(Ci.nsISSLStatus).serverCert; - } - return null; - } catch(err) { - return null; - } - }, - - findSubmissionTarget: function() { - // Compute the URL that the Observatory will currently submit to - var host = this.prefs.getCharPref("extensions.https_everywhere._observatory.server_host"); - // Rebuild the regexp iff the host has changed - if (host != this.submit_host) { - this.submit_host = host; - this.submit_url = "https://" + host + "/submit_cert"; - this.submission_regexp = RegExp("^" + this.regExpEscape(this.submit_url)); - } - }, - - regExpEscape: function(s) { - // Borrowed from the Closure Library, - // https://closure-library.googlecode.com/svn/docs/closure_goog_string_string.js.source.html - return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').replace(/\x08/g, '\\x08'); - }, - - notifyCertProblem: function(socketInfo, status, targetSite) { - this.log(NOTE, "cert warning for " + targetSite); - if (targetSite == "observatory.eff.org") { - this.log(WARN, "Surpressing observatory warning"); - return true; - } - return false; - }, - - setupASNWatcher: function() { - this.getClientASN(); - this.max_ap = null; - - // we currently do not actually do *any* ASN watching from the client - // (in other words, the db will not have ASNs for certs submitted - // through Tor, even if the user checks the "send ASN" option) - // all of this code for guessing at changes in our public IP via WiFi hints - // is therefore disabled - /* - // Observe network changes to get new ASNs - OS.addObserver(this, "network:offline-status-changed", false); - var pref_service = Cc["@mozilla.org/preferences-service;1"] - .getService(Ci.nsIPrefBranchInternal); - var proxy_branch = pref_service.QueryInterface(Ci.nsIPrefBranchInternal); - proxy_branch.addObserver("network.proxy", this, false); - - try { - var wifi_service = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor); - wifi_service.startWatching(this); - } catch(e) { - this.log(INFO, "Failed to register ASN change monitor: "+e); - }*/ - }, - - stopASNWatcher: function() { - this.client_asn = ASN_PRIVATE; - /* - // unhook the observers we registered above - OS.removeObserver(this, "network:offline-status-changed"); - var pref_service = Cc["@mozilla.org/preferences-service;1"] - .getService(Ci.nsIPrefBranchInternal); - var proxy_branch = pref_service.QueryInterface(Ci.nsIPrefBranchInternal); - proxy_branch.removeObserver(this, "network.proxy"); - try { - var wifi_service = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor); - wifi_service.stopWatching(this); - } catch(e) { - this.log(WARN, "Failed to stop wifi state monitor: "+e); - }*/ - }, - - getClientASN: function() { - // Fetch a new client ASN.. - if (!this.myGetBoolPref("send_asn")) { - this.client_asn = ASN_PRIVATE; - return; - } - else if (!this.torbutton_installed) { - this.client_asn = ASN_IMPLICIT; - return; - } - // XXX As a possible base case: the user is running Tor, is not using - // bridges, and has send_asn enabled: should we ping an eff.org URL to - // learn our ASN? - return; - }, - - /* - // Wifi status listener - onChange: function(accessPoints) { - try { - var max_ap = accessPoints[0].mac; - } catch(e) { - return null; // accessPoints[0] is undefined - } - var max_signal = accessPoints[0].signal; - var old_max_present = false; - for (var i=0; i<accessPoints.length; i++) { - if (accessPoints[i].mac == this.max_ap) { - old_max_present = true; - } - if (accessPoints[i].signal > max_signal) { - max_ap = accessPoints[i].mac; - max_signal = accessPoints[i].signal; - } - } - this.max_ap = max_ap; - if (!old_max_present) { - this.log(INFO, "Old access point is out of range. Getting new ASN"); - this.getClientASN(); - } else { - this.log(DBUG, "Old access point is still in range."); - } - }, - - // Wifi status listener - onError: function(value) { - // XXX: Do we care? - this.log(NOTE, "ASN change observer got an error: "+value); - this.getClientASN(); - }, - */ - - ourFingerprint: function(cert) { - // Calculate our custom fingerprint from an nsIX509Cert - return (cert.md5Fingerprint+cert.sha1Fingerprint).replace(":", "", "g"); - }, - - // onSecurity is used to listen for bad cert warnings - // There is also onSecurityStateChange, but it does not handle subdocuments. See git - // history for an implementation stub. - onStateChange: function(aProgress, aRequest, aState, aStatus) { - if (!aRequest) return; - var chan = null; - try { - chan = aRequest.QueryInterface(Ci.nsIHttpChannel); - } catch(e) { - return; - } - if (chan) { - if (!this.observatoryActive(chan)) return; - var certchain = this.getSSLCertChain(chan); - if (certchain) { - this.log(INFO, "Got state cert chain for " - + chan.originalURI.spec + "->" + chan.URI.spec + ", state: " + aState); - var warning = true; - this.submitCertChainForChannel(certchain, chan, warning); - } - } - }, - - observe: function(subject, topic, data) { - if (topic == "cookie-changed" && data == "cleared") { - this.already_submitted = {}; - this.delayed_submissions = {}; - this.log(INFO, "Cookies were cleared. Purging list of pending and already submitted certs"); - return; - } - - if ("http-on-examine-response" == topic) { - var channel = subject; - if (!this.observatoryActive(channel)) return; - - var certchain = this.getSSLCertChain(subject); - var warning = false; - this.submitCertChainForChannel(certchain, channel, warning); - } - - if (topic == "network:offline-status-changed" && data == "online") { - this.log(INFO, "Browser back online. Getting new ASN."); - this.getClientASN(); - return; - } - - if (topic == "nsPref:changed") { - // If the user toggles the SSL Observatory settings, we need to add or remove - // our observers - switch (data) { - case "network.proxy.ssl": - case "network.proxy.ssl_port": - case "network.proxy.socks": - case "network.proxy.socks_port": - // XXX: We somehow need to only call this once. Right now, we'll make - // like 3 calls to getClientASN().. The only thing I can think - // of is a timer... - this.log(INFO, "Proxy settings have changed. Getting new ASN"); - this.getClientASN(); - break; - case "extensions.https_everywhere._observatory.enabled": - if (this.myGetBoolPref("enabled")) { - this.pps.registerFilter(this, 0); - OS.addObserver(this, "cookie-changed", false); - OS.addObserver(this, "http-on-examine-response", false); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.addProgressListener(this, - Ci.nsIWebProgress.NOTIFY_STATE_REQUEST); - this.log(INFO,"SSL Observatory is now enabled via pref change!"); - } else { - try { - this.pps.unregisterFilter(this); - OS.removeObserver(this, "cookie-changed"); - OS.removeObserver(this, "http-on-examine-response"); - - var dls = CC['@mozilla.org/docloaderservice;1'] - .getService(CI.nsIWebProgress); - dls.removeProgressListener(this); - this.log(INFO,"SSL Observatory is now disabled via pref change!"); - } catch(e) { - this.log(WARN, "Removing SSL Observatory observers failed: "+e); - } - } - break; - } - return; - } - - }, - - submitCertChainForChannel: function(certchain, channel, warning) { - if (!certchain) { - return; - } - var host_ip = "-1"; - var httpchannelinternal = channel.QueryInterface(Ci.nsIHttpChannelInternal); - try { - host_ip = httpchannelinternal.remoteAddress; - } catch(e) { - this.log(INFO, "Could not get server IP address."); - } - - channel.QueryInterface(Ci.nsIHttpChannel); - var chainEnum = certchain.getChain(); - var chainArray = []; - var chainArrayFpStr = ''; - var fps = []; - for(var i = 0; i < chainEnum.length; i++) { - var cert = chainEnum.queryElementAt(i, Ci.nsIX509Cert); - chainArray.push(cert); - var fp = this.ourFingerprint(cert); - fps.push(fp); - chainArrayFpStr = chainArrayFpStr + fp; - } - var chain_hash = sha256_digest(chainArrayFpStr).toUpperCase(); - this.log(INFO, "SHA-256 hash of cert chain for "+new String(channel.URI.host)+" is "+ chain_hash); - - if(!this.myGetBoolPref("use_whitelist")) { - this.log(WARN, "Not using whitelist to filter cert chains."); - } - else if (this.isChainWhitelisted(chain_hash)) { - this.log(INFO, "This cert chain is whitelisted. Not submitting."); - return; - } - else { - this.log(INFO, "Cert chain is NOT whitelisted. Proceeding with submission."); - } - - if (channel.URI.port == -1) { - this.submitChainArray(chainArray, fps, new String(channel.URI.host), channel, host_ip, warning, false); - } else { - this.submitChainArray(chainArray, fps, channel.URI.host+":"+channel.URI.port, channel, host_ip, warning, false); - } - }, - - observatoryActive: function(channel) { - - if (!this.myGetBoolPref("enabled")) - return false; - - if (this.torbutton_installed && this.proxy_test_successful) { - // Allow Tor users to choose if they want to submit - // during tor and/or non-tor - if (this.myGetBoolPref("submit_during_tor") && - this.prefs.getBoolPref("extensions.torbutton.tor_enabled")) - return true; - - if (this.myGetBoolPref("submit_during_nontor") && - !this.prefs.getBoolPref("extensions.torbutton.tor_enabled")) - return true; - - return false; - } - - if (this.proxy_test_successful) { - return true; - } else if (this.myGetBoolPref("use_custom_proxy")) { - // no torbutton; the custom proxy is probably the user opting to - // submit certs without strong anonymisation. Because the - // anonymisation is weak, we avoid submitting during private browsing - // mode. - var pbm = this.inPrivateBrowsingMode(channel); - this.log(DBUG, "Private browsing mode: " + pbm); - return !pbm; - } - }, - - inPrivateBrowsingMode: function(channel) { - // In classic firefox fashion, there are multiple versions of this API - // https://developer.mozilla.org/EN/docs/Supporting_per-window_private_browsing - try { - // Firefox 20+, this state is per-window; - // should raise an exception on FF < 20 - CU.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); - if (!(channel instanceof CI.nsIHttpChannel)) { - this.log(NOTE, "observatoryActive() without a channel"); - // This is a windowless request. We cannot tell if private browsing - // applies. Conservatively, if we have ever seen PBM, it might be - // active now - return this.everSeenPrivateBrowsing; - } - var win = this.HTTPSEverywhere.getWindowForChannel(channel); - if (!win) return this.everSeenPrivateBrowsing; // windowless request - - if (PrivateBrowsingUtils.isWindowPrivate(win)) { - this.everSeenPrivateBrowsing = true; - return true; - } - } catch (e) { - // Firefox < 20, this state is global - try { - var pbs = CC["@mozilla.org/privatebrowsing;1"].getService(CI.nsIPrivateBrowsingService); - if (pbs.privateBrowsingEnabled) { - this.everSeenPrivateBrowsing = true; - return true; - } - } catch (e) { /* seamonkey or very old firefox */ } - } - return false; - }, - - myGetBoolPref: function(prefstring) { - // syntactic sugar - return this.prefs.getBoolPref ("extensions.https_everywhere._observatory." + prefstring); - }, - - isChainWhitelisted: function(chainhash) { - if (X509ChainWhitelist == null) { - this.log(WARN, "Could not find whitelist of popular certificate chains, so ignoring whitelist"); - return false; - } - if (X509ChainWhitelist[chainhash] != null) { - return true; - } - return false; - }, - - findRootInChain: function(certArray) { - // Return the position in the chain Array of the/a root CA - var rootidx = -1; - var nextInChain = certArray[0].issuer; - for (var i = 0; i < certArray.length; i++) { - // Find the next cert in the valid chain - if (certArray[i].equals(nextInChain)) { - if (certArray[i].issuerName == certArray[i].subjectName) { - // All X509 root certs are self-signed - this.log(INFO, "Got root cert at position: "+i); - rootidx = i; - break; - } else { - // This is an intermediate CA cert; keep looking for the root - nextInChain = certArray[i].issuer; - } - } - } - return rootidx; - }, - - processConvergenceChain: function(chain) { - // Make sure the chain we're working with is sane, even if Convergence is - // present. - - // Convergence currently performs MITMs against the Firefox in order to - // get around https://bugzilla.mozilla.org/show_bug.cgi?id=644640. The - // end-entity cert produced by Convergence contains a copy of the real - // end-entity cert inside an X509v3 extension. We extract this and send - // it rather than the Convergence certs. - var convergence = Components.classes['@thoughtcrime.org/convergence;1']; - if (!convergence) return null; - convergence = convergence.getService().wrappedJSObject; - if (!convergence || !convergence.enabled) return null; - - this.log(INFO, "Convergence uses its own internal root certs; not submitting those"); - - //this.log(WARN, convergence.certificateStatus.getVerificiationStatus(chain.certArray[0])); - try { - var certInfo = this.extractRealLeafFromConveregenceLeaf(chain.certArray[0]); - var b64Cert = certInfo["certificate"]; - var certDB = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB); - chain.leaf = certDB.constructX509FromBase64(b64Cert); - chain.certArray = [chain.leaf]; - chain.fps = [this.ourFingerprint(chain.leaf)]; - } catch (e) { - this.log(WARN, "Failed to extract leaf cert from Convergence cert " + e); - chain.certArray = chain.certArray.slice(0,1); - chain.fps = chain.fps.slice(0,1); - } - - }, - - extractRealLeafFromConveregenceLeaf: function(certificate) { - // Copied from Convergence's CertificateStatus.getVerificiationStatus - var len = {}; - var derEncoding = certificate.getRawDER(len); - - var derItem = NSS.types.SECItem(); - derItem.data = NSS.lib.ubuffer(derEncoding); - derItem.len = len.value; - - var completeCertificate = NSS.lib.CERT_DecodeDERCertificate(derItem.address(), 1, null); - - var extItem = NSS.types.SECItem(); - var status = NSS.lib.CERT_FindCertExtension(completeCertificate, - NSS.lib.SEC_OID_NS_CERT_EXT_COMMENT, - extItem.address()); - if (status != -1) { - var encoded = ''; - var asArray = ctypes.cast(extItem.data, ctypes.ArrayType(ctypes.unsigned_char, extItem.len).ptr).contents; - var marker = false; - - for (var i=0;i<asArray.length;i++) { - if (marker) { - encoded += String.fromCharCode(asArray[i]); - } else if (asArray[i] == 0x00) { - marker = true; - } - } - - return JSON.parse(encoded); - } - }, - - shouldSubmit: function(chain, domain) { - // Return true if we should submit this chain to the SSL Observatory - var rootidx = this.findRootInChain(chain.certArray); - var ss = false; // ss: self-signed - - if (chain.leaf.issuerName == chain.leaf.subjectName) - ss = true; - - if (!this.myGetBoolPref("self_signed") && ss) { - this.log(INFO, "Not submitting self-signed cert for " + domain); - return false; - } - - if (!ss && !this.myGetBoolPref("alt_roots")) { - if (rootidx == -1) { - // A cert with an unknown/absent Issuer. Out of caution, don't submit these - this.log(INFO, "Cert for " + domain + " issued by unknown CA " + - chain.leaf.issuerName + " (not submitting due to settings)"); - return false; - } else if (!(chain.fps[rootidx] in this.public_roots)) { - // A cert with a known but non-public Issuer - this.log(INFO, "Got a private root cert. Ignoring domain " - +domain+" with root "+chain.fps[rootidx]); - return false; - } - } - - if (chain.fps[0] in this.already_submitted) { - this.log(INFO, "Already submitted cert for "+domain+". Ignoring"); - return false; - } - return true; - }, - - submitChainArray: function(certArray, fps, domain, channel, host_ip, warning, resubmitting) { - var base64Certs = []; - // Put all this chain data in one object so that it can be modified by - // subroutines if required - var c = {}; c.certArray = certArray; c.fps = fps; c.leaf = certArray[0]; - this.processConvergenceChain(c); - if (!this.shouldSubmit(c,domain)) return; - - // only try to submit now if there aren't too many outstanding requests - if (this.current_outstanding_requests > MAX_OUTSTANDING) { - this.log(WARN, "Too many outstanding requests ("+this.current_outstanding_requests+"), not submitting"); - - // if there are too many current requests but not too many - // delayed/pending ones, then delay this one - if (Object.keys(this.delayed_submissions).length < MAX_DELAYED) - if (!(c.fps[0] in this.delayed_submissions)) { - this.log(WARN, "Planning to retry submission..."); - let retry = function() { this.submitChainArray(certArray, fps, domain, channel, host_ip, warning, true); }; - this.delayed_submissions[c.fps[0]] = retry; - } - return; - } - - for (var i = 0; i < c.certArray.length; i++) { - var len = new Object(); - var derData = c.certArray[i].getRawDER(len); - let result = ""; - for (let j = 0, dataLength = derData.length; j < dataLength; ++j) - result += String.fromCharCode(derData[j]); - base64Certs.push(btoa(result)); - } - - var reqParams = []; - reqParams.push("domain="+domain); - reqParams.push("server_ip="+host_ip); - if (this.myGetBoolPref("testing")) { - reqParams.push("testing=1"); - // The server can compute these, but they're a nice test suite item! - reqParams.push("fplist="+this.compatJSON.encode(c.fps)); - } - reqParams.push("certlist="+this.compatJSON.encode(base64Certs)); - - if (resubmitting) { - reqParams.push("client_asn="+ASN_UNKNOWABLE); - } else { - reqParams.push("client_asn="+this.client_asn); - } - - if (this.myGetBoolPref("priv_dns")) { - reqParams.push("private_opt_in=1"); - } else { - reqParams.push("private_opt_in=0"); - } - - if (warning) { - reqParams.push("browser_warning=1"); - } else { - reqParams.push("browser_warning=0"); - } - - var params = reqParams.join("&") + "&padding=0"; - var tot_len = BASE_REQ_SIZE; - - this.log(INFO, "Submitting cert for "+domain); - this.log(DBUG, "submit_cert params: "+params); - - // Pad to exp scale. This is done because the distribution of cert sizes - // is almost certainly pareto, and definitely not uniform. - for (tot_len = BASE_REQ_SIZE; tot_len < params.length; tot_len*=2); - - while (params.length != tot_len) { - params += "0"; - } - - var that = this; // We have neither SSLObservatory nor this in scope in the lambda - - var win = channel ? this.HTTPSEverywhere.getWindowForChannel(channel) : null; - var req = this.buildRequest(params); - req.timeout = TIMEOUT; - - req.onreadystatechange = function(evt) { - if (req.readyState == 4) { - // pop off one outstanding request - that.current_outstanding_requests -= 1; - that.log(DBUG, "Popping one off of outstanding requests, current num is: "+that.current_outstanding_requests); - - if (req.status == 200) { - that.log(INFO, "Successful cert submission"); - if (!that.prefs.getBoolPref("extensions.https_everywhere._observatory.cache_submitted")) - if (c.fps[0] in that.already_submitted) - delete that.already_submitted[c.fps[0]]; - - // Retry up to two previously failed submissions - let n = 0; - for (let fp in that.delayed_submissions) { - that.log(WARN, "Retrying a submission..."); - that.delayed_submissions[fp](); - delete that.delayed_submissions[fp]; - if (++n >= 2) break; - } - } else if (req.status == 403) { - that.log(WARN, "The SSL Observatory has issued a warning about this certificate for " + domain); - try { - var warningObj = JSON.parse(req.responseText); - if (win) that.warnUser(warningObj, win, c.certArray[0]); - } catch(e) { - that.log(WARN, "Failed to process SSL Observatory cert warnings :( " + e); - that.log(WARN, req.responseText); - } - } else { - // Submission failed - if (c.fps[0] in that.already_submitted) - delete that.already_submitted[c.fps[0]]; - try { - that.log(WARN, "Cert submission failure "+req.status+": "+req.responseText); - } catch(e) { - that.log(WARN, "Cert submission failure and exception: "+e); - } - // If we don't have too many delayed submissions, and this isn't - // (somehow?) one of them, then plan to retry this submission later - if (Object.keys(that.delayed_submissions).length < MAX_DELAYED) - if (!(c.fps[0] in that.delayed_submissions)) { - that.log(WARN, "Planning to retry submission..."); - let retry = function() { that.submitChainArray(certArray, fps, domain, channel, host_ip, warning, true); }; - that.delayed_submissions[c.fps[0]] = retry; - } - - } - } - }; - - // Cache this here to prevent multiple submissions for all the content elements. - that.already_submitted[c.fps[0]] = true; - - // add one to current outstanding request number - that.current_outstanding_requests += 1; - that.log(DBUG, "Adding outstanding request, current num is: "+that.current_outstanding_requests); - req.send(params); - }, - - buildRequest: function(params) { - var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(Ci.nsIXMLHttpRequest); - - // We do this again in case the user altered about:config - this.findSubmissionTarget(); - req.open("POST", this.submit_url+this.csrf_nonce, true); - - // Send the proper header information along with the request - // Do not set gzip header.. It will ruin the padding - req.setRequestHeader("X-Privacy-Info", "EFF SSL Observatory: https://eff.org/r.22c"); - req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - req.setRequestHeader("Content-length", params.length); - req.setRequestHeader("Connection", "close"); - // Need to clear useragent and other headers.. - req.setRequestHeader("User-Agent", ""); - req.setRequestHeader("Accept", ""); - req.setRequestHeader("Accept-Language", ""); - req.setRequestHeader("Accept-Encoding", ""); - req.setRequestHeader("Accept-Charset", ""); - return req; - }, - - warnUser: function(warningObj, win, cert) { - var aWin = CC['@mozilla.org/appshell/window-mediator;1'] - .getService(CI.nsIWindowMediator) - .getMostRecentWindow('navigator:browser'); - aWin.openDialog("chrome://https-everywhere/content/observatory-warning.xul", - "","chrome,centerscreen", warningObj, win, cert); - }, - - registerProxyTestNotification: function(callback_fcn) { - if (this.proxy_test_successful != null) { - /* Proxy test already ran. Callback immediately. */ - callback_fcn(this.proxy_test_successful); - this.proxy_test_callback = null; - return; - } else { - this.proxy_test_callback = callback_fcn; - } - }, - - testProxySettings: function() { - /* Plan: - * 1. Launch an async XMLHttpRequest to check.tp.o with magic nonce - * 3. Filter the nonce in protocolProxyFilter to use proxy settings - * 4. Async result function sets test result status based on check.tp.o - */ - this.proxy_test_successful = null; - - try { - var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(Components.interfaces.nsIXMLHttpRequest); - var url = this.cto_url + this.csrf_nonce; - req.open('GET', url, true); - req.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE; - req.overrideMimeType("text/xml"); - var that = this; // Scope gymnastics for async callback - req.onreadystatechange = function (oEvent) { - if (req.readyState === 4) { - that.proxy_test_successful = false; - - if(req.status == 200) { - if(!req.responseXML) { - that.log(INFO, "Tor check failed: No XML returned by check service."); - that.proxyTestFinished(); - return; - } - - var result = req.responseXML.getElementById('TorCheckResult'); - if(result===null) { - that.log(INFO, "Tor check failed: Non-XML returned by check service."); - } else if(typeof(result.target) == 'undefined' - || result.target === null) { - that.log(INFO, "Tor check failed: Busted XML returned by check service."); - } else if(result.target === "success") { - that.log(INFO, "Tor check succeeded."); - that.proxy_test_successful = true; - } else { - that.log(INFO, "Tor check failed: "+result.target); - } - } else { - that.log(INFO, "Tor check failed: HTTP Error "+req.status); - } - - /* Notify the UI of the test result */ - if (that.proxy_test_callback) { - that.proxy_test_callback(that.proxy_test_successful); - that.proxy_test_callback = null; - } - that.proxyTestFinished(); - } - }; - req.send(null); - } catch(e) { - this.proxy_test_successful = false; - if(e.result == 0x80004005) { // NS_ERROR_FAILURE - this.log(INFO, "Tor check failed: Proxy not running."); - } - this.log(INFO, "Tor check failed: Internal error: "+e); - if (this.proxy_test_callback) { - this.proxy_test_callback(this.proxy_test_successful); - this.proxy_test_callback = null; - } - that.proxyTestFinished(); - } - }, - - proxyTestFinished: function() { - if (!this.myGetBoolPref("enabled")) { - this.pps.unregisterFilter(this); - } - }, - - getProxySettings: function(testingForTor) { - // This may be called either for an Observatory submission, or during a test to see if Tor is - // present. The testingForTor argument is true in the latter case. - var proxy_settings = ["direct", "", 0]; - this.log(INFO,"in getProxySettings()"); - var custom_proxy_type = this.prefs.getCharPref("extensions.https_everywhere._observatory.proxy_type"); - if (this.torbutton_installed && this.myGetBoolPref("use_tor_proxy")) { - this.log(INFO,"CASE: use_tor_proxy"); - // extract torbutton proxy settings - proxy_settings[0] = "http"; - proxy_settings[1] = this.prefs.getCharPref("extensions.torbutton.https_proxy"); - proxy_settings[2] = this.prefs.getIntPref("extensions.torbutton.https_port"); - - if (proxy_settings[2] == 0) { - proxy_settings[0] = "socks"; - proxy_settings[1] = this.prefs.getCharPref("extensions.torbutton.socks_host"); - proxy_settings[2] = this.prefs.getIntPref("extensions.torbutton.socks_port"); - } - /* Regarding the test below: - * - * custom_proxy_type == "direct" is indicative of the user having selected "submit certs even if - * Tor is not available", rather than true custom Tor proxy settings. So in that case, there's - * not much point probing to see if the direct proxy is actually a Tor connection, and - * localhost:9050 is a better bet. People whose networks send all traffc through Tor can just - * tell the Observatory to submit certs without Tor. - */ - } else if (this.myGetBoolPref("use_custom_proxy") && !(testingForTor && custom_proxy_type == "direct")) { - this.log(INFO,"CASE: use_custom_proxy"); - proxy_settings[0] = custom_proxy_type; - proxy_settings[1] = this.prefs.getCharPref("extensions.https_everywhere._observatory.proxy_host"); - proxy_settings[2] = this.prefs.getIntPref("extensions.https_everywhere._observatory.proxy_port"); - } else { - /* Take a guess at default tor proxy settings */ - this.log(INFO,"CASE: try localhost:9050"); - proxy_settings[0] = "socks"; - proxy_settings[1] = "localhost"; - proxy_settings[2] = 9050; - } - this.log(INFO, "Using proxy: " + proxy_settings); - return proxy_settings; - }, - - applyFilter: function(aProxyService, inURI, aProxy) { - - try { - if (inURI instanceof Ci.nsIURI) { - var aURI = inURI.QueryInterface(Ci.nsIURI); - if (!aURI) this.log(WARN, "Failed to QI to nsIURI!"); - } else { - this.log(WARN, "applyFilter called without URI"); - } - } catch (e) { - this.log(WARN, "EXPLOSION: " + e); - } - - var isSubmission = this.submission_regexp.test(aURI.spec); - var testingForTor = this.cto_regexp.test(aURI.spec); - - if (isSubmission || testingForTor) { - if (aURI.path.search(this.csrf_nonce+"$") != -1) { - - this.log(INFO, "Got observatory url + nonce: "+aURI.spec); - var proxy_settings = null; - var proxy = null; - - // Send it through tor by creating an nsIProxy instance - // for the torbutton proxy settings. - try { - proxy_settings = this.getProxySettings(testingForTor); - proxy = this.pps.newProxyInfo(proxy_settings[0], proxy_settings[1], - proxy_settings[2], - Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST, - 0xFFFFFFFF, null); - } catch(e) { - this.log(WARN, "Error specifying proxy for observatory: "+e); - } - - this.log(INFO, "Specifying proxy: "+proxy); - - // TODO: Use new identity or socks u/p to ensure we get a unique - // tor circuit for this request - return proxy; - } - } - return aProxy; - }, - - // [optional] an array of categories to register this component in. - // Hack to cause us to get instantiate early - _xpcom_categories: [ { category: "profile-after-change" }, ], - - encString: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - encStringS: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', - - log: function(level, str) { - var econsole = CC["@mozilla.org/consoleservice;1"] - .getService(CI.nsIConsoleService); - try { - var threshold = this.prefs.getIntPref(LLVAR); - } catch (e) { - econsole.logStringMessage( "SSL Observatory: Failed to read about:config LogLevel"); - threshold = WARN; - } - if (level >= threshold) { - dump("SSL Observatory: "+str+"\n"); - econsole.logStringMessage("SSL Observatory: " +str); - } - } -}; - -/** -* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). -* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6). -*/ -if (XPCOMUtils.generateNSGetFactory) - var NSGetFactory = XPCOMUtils.generateNSGetFactory([SSLObservatory]); -else - var NSGetModule = XPCOMUtils.generateNSGetModule([SSLObservatory]); diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js deleted file mode 100644 index 205bf8d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js +++ /dev/null @@ -1,45 +0,0 @@ -pref("extensions.https_everywhere.LogLevel", 5); -pref("extensions.https_everywhere.globalEnabled",true); - -// this is the HTTPS Everywhere preferences version (for migrations) -pref("extensions.https_everywhere.prefs_version", 0); - -// this is a popup asking whether the user really meant to be on the dev branch -pref("extensions.https_everywhere.dev_popup_shown", false); - -// show ruleset tests in the menu -pref("extensions.https_everywhere.show_ruleset_tests", false); -// run a ruleset performance test at startup -pref("extensions.https_everywhere.performance_tests", false); - -// enable rulesets that trigger mixed content blocking -pref("extensions.https_everywhere.enable_mixed_rulesets", false); - - -// SSl Observatory preferences -pref("extensions.https_everywhere._observatory.enabled",false); - -// "testing" currently means send unecessary fingerprints and other test-suite -// type stuff -pref("extensions.https_everywhere._observatory.testing",false); - -pref("extensions.https_everywhere._observatory.server_host","observatory.eff.org"); -pref("extensions.https_everywhere._observatory.use_tor_proxy",true); -pref("extensions.https_everywhere._observatory.submit_during_tor",true); -pref("extensions.https_everywhere._observatory.submit_during_nontor",true); - -pref("extensions.https_everywhere._observatory.cache_submitted",true); - -pref("extensions.https_everywhere._observatory.use_custom_proxy",false); -pref("extensions.https_everywhere._observatory.popup_shown",true); -pref("extensions.https_everywhere.toolbar_hint_shown",true); -pref("extensions.https_everywhere._observatory.proxy_host",""); -pref("extensions.https_everywhere._observatory.proxy_port",0); -pref("extensions.https_everywhere._observatory.proxy_type","direct"); -pref("extensions.https_everywhere._observatory.use_tor_proxy",true); -pref("extensions.https_everywhere._observatory.alt_roots",false); -pref("extensions.https_everywhere._observatory.self_signed",true); -pref("extensions.https_everywhere._observatory.priv_dns",false); -pref("extensions.https_everywhere._observatory.send_asn",true); -pref("extensions.https_everywhere._observatory.use_whitelist",true); -pref("extensions.https_everywhere._observatory.clean_config",false); diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite Binary files differdeleted file mode 100644 index 6141547..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/install.rdf b/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/install.rdf deleted file mode 100644 index ddb6e14..0000000 --- a/helpers/DATA/firefox/gnu/extensions/https-everywhere@eff.org/install.rdf +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0"?> -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:name>HTTPS-Everywhere</em:name> - <em:creator>Mike Perry & Peter Eckersley</em:creator> - <em:aboutURL>chrome://https-everywhere/content/about.xul</em:aboutURL> - <em:id>https-everywhere@eff.org</em:id> - <em:description>Encrypt the Web! Automatically use HTTPS security on many sites.</em:description> - <em:version>3.5.1</em:version> - <em:homepageURL>https://www.eff.org/https-everywhere</em:homepageURL> - <em:optionsURL>chrome://https-everywhere/content/meta-preferences.xul</em:optionsURL> - <em:iconURL>chrome://https-everywhere/skin/https-everywhere.png</em:iconURL> - <em:updateURL>https://www.eff.org/files/https-everywhere-update-2048.rdf</em:updateURL> - <em:unpack>true</em:unpack> <!-- Required for Firefox 4 --> - <em:updateKey>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6MR8W/galdxnpGqBsYbqOzQb2eyW15YFjDDEMI0ZOzt8f504obNs920lDnpPD2/KqgsfjOgw2K7xWDJIj/18xUvWPk3LDkrnokNiRkA3KOx3W6fHycKL+zID7zy+xZYBuh2fLyQtWV1VGQ45iNRp9+Zo7rH86cdfgkdnWTlNSHyTLW9NbXvyv/E12bppPcEvgCTAQXgnDVJ0/sqmeiijn9tTFh03aM+R2V/21h8aTraAS24qiPCz6gkmYGC8yr6mglcnNoYbsLNYZ69zF1XHcXPduCPdPdfLlzVlKK1/U7hkA28eG3BIAMh6uJYBRJTpiGgaGdPd7YekUB8S6cy+CQIDAQAB</em:updateKey> - <!-- firefox --> - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>20</em:minVersion> - <em:maxVersion>32.*</em:maxVersion> - </Description> - </em:targetApplication> - <!-- Seamonkey --> - <em:targetApplication> - <Description> - <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> - <em:minVersion>2.17</em:minVersion> - <em:maxVersion>3.*</em:maxVersion> - </Description> - </em:targetApplication> - <!-- thunderbird --> - <em:targetApplication> - <Description> - <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> - <em:minVersion>17.0.5</em:minVersion> - <em:maxVersion>32</em:maxVersion> - </Description> - </em:targetApplication> - <!-- Conkeror --> - <em:targetApplication> - <Description> - <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id> - <em:minVersion>0.1</em:minVersion> - <em:maxVersion>99.*</em:maxVersion> - </Description> - </em:targetApplication> - </Description> -</RDF> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js deleted file mode 100644 index 840103a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js +++ /dev/null @@ -1,350 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// @see http://mxr.mozilla.org/mozilla-central/source/js/src/xpconnect/loader/mozJSComponentLoader.cpp - -'use strict'; - -// IMPORTANT: Avoid adding any initialization tasks here, if you need to do -// something before add-on is loaded consider addon/runner module instead! - -const { classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu, - results: Cr, manager: Cm } = Components; -const ioService = Cc['@mozilla.org/network/io-service;1']. - getService(Ci.nsIIOService); -const resourceHandler = ioService.getProtocolHandler('resource'). - QueryInterface(Ci.nsIResProtocolHandler); -const systemPrincipal = CC('@mozilla.org/systemprincipal;1', 'nsIPrincipal')(); -const scriptLoader = Cc['@mozilla.org/moz/jssubscript-loader;1']. - getService(Ci.mozIJSSubScriptLoader); -const prefService = Cc['@mozilla.org/preferences-service;1']. - getService(Ci.nsIPrefService). - QueryInterface(Ci.nsIPrefBranch); -const appInfo = Cc["@mozilla.org/xre/app-info;1"]. - getService(Ci.nsIXULAppInfo); -const vc = Cc["@mozilla.org/xpcom/version-comparator;1"]. - getService(Ci.nsIVersionComparator); - - -const REASON = [ 'unknown', 'startup', 'shutdown', 'enable', 'disable', - 'install', 'uninstall', 'upgrade', 'downgrade' ]; - -const bind = Function.call.bind(Function.bind); - -let loader = null; -let unload = null; -let cuddlefishSandbox = null; -let nukeTimer = null; - -let resourceDomains = []; -function setResourceSubstitution(domain, uri) { - resourceDomains.push(domain); - resourceHandler.setSubstitution(domain, uri); -} - -// Utility function that synchronously reads local resource from the given -// `uri` and returns content string. -function readURI(uri) { - let ioservice = Cc['@mozilla.org/network/io-service;1']. - getService(Ci.nsIIOService); - let channel = ioservice.newChannel(uri, 'UTF-8', null); - let stream = channel.open(); - - let cstream = Cc['@mozilla.org/intl/converter-input-stream;1']. - createInstance(Ci.nsIConverterInputStream); - cstream.init(stream, 'UTF-8', 0, 0); - - let str = {}; - let data = ''; - let read = 0; - do { - read = cstream.readString(0xffffffff, str); - data += str.value; - } while (read != 0); - - cstream.close(); - - return data; -} - -// We don't do anything on install & uninstall yet, but in a future -// we should allow add-ons to cleanup after uninstall. -function install(data, reason) {} -function uninstall(data, reason) {} - -function startup(data, reasonCode) { - try { - let reason = REASON[reasonCode]; - // URI for the root of the XPI file. - // 'jar:' URI if the addon is packed, 'file:' URI otherwise. - // (Used by l10n module in order to fetch `locale` folder) - let rootURI = data.resourceURI.spec; - - // TODO: Maybe we should perform read harness-options.json asynchronously, - // since we can't do anything until 'sessionstore-windows-restored' anyway. - let options = JSON.parse(readURI(rootURI + './harness-options.json')); - - let id = options.jetpackID; - let name = options.name; - - // Clean the metadata - options.metadata[name]['permissions'] = options.metadata[name]['permissions'] || {}; - - // freeze the permissionss - Object.freeze(options.metadata[name]['permissions']); - // freeze the metadata - Object.freeze(options.metadata[name]); - - // Register a new resource 'domain' for this addon which is mapping to - // XPI's `resources` folder. - // Generate the domain name by using jetpack ID, which is the extension ID - // by stripping common characters that doesn't work as a domain name: - let uuidRe = - /^\{([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\}$/; - - let domain = id. - toLowerCase(). - replace(/@/g, '-at-'). - replace(/\./g, '-dot-'). - replace(uuidRe, '$1'); - - let prefixURI = 'resource://' + domain + '/'; - let resourcesURI = ioService.newURI(rootURI + '/resources/', null, null); - setResourceSubstitution(domain, resourcesURI); - - // Create path to URLs mapping supported by loader. - let paths = { - // Relative modules resolve to add-on package lib - './': prefixURI + name + '/lib/', - './tests/': prefixURI + name + '/tests/', - '': 'resource://gre/modules/commonjs/' - }; - - // Maps addon lib and tests ressource folders for each package - paths = Object.keys(options.metadata).reduce(function(result, name) { - result[name + '/'] = prefixURI + name + '/lib/' - result[name + '/tests/'] = prefixURI + name + '/tests/' - return result; - }, paths); - - // We need to map tests folder when we run sdk tests whose package name - // is stripped - if (name == 'addon-sdk') - paths['tests/'] = prefixURI + name + '/tests/'; - - let useBundledSDK = options['force-use-bundled-sdk']; - if (!useBundledSDK) { - try { - useBundledSDK = prefService.getBoolPref("extensions.addon-sdk.useBundledSDK"); - } - catch (e) { - // Pref doesn't exist, allow using Firefox shipped SDK - } - } - - // Starting with Firefox 21.0a1, we start using modules shipped into firefox - // Still allow using modules from the xpi if the manifest tell us to do so. - // And only try to look for sdk modules in xpi if the xpi actually ship them - if (options['is-sdk-bundled'] && - (vc.compare(appInfo.version, '21.0a1') < 0 || useBundledSDK)) { - // Maps sdk module folders to their resource folder - paths[''] = prefixURI + 'addon-sdk/lib/'; - // test.js is usually found in root commonjs or SDK_ROOT/lib/ folder, - // so that it isn't shipped in the xpi. Keep a copy of it in sdk/ folder - // until we no longer support SDK modules in XPI: - paths['test'] = prefixURI + 'addon-sdk/lib/sdk/test.js'; - } - - // Retrieve list of module folder overloads based on preferences in order to - // eventually used a local modules instead of files shipped into Firefox. - let branch = prefService.getBranch('extensions.modules.' + id + '.path'); - paths = branch.getChildList('', {}).reduce(function (result, name) { - // Allows overloading of any sub folder by replacing . by / in pref name - let path = name.substr(1).split('.').join('/'); - // Only accept overloading folder by ensuring always ending with `/` - if (path) path += '/'; - let fileURI = branch.getCharPref(name); - - // On mobile, file URI has to end with a `/` otherwise, setSubstitution - // takes the parent folder instead. - if (fileURI[fileURI.length-1] !== '/') - fileURI += '/'; - - // Maps the given file:// URI to a resource:// in order to avoid various - // failure that happens with file:// URI and be close to production env - let resourcesURI = ioService.newURI(fileURI, null, null); - let resName = 'extensions.modules.' + domain + '.commonjs.path' + name; - setResourceSubstitution(resName, resourcesURI); - - result[path] = 'resource://' + resName + '/'; - return result; - }, paths); - - // Make version 2 of the manifest - let manifest = options.manifest; - - // Import `cuddlefish.js` module using a Sandbox and bootstrap loader. - let cuddlefishPath = 'loader/cuddlefish.js'; - let cuddlefishURI = 'resource://gre/modules/commonjs/sdk/' + cuddlefishPath; - if (paths['sdk/']) { // sdk folder has been overloaded - // (from pref, or cuddlefish is still in the xpi) - cuddlefishURI = paths['sdk/'] + cuddlefishPath; - } - else if (paths['']) { // root modules folder has been overloaded - cuddlefishURI = paths[''] + 'sdk/' + cuddlefishPath; - } - - cuddlefishSandbox = loadSandbox(cuddlefishURI); - let cuddlefish = cuddlefishSandbox.exports; - - // Normalize `options.mainPath` so that it looks like one that will come - // in a new version of linker. - let main = options.mainPath; - - unload = cuddlefish.unload; - loader = cuddlefish.Loader({ - paths: paths, - // modules manifest. - manifest: manifest, - - // Add-on ID used by different APIs as a unique identifier. - id: id, - // Add-on name. - name: name, - // Add-on version. - version: options.metadata[name].version, - // Add-on package descriptor. - metadata: options.metadata[name], - // Add-on load reason. - loadReason: reason, - - prefixURI: prefixURI, - // Add-on URI. - rootURI: rootURI, - // options used by system module. - // File to write 'OK' or 'FAIL' (exit code emulation). - resultFile: options.resultFile, - // Arguments passed as --static-args - staticArgs: options.staticArgs, - // Add-on preferences branch name - preferencesBranch: options.preferencesBranch, - - // Arguments related to test runner. - modules: { - '@test/options': { - allTestModules: options.allTestModules, - iterations: options.iterations, - filter: options.filter, - profileMemory: options.profileMemory, - stopOnError: options.stopOnError, - verbose: options.verbose, - parseable: options.parseable, - checkMemory: options.check_memory, - } - } - }); - - let module = cuddlefish.Module('sdk/loader/cuddlefish', cuddlefishURI); - let require = cuddlefish.Require(loader, module); - - require('sdk/addon/runner').startup(reason, { - loader: loader, - main: main, - prefsURI: rootURI + 'defaults/preferences/prefs.js' - }); - } catch (error) { - dump('Bootstrap error: ' + - (error.message ? error.message : String(error)) + '\n' + - (error.stack || error.fileName + ': ' + error.lineNumber) + '\n'); - throw error; - } -}; - -function loadSandbox(uri) { - let proto = { - sandboxPrototype: { - loadSandbox: loadSandbox, - ChromeWorker: ChromeWorker - } - }; - let sandbox = Cu.Sandbox(systemPrincipal, proto); - // Create a fake commonjs environnement just to enable loading loader.js - // correctly - sandbox.exports = {}; - sandbox.module = { uri: uri, exports: sandbox.exports }; - sandbox.require = function (id) { - if (id !== "chrome") - throw new Error("Bootstrap sandbox `require` method isn't implemented."); - - return Object.freeze({ Cc: Cc, Ci: Ci, Cu: Cu, Cr: Cr, Cm: Cm, - CC: bind(CC, Components), components: Components, - ChromeWorker: ChromeWorker }); - }; - scriptLoader.loadSubScript(uri, sandbox, 'UTF-8'); - return sandbox; -} - -function unloadSandbox(sandbox) { - if ("nukeSandbox" in Cu) - Cu.nukeSandbox(sandbox); -} - -function setTimeout(callback, delay) { - let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - timer.initWithCallback({ notify: callback }, delay, - Ci.nsITimer.TYPE_ONE_SHOT); - return timer; -} - -function shutdown(data, reasonCode) { - let reason = REASON[reasonCode]; - if (loader) { - unload(loader, reason); - unload = null; - - // Don't waste time cleaning up if the application is shutting down - if (reason != "shutdown") { - // Avoid leaking all modules when something goes wrong with one particular - // module. Do not clean it up immediatly in order to allow executing some - // actions on addon disabling. - // We need to keep a reference to the timer, otherwise it is collected - // and won't ever fire. - nukeTimer = setTimeout(nukeModules, 1000); - - // Bug 944951 - bootstrap.js must remove the added resource: URIs on unload - resourceDomains.forEach(domain => { - resourceHandler.setSubstitution(domain, null); - }) - } - } -}; - -function nukeModules() { - nukeTimer = null; - // module objects store `exports` which comes from sandboxes - // We should avoid keeping link to these object to avoid leaking sandboxes - for (let key in loader.modules) { - delete loader.modules[key]; - } - // Direct links to sandboxes should be removed too - for (let key in loader.sandboxes) { - let sandbox = loader.sandboxes[key]; - delete loader.sandboxes[key]; - // Bug 775067: From FF17 we can kill all CCW from a given sandbox - unloadSandbox(sandbox); - } - loader = null; - - // both `toolkit/loader` and `system/xul-app` are loaded as JSM's via - // `cuddlefish.js`, and needs to be unloaded to avoid memory leaks, when - // the addon is unload. - - unloadSandbox(cuddlefishSandbox.loaderSandbox); - unloadSandbox(cuddlefishSandbox.xulappSandbox); - - // Bug 764840: We need to unload cuddlefish otherwise it will stay alive - // and keep a reference to this compartment. - unloadSandbox(cuddlefishSandbox); - cuddlefishSandbox = null; -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/defaults/preferences/prefs.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/defaults/preferences/prefs.js deleted file mode 100644 index d5b39bf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/defaults/preferences/prefs.js +++ /dev/null @@ -1,3 +0,0 @@ -pref("extensions.jid1-KtlZuoiikVfFew@jetpack.whitelist", ""); -pref("extensions.jid1-KtlZuoiikVfFew@jetpack.complaint_tab", true); -pref("extensions.jid1-KtlZuoiikVfFew@jetpack.display_notifications", false); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/harness-options.json b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/harness-options.json deleted file mode 100644 index abb45db..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/harness-options.json +++ /dev/null @@ -1,737 +0,0 @@ -{ - "abort_on_missing": false, - "check_memory": false, - "enable_e10s": false, - "is-sdk-bundled": false, - "jetpackID": "jid1-KtlZuoiikVfFew@jetpack", - "loader": "addon-sdk/lib/sdk/loader/cuddlefish.js", - "main": "lib/main", - "mainPath": "librejs/main", - "manifest": { - "addon-tab/addon-tab": { - "docsSHA256": null, - "jsSHA256": "8b277dc27d85a72bfba1becfe6f57dceb5c9c717e5bc52a3bea936ec957a6893", - "moduleName": "addon-tab", - "packageName": "addon-tab", - "requirements": { - "sdk/core/namespace": "sdk/core/namespace", - "sdk/deprecated/window-utils": "sdk/deprecated/window-utils", - "sdk/lang/functional": "sdk/lang/functional", - "sdk/self": "sdk/self", - "sdk/tabs": "sdk/tabs", - "sdk/tabs/utils": "sdk/tabs/utils", - "sdk/util/array": "sdk/util/array", - "sdk/window/utils": "sdk/window/utils" - }, - "sectionName": "lib" - }, - "librejs/addon_management/install_uninstall": { - "docsSHA256": null, - "jsSHA256": "6a16abeaed2a4983ce58d1895166abf3d93726cd6ca9e1506bfc6910c9840414", - "moduleName": "addon_management/install_uninstall", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "http_observer/caching": "librejs/http_observer/caching", - "http_observer/http_request_observer": "librejs/http_observer/http_request_observer", - "narcissus_parser/narcissus_worker": "librejs/narcissus_parser/narcissus_worker", - "sdk/tabs": "sdk/tabs", - "settings/storage": "librejs/settings/storage" - }, - "sectionName": "lib" - }, - "librejs/addon_management/prefchange": { - "docsSHA256": null, - "jsSHA256": "692562f0c44ad53551cbf60d7c7f6ff066455c114f174d1ce875e287d5c1b1d0", - "moduleName": "addon_management/prefchange", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/simple-prefs": "sdk/simple-prefs" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/bug_fix": { - "docsSHA256": null, - "jsSHA256": "0a5bf0ff6dcb522bd39dcc60d37d0b0eb3b897487ff41656521c7594d0b6a018", - "moduleName": "html_script_finder/bug_fix", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler": { - "docsSHA256": null, - "jsSHA256": "556cd3e5df38a622958fa4b7710f59f2edc896407e0e3d2b21b36bfa71d869f4", - "moduleName": "html_script_finder/dom_handler", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange", - "chrome": "chrome", - "html_script_finder/dom_handler/attributes": "librejs/html_script_finder/dom_handler/attributes", - "html_script_finder/dom_handler/dom_checker": "librejs/html_script_finder/dom_handler/dom_checker", - "html_script_finder/dom_handler/dom_gatherer": "librejs/html_script_finder/dom_handler/dom_gatherer", - "html_script_finder/dom_handler/script_object": "librejs/html_script_finder/dom_handler/script_object", - "html_script_finder/dom_handler/script_properties": "librejs/html_script_finder/dom_handler/script_properties", - "html_script_finder/web_labels/js_web_labels": "librejs/html_script_finder/web_labels/js_web_labels", - "http_observer/allowed_referrers": "librejs/http_observer/allowed_referrers", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/js_checker": "librejs/js_checker/js_checker", - "js_checker/privacy_checker": "librejs/js_checker/privacy_checker", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/attributes": { - "docsSHA256": null, - "jsSHA256": "6a7af82d8e90742721060a9eba70f49562d099570b5e7ea6cc4f4d0634a0a78a", - "moduleName": "html_script_finder/dom_handler/attributes", - "packageName": "librejs", - "requirements": { - "html_script_finder/dom_handler/script_object": "librejs/html_script_finder/dom_handler/script_object", - "html_script_finder/dom_handler/script_properties": "librejs/html_script_finder/dom_handler/script_properties" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/dom_checker": { - "docsSHA256": null, - "jsSHA256": "efecce628d06b18b820da370bf5e9408b9d9e33ab6cc4b82c8f2063e95701489", - "moduleName": "html_script_finder/dom_handler/dom_checker", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "html_script_finder/dom_handler/request": "librejs/html_script_finder/dom_handler/request", - "html_script_finder/dom_handler/script_properties": "librejs/html_script_finder/dom_handler/script_properties", - "html_script_finder/url_seen_tester": "librejs/html_script_finder/url_seen_tester", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/js_checker": "librejs/js_checker/js_checker", - "js_checker/privacy_checker": "librejs/js_checker/privacy_checker", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/timers": "sdk/timers", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/dom_gatherer": { - "docsSHA256": null, - "jsSHA256": "d90a852c6abfd418085b243e18795471c695590cad7829490d0e079a2f550b6d", - "moduleName": "html_script_finder/dom_handler/dom_gatherer", - "packageName": "librejs", - "requirements": { - "html_script_finder/bug_fix": "librejs/html_script_finder/bug_fix", - "html_script_finder/dom_handler/attributes": "librejs/html_script_finder/dom_handler/attributes", - "html_script_finder/dom_handler/script_object": "librejs/html_script_finder/dom_handler/script_object", - "html_script_finder/dom_handler/script_properties": "librejs/html_script_finder/dom_handler/script_properties", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/privacy_checker": "librejs/js_checker/privacy_checker", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/request": { - "docsSHA256": null, - "jsSHA256": "af49bc14e9ee3d561a698a4dc149e6436368caba47504620ece88e9b43446d78", - "moduleName": "html_script_finder/dom_handler/request", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "html_script_finder/url_seen_tester": "librejs/html_script_finder/url_seen_tester", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/timers": "sdk/timers", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/script_object": { - "docsSHA256": null, - "jsSHA256": "947f425475661a1f7572bb58a49763dfb6bb628e2dfaa34aad626a63ebe04c08", - "moduleName": "html_script_finder/dom_handler/script_object", - "packageName": "librejs", - "requirements": { - "script_entries/accepted_scripts": "librejs/script_entries/accepted_scripts", - "script_entries/dryrun_scripts": "librejs/script_entries/dryrun_scripts", - "script_entries/removed_scripts": "librejs/script_entries/removed_scripts" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/dom_handler/script_properties": { - "docsSHA256": null, - "jsSHA256": "2faf007239a9f519ce4d563e462a3940cb5176ddcc3c0baf9ab13130d6050b37", - "moduleName": "html_script_finder/dom_handler/script_properties", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/html_script_finder/html_parser": { - "docsSHA256": null, - "jsSHA256": "00b174d23d15dd7d7833f35fe9c1bd56a1142f3b6066f8160123be2fc707adf5", - "moduleName": "html_script_finder/html_parser", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "html_script_finder/dom_handler": "librejs/html_script_finder/dom_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/url_seen_tester": { - "docsSHA256": null, - "jsSHA256": "80b2a59407826b389b6eaa15409ecdd6ebe6039de0a19933858f0a73f3de6286", - "moduleName": "html_script_finder/url_seen_tester", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/html_script_finder/web_labels/find_js_labels": { - "docsSHA256": null, - "jsSHA256": "503889ed95b612c82413ebd1ac690ee9a8621b60f5125a0419f10c68d0a92027", - "moduleName": "html_script_finder/web_labels/find_js_labels", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/html_script_finder/web_labels/js_web_labels": { - "docsSHA256": null, - "jsSHA256": "3440132dcaecc725d0ab81691c7830decb8408a56a6d525b9ab13cb413359eec", - "moduleName": "html_script_finder/web_labels/js_web_labels", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "html_script_finder/web_labels/find_js_labels": "librejs/html_script_finder/web_labels/find_js_labels", - "html_script_finder/web_labels/script_hash_worker": "librejs/html_script_finder/web_labels/script_hash_worker", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/license_definitions": "librejs/js_checker/license_definitions", - "sdk/self": "sdk/self", - "sdk/timers": "sdk/timers", - "sdk/url": "sdk/url", - "ui/notification": "librejs/ui/notification", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/html_script_finder/web_labels/script_hash_worker": { - "docsSHA256": null, - "jsSHA256": "396431bed43197096e21a086b65e39edaa05c4c07d29ae9533ef95654a4f9add", - "moduleName": "html_script_finder/web_labels/script_hash_worker", - "packageName": "librejs", - "requirements": { - "html_script_finder/dom_handler/dom_checker": "librejs/html_script_finder/dom_handler/dom_checker", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/timers": "sdk/timers" - }, - "sectionName": "lib" - }, - "librejs/http_observer/allowed_referrers": { - "docsSHA256": null, - "jsSHA256": "6792a243c6413f20b719a5526eac3be4b75d48888922d978b0d2dfa0b0449ea3", - "moduleName": "http_observer/allowed_referrers", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange" - }, - "sectionName": "lib" - }, - "librejs/http_observer/caching": { - "docsSHA256": null, - "jsSHA256": "2e1d459f007aaa88133d97af8d994c23030d4b5057450772cb482dea49c38c6e", - "moduleName": "http_observer/caching", - "packageName": "librejs", - "requirements": { - "chrome": "chrome" - }, - "sectionName": "lib" - }, - "librejs/http_observer/http_request_observer": { - "docsSHA256": null, - "jsSHA256": "d7dcb48aa57f7970401a8a5385130eb74fb71d981eb44b3387ef5decd84a9fe2", - "moduleName": "http_observer/http_request_observer", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "html_script_finder/url_seen_tester": "librejs/html_script_finder/url_seen_tester", - "http_observer/stream_loader": "librejs/http_observer/stream_loader" - }, - "sectionName": "lib" - }, - "librejs/http_observer/process_response": { - "docsSHA256": null, - "jsSHA256": "2e8a93d70ba811a090bc2876f958818d87c0b79ac00d3122acfe36717d933209", - "moduleName": "http_observer/process_response", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange", - "chrome": "chrome", - "html_script_finder/html_parser": "librejs/html_script_finder/html_parser", - "html_script_finder/web_labels/js_web_labels": "librejs/html_script_finder/web_labels/js_web_labels", - "http_observer/allowed_referrers": "librejs/http_observer/allowed_referrers", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/js_checker": "librejs/js_checker/js_checker", - "script_entries/accepted_scripts": "librejs/script_entries/accepted_scripts", - "script_entries/dryrun_scripts": "librejs/script_entries/dryrun_scripts", - "script_entries/removed_scripts": "librejs/script_entries/removed_scripts", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/http_observer/stream_loader": { - "docsSHA256": null, - "jsSHA256": "4f3eb2c9cf163cd95932b74b1df6f765121a8d014f42db238d03c83e0f5fced4", - "moduleName": "http_observer/stream_loader", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "http_observer/process_response": "librejs/http_observer/process_response" - }, - "sectionName": "lib" - }, - "librejs/js_checker/constant_types": { - "docsSHA256": null, - "jsSHA256": "96273f784e92749ffa833ae2993987fbab7be40d7293dd01d990def147bc29a5", - "moduleName": "js_checker/constant_types", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/js_checker/free_checker": { - "docsSHA256": null, - "jsSHA256": "22433f7aeb3f6c41c8c36b083501ad9805b21e703074602b8d50d194467ffb6a", - "moduleName": "js_checker/free_checker", - "packageName": "librejs", - "requirements": { - "html_script_finder/bug_fix": "librejs/html_script_finder/bug_fix", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/license_definitions": "librejs/js_checker/license_definitions", - "js_checker/pattern_utils": "librejs/js_checker/pattern_utils", - "sdk/simple-storage": "sdk/simple-storage" - }, - "sectionName": "lib" - }, - "librejs/js_checker/js_checker": { - "docsSHA256": null, - "jsSHA256": "e40794e96193a92eab003a9b028c52319e6c6c033eceb41e25893708292f519d", - "moduleName": "js_checker/js_checker", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange", - "chrome": "chrome", - "html_script_finder/bug_fix": "librejs/html_script_finder/bug_fix", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/free_checker": "librejs/js_checker/free_checker", - "js_checker/nontrivial_checker": "librejs/js_checker/nontrivial_checker", - "js_checker/relation_checker": "librejs/js_checker/relation_checker", - "narcissus_parser/narcissus_worker": "librejs/narcissus_parser/narcissus_worker", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/timers": "sdk/timers", - "ui/notification": "librejs/ui/notification" - }, - "sectionName": "lib" - }, - "librejs/js_checker/license_definitions": { - "docsSHA256": null, - "jsSHA256": "26c979a2ec71a6134e4564f2f00d7c27ad878716948a31491189d8c7e4c0041b", - "moduleName": "js_checker/license_definitions", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/js_checker/nontrivial_checker": { - "docsSHA256": null, - "jsSHA256": "a14b688c0d54918ea0c1649e8f44e7d627706278c9732c9f14b5887a6cf69ce5", - "moduleName": "js_checker/nontrivial_checker", - "packageName": "librejs", - "requirements": { - "js_checker/constant_types": "librejs/js_checker/constant_types" - }, - "sectionName": "lib" - }, - "librejs/js_checker/pattern_utils": { - "docsSHA256": null, - "jsSHA256": "6680b0a5f803eb1f0e40119f87c4149ed3a29011e74215322be2f8e4a9b47c66", - "moduleName": "js_checker/pattern_utils", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/js_checker/privacy_checker": { - "docsSHA256": null, - "jsSHA256": "aa7e796cd77ed096a9a47a9cca55b85f8359f670aed7391bc5225d348b5e3848", - "moduleName": "js_checker/privacy_checker", - "packageName": "librejs", - "requirements": { - "js_checker/pattern_utils": "librejs/js_checker/pattern_utils", - "js_checker/privacy_threat_definitions.js": "librejs/js_checker/privacy_threat_definitions" - }, - "sectionName": "lib" - }, - "librejs/js_checker/privacy_threat_definitions": { - "docsSHA256": null, - "jsSHA256": "08c681d4827f52bd8cdfc939224577a22194ee32337b9334a4f8b423f17f8ade", - "moduleName": "js_checker/privacy_threat_definitions.js", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/js_checker/relation_checker": { - "docsSHA256": null, - "jsSHA256": "b81106d3a439da67f6a87c6dd76ff9a6759febc6b77305040718eccf4a4dfb41", - "moduleName": "js_checker/relation_checker", - "packageName": "librejs", - "requirements": { - "js_checker/constant_types": "librejs/js_checker/constant_types" - }, - "sectionName": "lib" - }, - "librejs/main": { - "docsSHA256": null, - "jsSHA256": "b60c8856a74381b7c06fef7e0573778492746f3b6984644965bb5bb909ab3d11", - "moduleName": "main", - "packageName": "librejs", - "requirements": { - "addon_management/install_uninstall": "librejs/addon_management/install_uninstall", - "addon_management/prefchange": "librejs/addon_management/prefchange", - "chrome": "chrome", - "http_observer/allowed_referrers": "librejs/http_observer/allowed_referrers", - "http_observer/http_request_observer": "librejs/http_observer/http_request_observer", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/js_checker": "librejs/js_checker/js_checker", - "menuitems": "menuitems/menuitems", - "script_entries/accepted_scripts": "librejs/script_entries/accepted_scripts", - "script_entries/dryrun_scripts": "librejs/script_entries/dryrun_scripts", - "script_entries/removed_scripts": "librejs/script_entries/removed_scripts", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/page-worker": "sdk/page-worker", - "sdk/panel": "sdk/panel", - "sdk/self": "sdk/self", - "sdk/simple-storage": "sdk/simple-storage", - "sdk/tabs": "sdk/tabs", - "sdk/ui/button/toggle": "sdk/ui/button/toggle", - "sdk/window/utils": "sdk/window/utils", - "settings/settings_tab": "librejs/settings/settings_tab", - "settings/storage": "librejs/settings/storage", - "ui/script_panel.js": "librejs/ui/script_panel", - "ui/ui_info": "librejs/ui/ui_info", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/narcissus_parser/narcissus_worker": { - "docsSHA256": null, - "jsSHA256": "bcd4350373fe0b4364a7bcdc6013feea837720e9a8792e84f905cc86dd346ce0", - "moduleName": "narcissus_parser/narcissus_worker", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "js_checker/js_checker": "librejs/js_checker/js_checker", - "sdk/self": "sdk/self" - }, - "sectionName": "lib" - }, - "librejs/script_entries/accepted_scripts": { - "docsSHA256": null, - "jsSHA256": "ee96b355fb087aadca3c51a77cc9f14321aad96c834dda5a0812724fa26a7a7e", - "moduleName": "script_entries/accepted_scripts", - "packageName": "librejs", - "requirements": { - "script_entries/all_scripts": "librejs/script_entries/all_scripts" - }, - "sectionName": "lib" - }, - "librejs/script_entries/all_scripts": { - "docsSHA256": null, - "jsSHA256": "6530feda85a57e12f47b4ab6c07d403e4b0fdb4d7b6e433ad1eeb60af90756aa", - "moduleName": "script_entries/all_scripts", - "packageName": "librejs", - "requirements": { - "script_entries/crypto": "librejs/script_entries/crypto" - }, - "sectionName": "lib" - }, - "librejs/script_entries/crypto": { - "docsSHA256": null, - "jsSHA256": "c77e0067499b2f99fb6a3c0302e156ef89a4d3834f1fdac4f323a9d2ad966679", - "moduleName": "script_entries/crypto", - "packageName": "librejs", - "requirements": { - "chrome": "chrome" - }, - "sectionName": "lib" - }, - "librejs/script_entries/dryrun_scripts": { - "docsSHA256": null, - "jsSHA256": "808d0fa10cf794277f4bf26edf43b916695b32466edb2a2a5ebdb71a761f0773", - "moduleName": "script_entries/dryrun_scripts", - "packageName": "librejs", - "requirements": { - "script_entries/all_scripts": "librejs/script_entries/all_scripts", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/script_entries/free_libraries": { - "docsSHA256": null, - "jsSHA256": "a716922a4a427d0ae177e92cf7b94710573f162bd17302dc24871bd876f4b60f", - "moduleName": "script_entries/free_libraries", - "packageName": "librejs", - "requirements": { - "./scripts_cache": "librejs/script_entries/scripts_cache", - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/relation_checker": "librejs/js_checker/relation_checker", - "sdk/self": "sdk/self" - }, - "sectionName": "lib" - }, - "librejs/script_entries/removed_scripts": { - "docsSHA256": null, - "jsSHA256": "529ad3d10162a836e3d481592e078bf913b762848c0673686ef0317d7a28f212", - "moduleName": "script_entries/removed_scripts", - "packageName": "librejs", - "requirements": { - "script_entries/all_scripts": "librejs/script_entries/all_scripts", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/script_entries/scripts_cache": { - "docsSHA256": null, - "jsSHA256": "2a6c61f5422a4285aeadb2d3108f4b7cc710d20701062e30f42d0dbf5f162cc9", - "moduleName": "script_entries/scripts_cache", - "packageName": "librejs", - "requirements": { - "js_checker/constant_types": "librejs/js_checker/constant_types", - "js_checker/relation_checker": "librejs/js_checker/relation_checker", - "script_entries/crypto": "librejs/script_entries/crypto", - "ui/notification": "librejs/ui/notification" - }, - "sectionName": "lib" - }, - "librejs/settings/settings_tab": { - "docsSHA256": null, - "jsSHA256": "fe6fa07ad3ca1b9e1ce4219af1f046ba7a21e0757e9cffc772b80b094bd56af0", - "moduleName": "settings/settings_tab", - "packageName": "librejs", - "requirements": { - "addon-tab": "addon-tab/addon-tab", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache", - "sdk/self": "sdk/self", - "settings/storage": "librejs/settings/storage" - }, - "sectionName": "lib" - }, - "librejs/settings/storage": { - "docsSHA256": null, - "jsSHA256": "25e0a3d6f9551f736b60375eeefde289ecd9b216995eb824d99559eef040f244", - "moduleName": "settings/storage", - "packageName": "librejs", - "requirements": { - "chrome": "chrome", - "js_checker/relation_checker": "librejs/js_checker/relation_checker", - "script_entries/free_libraries": "librejs/script_entries/free_libraries", - "script_entries/scripts_cache": "librejs/script_entries/scripts_cache" - }, - "sectionName": "lib" - }, - "librejs/ui/notification": { - "docsSHA256": null, - "jsSHA256": "4cef86f9d21cbda8633ea595968c9a6ba189d30923cf895c1f5453a362ab028b", - "moduleName": "ui/notification", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange", - "notification-box": "notification-box/notification-box", - "sdk/self": "sdk/self", - "sdk/timers": "sdk/timers" - }, - "sectionName": "lib" - }, - "librejs/ui/script_panel": { - "docsSHA256": null, - "jsSHA256": "9bd52a58004737dd85ca814dfbdd23cc87541dcfe661124db4cbdd068c2a84fe", - "moduleName": "ui/script_panel.js", - "packageName": "librejs", - "requirements": { - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/ui/ui_info": { - "docsSHA256": null, - "jsSHA256": "6ee2f0d991aa0535487c3c431f3bd8990636c6739405f3a89485bbb414fd317f", - "moduleName": "ui/ui_info", - "packageName": "librejs", - "requirements": { - "addon_management/prefchange": "librejs/addon_management/prefchange", - "sdk/page-mod": "sdk/page-mod", - "sdk/page-worker": "sdk/page-worker", - "sdk/self": "sdk/self", - "sdk/tabs": "sdk/tabs", - "url_handler/url_handler": "librejs/url_handler/url_handler" - }, - "sectionName": "lib" - }, - "librejs/url_handler/node_punycode": { - "docsSHA256": null, - "jsSHA256": "8f604c209e3f9913fbcda68b2cfe203335e0117e145031e4a5c826d6b021c3f2", - "moduleName": "url_handler/node_punycode", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/url_handler/node_querystring": { - "docsSHA256": null, - "jsSHA256": "e25cebb6984e5c84b1b6a4d100e87a66a9763a2573cf093a2923160fa704b083", - "moduleName": "url_handler/node_querystring", - "packageName": "librejs", - "requirements": {}, - "sectionName": "lib" - }, - "librejs/url_handler/node_url": { - "docsSHA256": null, - "jsSHA256": "a73dd5be86af3e6a2fff3c250fb9a860d14aa4688babc87efd69eba4d9315a2a", - "moduleName": "url_handler/node_url", - "packageName": "librejs", - "requirements": { - "url_handler/node_punycode": "librejs/url_handler/node_punycode", - "url_handler/node_querystring": "librejs/url_handler/node_querystring" - }, - "sectionName": "lib" - }, - "librejs/url_handler/url_handler": { - "docsSHA256": null, - "jsSHA256": "dd5c54c8e8220e7334c50d11f841a988ae0fb29c259cd91cb012f16ca93b76df", - "moduleName": "url_handler/url_handler", - "packageName": "librejs", - "requirements": { - "url_handler/node_url": "librejs/url_handler/node_url" - }, - "sectionName": "lib" - }, - "menuitems/menuitems": { - "docsSHA256": "58ad1ff182b33d89a46eb8e0b4847ff84f5403840ddbd03b017a4a855d2008fc", - "jsSHA256": "30d5fc7421841e6ac4ec3756515ac8f2dc3850bed7334f3ff038528d18262524", - "moduleName": "menuitems", - "packageName": "menuitems", - "requirements": { - "sdk/core/heritage": "sdk/core/heritage", - "sdk/core/namespace": "sdk/core/namespace", - "sdk/deprecated/api-utils": "sdk/deprecated/api-utils", - "sdk/deprecated/window-utils": "sdk/deprecated/window-utils", - "sdk/event/core": "sdk/event/core", - "sdk/event/target": "sdk/event/target", - "sdk/window/utils": "sdk/window/utils", - "unload+": "vold-utils/unload+" - }, - "sectionName": "lib" - }, - "notification-box/notification-box": { - "docsSHA256": null, - "jsSHA256": "d7e5a8b906ff408b90622769e175d02e243b1e9b238d7a54ad4be213e03c8454", - "moduleName": "notification-box", - "packageName": "notification-box", - "requirements": { - "chrome": "chrome", - "sdk/window/utils": "sdk/window/utils" - }, - "sectionName": "lib" - }, - "vold-utils/unload+": { - "docsSHA256": "465618992a8bbf3da6425fd79aaec54b92db0353d9670d8dcc1373d14c25b69b", - "jsSHA256": "fbbdfe29fd5cd3ed3593d5720278df4091bd208fc14478fcbff6776fad6c4dd1", - "moduleName": "unload+", - "packageName": "vold-utils", - "requirements": { - "sdk/core/heritage": "sdk/core/heritage", - "sdk/core/namespace": "sdk/core/namespace", - "sdk/system/unload": "sdk/system/unload" - }, - "sectionName": "lib" - } - }, - "metadata": { - "addon-sdk": { - "description": "Add-on development made easy.", - "keywords": [ - "javascript", - "engine", - "addon", - "extension", - "xulrunner", - "firefox", - "browser" - ], - "license": "MPL 2.0", - "name": "addon-sdk" - }, - "addon-tab": { - "author": "Loic J. Duros", - "description": "Opens a tab with a local page, hiding the location/search bars, and allows to set styles directly on the tab element (see example). This is ideal if your addon has a complex UI requiring a complex html page (and using such frameworks as jQuery UI, Bootstrap, etc, ...)", - "license": "MPL 2.0", - "main": "main", - "name": "addon-tab", - "version": "0.1" - }, - "librejs": { - "author": "Loic J. Duros", - "description": "GNU LibreJS is an add-on for Mozilla-based browsers (IceCat, Firefox, Abrowser, Iceweasel)\n that prevents the execution of nonfree nontrivial JavaScript as described in \"The Javascript Trap\": http://www.gnu.org/philosophy/javascript-trap.html", - "license": "GPL v3.0 and later", - "main": "lib/main", - "name": "librejs", - "permissions": { - "unsafe-content-script": true - }, - "version": "6.0.1" - }, - "menuitems": { - "author": "Erik Vold (http://erikvold.com/) <erikvvold@gmail.com>", - "description": "Menuitems for Jetpacks", - "keywords": [ - "menu", - "menuitems", - "button", - "ui" - ], - "license": "MPL 2.0", - "name": "menuitems", - "version": "1.1.1" - }, - "notification-box": { - "description": "a basic add-on", - "license": "MPL 2.0", - "main": "main", - "name": "notification-box", - "version": "0.1" - }, - "vold-utils": { - "author": "Erik Vold (http://erikvold.com/) <erikvvold@gmail.com>", - "description": "Utilitys for Jetpacks", - "name": "vold-utils", - "version": "1.1" - } - }, - "name": "librejs", - "parseable": false, - "preferences": [ - { - "name": "whitelist", - "title": "Whitelist domain, separated by comma, omit protocol, e.g.: gnu.org, wildcard is *", - "type": "string", - "value": "" - }, - { - "name": "complaint_tab", - "title": "Display complaint tab on sites where nonfree nontrivial JavaScript is detected", - "type": "bool", - "value": true - }, - { - "name": "display_notifications", - "title": "Display notifications of the JavaScript code being analyzed by LibreJS.", - "type": "bool", - "value": false - } - ], - "preferencesBranch": "jid1-KtlZuoiikVfFew@jetpack", - "sdkVersion": "1.17", - "staticArgs": {}, - "verbose": false -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/install.rdf b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/install.rdf deleted file mode 100644 index dc20696..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/install.rdf +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --><RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>jid1-KtlZuoiikVfFew@jetpack</em:id> - <em:version>6.0.1</em:version> - <em:type>2</em:type> - <em:bootstrap>true</em:bootstrap> - <em:unpack>false</em:unpack> - - <!-- Firefox --> - <em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>26.0</em:minVersion> - <em:maxVersion>30.0</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- Front End MetaData --> - <em:name>GNU LibreJS</em:name> - <em:description>GNU LibreJS is an add-on for Mozilla-based browsers (IceCat, Firefox, Abrowser, Iceweasel) - that prevents the execution of nonfree nontrivial JavaScript as described in "The Javascript Trap": http://www.gnu.org/philosophy/javascript-trap.html</em:description> - <em:creator>Loic J. Duros</em:creator> - - <em:optionsType>2</em:optionsType> - - </Description> -</RDF>
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/locales.json b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/locales.json deleted file mode 100644 index 303e186..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/locales.json +++ /dev/null @@ -1 +0,0 @@ -{"locales": []} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/options.xul b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/options.xul deleted file mode 100644 index 70c2c77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/options.xul +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" ?> -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting data-jetpack-id="jid1-KtlZuoiikVfFew@jetpack" pref="extensions.jid1-KtlZuoiikVfFew@jetpack.whitelist" pref-name="whitelist" title="Whitelist domain, separated by comma, omit protocol, e.g.: gnu.org, wildcard is *" type="string"/> - <setting data-jetpack-id="jid1-KtlZuoiikVfFew@jetpack" pref="extensions.jid1-KtlZuoiikVfFew@jetpack.complaint_tab" pref-name="complaint_tab" title="Display complaint tab on sites where nonfree nontrivial JavaScript is detected" type="bool"/> - <setting data-jetpack-id="jid1-KtlZuoiikVfFew@jetpack" pref="extensions.jid1-KtlZuoiikVfFew@jetpack.display_notifications" pref-name="display_notifications" title="Display notifications of the JavaScript code being analyzed by LibreJS." type="bool"/> -</vbox> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/addon-tab/lib/addon-tab.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/addon-tab/lib/addon-tab.js deleted file mode 100644 index 0236161..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/addon-tab/lib/addon-tab.js +++ /dev/null @@ -1,153 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -'use strict'; - -module.metadata = { - 'stability': 'experimental' -}; - -const { WindowTracker } = require('sdk/deprecated/window-utils'); -const { isXULBrowser } = require('sdk/window/utils'); -const { add, remove } = require('sdk/util/array'); -const { getTabs, closeTab, getURI, getTabURL, getBrowserForTab } = require('sdk/tabs/utils'); -const { data } = require('sdk/self'); -const { ns } = require("sdk/core/namespace"); - -const tabs = require("sdk/tabs"); - -const { defer } = require("sdk/lang/functional"); - -// store list of addon URLs to hide the navigation bar from -// and to add proper style. -// the url is used as the key for lookup efficiency. -// Objects contained are: {[url]: { [styles] }} -let addonTabs = {}; - -const windows = ns(); - -/* Add tab to a list of URL/styles. Can be called - * from other scripts */ -let addTabToList = function (options) { - - options = options || {}; - let url; - - if (options.url) { - addonTabs[options.url] = {}; - } - else { - throw new Error("No url provided for the AddonTab page"); - } - - if (options.tabStyle) - addonTabs[options.url] = options.tabStyle; - else - addonTabs[options.tabStyle] = null; - -}; - -exports.removeAddonTab = function (url) { - if (url && url in addonTabs) - delete addonTabs[url]; -}; - -let applyStyle = function (tab, property, value) { - tab.style.setProperty(property, - value, - 'important'); -}; - -let applyStyles = function (tab, url) { - if (!url) { - url = getURI(tab); - } - - if (url in addonTabs && addonTabs[url] != null) { - for (let item in addonTabs[url]) { - applyStyle(tab, item, addonTabs[url][item]); - } - } -}; - -/* Simply adds the URL/style to the list, - * and then just open a tab using the high-level - * tab module. - */ -exports.open = function (options) { - addTabToList(options); - let tab = tabs.open(options); - return tab; -}; - -/* - * Track tabs opened and closed. - * Once you have a tab open, get the browser for it - * and figure out the location (which turns out to be the right one, not about:blank) - */ -tabs.on('open', function onOpen(tab) { - let browser = getBrowserForTab(tab); - - tab.on('load', function onTabLoad(e) { - if (typeof browser == 'undefined') { - return; - } - // let's get the location of the document. - applyStyles(tab, browser.contentDocument.location); - }, true); -}); - - -WindowTracker({ - onTrack: function onTrack(window) { - if (!isXULBrowser(window) || windows(window).hideChromeForLocation) - return; - - let { XULBrowserWindow } = window; - let { hideChromeForLocation } = XULBrowserWindow; - - windows(window).hideChromeForLocation = hideChromeForLocation; - - // Augmenting the behavior of `hideChromeForLocation` method, as - // suggested by https://developer.mozilla.org/en-US/docs/Hiding_browser_chrome - XULBrowserWindow.hideChromeForLocation = function(url) { - - if (url in addonTabs) - return true; - - return hideChromeForLocation.call(this, url); - }; - }, - - onUntrack: function onUntrack(window) { - if (isXULBrowser(window)) - getTabs(window).filter(tabFilter).forEach(untrackTab.bind(null, window)); - - } -}); - - -function tabFilter(tab) { - if (getURI(tab) in addonTabs) { - return true; - } - - return false; -} - -function untrackTab(window, tab) { - // Note: `onUntrack` will be called for all windows on add-on unloads, - // so we want to clean them up from these URLs. - let { hideChromeForLocation } = windows(window); - - if (hideChromeForLocation) { - window.XULBrowserWindow.hideChromeForLocation = hideChromeForLocation; - windows(window).hideChromeForLocation = null; - } - // had to remove closeTab call to prevent a TypeError: element is - // undefined. - //closeTab(tab); -} - - - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/README b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/README deleted file mode 100644 index 6633b5e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/README +++ /dev/null @@ -1,2 +0,0 @@ -The stylesheets, HTML files, and images provided in this folder and -its subfolders are released under the GPL version 3 or later.
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/css/style.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/css/style.css deleted file mode 100644 index 84b9ab3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/css/style.css +++ /dev/null @@ -1,150 +0,0 @@ -/* - - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - - - -*/ -/* quick reset for box and children */ -#librejs-complaint-box, #librejs-complaint-box *, #librejs-complaint-box a:hover, #librejs-complaint-box a:active, #librejs-complaint-box a:visited, #librejs-time-mention, #librejs-time-mention:hover { - margin:0; - padding:0; - line-height:1; - list-style:square; - color:#000; - text-align:left; - border:0; - content: ''; - font-style:normal; - font-weight:normal; - font-size:12px; - text-decoration:none; - font-variant:normal; - font-family:sans-serif !important; - text-shadow:none !important; - text-transform:none !important; - background-image:none; - background-color:transparent; -} - -#librejs-time-mention, #librejs-time-mention:hover { - font-size:14px; - font-weight:bold; - text-align:center; -} - -#librejs-complaint-box, #librejs-complaint-box * { - width:auto; -} - -div { - width:auto; -} - -#librejs-tab-button, #librejs-tab-button:hover, #librejs-tab-button:visited, #librejs-tab-button:active { - display: block; - width: 18px; - height: 70px; - color: rgb(255, 255, 255); - padding: 30px !important; - background-color:#e3dedb !important; - background-image:url("../images/torchy.png"), url("../images/separator.png") !important; - background-position: 19px 23px, 55px 16px !important; - background-repeat: no-repeat !important; - border:solid #454545 3px !important; - border-right:none !important; - overflow: hidden; - text-indent: -1000em; - border-top-left-radius:20px !important; - border-bottom-left-radius:20px !important; - float:left; - z-index:50; - position:relative; -} - -#librejs-complaint-box { - position: fixed; - top: 15%; - z-index: 2147483647 !important; /* fix for tech crunch big number */ - right:-530px; - display:none; -} - -#librejs-complaint-info { - border:solid #454545 3px; - background-color:#e3dedb !important; - width:460px !important; - margin-left:78px !important; - border-bottom-left-radius:30px; - z-index:0; - padding:0 20px 50px; - text-align:center; - position:relative; -} - -#librejs-complaint-info:hover { - background-color:#e3dedb !important; -} - -#librejs-complaint-info-text { - overflow:auto !important; - height:auto; - padding:0 30px; -} - -#librejs-complaint-info h1 { - z-index:1; - font:"Century Schoolbook"; - font-size:25px; - text-align:center; - background:url('../images/info-title.png') no-repeat 50% 30px !important; - overflow:hidden; - text-indent:-3000em; - height:100px; - padding:30px; - margin:0 !important; - line-height:0 !important; - display:block !important; - clear:none !important; - width:auto !important; -} - -#librejs-complaint-info h1 span.huge { - display:block; - font-size:35px; - font-weight:bold; -} - -#librejs-complaint-info h2 { - font-weight:bold !important; - font-size:14px !important; - margin:20px 0 10px !important; - display:none; - border-top:1px solid #CCC; - padding:10px 0 10px; - text-shadow: 0 1px 0 #FFF !important; -} - -#librejs-complaint-info ul { - margin-left:15px; -} - -#librejs-complaint-info ul li a { - font-size:14px !important; -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/README b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/README deleted file mode 100644 index e442861..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/README +++ /dev/null @@ -1,21 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -All images in this directory are free, released under the GPLv3 or later.
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/complain-button3.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/complain-button3.png Binary files differdeleted file mode 100644 index 5e3b4e3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/complain-button3.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/info-title.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/info-title.png Binary files differdeleted file mode 100644 index 02ebbfa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/info-title.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/separator.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/separator.png Binary files differdeleted file mode 100644 index 7eedd12..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/separator.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy.png Binary files differdeleted file mode 100644 index 363e0a3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy2.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy2.png Binary files differdeleted file mode 100644 index 60da8fc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy2.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsdefs.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsdefs.js deleted file mode 100644 index aff5c08..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsdefs.js +++ /dev/null @@ -1,751 +0,0 @@ -/* vim: set sw=4 ts=4 et tw=78: */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is the Narcissus JavaScript engine. - * - * The Initial Developer of the Original Code is - * Brendan Eich <brendan@mozilla.org>. - * Portions created by the Initial Developer are Copyright (C) 2004 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Tom Austin <taustin@ucsc.edu> - * Brendan Eich <brendan@mozilla.org> - * Shu-Yu Guo <shu@rfrn.org> - * Dave Herman <dherman@mozilla.com> - * Dimitris Vardoulakis <dimvar@ccs.neu.edu> - * Patrick Walton <pcwalton@mozilla.com> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -/* - * Narcissus - JS implemented in JS. - * - * Well-known constants and lookup tables. Many consts are generated from the - * tokens table via eval to minimize redundancy, so consumers must be compiled - * separately to take advantage of the simple switch-case constant propagation - * done by SpiderMonkey. - */ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -//"use scrict"; - -var Narcissus = {}; -(function() { - - var narcissus = { - options: { - version: 185, - // Global variables to hide from the interpreter - hiddenHostGlobals: { Narcissus: true }, - // Desugar SpiderMonkey language extensions? - desugarExtensions: false - }, - hostSupportsEvalConst: (function() { - try { - return eval("(function(s) { eval(s); return x })('const x = true;')"); - } catch (e) { - return false; - } - })(), - hostGlobal: this - }; - Narcissus = narcissus; -})(); - -Narcissus.definitions = (function() { - - var tokens = [ - // End of source. - "END", - - // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) - // and (UNARY_PLUS, UNARY_MINUS). - "\n", ";", - ",", - "=", - "?", ":", "CONDITIONAL", - "||", - "&&", - "|", - "^", - "&", - "==", "!=", "===", "!==", - "<", "<=", ">=", ">", - "<<", ">>", ">>>", - "+", "-", - "*", "/", "%", - "!", "~", "UNARY_PLUS", "UNARY_MINUS", - "++", "--", - ".", - "[", "]", - "{", "}", - "(", ")", - - // Nonterminal tree node type codes. - "SCRIPT", "BLOCK", "LABEL", "FOR_IN", "CALL", "NEW_WITH_ARGS", "INDEX", - "ARRAY_INIT", "OBJECT_INIT", "PROPERTY_INIT", "GETTER", "SETTER", - "GROUP", "LIST", "LET_BLOCK", "ARRAY_COMP", "GENERATOR", "COMP_TAIL", - - // Terminals. - "IDENTIFIER", "NUMBER", "STRING", "REGEXP", - - // Keywords. - "break", - "case", "catch", "const", "continue", - "debugger", "default", "delete", "do", - "else", "export", - "false", "finally", "for", "function", - "if", "import", "in", "instanceof", - "let", "module", - "new", "null", - "return", - "switch", - "this", "throw", "true", "try", "typeof", - "var", "void", - "yield", - "while", "with", - ]; - - var statementStartTokens = [ - "break", - "const", "continue", - "debugger", "do", - "for", - "if", - "return", - "switch", - "throw", "try", - "var", - "yield", - "while", "with", - ]; - - // Whitespace characters (see ECMA-262 7.2) - var whitespaceChars = [ - // normal whitespace: - "\u0009", "\u000B", "\u000C", "\u0020", "\u00A0", "\uFEFF", - - // high-Unicode whitespace: - "\u1680", "\u180E", - "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", - "\u2007", "\u2008", "\u2009", "\u200A", - "\u202F", "\u205F", "\u3000" - ]; - - var whitespace = {}; - for (var i = 0; i < whitespaceChars.length; i++) { - whitespace[whitespaceChars[i]] = true; - } - - // Operator and punctuator mapping from token to tree node type name. - // NB: because the lexer doesn't backtrack, all token prefixes must themselves - // be valid tokens (e.g. !== is acceptable because its prefixes are the valid - // tokens != and !). - var opTypeNames = { - '\n': "NEWLINE", - ';': "SEMICOLON", - ',': "COMMA", - '?': "HOOK", - ':': "COLON", - '||': "OR", - '&&': "AND", - '|': "BITWISE_OR", - '^': "BITWISE_XOR", - '&': "BITWISE_AND", - '===': "STRICT_EQ", - '==': "EQ", - '=': "ASSIGN", - '!==': "STRICT_NE", - '!=': "NE", - '<<': "LSH", - '<=': "LE", - '<': "LT", - '>>>': "URSH", - '>>': "RSH", - '>=': "GE", - '>': "GT", - '++': "INCREMENT", - '--': "DECREMENT", - '+': "PLUS", - '-': "MINUS", - '*': "MUL", - '/': "DIV", - '%': "MOD", - '!': "NOT", - '~': "BITWISE_NOT", - '.': "DOT", - '[': "LEFT_BRACKET", - ']': "RIGHT_BRACKET", - '{': "LEFT_CURLY", - '}': "RIGHT_CURLY", - '(': "LEFT_PAREN", - ')': "RIGHT_PAREN" - }; - - // Hash of keyword identifier to tokens index. NB: we must null __proto__ to - // avoid toString, etc. namespace pollution. - var keywords = {__proto__: null}; - - // Define const END, etc., based on the token names. Also map name to index. - var tokenIds = {}; - - // Building up a string to be eval'd in different contexts. - var consts = Narcissus.hostSupportsEvalConst ? "const " : "var "; - for (var i = 0, j = tokens.length; i < j; i++) { - if (i > 0) - consts += ", "; - var t = tokens[i]; - var name; - if (/^[a-z]/.test(t)) { - name = t.toUpperCase(); - keywords[t] = i; - } else { - name = (/^\W/.test(t) ? opTypeNames[t] : t); - } - consts += name + " = " + i; - tokenIds[name] = i; - tokens[t] = i; - } - consts += ";"; - - var isStatementStartCode = {__proto__: null}; - for (i = 0, j = statementStartTokens.length; i < j; i++) - isStatementStartCode[keywords[statementStartTokens[i]]] = true; - - // Map assignment operators to their indexes in the tokens array. - var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; - - for (i = 0, j = assignOps.length; i < j; i++) { - t = assignOps[i]; - assignOps[t] = tokens[t]; - } - - function defineGetter(obj, prop, fn, dontDelete, dontEnum) { - Object.defineProperty(obj, prop, - { get: fn, configurable: !dontDelete, enumerable: !dontEnum }); - } - - function defineGetterSetter(obj, prop, getter, setter, dontDelete, dontEnum) { - Object.defineProperty(obj, prop, { - get: getter, - set: setter, - configurable: !dontDelete, - enumerable: !dontEnum - }); - } - - function defineMemoGetter(obj, prop, fn, dontDelete, dontEnum) { - Object.defineProperty(obj, prop, { - get: function() { - var val = fn(); - defineProperty(obj, prop, val, dontDelete, true, dontEnum); - return val; - }, - configurable: true, - enumerable: !dontEnum - }); - } - - function defineProperty(obj, prop, val, dontDelete, readOnly, dontEnum) { - Object.defineProperty(obj, prop, - { value: val, writable: !readOnly, configurable: !dontDelete, - enumerable: !dontEnum }); - } - - // Returns true if fn is a native function. (Note: SpiderMonkey specific.) - function isNativeCode(fn) { - // Relies on the toString method to identify native code. - return ((typeof fn) === "function") && fn.toString().match(/\[native code\]/); - } - - var Fpapply = Function.prototype.apply; - - function apply(f, o, a) { - return Fpapply.call(f, [o].concat(a)); - } - - var applyNew; - - // ES5's bind is a simpler way to implement applyNew - if (Function.prototype.bind) { - applyNew = function applyNew(f, a) { - return new (f.bind.apply(f, [,].concat(a)))(); - }; - } else { - applyNew = function applyNew(f, a) { - switch (a.length) { - case 0: - return new f(); - case 1: - return new f(a[0]); - case 2: - return new f(a[0], a[1]); - case 3: - return new f(a[0], a[1], a[2]); - default: - var argStr = "a[0]"; - for (var i = 1, n = a.length; i < n; i++) - argStr += ",a[" + i + "]"; - return eval("new f(" + argStr + ")"); - } - }; - } - - function getPropertyDescriptor(obj, name) { - while (obj) { - if (({}).hasOwnProperty.call(obj, name)) - return Object.getOwnPropertyDescriptor(obj, name); - obj = Object.getPrototypeOf(obj); - } - return undefined; - } - - function getPropertyNames(obj) { - var table = Object.create(null, {}); - while (obj) { - var names = Object.getOwnPropertyNames(obj); - for (var i = 0, n = names.length; i < n; i++) - table[names[i]] = true; - obj = Object.getPrototypeOf(obj); - } - return Object.keys(table); - } - - function getOwnProperties(obj) { - var map = {}; - for (var name in Object.getOwnPropertyNames(obj)) - map[name] = Object.getOwnPropertyDescriptor(obj, name); - return map; - } - - function blacklistHandler(target, blacklist) { - var mask = Object.create(null, {}); - var redirect = StringMap.create(blacklist).mapObject(function(name) { return mask; }); - return mixinHandler(redirect, target); - } - - function whitelistHandler(target, whitelist) { - var catchall = Object.create(null, {}); - var redirect = StringMap.create(whitelist).mapObject(function(name) { return target; }); - return mixinHandler(redirect, catchall); - } - - function mirrorHandler(target, writable) { - var handler = makePassthruHandler(target); - - var defineProperty = handler.defineProperty; - handler.defineProperty = function(name, desc) { - if (!desc.enumerable) - throw new Error("mirror property must be enumerable"); - if (!desc.configurable) - throw new Error("mirror property must be configurable"); - if (desc.writable !== writable) - throw new Error("mirror property must " + (writable ? "" : "not ") + "be writable"); - defineProperty(name, desc); - }; - - handler.fix = function() { }; - handler.getOwnPropertyDescriptor = handler.getPropertyDescriptor; - handler.getOwnPropertyNames = getPropertyNames.bind(handler, target); - handler.keys = handler.enumerate; - handler["delete"] = function() { return false; }; - handler.hasOwn = handler.has; - return handler; - } - - /* - * Mixin proxies break the single-inheritance model of prototypes, so - * the handler treats all properties as own-properties: - * - * X - * | - * +------------+------------+ - * | O | - * | | | - * | O O O | - * | | | | | - * | O O O O | - * | | | | | | - * | O O O O O | - * | | | | | | | - * +-(*)--(w)--(x)--(y)--(z)-+ - */ - - function mixinHandler(redirect, catchall) { - function targetFor(name) { - return hasOwn(redirect, name) ? redirect[name] : catchall; - } - - function getMuxPropertyDescriptor(name) { - var desc = getPropertyDescriptor(targetFor(name), name); - if (desc) - desc.configurable = true; - return desc; - } - - function getMuxPropertyNames() { - var names1 = Object.getOwnPropertyNames(redirect).filter(function(name) { - return name in redirect[name]; - }); - var names2 = getPropertyNames(catchall).filter(function(name) { - return !hasOwn(redirect, name); - }); - return names1.concat(names2); - } - - function enumerateMux() { - var result = Object.getOwnPropertyNames(redirect).filter(function(name) { - return name in redirect[name]; - }); - for (name in catchall) { - if (!hasOwn(redirect, name)) - result.push(name); - }; - return result; - } - - function hasMux(name) { - return name in targetFor(name); - } - - return { - getOwnPropertyDescriptor: getMuxPropertyDescriptor, - getPropertyDescriptor: getMuxPropertyDescriptor, - getOwnPropertyNames: getMuxPropertyNames, - defineProperty: function(name, desc) { - Object.defineProperty(targetFor(name), name, desc); - }, - "delete": function(name) { - var target = targetFor(name); - return delete target[name]; - }, - // FIXME: ha ha ha - fix: function() { }, - has: hasMux, - hasOwn: hasMux, - get: function(receiver, name) { - var target = targetFor(name); - return target[name]; - }, - set: function(receiver, name, val) { - var target = targetFor(name); - target[name] = val; - return true; - }, - enumerate: enumerateMux, - keys: enumerateMux - }; - } - - function makePassthruHandler(obj) { - // Handler copied from - // http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy%20object#examplea_no-op_forwarding_proxy - return { - getOwnPropertyDescriptor: function(name) { - var desc = Object.getOwnPropertyDescriptor(obj, name); - - // a trapping proxy's properties must always be configurable - desc.configurable = true; - return desc; - }, - getPropertyDescriptor: function(name) { - var desc = getPropertyDescriptor(obj, name); - - // a trapping proxy's properties must always be configurable - desc.configurable = true; - return desc; - }, - getOwnPropertyNames: function() { - return Object.getOwnPropertyNames(obj); - }, - defineProperty: function(name, desc) { - Object.defineProperty(obj, name, desc); - }, - "delete": function(name) { return delete obj[name]; }, - fix: function() { - if (Object.isFrozen(obj)) { - return getOwnProperties(obj); - } - - // As long as obj is not frozen, the proxy won't allow itself to be fixed. - return undefined; // will cause a TypeError to be thrown - }, - - has: function(name) { return name in obj; }, - hasOwn: function(name) { return ({}).hasOwnProperty.call(obj, name); }, - get: function(receiver, name) { return obj[name]; }, - - // bad behavior when set fails in non-strict mode - set: function(receiver, name, val) { obj[name] = val; return true; }, - enumerate: function() { - var result = []; - for (name in obj) { result.push(name); }; - return result; - }, - keys: function() { return Object.keys(obj); } - }; - } - - var hasOwnProperty = ({}).hasOwnProperty; - - function hasOwn(obj, name) { - return hasOwnProperty.call(obj, name); - } - - function StringMap(table, size) { - this.table = table || Object.create(null, {}); - this.size = size || 0; - } - - StringMap.create = function(table) { - var init = Object.create(null, {}); - var size = 0; - var names = Object.getOwnPropertyNames(table); - for (var i = 0, n = names.length; i < n; i++) { - var name = names[i]; - init[name] = table[name]; - size++; - } - return new StringMap(init, size); - }; - - StringMap.prototype = { - has: function(x) { return hasOwnProperty.call(this.table, x); }, - set: function(x, v) { - if (!hasOwnProperty.call(this.table, x)) - this.size++; - this.table[x] = v; - }, - get: function(x) { return this.table[x]; }, - getDef: function(x, thunk) { - if (!hasOwnProperty.call(this.table, x)) { - this.size++; - this.table[x] = thunk(); - } - return this.table[x]; - }, - forEach: function(f) { - var table = this.table; - for (var key in table) - f.call(this, key, table[key]); - }, - map: function(f) { - var table1 = this.table; - var table2 = Object.create(null, {}); - this.forEach(function(key, val) { - table2[key] = f.call(this, val, key); - }); - return new StringMap(table2, this.size); - }, - mapObject: function(f) { - var table1 = this.table; - var table2 = Object.create(null, {}); - this.forEach(function(key, val) { - table2[key] = f.call(this, val, key); - }); - return table2; - }, - toObject: function() { - return this.mapObject(function(val) { return val; }); - }, - choose: function() { - return Object.getOwnPropertyNames(this.table)[0]; - }, - remove: function(x) { - if (hasOwnProperty.call(this.table, x)) { - this.size--; - delete this.table[x]; - } - }, - copy: function() { - var table = Object.create(null, {}); - for (var key in this.table) - table[key] = this.table[key]; - return new StringMap(table, this.size); - }, - keys: function() { - return Object.keys(this.table); - }, - toString: function() { return "[object StringMap]" } - }; - - // an object-key table with poor asymptotics (replace with WeakMap when possible) - function ObjectMap(array) { - this.array = array || []; - } - - function searchMap(map, key, found, notFound) { - var a = map.array; - for (var i = 0, n = a.length; i < n; i++) { - var pair = a[i]; - if (pair.key === key) - return found(pair, i); - } - return notFound(); - } - - ObjectMap.prototype = { - has: function(x) { - return searchMap(this, x, function() { return true }, function() { return false }); - }, - set: function(x, v) { - var a = this.array; - searchMap(this, x, - function(pair) { pair.value = v }, - function() { a.push({ key: x, value: v }) }); - }, - get: function(x) { - return searchMap(this, x, - function(pair) { return pair.value }, - function() { return null }); - }, - getDef: function(x, thunk) { - var a = this.array; - return searchMap(this, x, - function(pair) { return pair.value }, - function() { - var v = thunk(); - a.push({ key: x, value: v }); - return v; - }); - }, - forEach: function(f) { - var a = this.array; - for (var i = 0, n = a.length; i < n; i++) { - var pair = a[i]; - f.call(this, pair.key, pair.value); - } - }, - choose: function() { - return this.array[0].key; - }, - get size() { - return this.array.length; - }, - remove: function(x) { - var a = this.array; - searchMap(this, x, - function(pair, i) { a.splice(i, 1) }, - function() { }); - }, - copy: function() { - return new ObjectMap(this.array.map(function(pair) { - return { key: pair.key, value: pair.value } - })); - }, - clear: function() { - this.array = []; - }, - toString: function() { return "[object ObjectMap]" } - }; - - // non-destructive stack - function Stack(elts) { - this.elts = elts || null; - } - - Stack.prototype = { - push: function(x) { - return new Stack({ top: x, rest: this.elts }); - }, - top: function() { - if (!this.elts) - throw new Error("empty stack"); - return this.elts.top; - }, - isEmpty: function() { - return this.top === null; - }, - find: function(test) { - for (var elts = this.elts; elts; elts = elts.rest) { - if (test(elts.top)) - return elts.top; - } - return null; - }, - has: function(x) { - return Boolean(this.find(function(elt) { return elt === x })); - }, - forEach: function(f) { - for (var elts = this.elts; elts; elts = elts.rest) { - f(elts.top); - } - } - }; - - if (!Array.prototype.copy) { - Array.prototype.copy = function() { - var result = []; - for (var i = 0, n = this.length; i < n; i++) - result[i] = this[i]; - return result; - }; - } - - return { - tokens: tokens, - whitespace: whitespace, - opTypeNames: opTypeNames, - keywords: keywords, - isStatementStartCode: isStatementStartCode, - tokenIds: tokenIds, - consts: consts, - assignOps: assignOps, - defineGetter: defineGetter, - defineGetterSetter: defineGetterSetter, - defineMemoGetter: defineMemoGetter, - defineProperty: defineProperty, - isNativeCode: isNativeCode, - apply: apply, - applyNew: applyNew, - mirrorHandler: mirrorHandler, - mixinHandler: mixinHandler, - whitelistHandler: whitelistHandler, - blacklistHandler: blacklistHandler, - makePassthruHandler: makePassthruHandler, - StringMap: StringMap, - ObjectMap: ObjectMap, - Stack: Stack - }; -}()); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jslex.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jslex.js deleted file mode 100644 index c5c2673..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jslex.js +++ /dev/null @@ -1,719 +0,0 @@ -/* vim: set sw=4 ts=4 et tw=78: */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is the Narcissus JavaScript engine. - * - * The Initial Developer of the Original Code is - * Brendan Eich <brendan@mozilla.org>. - * Portions created by the Initial Developer are Copyright (C) 2004 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Tom Austin <taustin@ucsc.edu> - * Brendan Eich <brendan@mozilla.org> - * Shu-Yu Guo <shu@rfrn.org> - * Stephan Herhut <stephan.a.herhut@intel.com> - * Dave Herman <dherman@mozilla.com> - * Dimitris Vardoulakis <dimvar@ccs.neu.edu> - * Patrick Walton <pcwalton@mozilla.com> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -/* - * Narcissus - JS implemented in JS. - * - * Lexical scanner. - */ - -"use strict"; - -Narcissus.lexer = (function() { - - var definitions = Narcissus.definitions; - - //throw Error (definitions.consts); - - // Set constants in the local scope. - //eval(definitions.consts); - const END = 0, - NEWLINE = 1, - SEMICOLON = 2, - COMMA = 3, - ASSIGN = 4, - HOOK = 5, - COLON = 6, - CONDITIONAL = 7, - OR = 8, - AND = 9, - BITWISE_OR = 10, - BITWISE_XOR = 11, - BITWISE_AND = 12, - EQ = 13, - NE = 14, - STRICT_EQ = 15, - STRICT_NE = 16, - LT = 17, - LE = 18, - GE = 19, - GT = 20, - LSH = 21, - RSH = 22, - URSH = 23, - PLUS = 24, - MINUS = 25, - MUL = 26, - DIV = 27, - MOD = 28, - NOT = 29, - BITWISE_NOT = 30, - UNARY_PLUS = 31, - UNARY_MINUS = 32, - INCREMENT = 33, - DECREMENT = 34, - DOT = 35, - LEFT_BRACKET = 36, - RIGHT_BRACKET = 37, - LEFT_CURLY = 38, - RIGHT_CURLY = 39, - LEFT_PAREN = 40, - RIGHT_PAREN = 41, - SCRIPT = 42, - BLOCK = 43, - LABEL = 44, - FOR_IN = 45, - CALL = 46, - NEW_WITH_ARGS = 47, - INDEX = 48, - ARRAY_INIT = 49, - OBJECT_INIT = 50, - PROPERTY_INIT = 51, - GETTER = 52, - SETTER = 53, - GROUP = 54, - LIST = 55, - LET_BLOCK = 56, - ARRAY_COMP = 57, - GENERATOR = 58, - COMP_TAIL = 59, - IDENTIFIER = 60, - NUMBER = 61, - STRING = 62, - REGEXP = 63, - BREAK = 64, - CASE = 65, - CATCH = 66, - CONST = 67, - CONTINUE = 68, - DEBUGGER = 69, - DEFAULT = 70, - DELETE = 71, - DO = 72, - ELSE = 73, - EXPORT = 74, - FALSE = 75, - FINALLY = 76, - FOR = 77, - FUNCTION = 78, - IF = 79, - IMPORT = 80, - IN = 81, - INSTANCEOF = 82, - LET = 83, - MODULE = 84, - NEW = 85, - NULL = 86, - RETURN = 87, - SWITCH = 88, - THIS = 89, - THROW = 90, - TRUE = 91, - TRY = 92, - TYPEOF = 93, - VAR = 94, - VOID = 95, - YIELD = 96, - WHILE = 97, - WITH = 98; - - // Banned keywords by language version - const blackLists = { 160: {}, 185: {}, harmony: {} }; -/* blackLists[160][LET] = true; - blackLists[160][MODULE] = true; - blackLists[160][YIELD] = true; - blackLists[185][MODULE] = true; -*/ - // Build up a trie of operator tokens. - var opTokens = {}; - for (var op in definitions.opTypeNames) { - if (op === '\n' || op === '.') - continue; - - var node = opTokens; - for (var i = 0; i < op.length; i++) { - var ch = op[i]; - if (!(ch in node)) - node[ch] = {}; - node = node[ch]; - node.op = op; - } - } - - /* - * Since JavaScript provides no convenient way to determine if a - * character is in a particular Unicode category, we use - * metacircularity to accomplish this (oh yeaaaah!) - */ - function isValidIdentifierChar(ch, first) { - // check directly for ASCII - if (ch <= "\u007F") { - if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '$' || ch === '_' || - (!first && (ch >= '0' && ch <= '9'))) { - return true; - } - return false; - } - - // create an object to test this in - var x = {}; - x["x"+ch] = true; - x[ch] = true; - - // then use eval to determine if it's a valid character - var valid = false; - try { - valid = (Function("x", "return (x." + (first?"":"x") + ch + ");")(x) === true); - } catch (ex) {} - - return valid; - } - - function isIdentifier(str) { - if (typeof str !== "string") - return false; - - if (str.length === 0) - return false; - - if (!isValidIdentifierChar(str[0], true)) - return false; - - for (var i = 1; i < str.length; i++) { - if (!isValidIdentifierChar(str[i], false)) - return false; - } - - return true; - } - - /* - * Tokenizer :: (source, filename, line number) -> Tokenizer - */ - function Tokenizer(s, f, l) { - this.cursor = 0; - this.source = String(s); - this.tokens = []; - this.tokenIndex = 0; - this.lookahead = 0; - this.scanNewlines = false; - this.unexpectedEOF = false; - this.filename = f || ""; - this.lineno = l || 1; - this.blackList = blackLists[Narcissus.options.version]; - this.blockComments = null; - } - - Tokenizer.prototype = { - get done() { - // We need to set scanOperand to true here because the first thing - // might be a regexp. - return this.peek(true) === END; - }, - - get token() { - return this.tokens[this.tokenIndex]; - }, - - match: function (tt, scanOperand) { - return this.get(scanOperand) === tt || this.unget(); - }, - - mustMatch: function (tt) { - if (!this.match(tt)) { - throw this.newSyntaxError("Missing " + - definitions.tokens[tt].toLowerCase()); - } - return this.token; - }, - - peek: function (scanOperand) { - var tt, next; - if (this.lookahead) { - next = this.tokens[(this.tokenIndex + this.lookahead) & 3]; - tt = (this.scanNewlines && next.lineno !== this.lineno) - ? NEWLINE - : next.type; - } else { - tt = this.get(scanOperand); - this.unget(); - } - return tt; - }, - - peekOnSameLine: function (scanOperand) { - this.scanNewlines = true; - var tt = this.peek(scanOperand); - this.scanNewlines = false; - return tt; - }, - - lastBlockComment: function() { - var length = this.blockComments.length; - return length ? this.blockComments[length - 1] : null; - }, - - // Eat comments and whitespace. - skip: function () { - var input = this.source; - this.blockComments = []; - for (;;) { - var ch = input[this.cursor++]; - var next = input[this.cursor]; - // handle \r, \r\n and (always preferable) \n - if (ch === '\r') { - // if the next character is \n, we don't care about this at all - if (next === '\n') continue; - - // otherwise, we want to consider this as a newline - ch = '\n'; - } - - if (ch === '\n' && !this.scanNewlines) { - this.lineno++; - } else if (ch === '/' && next === '*') { - var commentStart = ++this.cursor; - for (;;) { - ch = input[this.cursor++]; - if (ch === undefined) - throw this.newSyntaxError("Unterminated comment"); - - if (ch === '*') { - next = input[this.cursor]; - if (next === '/') { - var commentEnd = this.cursor - 1; - this.cursor++; - break; - } - } else if (ch === '\n') { - this.lineno++; - } - } - this.blockComments.push(input.substring(commentStart, commentEnd)); - } - else if (ch === '-' && next === '-' && - input[this.cursor + 1] === '>') { - this.cursor += 2; - } - else if ((ch === '/' && next === '/') || - (ch === '<' && next === '!' && - input[this.cursor + 1] === '-' && - input[this.cursor + 2] === '-' && - (this.cursor += 2))) { - - // capture single line comments starts. - var commentStart = ++this.cursor; - for (;;) { - ch = input[this.cursor++]; - if (ch === undefined) { - //this.lineno++; - break; - //throw this.newSyntaxError("Unterminated comment"); - } - if (ch === '\r') { - // check for \r\n - if (next !== '\n') ch = '\n'; - var commentEnd = this.cursor - 1; - } - - if (ch === '\n') { - if (this.scanNewlines) { - this.cursor--; - } else { - this.lineno++; - } - var commentEnd = this.cursor - 1; - break; - } - } - this.blockComments.push(input.substring(commentStart, commentEnd)); - // capture single line comments ends. - } else if (!(ch in definitions.whitespace)) { - this.cursor--; - return; - } - } - }, - - // Lex the exponential part of a number, if present. Return true iff an - // exponential part was found. - lexExponent: function() { - var input = this.source; - var next = input[this.cursor]; - if (next === 'e' || next === 'E') { - this.cursor++; - ch = input[this.cursor++]; - if (ch === '+' || ch === '-') - ch = input[this.cursor++]; - - if (ch < '0' || ch > '9') - throw this.newSyntaxError("Missing exponent"); - - do { - ch = input[this.cursor++]; - } while (ch >= '0' && ch <= '9'); - this.cursor--; - - return true; - } - - return false; - }, - - lexZeroNumber: function (ch) { - var token = this.token, input = this.source; - token.type = NUMBER; - - ch = input[this.cursor++]; - if (ch === '.') { - do { - ch = input[this.cursor++]; - } while (ch >= '0' && ch <= '9'); - this.cursor--; - - this.lexExponent(); - token.value = parseFloat( - input.substring(token.start, this.cursor)); - } else if (ch === 'x' || ch === 'X') { - do { - ch = input[this.cursor++]; - } while ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || - (ch >= 'A' && ch <= 'F')); - this.cursor--; - - token.value = parseInt(input.substring(token.start, this.cursor)); - } else if (ch >= '0' && ch <= '7') { - do { - ch = input[this.cursor++]; - } while (ch >= '0' && ch <= '7'); - this.cursor--; - - token.value = parseInt(input.substring(token.start, this.cursor)); - } else { - this.cursor--; - this.lexExponent(); // 0E1, &c. - token.value = 0; - } - }, - - lexNumber: function (ch) { - var token = this.token, input = this.source; - token.type = NUMBER; - - var floating = false; - do { - ch = input[this.cursor++]; - if (ch === '.' && !floating) { - floating = true; - ch = input[this.cursor++]; - } - } while (ch >= '0' && ch <= '9'); - - this.cursor--; - - var exponent = this.lexExponent(); - floating = floating || exponent; - - var str = input.substring(token.start, this.cursor); - token.value = floating ? parseFloat(str) : parseInt(str); - }, - - lexDot: function (ch) { - var token = this.token, input = this.source; - var next = input[this.cursor]; - if (next >= '0' && next <= '9') { - do { - ch = input[this.cursor++]; - } while (ch >= '0' && ch <= '9'); - this.cursor--; - - this.lexExponent(); - - token.type = NUMBER; - token.value = parseFloat( - input.substring(token.start, this.cursor)); - } else { - token.type = DOT; - token.assignOp = null; - token.value = '.'; - } - }, - - lexString: function (ch) { - var token = this.token, input = this.source; - token.type = STRING; - - var hasEscapes = false; - var delim = ch; - if (input.length <= this.cursor) - throw this.newSyntaxError("Unterminated string literal"); - while ((ch = input[this.cursor++]) !== delim) { - if (this.cursor == input.length) - throw this.newSyntaxError("Unterminated string literal"); - if (ch === '\\') { - hasEscapes = true; - if (++this.cursor == input.length) - throw this.newSyntaxError("Unterminated string literal"); - } - } - - token.value = hasEscapes - ? eval(input.substring(token.start, this.cursor)) - : input.substring(token.start + 1, this.cursor - 1); - }, - - lexRegExp: function (ch) { - var token = this.token, input = this.source; - token.type = REGEXP; - - do { - ch = input[this.cursor++]; - if (ch === '\\') { - this.cursor++; - } else if (ch === '[') { - do { - if (ch === undefined) - throw this.newSyntaxError("Unterminated character class"); - - if (ch === '\\') - this.cursor++; - - ch = input[this.cursor++]; - } while (ch !== ']'); - } else if (ch === undefined) { - throw this.newSyntaxError("Unterminated regex"); - } - } while (ch !== '/'); - - do { - ch = input[this.cursor++]; - } while (ch >= 'a' && ch <= 'z'); - - this.cursor--; - - token.value = eval(input.substring(token.start, this.cursor)); - }, - - lexOp: function (ch) { - var token = this.token, input = this.source; - - // A bit ugly, but it seems wasteful to write a trie lookup routine - // for only 3 characters... - var node = opTokens[ch]; - var next = input[this.cursor]; - if (next in node) { - node = node[next]; - this.cursor++; - next = input[this.cursor]; - if (next in node) { - node = node[next]; - this.cursor++; - next = input[this.cursor]; - } - } - - var op = node.op; - if (definitions.assignOps[op] && input[this.cursor] === '=') { - this.cursor++; - token.type = ASSIGN; - token.assignOp = definitions.tokenIds[definitions.opTypeNames[op]]; - op += '='; - } else { - token.type = definitions.tokenIds[definitions.opTypeNames[op]]; - token.assignOp = null; - } - - token.value = op; - }, - - // FIXME: Unicode escape sequences - lexIdent: function (ch) { - var token = this.token; - var id = ch; - - while ((ch = this.getValidIdentifierChar(false)) !== null) { - id += ch; - } - - token.type = definitions.keywords[id] || IDENTIFIER; - if (token.type in this.blackList) { - // banned keyword, this is an identifier - token.type = IDENTIFIER; - } - token.value = id; - }, - - /* - * Tokenizer.get :: void -> token type - * - * Consume input *only* if there is no lookahead. - * Dispatch to the appropriate lexing function depending on the input. - */ - get: function (scanOperand) { - var token; - while (this.lookahead) { - --this.lookahead; - this.tokenIndex = (this.tokenIndex + 1) & 3; - token = this.tokens[this.tokenIndex]; - if (token.type !== NEWLINE || this.scanNewlines) - return token.type; - } - - this.skip(); - - this.tokenIndex = (this.tokenIndex + 1) & 3; - token = this.tokens[this.tokenIndex]; - if (!token) - this.tokens[this.tokenIndex] = token = {}; - - var input = this.source; - if (this.cursor >= input.length) - return token.type = END; - - token.start = this.cursor; - token.lineno = this.lineno; - - var ich = this.getValidIdentifierChar(true); - var ch = (ich === null) ? input[this.cursor++] : null; - if (ich !== null) { - this.lexIdent(ich); - } else if (scanOperand && ch === '/') { - this.lexRegExp(ch); - } else if (ch in opTokens) { - this.lexOp(ch); - } else if (ch === '.') { - this.lexDot(ch); - } else if (ch >= '1' && ch <= '9') { - this.lexNumber(ch); - } else if (ch === '0') { - this.lexZeroNumber(ch); - } else if (ch === '"' || ch === "'") { - this.lexString(ch); - } else if (this.scanNewlines && (ch === '\n' || ch === '\r')) { - // if this was a \r, look for \r\n - if (ch === '\r' && input[this.cursor] === '\n') this.cursor++; - token.type = NEWLINE; - token.value = '\n'; - this.lineno++; - } else { - throw this.newSyntaxError("Illegal token"); - } - - token.end = this.cursor; - return token.type; - }, - - /* - * Tokenizer.unget :: void -> undefined - * - * Match depends on unget returning undefined. - */ - unget: function () { - if (++this.lookahead === 4) throw "PANIC: too much lookahead!"; - this.tokenIndex = (this.tokenIndex - 1) & 3; - }, - - newSyntaxError: function (m) { - m = (this.filename ? this.filename + ":" : "") + this.lineno + ": " + m; - var e = new SyntaxError(m, this.filename, this.lineno); - e.source = this.source; - e.cursor = this.lookahead - ? this.tokens[(this.tokenIndex + this.lookahead) & 3].start - : this.cursor; - return e; - }, - - - /* Gets a single valid identifier char from the input stream, or null - * if there is none. - */ - getValidIdentifierChar: function(first) { - var input = this.source; - if (this.cursor >= input.length) return null; - var ch = input[this.cursor]; - - // first check for \u escapes - if (ch === '\\' && input[this.cursor+1] === 'u') { - // get the character value - try { - ch = String.fromCharCode(parseInt( - input.substring(this.cursor + 2, this.cursor + 6), - 16)); - } catch (ex) { - return null; - } - this.cursor += 5; - } - - var valid = isValidIdentifierChar(ch, first); - if (valid) this.cursor++; - return (valid ? ch : null); - }, - }; - - - return { - isIdentifier: isIdentifier, - Tokenizer: Tokenizer - }; - -}()); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsparse.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsparse.js deleted file mode 100644 index b78078c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/jsparse.js +++ /dev/null @@ -1,2042 +0,0 @@ -/* -*- Mode: JS; tab-width: 4; indent-tabs-mode: nil; -*- - * vim: set sw=4 ts=4 et tw=78: - * ***** BEGIN LICENSE BLOCK ***** - * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is the Narcissus JavaScript engine. - * - * The Initial Developer of the Original Code is - * Brendan Eich <brendan@mozilla.org>. - * Portions created by the Initial Developer are Copyright (C) 2004 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Tom Austin <taustin@ucsc.edu> - * Brendan Eich <brendan@mozilla.org> - * Shu-Yu Guo <shu@rfrn.org> - * Dave Herman <dherman@mozilla.com> - * Dimitris Vardoulakis <dimvar@ccs.neu.edu> - * Patrick Walton <pcwalton@mozilla.com> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -/* - * Narcissus - JS implemented in JS. - * - * Parser. - */ - -"use strict"; - -Narcissus.parser = (function() { - - var lexer = Narcissus.lexer; - var definitions = Narcissus.definitions; - - const StringMap = definitions.StringMap; - const Stack = definitions.Stack; - - var comment; - - // Set constants in the local scope. - //eval(definitions.consts); - const END = 0, - NEWLINE = 1, - SEMICOLON = 2, - COMMA = 3, - ASSIGN = 4, - HOOK = 5, - COLON = 6, - CONDITIONAL = 7, - OR = 8, - AND = 9, - BITWISE_OR = 10, - BITWISE_XOR = 11, - BITWISE_AND = 12, - EQ = 13, - NE = 14, - STRICT_EQ = 15, - STRICT_NE = 16, - LT = 17, - LE = 18, - GE = 19, - GT = 20, - LSH = 21, - RSH = 22, - URSH = 23, - PLUS = 24, - MINUS = 25, - MUL = 26, - DIV = 27, - MOD = 28, - NOT = 29, - BITWISE_NOT = 30, - UNARY_PLUS = 31, - UNARY_MINUS = 32, - INCREMENT = 33, - DECREMENT = 34, - DOT = 35, - LEFT_BRACKET = 36, - RIGHT_BRACKET = 37, - LEFT_CURLY = 38, - RIGHT_CURLY = 39, - LEFT_PAREN = 40, - RIGHT_PAREN = 41, - SCRIPT = 42, - BLOCK = 43, - LABEL = 44, - FOR_IN = 45, - CALL = 46, - NEW_WITH_ARGS = 47, - INDEX = 48, - ARRAY_INIT = 49, - OBJECT_INIT = 50, - PROPERTY_INIT = 51, - GETTER = 52, - SETTER = 53, - GROUP = 54, - LIST = 55, - LET_BLOCK = 56, - ARRAY_COMP = 57, - GENERATOR = 58, - COMP_TAIL = 59, - IDENTIFIER = 60, - NUMBER = 61, - STRING = 62, - REGEXP = 63, - BREAK = 64, - CASE = 65, - CATCH = 66, - CONST = 67, - CONTINUE = 68, - DEBUGGER = 69, - DEFAULT = 70, - DELETE = 71, - DO = 72, - ELSE = 73, - EXPORT = 74, - FALSE = 75, - FINALLY = 76, - FOR = 77, - FUNCTION = 78, - IF = 79, - IMPORT = 80, - IN = 81, - INSTANCEOF = 82, - LET = 83, - MODULE = 84, - NEW = 85, - NULL = 86, - RETURN = 87, - SWITCH = 88, - THIS = 89, - THROW = 90, - TRUE = 91, - TRY = 92, - TYPEOF = 93, - VAR = 94, - VOID = 95, - YIELD = 96, - WHILE = 97, - WITH = 98; - - // Banned statement types by language version. - const blackLists = { 160: {}, 185: {}, harmony: {} }; - /* blackLists[160][IMPORT] = true; - blackLists[160][EXPORT] = true; - blackLists[160][LET] = true; - blackLists[160][MODULE] = true; - blackLists[160][YIELD] = true; - blackLists[185][IMPORT] = true; - blackLists[185][EXPORT] = true; - blackLists[185][MODULE] = true; - blackLists.harmony[WITH] = true; -*/ - /* - * pushDestructuringVarDecls :: (node, hoisting node) -> void - * - * Recursively add all destructured declarations to varDecls. - */ - function pushDestructuringVarDecls(n, s) { - for (var i in n) { - var sub = n[i]; - if (sub.type === IDENTIFIER) { - s.varDecls.push(sub); - } else { - pushDestructuringVarDecls(sub, s); - } - } - } - - function StaticContext(parentScript, parentBlock, inModule, inFunction) { - this.parentScript = parentScript; - this.parentBlock = parentBlock || parentScript; - this.inModule = inModule || false; - this.inFunction = inFunction || false; - this.inForLoopInit = false; - this.topLevel = true; - this.allLabels = new Stack(); - this.currentLabels = new Stack(); - this.labeledTargets = new Stack(); - this.defaultLoopTarget = null; - this.defaultTarget = null; - this.blackList = blackLists[Narcissus.options.version]; - Narcissus.options.ecma3OnlyMode && (this.ecma3OnlyMode = true); - Narcissus.options.parenFreeMode && (this.parenFreeMode = true); - } - - StaticContext.prototype = { - ecma3OnlyMode: false, - parenFreeMode: false, - // non-destructive update via prototype extension - update: function(ext) { - var desc = {}; - for (var key in ext) { - desc[key] = { - value: ext[key], - writable: true, - enumerable: true, - configurable: true - } - } - return Object.create(this, desc); - }, - pushLabel: function(label) { - return this.update({ currentLabels: this.currentLabels.push(label), - allLabels: this.allLabels.push(label) }); - }, - pushTarget: function(target) { - var isDefaultLoopTarget = target.isLoop; - var isDefaultTarget = isDefaultLoopTarget || target.type === SWITCH; - - if (this.currentLabels.isEmpty()) { - if (isDefaultLoopTarget) this.update({ defaultLoopTarget: target }); - if (isDefaultTarget) this.update({ defaultTarget: target }); - return this; - } - - target.labels = new StringMap(); - this.currentLabels.forEach(function(label) { - target.labels.set(label, true); - }); - return this.update({ currentLabels: new Stack(), - labeledTargets: this.labeledTargets.push(target), - defaultLoopTarget: isDefaultLoopTarget - ? target - : this.defaultLoopTarget, - defaultTarget: isDefaultTarget - ? target - : this.defaultTarget }); - }, - nest: function() { - return this.topLevel ? this.update({ topLevel: false }) : this; - }, - allow: function(type) { - switch (type) { - case EXPORT: - if (!this.inModule || this.inFunction || !this.topLevel) - return false; - // FALL THROUGH - - case IMPORT: - return !this.inFunction && this.topLevel; - - case MODULE: - return !this.inFunction && this.topLevel; - - default: - return true; - } - } - }; - - /* - * Script :: (tokenizer, boolean, boolean) -> node - * - * Parses the toplevel and module/function bodies. - */ - function Script(t, inModule, inFunction) { - var n = new Node(t, scriptInit()); - Statements(t, new StaticContext(n, n, inModule, inFunction), n); - return n; - } - - // We extend Array slightly with a top-of-stack method. - definitions.defineProperty(Array.prototype, "top", - function() { - return this.length && this[this.length-1]; - }, false, false, true); - - /* - * Node :: (tokenizer, optional init object) -> node - */ - function Node(t, init) { - var token = t.token; - if (token) { - // If init.type exists it will override token.type. - this.type = token.type; - this.value = token.value; - this.lineno = token.lineno; - - // Start and end are file positions for error handling. - this.start = token.start; - this.end = token.end; - } else { - this.lineno = t.lineno; - } - - // Node uses a tokenizer for debugging (getSource, filename getter). - this.tokenizer = t; - this.children = []; - - for (var prop in init) - this[prop] = init[prop]; - } - - /* - * SyntheticNode :: (tokenizer, optional init object) -> node - */ - function SyntheticNode(t, init) { - // print("SYNTHETIC NODE"); - // if (init.type === COMMA) { - // print("SYNTHETIC COMMA"); - // print(init); - // } - this.tokenizer = t; - this.children = []; - for (var prop in init) - this[prop] = init[prop]; - this.synthetic = true; - } - - var Np = Node.prototype = SyntheticNode.prototype = {}; - Np.constructor = Node; - - const TO_SOURCE_SKIP = { - type: true, - value: true, - lineno: true, - start: true, - end: true, - tokenizer: true, - assignOp: true - }; - function unevalableConst(code) { - var token = definitions.tokens[code]; - var constName = definitions.opTypeNames.hasOwnProperty(token) - ? definitions.opTypeNames[token] - : token in definitions.keywords - ? token.toUpperCase() - : token; - return { toSource: function() { return constName } }; - } - Np.toSource = function toSource() { - var mock = {}; - var self = this; - mock.type = unevalableConst(this.type); - if ("value" in this) - mock.value = this.value; - if ("lineno" in this) - mock.lineno = this.lineno; - if ("start" in this) - mock.start = this.start; - if ("end" in this) - mock.end = this.end; - if (this.assignOp) - mock.assignOp = unevalableConst(this.assignOp); - for (var key in this) { - if (this.hasOwnProperty(key) && !(key in TO_SOURCE_SKIP)) - mock[key] = this[key]; - } - return mock.toSource(); - }; - - // Always use push to add operands to an expression, to update start and end. - Np.push = function (kid) { - // kid can be null e.g. [1, , 2]. - if (kid !== null) { - if (kid.start < this.start) - this.start = kid.start; - if (this.end < kid.end) - this.end = kid.end; - } - return this.children.push(kid); - } - - Node.indentLevel = 0; - - function tokenString(tt) { - var t = definitions.tokens[tt]; - return /^\W/.test(t) ? definitions.opTypeNames[t] : t.toUpperCase(); - } - - Np.toString = function () { - var a = []; - for (var i in this) { - if (this.hasOwnProperty(i) && i !== 'type' && i !== 'target') - a.push({id: i, value: this[i]}); - } - a.sort(function (a,b) { return (a.id < b.id) ? -1 : 1; }); - const INDENTATION = " "; - var n = ++Node.indentLevel; - var s = "{\n" + INDENTATION.repeat(n) + "type: " + tokenString(this.type); - for (i = 0; i < a.length; i++) - s += ",\n" + INDENTATION.repeat(n) + a[i].id + ": " + a[i].value; - n = --Node.indentLevel; - s += "\n" + INDENTATION.repeat(n) + "}"; - return s; - } - - Np.getSource = function () { - return this.tokenizer.source.slice(this.start, this.end); - }; - - /* - * Helper init objects for common nodes. - */ - - const LOOP_INIT = { isLoop: true }; - - function blockInit() { - return { type: BLOCK, varDecls: [] }; - } - - function scriptInit() { - return { type: SCRIPT, - funDecls: [], - varDecls: [], - modDefns: new StringMap(), - modAssns: new StringMap(), - modDecls: new StringMap(), - modLoads: new StringMap(), - impDecls: [], - expDecls: [], - exports: new StringMap(), - hasEmptyReturn: false, - hasReturnWithValue: false, - isGenerator: false }; - } - - definitions.defineGetter(Np, "filename", - function() { - return this.tokenizer.filename; - }); - - definitions.defineGetter(Np, "length", - function() { - throw new Error("Node.prototype.length is gone; " + - "use n.children.length instead"); - }); - - definitions.defineProperty(String.prototype, "repeat", - function(n) { - var s = "", t = this + s; - while (--n >= 0) - s += t; - return s; - }, false, false, true); - - function MaybeLeftParen(t, x) { - if (x.parenFreeMode) - return t.match(LEFT_PAREN) ? LEFT_PAREN : END; - return t.mustMatch(LEFT_PAREN).type; - } - - function MaybeRightParen(t, p) { - if (p === LEFT_PAREN) - t.mustMatch(RIGHT_PAREN); - } - - /* - * Statements :: (tokenizer, compiler context, node) -> void - * - * Parses a sequence of Statements. - */ - function Statements(t, x, n) { - try { - while (!t.done && t.peek(true) !== RIGHT_CURLY) - n.push(Statement(t, x)); - } catch (e) { - if (t.done) - t.unexpectedEOF = true; - throw e; - } - } - - function Block(t, x) { - t.mustMatch(LEFT_CURLY); - var n = new Node(t, blockInit()); - Statements(t, x.update({ parentBlock: n }).pushTarget(n), n); - t.mustMatch(RIGHT_CURLY); - return n; - } - - const DECLARED_FORM = 0, EXPRESSED_FORM = 1, STATEMENT_FORM = 2; - - /* - * Export :: (binding node, boolean) -> Export - * - * Static semantic representation of a module export. - */ - function Export(node, isDefinition) { - this.node = node; // the AST node declaring this individual export - this.isDefinition = isDefinition; // is the node an 'export'-annotated definition? - this.resolved = null; // resolved pointer to the target of this export - } - - /* - * registerExport :: (StringMap, EXPORT node) -> void - */ - function registerExport(exports, decl) { - function register(name, exp) { - if (exports.has(name)) - throw new SyntaxError("multiple exports of " + name); - exports.set(name, exp); - } - - switch (decl.type) { - case MODULE: - case FUNCTION: - register(decl.name, new Export(decl, true)); - break; - - case VAR: - for (var i = 0; i < decl.children.length; i++) - register(decl.children[i].name, new Export(decl.children[i], true)); - break; - - case LET: - case CONST: - throw new Error("NYI: " + definitions.tokens[decl.type]); - - case EXPORT: - for (var i = 0; i < decl.pathList.length; i++) { - var path = decl.pathList[i]; - switch (path.type) { - case OBJECT_INIT: - for (var j = 0; j < path.children.length; j++) { - // init :: IDENTIFIER | PROPERTY_INIT - var init = path.children[j]; - if (init.type === IDENTIFIER) - register(init.value, new Export(init, false)); - else - register(init.children[0].value, new Export(init.children[1], false)); - } - break; - - case DOT: - register(path.children[1].value, new Export(path, false)); - break; - - case IDENTIFIER: - register(path.value, new Export(path, false)); - break; - - default: - throw new Error("unexpected export path: " + definitions.tokens[path.type]); - } - } - break; - - default: - throw new Error("unexpected export decl: " + definitions.tokens[exp.type]); - } - } - - /* - * Module :: (node) -> Module - * - * Static semantic representation of a module. - */ - function Module(node) { - var exports = node.body.exports; - var modDefns = node.body.modDefns; - - var exportedModules = new StringMap(); - - exports.forEach(function(name, exp) { - var node = exp.node; - if (node.type === MODULE) { - exportedModules.set(name, node); - } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) { - var mod = modDefns.get(node.value); - exportedModules.set(name, mod); - } - }); - - this.node = node; - this.exports = exports; - this.exportedModules = exportedModules; - } - - /* - * Statement :: (tokenizer, compiler context) -> node - * - * Parses a Statement. - */ - function Statement(t, x) { - var i, label, n, n2, p, c, ss, tt = t.get(true), tt2, x2, x3; - - var comments = t.blockComments; - - if (x.blackList[tt]) - throw t.newSyntaxError(definitions.tokens[tt] + " statements only allowed in Harmony"); - if (!x.allow(tt)) - throw t.newSyntaxError(definitions.tokens[tt] + " statement in illegal context"); - - // Cases for statements ending in a right curly return early, avoiding the - // common semicolon insertion magic after this switch. - switch (tt) { - case IMPORT: - n = new Node(t); - n.pathList = ImportPathList(t, x); - x.parentScript.impDecls.push(n); - n.blockComments = comments; - break; - - case EXPORT: - switch (t.peek()) { - case MODULE: - case FUNCTION: - case LET: - case VAR: - case CONST: - n = Statement(t, x); - n.blockComments = comments; - n.exported = true; - x.parentScript.expDecls.push(n); - registerExport(x.parentScript.exports, n); - return n; - - default: - n = new Node(t); - n.blockComments = comments; - n.pathList = ExportPathList(t, x); - break; - } - x.parentScript.expDecls.push(n); - registerExport(x.parentScript.exports, n); - break; - - case MODULE: - n = new Node(t); - n.blockComments = comments; - t.mustMatch(IDENTIFIER); - label = t.token.value; - - if (t.match(LEFT_CURLY)) { - n.name = label; - n.body = Script(t, true, false); - n.module = new Module(n); - t.mustMatch(RIGHT_CURLY); - x.parentScript.modDefns.set(n.name, n); - return n; - } - - t.unget(); - ModuleVariables(t, x, n); - return n; - - case FUNCTION: - // DECLARED_FORM extends funDecls of x, STATEMENT_FORM doesn't. - return FunctionDefinition(t, x, true, x.topLevel ? DECLARED_FORM : STATEMENT_FORM, comments); - - case LEFT_CURLY: - n = new Node(t, blockInit()); - n.blockComments = comments; - Statements(t, x.update({ parentBlock: n }).pushTarget(n).nest(), n); - t.mustMatch(RIGHT_CURLY); - return n; - - case IF: - n = new Node(t); - n.blockComments = comments; - n.condition = HeadExpression(t, x); - x2 = x.pushTarget(n).nest(); - n.thenPart = Statement(t, x2); - n.elsePart = t.match(ELSE, true) ? Statement(t, x2) : null; - return n; - - case SWITCH: - // This allows CASEs after a DEFAULT, which is in the standard. - n = new Node(t, { cases: [], defaultIndex: -1 }); - n.blockComments = comments; - n.discriminant = HeadExpression(t, x); - x2 = x.pushTarget(n).nest(); - t.mustMatch(LEFT_CURLY); - while ((tt = t.get()) !== RIGHT_CURLY) { - switch (tt) { - case DEFAULT: - if (n.defaultIndex >= 0) - throw t.newSyntaxError("More than one switch default"); - // FALL THROUGH - case CASE: - n2 = new Node(t); - if (tt === DEFAULT) - n.defaultIndex = n.cases.length; - else - n2.caseLabel = Expression(t, x2, COLON); - break; - - default: - throw t.newSyntaxError("Invalid switch case"); - } - t.mustMatch(COLON); - n2.statements = new Node(t, blockInit()); - while ((tt=t.peek(true)) !== CASE && tt !== DEFAULT && - tt !== RIGHT_CURLY) - n2.statements.push(Statement(t, x2)); - n.cases.push(n2); - } - return n; - - case FOR: - n = new Node(t, LOOP_INIT); - n.blockComments = comments; - if (t.match(IDENTIFIER)) { - if (t.token.value === "each") - n.isEach = true; - else - t.unget(); - } - if (!x.parenFreeMode) - t.mustMatch(LEFT_PAREN); - x2 = x.pushTarget(n).nest(); - x3 = x.update({ inForLoopInit: true }); - n2 = null; - if ((tt = t.peek(true)) !== SEMICOLON) { - if (tt === VAR || tt === CONST) { - t.get(); - n2 = Variables(t, x3); - } else if (tt === LET) { - t.get(); - if (t.peek() === LEFT_PAREN) { - n2 = LetBlock(t, x3, false); - } else { - // Let in for head, we need to add an implicit block - // around the rest of the for. - x3.parentBlock = n; - n.varDecls = []; - n2 = Variables(t, x3); - } - } else { - n2 = Expression(t, x3); - } - } - if (n2 && t.match(IN)) { - n.type = FOR_IN; - n.object = Expression(t, x3); - if (n2.type === VAR || n2.type === LET) { - c = n2.children; - - // Destructuring turns one decl into multiples, so either - // there must be only one destructuring or only one - // decl. - if (c.length !== 1 && n2.destructurings.length !== 1) { - throw new SyntaxError("Invalid for..in left-hand side", - t.filename, n2.lineno); - } - if (n2.destructurings.length > 0) { - n.iterator = n2.destructurings[0]; - } else { - n.iterator = c[0]; - } - n.varDecl = n2; - } else { - if (n2.type === ARRAY_INIT || n2.type === OBJECT_INIT) { - n2.destructuredNames = checkDestructuring(t, x3, n2); - } - n.iterator = n2; - } - } else { - x3.inForLoopInit = false; - n.setup = n2; - t.mustMatch(SEMICOLON); - if (n.isEach) - throw t.newSyntaxError("Invalid for each..in loop"); - n.condition = (t.peek(true) === SEMICOLON) - ? null - : Expression(t, x3); - t.mustMatch(SEMICOLON); - tt2 = t.peek(true); - n.update = (x.parenFreeMode - ? tt2 === LEFT_CURLY || definitions.isStatementStartCode[tt2] - : tt2 === RIGHT_PAREN) - ? null - : Expression(t, x3); - } - if (!x.parenFreeMode) - t.mustMatch(RIGHT_PAREN); - n.body = Statement(t, x2); - return n; - - case WHILE: - n = new Node(t, { isLoop: true }); - n.blockComments = comments; - n.condition = HeadExpression(t, x); - n.body = Statement(t, x.pushTarget(n).nest()); - return n; - - case DO: - n = new Node(t, { isLoop: true }); - n.blockComments = comments; - n.body = Statement(t, x.pushTarget(n).nest()); - t.mustMatch(WHILE); - n.condition = HeadExpression(t, x); - if (!x.ecmaStrictMode) { - // <script language="JavaScript"> (without version hints) may need - // automatic semicolon insertion without a newline after do-while. - // See http://bugzilla.mozilla.org/show_bug.cgi?id=238945. - t.match(SEMICOLON); - return n; - } - break; - - case BREAK: - case CONTINUE: - n = new Node(t); - n.blockComments = comments; - - // handle the |foo: break foo;| corner case - x2 = x.pushTarget(n); - - if (t.peekOnSameLine() === IDENTIFIER) { - t.get(); - n.label = t.token.value; - } - - if (n.label) { - n.target = x2.labeledTargets.find(function(target) { return target.labels.has(n.label) }); - } else if (tt === CONTINUE) { - n.target = x2.defaultLoopTarget; - } else { - n.target = x2.defaultTarget; - } - - if (!n.target) - throw t.newSyntaxError("Invalid " + ((tt === BREAK) ? "break" : "continue")); - if (!n.target.isLoop && tt === CONTINUE) - throw t.newSyntaxError("Invalid continue"); - - break; - - case TRY: - n = new Node(t, { catchClauses: [] }); - n.blockComments = comments; - n.tryBlock = Block(t, x); - while (t.match(CATCH)) { - n2 = new Node(t); - p = MaybeLeftParen(t, x); - switch (t.get()) { - case LEFT_BRACKET: - case LEFT_CURLY: - // Destructured catch identifiers. - t.unget(); - n2.varName = DestructuringExpression(t, x, true); - break; - case IDENTIFIER: - n2.varName = t.token.value; - break; - default: - throw t.newSyntaxError("missing identifier in catch"); - break; - } - if (t.match(IF)) { - if (x.ecma3OnlyMode) - throw t.newSyntaxError("Illegal catch guard"); - if (n.catchClauses.length && !n.catchClauses.top().guard) - throw t.newSyntaxError("Guarded catch after unguarded"); - n2.guard = Expression(t, x); - } - MaybeRightParen(t, p); - n2.block = Block(t, x); - n.catchClauses.push(n2); - } - if (t.match(FINALLY)) - n.finallyBlock = Block(t, x); - if (!n.catchClauses.length && !n.finallyBlock) - throw t.newSyntaxError("Invalid try statement"); - return n; - - case CATCH: - case FINALLY: - throw t.newSyntaxError(definitions.tokens[tt] + " without preceding try"); - - case THROW: - n = new Node(t); - n.blockComments = comments; - n.exception = Expression(t, x); - break; - - case RETURN: - n = ReturnOrYield(t, x); - break; - - case WITH: - n = new Node(t); - n.blockComments = comments; - n.object = HeadExpression(t, x); - n.body = Statement(t, x.pushTarget(n).nest()); - return n; - - case VAR: - case CONST: - n = Variables(t, x); - break; - - case LET: - if (t.peek() === LEFT_PAREN) - n = LetBlock(t, x, true); - else - n = Variables(t, x); - break; - - case DEBUGGER: - n = new Node(t); - n.blockComments = comments; - break; - - case NEWLINE: - case SEMICOLON: - n = new Node(t, { type: SEMICOLON }); - n.blockComments = comments; - n.expression = null; - return n; - - default: - if (tt === IDENTIFIER) { - tt = t.peek(); - // Labeled statement. - if (tt === COLON) { - label = t.token.value; - if (x.allLabels.has(label)) - throw t.newSyntaxError("Duplicate label"); - t.get(); - n = new Node(t, { type: LABEL, label: label }); - n.blockComments = comments; - n.statement = Statement(t, x.pushLabel(label).nest()); - n.target = (n.statement.type === LABEL) ? n.statement.target : n.statement; - return n; - } - } - - // Expression statement. - // We unget the current token to parse the expression as a whole. - n = new Node(t, { type: SEMICOLON }); - t.unget(); - n.blockComments = comments; - n.expression = Expression(t, x); - n.end = n.expression.end; - break; - } - - n.blockComments = comments; - MagicalSemicolon(t); - return n; - } - - /* - * MagicalSemicolon :: (tokenizer) -> void - */ - function MagicalSemicolon(t) { - var tt; - if (t.lineno === t.token.lineno) { - tt = t.peekOnSameLine(); - if (tt !== END && tt !== NEWLINE && tt !== SEMICOLON && tt !== RIGHT_CURLY) - throw t.newSyntaxError("missing ; before statement"); - } - t.match(SEMICOLON); - } - - /* - * ReturnOrYield :: (tokenizer, compiler context) -> (RETURN | YIELD) node - */ - function ReturnOrYield(t, x) { - var n, b, tt = t.token.type, tt2; - - var parentScript = x.parentScript; - - if (tt === RETURN) { - if (!x.inFunction) { - // pass - //throw t.newSyntaxError("Return not in function"); - } - - } else /* if (tt === YIELD) */ { - if (!x.inFunction) - throw t.newSyntaxError("Yield not in function"); - parentScript.isGenerator = true; - } - n = new Node(t, { value: undefined }); - - tt2 = (tt === RETURN) ? t.peekOnSameLine(true) : t.peek(true); - if (tt2 !== END && tt2 !== NEWLINE && - tt2 !== SEMICOLON && tt2 !== RIGHT_CURLY - && (tt !== YIELD || - (tt2 !== tt && tt2 !== RIGHT_BRACKET && tt2 !== RIGHT_PAREN && - tt2 !== COLON && tt2 !== COMMA))) { - if (tt === RETURN) { - n.value = Expression(t, x); - parentScript.hasReturnWithValue = true; - } else { - n.value = AssignExpression(t, x); - } - } else if (tt === RETURN) { - parentScript.hasEmptyReturn = true; - } - - // Disallow return v; in generator. - if (parentScript.hasReturnWithValue && parentScript.isGenerator) - throw t.newSyntaxError("Generator returns a value"); - - return n; - } - - /* - * ModuleExpression :: (tokenizer, compiler context) -> (STRING | IDENTIFIER | DOT) node - */ - function ModuleExpression(t, x) { - return t.match(STRING) ? new Node(t) : QualifiedPath(t, x); - } - - /* - * ImportPathList :: (tokenizer, compiler context) -> Array[DOT node] - */ - function ImportPathList(t, x) { - var a = []; - do { - a.push(ImportPath(t, x)); - } while (t.match(COMMA)); - return a; - } - - /* - * ImportPath :: (tokenizer, compiler context) -> DOT node - */ - function ImportPath(t, x) { - var n = QualifiedPath(t, x); - if (!t.match(DOT)) { - if (n.type === IDENTIFIER) - throw t.newSyntaxError("cannot import local variable"); - return n; - } - - var n2 = new Node(t); - n2.push(n); - n2.push(ImportSpecifierSet(t, x)); - return n2; - } - - /* - * ExplicitSpecifierSet :: (tokenizer, compiler context, (tokenizer, compiler context) -> node) - * -> OBJECT_INIT node - */ - function ExplicitSpecifierSet(t, x, SpecifierRHS) { - var n, n2, id, tt; - - n = new Node(t, { type: OBJECT_INIT }); - t.mustMatch(LEFT_CURLY); - - if (!t.match(RIGHT_CURLY)) { - do { - id = Identifier(t, x); - if (t.match(COLON)) { - n2 = new Node(t, { type: PROPERTY_INIT }); - n2.push(id); - n2.push(SpecifierRHS(t, x)); - n.push(n2); - } else { - n.push(id); - } - } while (!t.match(RIGHT_CURLY) && t.mustMatch(COMMA)); - } - - return n; - } - - /* - * ImportSpecifierSet :: (tokenizer, compiler context) -> (IDENTIFIER | OBJECT_INIT) node - */ - function ImportSpecifierSet(t, x) { - return t.match(MUL) - ? new Node(t, { type: IDENTIFIER, name: "*" }) - : ExplicitSpecifierSet(t, x, Identifier); - } - - /* - * Identifier :: (tokenizer, compiler context) -> IDENTIFIER node - */ - function Identifier(t, x) { - t.mustMatch(IDENTIFIER); - return new Node(t, { type: IDENTIFIER }); - } - - /* - * IdentifierName :: (tokenizer) -> IDENTIFIER node - */ - function IdentifierName(t) { - if (t.match(IDENTIFIER)) - return new Node(t, { type: IDENTIFIER }); - t.get(); - if (t.token.value in definitions.keywords) - return new Node(t, { type: IDENTIFIER }); - throw t.newSyntaxError("missing IdentifierName"); - } - - /* - * QualifiedPath :: (tokenizer, compiler context) -> (IDENTIFIER | DOT) node - */ - function QualifiedPath(t, x) { - var n, n2; - - n = Identifier(t, x); - - while (t.match(DOT)) { - if (t.peek() !== IDENTIFIER) { - // Unget the '.' token, which isn't part of the QualifiedPath. - t.unget(); - break; - } - n2 = new Node(t); - n2.push(n); - n2.push(Identifier(t, x)); - n = n2; - } - - return n; - } - - /* - * ExportPath :: (tokenizer, compiler context) -> (IDENTIFIER | DOT | OBJECT_INIT) node - */ - function ExportPath(t, x) { - if (t.peek() === LEFT_CURLY) - return ExplicitSpecifierSet(t, x, QualifiedPath); - return QualifiedPath(t, x); - } - - /* - * ExportPathList :: (tokenizer, compiler context) - * -> Array[(IDENTIFIER | DOT | OBJECT_INIT) node] - */ - function ExportPathList(t, x) { - var a = []; - do { - a.push(ExportPath(t, x)); - } while (t.match(COMMA)); - return a; - } - - /* - * FunctionDefinition :: (tokenizer, compiler context, boolean, - * DECLARED_FORM or EXPRESSED_FORM or STATEMENT_FORM, - * [string] or null or undefined) - * -> node - */ - function FunctionDefinition(t, x, requireName, functionForm, comments) { - var tt; - var f = new Node(t, { params: [], paramComments: [] }); - if (typeof comment === "undefined") - comment = null; - f.blockComments = comments; - if (f.type !== FUNCTION) - f.type = (f.value === "get") ? GETTER : SETTER; - if (t.match(IDENTIFIER)) - f.name = t.token.value; - else if (requireName) - throw t.newSyntaxError("missing function identifier"); - - var inModule = x ? x.inModule : false; - var x2 = new StaticContext(null, null, inModule, true); - - t.mustMatch(LEFT_PAREN); - if (!t.match(RIGHT_PAREN)) { - do { - tt = t.get(); - f.paramComments.push(t.lastBlockComment()); - switch (tt) { - case LEFT_BRACKET: - case LEFT_CURLY: - // Destructured formal parameters. - t.unget(); - f.params.push(DestructuringExpression(t, x2)); - break; - case IDENTIFIER: - f.params.push(t.token.value); - break; - default: - throw t.newSyntaxError("missing formal parameter"); - break; - } - } while (t.match(COMMA)); - t.mustMatch(RIGHT_PAREN); - } - - // Do we have an expression closure or a normal body? - tt = t.get(); - if (tt !== LEFT_CURLY) - t.unget(); - - if (tt !== LEFT_CURLY) { - f.body = AssignExpression(t, x2); - if (f.body.isGenerator) - throw t.newSyntaxError("Generator returns a value"); - } else { - f.body = Script(t, inModule, true); - } - - if (tt === LEFT_CURLY) - t.mustMatch(RIGHT_CURLY); - - f.end = t.token.end; - f.functionForm = functionForm; - if (functionForm === DECLARED_FORM) - x.parentScript.funDecls.push(f); - return f; - } - - /* - * ModuleVariables :: (tokenizer, compiler context, MODULE node) -> void - * - * Parses a comma-separated list of module declarations (and maybe - * initializations). - */ - function ModuleVariables(t, x, n) { - var n1, n2; - do { - n1 = Identifier(t, x); - if (t.match(ASSIGN)) { - n2 = ModuleExpression(t, x); - n1.initializer = n2; - if (n2.type === STRING) - x.parentScript.modLoads.set(n1.value, n2.value); - else - x.parentScript.modAssns.set(n1.value, n1); - } - n.push(n1); - } while (t.match(COMMA)); - } - - /* - * Variables :: (tokenizer, compiler context) -> node - * - * Parses a comma-separated list of var declarations (and maybe - * initializations). - */ - function Variables(t, x, letBlock) { - var n, n2, ss, i, s, tt; - - tt = t.token.type; - switch (tt) { - case VAR: - case CONST: - s = x.parentScript; - break; - case LET: - s = x.parentBlock; - break; - case LEFT_PAREN: - tt = LET; - s = letBlock; - break; - } - - n = new Node(t, { type: tt, destructurings: [] }); - - do { - tt = t.get(); - if (tt === LEFT_BRACKET || tt === LEFT_CURLY) { - // Need to unget to parse the full destructured expression. - t.unget(); - - var dexp = DestructuringExpression(t, x, true); - - n2 = new Node(t, { type: IDENTIFIER, - name: dexp, - readOnly: n.type === CONST }); - n.push(n2); - pushDestructuringVarDecls(n2.name.destructuredNames, s); - n.destructurings.push({ exp: dexp, decl: n2 }); - - if (x.inForLoopInit && t.peek() === IN) { - continue; - } - - t.mustMatch(ASSIGN); - if (t.token.assignOp) - throw t.newSyntaxError("Invalid variable initialization"); - - n2.blockComment = t.lastBlockComment(); - n2.initializer = AssignExpression(t, x); - - continue; - } - - if (tt !== IDENTIFIER) - throw t.newSyntaxError("missing variable name"); - - n2 = new Node(t, { type: IDENTIFIER, - name: t.token.value, - readOnly: n.type === CONST }); - n.push(n2); - s.varDecls.push(n2); - - if (t.match(ASSIGN)) { - var comment = t.lastBlockComment(); - if (t.token.assignOp) - throw t.newSyntaxError("Invalid variable initialization"); - - n2.initializer = AssignExpression(t, x); - } else { - var comment = t.lastBlockComment(); - } - n2.blockComment = comment; - } while (t.match(COMMA)); - - return n; - } - - /* - * LetBlock :: (tokenizer, compiler context, boolean) -> node - * - * Does not handle let inside of for loop init. - */ - function LetBlock(t, x, isStatement) { - var n, n2; - - // t.token.type must be LET - n = new Node(t, { type: LET_BLOCK, varDecls: [] }); - t.mustMatch(LEFT_PAREN); - n.variables = Variables(t, x, n); - t.mustMatch(RIGHT_PAREN); - - if (isStatement && t.peek() !== LEFT_CURLY) { - /* - * If this is really an expression in let statement guise, then we - * need to wrap the LET_BLOCK node in a SEMICOLON node so that we pop - * the return value of the expression. - */ - n2 = new Node(t, { type: SEMICOLON, - expression: n }); - isStatement = false; - } - - if (isStatement) - n.block = Block(t, x); - else - n.expression = AssignExpression(t, x); - - return n; - } - - function checkDestructuring(t, x, n, simpleNamesOnly) { - if (n.type === ARRAY_COMP) - throw t.newSyntaxError("Invalid array comprehension left-hand side"); - if (n.type !== ARRAY_INIT && n.type !== OBJECT_INIT) - return undefined; - - var lhss = {}; - var nn, n2, idx, sub, cc, c = n.children; - for (var i = 0, j = c.length; i < j; i++) { - if (!(nn = c[i])) - continue; - if (nn.type === PROPERTY_INIT) { - cc = nn.children; - sub = cc[1]; - idx = cc[0].value; - } else if (n.type === OBJECT_INIT) { - // Do we have destructuring shorthand {foo, bar}? - sub = nn; - idx = nn.value; - } else { - sub = nn; - idx = i; - } - - if (sub.type === ARRAY_INIT || sub.type === OBJECT_INIT) { - lhss[idx] = checkDestructuring(t, x, sub, simpleNamesOnly); - } else { - if (simpleNamesOnly && sub.type !== IDENTIFIER) { - // In declarations, lhs must be simple names - throw t.newSyntaxError("missing name in pattern"); - } - - lhss[idx] = sub; - } - } - - return lhss; - } - - function DestructuringExpression(t, x, simpleNamesOnly) { - var n = PrimaryExpression(t, x); - // Keep the list of lefthand sides for varDecls - n.destructuredNames = checkDestructuring(t, x, n, simpleNamesOnly); - return n; - } - - function GeneratorExpression(t, x, e) { - return new Node(t, { type: GENERATOR, - expression: e, - tail: ComprehensionTail(t, x) }); - } - - function ComprehensionTail(t, x) { - var body, n, n2, n3, p; - - // t.token.type must be FOR - body = new Node(t, { type: COMP_TAIL }); - - do { - // Comprehension tails are always for..in loops. - n = new Node(t, { type: FOR_IN, isLoop: true }); - if (t.match(IDENTIFIER)) { - // But sometimes they're for each..in. - if (t.token.value === "each") - n.isEach = true; - else - t.unget(); - } - p = MaybeLeftParen(t, x); - switch(t.get()) { - case LEFT_BRACKET: - case LEFT_CURLY: - t.unget(); - // Destructured left side of for in comprehension tails. - n.iterator = DestructuringExpression(t, x); - break; - - case IDENTIFIER: - n.iterator = n3 = new Node(t, { type: IDENTIFIER }); - n3.name = n3.value; - n.varDecl = n2 = new Node(t, { type: VAR }); - n2.push(n3); - x.parentScript.varDecls.push(n3); - // Don't add to varDecls since the semantics of comprehensions is - // such that the variables are in their own function when - // desugared. - break; - - default: - throw t.newSyntaxError("missing identifier"); - } - t.mustMatch(IN); - n.object = Expression(t, x); - MaybeRightParen(t, p); - body.push(n); - } while (t.match(FOR)); - - // Optional guard. - if (t.match(IF)) - body.guard = HeadExpression(t, x); - - return body; - } - - function HeadExpression(t, x) { - var p = MaybeLeftParen(t, x); - var n = ParenExpression(t, x); - MaybeRightParen(t, p); - if (p === END && !n.parenthesized) { - var tt = t.peek(); - if (tt !== LEFT_CURLY && !definitions.isStatementStartCode[tt]) - throw t.newSyntaxError("Unparenthesized head followed by unbraced body"); - } - return n; - } - - function ParenExpression(t, x) { - // Always accept the 'in' operator in a parenthesized expression, - // where it's unambiguous, even if we might be parsing the init of a - // for statement. - var n = Expression(t, x.update({ inForLoopInit: x.inForLoopInit && - (t.token.type === LEFT_PAREN) })); - - if (t.match(FOR)) { - if (n.type === YIELD && !n.parenthesized) - throw t.newSyntaxError("Yield expression must be parenthesized"); - if (n.type === COMMA && !n.parenthesized) - throw t.newSyntaxError("Generator expression must be parenthesized"); - n = GeneratorExpression(t, x, n); - } - - return n; - } - - /* - * Expression :: (tokenizer, compiler context) -> node - * - * Top-down expression parser matched against SpiderMonkey. - */ - function Expression(t, x) { - var n, n2; - - n = AssignExpression(t, x); - if (t.match(COMMA)) { - n2 = new Node(t, { type: COMMA }); - n2.push(n); - n = n2; - do { - n2 = n.children[n.children.length-1]; - if (n2.type === YIELD && !n2.parenthesized) - throw t.newSyntaxError("Yield expression must be parenthesized"); - n.push(AssignExpression(t, x)); - } while (t.match(COMMA)); - } - - return n; - } - - function AssignExpression(t, x) { - var n, lhs; - - // Have to treat yield like an operand because it could be the leftmost - // operand of the expression. - if (t.match(YIELD, true)) - return ReturnOrYield(t, x); - - n = new Node(t, { type: ASSIGN }); - lhs = ConditionalExpression(t, x); - - if (!t.match(ASSIGN)) { - return lhs; - } - - n.blockComment = t.lastBlockComment(); - - switch (lhs.type) { - case OBJECT_INIT: - case ARRAY_INIT: - lhs.destructuredNames = checkDestructuring(t, x, lhs); - // FALL THROUGH - case IDENTIFIER: case DOT: case INDEX: case CALL: - break; - default: - throw t.newSyntaxError("Bad left-hand side of assignment"); - break; - } - - n.assignOp = lhs.assignOp = t.token.assignOp; - n.push(lhs); - n.push(AssignExpression(t, x)); - - return n; - } - - function ConditionalExpression(t, x) { - var n, n2; - - n = OrExpression(t, x); - if (t.match(HOOK)) { - n2 = n; - n = new Node(t, { type: HOOK }); - n.push(n2); - /* - * Always accept the 'in' operator in the middle clause of a ternary, - * where it's unambiguous, even if we might be parsing the init of a - * for statement. - */ - n.push(AssignExpression(t, x.update({ inForLoopInit: false }))); - if (!t.match(COLON)) - throw t.newSyntaxError("missing : after ?"); - n.push(AssignExpression(t, x)); - } - - return n; - } - - function OrExpression(t, x) { - var n, n2; - - n = AndExpression(t, x); - while (t.match(OR)) { - n2 = new Node(t); - n2.push(n); - n2.push(AndExpression(t, x)); - n = n2; - } - - return n; - } - - function AndExpression(t, x) { - var n, n2; - - n = BitwiseOrExpression(t, x); - while (t.match(AND)) { - n2 = new Node(t); - n2.push(n); - n2.push(BitwiseOrExpression(t, x)); - n = n2; - } - - return n; - } - - function BitwiseOrExpression(t, x) { - var n, n2; - - n = BitwiseXorExpression(t, x); - while (t.match(BITWISE_OR)) { - n2 = new Node(t); - n2.push(n); - n2.push(BitwiseXorExpression(t, x)); - n = n2; - } - - return n; - } - - function BitwiseXorExpression(t, x) { - var n, n2; - - n = BitwiseAndExpression(t, x); - while (t.match(BITWISE_XOR)) { - n2 = new Node(t); - n2.push(n); - n2.push(BitwiseAndExpression(t, x)); - n = n2; - } - - return n; - } - - function BitwiseAndExpression(t, x) { - var n, n2; - - n = EqualityExpression(t, x); - while (t.match(BITWISE_AND)) { - n2 = new Node(t); - n2.push(n); - n2.push(EqualityExpression(t, x)); - n = n2; - } - - return n; - } - - function EqualityExpression(t, x) { - var n, n2; - - n = RelationalExpression(t, x); - while (t.match(EQ) || t.match(NE) || - t.match(STRICT_EQ) || t.match(STRICT_NE)) { - n2 = new Node(t); - n2.push(n); - n2.push(RelationalExpression(t, x)); - n = n2; - } - - return n; - } - - function RelationalExpression(t, x) { - var n, n2; - - /* - * Uses of the in operator in shiftExprs are always unambiguous, - * so unset the flag that prohibits recognizing it. - */ - var x2 = x.update({ inForLoopInit: false }); - n = ShiftExpression(t, x2); - while ((t.match(LT) || t.match(LE) || t.match(GE) || t.match(GT) || - (!x.inForLoopInit && t.match(IN)) || - t.match(INSTANCEOF))) { - n2 = new Node(t); - n2.push(n); - n2.push(ShiftExpression(t, x2)); - n = n2; - } - - return n; - } - - function ShiftExpression(t, x) { - var n, n2; - - n = AddExpression(t, x); - while (t.match(LSH) || t.match(RSH) || t.match(URSH)) { - n2 = new Node(t); - n2.push(n); - n2.push(AddExpression(t, x)); - n = n2; - } - - return n; - } - - function AddExpression(t, x) { - var n, n2; - - n = MultiplyExpression(t, x); - while (t.match(PLUS) || t.match(MINUS)) { - n2 = new Node(t); - n2.push(n); - n2.push(MultiplyExpression(t, x)); - n = n2; - } - - return n; - } - - function MultiplyExpression(t, x) { - var n, n2; - - n = UnaryExpression(t, x); - while (t.match(MUL) || t.match(DIV) || t.match(MOD)) { - n2 = new Node(t); - n2.push(n); - n2.push(UnaryExpression(t, x)); - n = n2; - } - - return n; - } - - function UnaryExpression(t, x) { - var n, n2, tt; - - switch (tt = t.get(true)) { - case DELETE: case VOID: case TYPEOF: - case NOT: case BITWISE_NOT: case PLUS: case MINUS: - if (tt === PLUS) - n = new Node(t, { type: UNARY_PLUS }); - else if (tt === MINUS) - n = new Node(t, { type: UNARY_MINUS }); - else - n = new Node(t); - n.push(UnaryExpression(t, x)); - break; - - case INCREMENT: - case DECREMENT: - // Prefix increment/decrement. - n = new Node(t); - n.push(MemberExpression(t, x, true)); - break; - - default: - t.unget(); - n = MemberExpression(t, x, true); - - // Don't look across a newline boundary for a postfix {in,de}crement. - if (t.tokens[(t.tokenIndex + t.lookahead - 1) & 3].lineno === - t.lineno) { - if (t.match(INCREMENT) || t.match(DECREMENT)) { - n2 = new Node(t, { postfix: true }); - n2.push(n); - n = n2; - } - } - break; - } - - return n; - } - - function MemberExpression(t, x, allowCallSyntax) { - var n, n2, name, tt; - - if (t.match(NEW)) { - n = new Node(t); - n.push(MemberExpression(t, x, false)); - if (t.match(LEFT_PAREN)) { - n.type = NEW_WITH_ARGS; - n.push(ArgumentList(t, x)); - } - } else { - n = PrimaryExpression(t, x); - } - - while ((tt = t.get()) !== END) { - switch (tt) { - case DOT: - n2 = new Node(t); - n2.push(n); - n2.push(IdentifierName(t)); - break; - - case LEFT_BRACKET: - n2 = new Node(t, { type: INDEX }); - n2.push(n); - n2.push(Expression(t, x)); - t.mustMatch(RIGHT_BRACKET); - break; - - case LEFT_PAREN: - if (allowCallSyntax) { - n2 = new Node(t, { type: CALL }); - n2.push(n); - n2.push(ArgumentList(t, x)); - break; - } - - // FALL THROUGH - default: - t.unget(); - return n; - } - - n = n2; - } - - return n; - } - - function ArgumentList(t, x) { - var n, n2; - - n = new Node(t, { type: LIST }); - if (t.match(RIGHT_PAREN, true)) - return n; - do { - n2 = AssignExpression(t, x); - if (n2.type === YIELD && !n2.parenthesized && t.peek() === COMMA) - throw t.newSyntaxError("Yield expression must be parenthesized"); - if (t.match(FOR)) { - n2 = GeneratorExpression(t, x, n2); - if (n.children.length > 1 || t.peek(true) === COMMA) - throw t.newSyntaxError("Generator expression must be parenthesized"); - } - n.push(n2); - } while (t.match(COMMA)); - t.mustMatch(RIGHT_PAREN); - - return n; - } - - function PrimaryExpression(t, x) { - var n, n2, tt = t.get(true); - - switch (tt) { - case FUNCTION: - n = FunctionDefinition(t, x, false, EXPRESSED_FORM); - break; - - case LEFT_BRACKET: - n = new Node(t, { type: ARRAY_INIT }); - while ((tt = t.peek(true)) !== RIGHT_BRACKET) { - if (tt === COMMA) { - t.get(); - n.push(null); - continue; - } - n.push(AssignExpression(t, x)); - if (tt !== COMMA && !t.match(COMMA)) - break; - } - - // If we matched exactly one element and got a FOR, we have an - // array comprehension. - if (n.children.length === 1 && t.match(FOR)) { - n2 = new Node(t, { type: ARRAY_COMP, - expression: n.children[0], - tail: ComprehensionTail(t, x) }); - n = n2; - } - t.mustMatch(RIGHT_BRACKET); - break; - - case LEFT_CURLY: - var id, fd; - n = new Node(t, { type: OBJECT_INIT }); - - object_init: - if (!t.match(RIGHT_CURLY)) { - do { - tt = t.get(); - if ((t.token.value === "get" || t.token.value === "set") && - t.peek() === IDENTIFIER) { - if (x.ecma3OnlyMode) - throw t.newSyntaxError("Illegal property accessor"); - n.push(FunctionDefinition(t, x, true, EXPRESSED_FORM)); - } else { - var comments = t.blockComments; - switch (tt) { - case IDENTIFIER: case NUMBER: case STRING: - id = new Node(t, { type: IDENTIFIER }); - break; - case RIGHT_CURLY: - if (x.ecma3OnlyMode) - throw t.newSyntaxError("Illegal trailing ,"); - break object_init; - default: - if (t.token.value in definitions.keywords) { - id = new Node(t, { type: IDENTIFIER }); - break; - } - throw t.newSyntaxError("Invalid property name"); - } - if (t.match(COLON)) { - n2 = new Node(t, { type: PROPERTY_INIT }); - n2.push(id); - n2.push(AssignExpression(t, x)); - n2.blockComments = comments; - n.push(n2); - } else { - // Support, e.g., |var {x, y} = o| as destructuring shorthand - // for |var {x: x, y: y} = o|, per proposed JS2/ES4 for JS1.8. - if (t.peek() !== COMMA && t.peek() !== RIGHT_CURLY) - throw t.newSyntaxError("missing : after property"); - n.push(id); - } - } - } while (t.match(COMMA)); - t.mustMatch(RIGHT_CURLY); - } - break; - - case LEFT_PAREN: - n = ParenExpression(t, x); - t.mustMatch(RIGHT_PAREN); - n.parenthesized = true; - break; - - case LET: - n = LetBlock(t, x, false); - break; - - case NULL: case THIS: case TRUE: case FALSE: - case IDENTIFIER: case NUMBER: case STRING: case REGEXP: - n = new Node(t); - break; - - default: - n = new Node(t); - // don't throw an error by default. Just make it a node and forget it :-} - //throw t.newSyntaxError("missing operand"); - break; - } - - return n; - } - - /* - * parse :: (source, filename, line number) -> node - */ - function parse(s, f, l) { - var t = new lexer.Tokenizer(s, f, l); - var n = Script(t, false, false); - if (!t.done) - throw t.newSyntaxError("Syntax error"); - - return n; - } - - /* - * parseStdin :: (source, {line number}, string, (string) -> boolean) -> program node - */ - function parseStdin(s, ln, prefix, isCommand) { - // the special .begin command is only recognized at the beginning - if (s.match(/^[\s]*\.begin[\s]*$/)) { - ++ln.value; - return parseMultiline(ln, prefix); - } - - // commands at the beginning are treated as the entire input - if (isCommand(s.trim())) - s = ""; - - for (;;) { - try { - var t = new lexer.Tokenizer(s, "stdin", ln.value); - var n = Script(t, false, false); - ln.value = t.lineno; - return n; - } catch (e) { - if (!t.unexpectedEOF) - throw e; - - // commands in the middle are not treated as part of the input - var more; - do { - if (prefix) - putstr(prefix); - more = readline(); - if (!more) - throw e; - } while (isCommand(more.trim())); - - s += "\n" + more; - } - } - } - - /* - * parseMultiline :: ({line number}, string | null) -> program node - */ - function parseMultiline(ln, prefix) { - var s = ""; - for (;;) { - if (prefix) - putstr(prefix); - var more = readline(); - if (more === null) - return null; - // the only command recognized in multiline mode is .end - if (more.match(/^[\s]*\.end[\s]*$/)) - break; - s += "\n" + more; - } - var t = new lexer.Tokenizer(s, "stdin", ln.value); - var n = Script(t, false, false); - ln.value = t.lineno; - return n; - } - - return { - parse: parse, - parseStdin: parseStdin, - Node: Node, - SyntheticNode: SyntheticNode, - DECLARED_FORM: DECLARED_FORM, - EXPRESSED_FORM: EXPRESSED_FORM, - STATEMENT_FORM: STATEMENT_FORM, - Tokenizer: lexer.Tokenizer, - FunctionDefinition: FunctionDefinition, - Module: Module, - Export: Export - }; - -}()); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/narcissus_parse.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/narcissus_parse.js deleted file mode 100644 index d5565e8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/narcissus_parser/narcissus_parse.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * narcissus_parse.js - * - * A chrome worker that we keep working for the duration - * of the session. - * - * It takes about 10-12M in memory when not actively running, and it - * is much faster than reloading the Narcissus scripts for every - * script. - * - */ - -importScripts('./jsdefs.js', './jslex.js', './jsparse.js'); - -self.onmessage = function (event) { - - if (event.data === 'stop') { - // destroy chrome worker. - self.close(); - return; - } - - var obj = JSON.parse(event.data), - tree; - -// try { - tree = new Narcissus.parser.parse(obj.code); - self.postMessage({'tree': tree, 'hash': obj.hash}); -/* } catch (x) { - // error with parsing. Delete all. - self.postMessage({'hash': obj.hash}); - } - */ - tree = null; - obj = null; - -}; - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_finder.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_finder.js deleted file mode 100644 index cbdfb39..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_finder.js +++ /dev/null @@ -1,465 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var contactFinder = { - - // initial full list of links - // on a page. - pageLinks:null, - - // arrays of links. - certainLinks: null, - probableLinks: null, - uncertainLinks: null, - - // if not page worker, - // then allow to trigger a page worker. - isPageWorker: false, - - // keep track of links already visited. - visitedLinks: {}, - - // keep track of the hostname of the original page. - originalHostname: null, - - init: function (isPageWorker) { - - if (isPageWorker) { - - this.isPageWorker = true; - console.debug('visiting', document.location.href); - } - - this.convertStringToRegexp(); - - }, - - /** - * searchForContactLink Main interface method to call from outside - * the object. - */ - searchForContactLink: function (originalUrl) { - - // find hostname of original page. - this.originalHostname = this.getHostname(originalUrl); - - // initialize arrays of links to keep. - this.certainLinks = []; - this.probableLinks = []; - this.uncertainLinks = []; - - // select all a tags. - this.pageLinks = $('a').get(); - - this.searchForUSPhoneNumber($('body').text()); - - // run through list of links. - this.processLinks(); - }, - - /** - * loopThroughLanguages - * Select strings for all languages. - */ - loopThroughLanguages: function (callback) { - var le; - - for (var language in contactStr) { - for (var degree in contactStr[language]) { - le = contactStr[language][degree].length; - callback(degree, contactStr[language][degree], le); - } - } - - }, - - /** - * convertStringToRegexp - * - */ - convertStringToRegexp: function () { - - var regexpList, i, le; - - this.loopThroughLanguages(function (degreeName, arr, le) { - - for (i = 0; i < le; i++) { - arr[i] = new RegExp(arr[i], 'i'); - } - - }); - - }, - - /** - * processLinks - * - * Run through the list of links in a page - * and call the method that checks the regexs - * for each of them. - * - */ - processLinks: function () { - - var start = Date.now(); - var currentLink; - - while (this.pageLinks.length) { - - currentLink = this.pageLinks.pop(); - - if (currentLink !== undefined) { - - this.matchContact(currentLink); - - } - - var end = Date.now(); - - if (this.pageLinks.length) { - - if ((end - start) > 8) { - - setTimeout(this.processLinks.bind(this), 100); - return; - - } - - } - - else if (this.isPageWorker) { - - self.postMessage({event: 'destroy'}); - return; - - } - - - } - - - - - }, - - /** - * searchForUSPhoneNumber - * - */ - searchForUSPhoneNumber: function (str) { - var phoneMatch, phone; - var regClutter = /[\(\)\-\. ]+/gm; - - while ((phoneMatch = usaPhoneNumber.exec(str)) !== null) { - - phone = $.trim(phoneMatch).replace(regClutter, '-').replace(/^\-/, ''); - phone = phone.replace(/[^0-9]$/, ''); - - self.postMessage( - { event: linkTypes.PHONE_NUMBER_FOUND, - contact: { - 'label': phone, - 'link': 'javascript:void("' + phone + '")' } - } - ); - } - }, - - /** - * searchForSocialMedia - * - * Match a Twitter or identi.ca url. - * - */ - searchForSocialMedia: function (link) { - - var elem = $(link), - eventType; - - var text = this.notEmptyOrUri(link); - - if (reTwitter.test(elem.attr('href'))) { - eventType = linkTypes.TWITTER_LINK_FOUND; - } - - else if (reIdentiCa.test(elem.attr('href'))) { - eventType = linkTypes.IDENTICA_LINK_FOUND; - } - - if (eventType) { - self.postMessage( - { event: eventType, - contact: { - 'label': text, - 'link': elem.attr('href')} - } - ); - return true; - } - - return false; - }, - - /** - * notEmptyOrUri - * - * If link has text, use it, if not, - * then return uri. - * - */ - notEmptyOrUri: function (link) { - - var elem = $(link); - - if (/([^\s]*)]/.test(elem.text())) { - // contains something else than just space. - // It is valid. - return elem.text(); - - } else { - - return link.href; - - } - - }, - - /** - * searchForContactEmail - * - * Sends a particular message if a matching email - * is found. - * - */ - searchForContactEmail: function (link) { - - var elem = $(link), - eventType; - - if (reEmail.test(elem.attr('href'))) { - console.debug('found an email address', elem.attr('href')); - if (this.isSameHostname(elem.attr('href'))) { - // this is a good email with same hostname, priceless! - eventType = linkTypes.CERTAIN_EMAIL_ADDRESS_FOUND; - } else { - // not the same hostname... we'll keep it just in case. - eventType = linkTypes.UNCERTAIN_EMAIL_ADDRESS_FOUND; - } - - } else if (reAnyEmail.test(elem.attr('href'))) { - - if (this.isSameHostname(elem.attr('href'))) { - eventType = linkTypes.UNCERTAIN_EMAIL_ADDRESS_FOUND; - } - - } - if (eventType) { - // we found an email address. - // send message with whatever event type was found. - self.postMessage({event: eventType, - contact: { - 'label': elem.attr('href').replace('mailto:', ''), - 'link': elem.attr('href')} - }); - return true; - - } - else { - // not an email address. - return false; - } - - }, - - /** - * matchContact - * - * Loop through the regexp and try to find a match. - * - */ - matchContact: function (currentLink) { - - // search for an email address. - if (this.searchForContactEmail(currentLink)) { - return true; - } - if (this.searchForSocialMedia(currentLink)) { - return true; - } - - // check all contact link strings. - this.matchContactLink(currentLink); - - // this link is worth nothing. - //return false; - - }, - - /** - * matchContactLink - * - * loop through regexp for a contact link. - * And send a message to trigger a page worker - * if not currently a page worker. - * - */ - matchContactLink: function (currentLink) { - - var that = this; - - this.loopThroughLanguages( - function (degreeName, arr, le) { - - var text, j, href; - - for (j = 0; j < le; j++) { - - text = $(currentLink).text(); - href = currentLink.href; - - if (arr[j].test(text)) { - - if (degreeName === 'certain') { - - self.postMessage( - { event: linkTypes.CERTAIN_LINK_FOUND, - contact: { - 'label': text, - 'link': href} - } - ); - - if (!that.isPageWorker) { - that.complaintSearch(linkTypes.CERTAIN_LINK_FOUND, href); - } - - - } else if (degreeName === 'probable'){ - - self.postMessage( - { event: linkTypes.PROBABLE_LINK_FOUND, - contact: { - 'label': text, - 'link': href} - } - ); - - if (!that.isPageWorker) { - that.complaintSearch(linkTypes.PROBABLE_LINK_FOUND, href); - } - - } else if (degreeName === 'uncertain') { - - self.postMessage( - { event: linkTypes.UNCERTAIN_LINK_FOUND, - contact: { - 'label': text, - 'link': href} - } - ); - - - if (!that.isPageWorker) { - that.complaintSearch(linkTypes.UNCERTAIN_LINK_FOUND, href); - } - } - } - - } - }); - - }, - - /** - * complaintSearch - * returns to ui_info a link to open. - */ - complaintSearch: function (linkType, link) { - - console.debug('the complaint search url is', link); - - if (!this.isEmailLink(link)) { - - // we don't want to "visit" mailto links. - self.postMessage({event: 'complaintSearch', - urlSearch: {'type': linkType, 'linkValue': link} - }); - - } - }, - - /** - * getHostname - * small regex taken from - * http://beardscratchers.com/journal/using-javascript-to-get-the-hostname-of-a-url - * to extract hostname from url. - * do not consider www as subdomain. - * - */ - getHostname: function (str) { - - // remove www, but not other kind of subdomains (which most likely - // may not be the same site than the domain itself.) - str = this.removeWWW(str); - var urlHostname = /^(?:f|ht)tp(?:s)?\:\/\/([^\/]+)/im; - var emailHostname = /^mailto:[A-Z0-9\.\_\+\-]+\@([A-Z0-9\.\-]+\.[A-Z]{2,6})$/im; - var match1 = urlHostname.exec(str); - var match2 = emailHostname.exec(str); - - if (match1) { - return match1[1]; - } - else if (match2) { - return match2[1]; - } - - // no match. - return false; - - }, - - /** - * isSameHostname - * - * Checks a link has the same hostname than the original url. - * - */ - isSameHostname: function (url) { - - return this.getHostname(url) === this.originalHostname; - - }, - - /** - * remove www from hostname. - */ - removeWWW: function (str) { - - return str.replace("www.", "", 'i'); - - }, - - isEmailLink: function (str) { - - return /^mailto:/i.test(str); - - } - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_regex.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_regex.js deleted file mode 100644 index e797b5e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_regex.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -// email address regexp -var reEmail = /^mailto\:(admin|feedback|webmaster|info|contact|support|comments|team|help)\@[a-z0-9.\-]+\.[a-z]{2,4}$/i; - -var reAnyEmail = /^mailto\:.*?\@[a-z0-9\.\-]+\.[a-z]{2,4}$/i; - -// twitter address regexp -var reTwitter = /twitter\.com\/(\!?#\/)?[a-z0-9]*/i; - -// identi.ca address regexp -var reIdentiCa = /identi\.ca\/(?!notice\/)[a-z0-9]*/i; - -/** - * contactSearchStrings - * Contains arrays of strings classified by language - * and by degree of certainty. - */ -var contactStr = { - 'english': { - 'certain': ['^[\s]*Contact Us[\s]*$', '^[\s]*Email Us[\s]*$', '^[\s]*Contact[\s]*$', '^[\s]*Feedback[\s]*$', '^[\s]*Web.?site Feedback[\s]*$'], - 'probable': ['^[\s]Contact', '^[\s]*Email'], - 'uncertain': ['^[\s]*About Us', '^[\s]*About', 'Who we are', 'Who I am', 'Company Info', 'Customer Service'] - }, - 'french': { - 'certain': ['^[\s]*Contactez nous[\s]*$', '^[\s]*(Nous )?contacter[\s]*$', '^[\s]*Email[\s]*$', '^[\s]*Contact[\s]*$', '^[\s]*Commentaires[\s]*$'], - 'probable': ['^[\s]Contact', '^[\s]*Email'], - 'uncertain': ['^[\s]*(A|À) propos', 'Qui nous sommes', 'Qui suis(-| )?je', 'Info', 'Service Client(e|è)le'] - }, -}; - -var usaPhoneNumber = /(?:\+ ?1 ?)?\(?[2-9]{1}[0-9]{2}\)?(?:\-|\.| )?[0-9]{3}(?:\-|\.| )[0-9]{4}(?:[^0-9])/mg;
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/link_types.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/link_types.js deleted file mode 100644 index fefd4fd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/link_types.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var linkTypes = { - - // constants. Also available in lib/ui_info.js - 'CERTAIN_EMAIL_ADDRESS_FOUND': 'certainEmailAddressFound', - 'UNCERTAIN_EMAIL_ADDRESS_FOUND': 'uncertainEmailAddressFound', - - // Looking for contact links - 'CERTAIN_LINK_FOUND': 'certainLinkFound', - 'PROBABLE_LINK_FOUND': 'probableLinkFound', - 'UNCERTAIN_LINK_FOUND': 'uncertainLinkFound', - 'LINK_NOT_FOUND': 'contactLinkNotFound', - - // Looking for identi.ca and twitter accounts. - 'TWITTER_LINK_FOUND': 'twitterLinkFound', - 'IDENTICA_LINK_FOUND': 'identicaLinkFound', - - // phone number and address - 'PHONE_NUMBER_FOUND': 'phoneNumberFound', - 'SNAIL_ADDRESS_FOUND': 'snailAddressFound' - -}; - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/pagemod_finder.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/pagemod_finder.js deleted file mode 100644 index 036f5f6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/pagemod_finder.js +++ /dev/null @@ -1,291 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - - -var pageModFinder = { - - - image: null, - - stylesheet: null, - - button: null, - - displayPanel: false, - - links: null, - - box: null, - - infoBox: null, - - init: function () { - - var that = this, le; - - this.links = []; - - - self.on('message', function (respData) { - - if (respData.event === 'assets-uri') { - that.setComplaintPanel(respData.value); - } - - else if (respData.event === 'page-url') { - - // search for contact list. Top level. - contactFinder.init(); - //console.debug('page url is', respData.value); - contactFinder.searchForContactLink(respData.value); - - } - - else if (respData.contact !== undefined){ - that.displayLinkByPriority(respData); - } - }); - - }, - - /** - * setComplaintPanel - * - * Create complaint panel and assign properties to the - * dom elements. - * - */ - setComplaintPanel: function (uri) { - - // provide uri of stylesheet - this.stylesheet = uri + 'css/style.css'; - - // add stylesheet. - $('head').append($('<link/>').attr({'rel': 'stylesheet', - 'href': this.stylesheet, - 'type': 'text/css'})); - - $('body').prepend('<div id="librejs-complaint-box" style="display:none">' + - '\n\n ' + - '<a id="librejs-tab-button" href="#" title="LibreJS -- Complain to this site">LibreJS -- Complain to this site.</a>' + - '\n\n ' + - '<div id="librejs-complaint-info">' + - '\n\n ' + - '<h1 title="Nonfree JavaScript -- Complain">\n Nonfree JavaScript Complain\n </h1>' + - '\n\n' + - '<p id="librejs-time-mention">Searching for contact links in this website...</p>' + - '\n\n' + - '<div id="librejs-complaint-info-text">' + - - '<h2>Emails you should use</h2>' + - '<ul id="librejs-certain-emails"></ul>' + - - '<h2>Non-webmaster Emails you might want to use</h2>' + - '<ul id="librejs-uncertain-emails"></ul>' + - - '<h2>Contact form or useful Contact Information</h2>' + - '<ul id="librejs-certain-links"></ul>' + - - '<h2>Twitter Links</h2>' + - '<ul id="librejs-twitter-links"></ul>' + - - '<h2>Identi.ca Links</h2>' + - '<ul id="librejs-identica-links"></ul>' + - - '<h2>May be of interest</h2>' + - '<ul id="librejs-uncertain-links"></ul>' + - - '<h2>May be of interest</h2>' + - '<ul id="librejs-probable-links"></ul>' + - - '<h2>Phone Numbers</h2>' + - '<ul id="librejs-phone-numbers"></ul>' + - - '<h2>Snail Mail Addresses</h2>' + - '<ul id="librejs-snail-addresses"></ul>' + - '</div>' + - ' </div></div>'); - - // main elements of the complaint panel. - this.infoBox = $('#librejs-complaint-info'); - this.infoBoxText = $('#librejs-complaint-info-text'); - - // all lists. - this.certainEmails = $("#librejs-certain-emails"); - this.uncertainEmails = $("#librejs-uncertain-emails"); - this.certainLinks = $("#librejs-certain-links"); - this.uncertainLinks = $("#librejs-uncertain-links"); - this.probableLinks = $("#librejs-probable-links"); - this.twitterLinks = $("#librejs-twitter-links"); - this.identicaLinks = $("#librejs-identica-links"); - this.phoneNumbers = $("#librejs-phone-numbers"); - this.snailAddresses = $("#librejs-snail-addresses"); - - this.button = $('#librejs-tab-button'); - this.box = $('#librejs-complaint-box'); - - this.infoBox.height(window.innerHeight / 1.3); - this.infoBoxText.height(this.infoBox.height() - 150); - - }, - - - /** - * - * displayLinkByPriority - * - * Place the link in the correct list depending - * on the correct - */ - displayLinkByPriority: function (respData) { - - // we have a link to show. Add it to the button. - // first time finalLinkFound is triggered. - if (this.displayPanel === false) { - - this.addComplaintOverlay(); - this.displayPanel = true; - this.hideBox(true); - } - - // check link isn't already added. - if (respData.contact !== undefined && - !this.isInLinks(respData.contact.link)) { - - // push link to list. - le = this.links.push(respData); - - // making sure this is the latest link added. - this.addALinkToPanel(this.links[le -1]); - - } - - - }, - - isInLinks: function (searchValue) { - var i = 0, - le = this.links.length; - - for (; i < le; i++) { - - if (this.links[i].contact.link.replace(/\/$/, '') === searchValue.replace(/\/$/, '')) { - return true; - } - } - - // no match has been found. - return false; - - }, - - /** - * addALinkToPanel - * - * Check the type of link and place it in the - * appropriate list in the complaint panel. - * - */ - addALinkToPanel: function (link) { - - var listElem; - - switch (link.event) { - - case linkTypes.CERTAIN_EMAIL_ADDRESS_FOUND: - listElem = this.certainEmails; - break; - - case linkTypes.UNCERTAIN_EMAIL_ADDRESS_FOUND: - listElem = this.uncertainEmails; - break; - - case linkTypes.CERTAIN_LINK_FOUND: - listElem = this.certainLinks; - break; - - case linkTypes.PROBABLE_LINK_FOUND: - listElem = this.probableLinks; - break; - - case linkTypes.UNCERTAIN_LINK_FOUND: - listElem = this.uncertainLinks; - break; - - case linkTypes.TWITTER_LINK_FOUND: - listElem = this.twitterLinks; - break; - - case linkTypes.IDENTICA_LINK_FOUND: - listElem = this.identicaLinks; - break; - - case linkTypes.PHONE_NUMBER_FOUND: - listElem = this.phoneNumbers; - break; - - case linkTypes.SNAIL_ADDRESS_FOUND: - listElem = this.snailAddresses; - break; - } - - listElem.prev('h2').css({'display': 'block'}); - listElem.append($('<li/>').append($('<a/>').attr({'href': link.contact.link, - 'target': '_blank'}).text(link.contact.label))); - - - }, - - addComplaintOverlay: function () { - var that = this; - - this.button.bind('mouseenter', function () { that.showBox(); }); - - this.box.bind('mouseleave', function () { that.hideBox(); }); - - this.button.bind('focus', function () { that.showBox(); }); - this.box.bind('blur', function () { that.hideBox(); }); - - this.box.css({'display': 'block'}); - - //this.hideBox(true); - }, - - showBox: function () { - this.box.stop().animate({ - right: '-5px' - }, {queue: false, duration: 1500, easing: 'easeInOutQuart'}); - }, - - hideBox: function (hint) { - var rightMargin = '-550px'; - - if (hint) { - rightMargin = '-530px'; - } - - this.box.stop().delay(10000).animate({ - right: rightMargin - }, {queue:false, duration: 1500, easing: 'easeInOutQuart'}); - - } - - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/worker_finder.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/worker_finder.js deleted file mode 100644 index 2cda32e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/worker_finder.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var workerFinder = { - - init: function () { - - var that = this; - console.debug('searching with pageworker'); - - contactFinder.init(true); - contactFinder.searchForContactLink(window.location.href); - - } - -}; - -workerFinder.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/README b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/README deleted file mode 100644 index e442861..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/README +++ /dev/null @@ -1,21 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -All images in this directory are free, released under the GPLv3 or later.
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/background-panel.jpg b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/background-panel.jpg Binary files differdeleted file mode 100644 index 67f56a9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/background-panel.jpg +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/display-panel.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/display-panel.html deleted file mode 100644 index 4ae7cde..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/display-panel.html +++ /dev/null @@ -1,56 +0,0 @@ -<!doctype html> -<html> -<head> -<meta charset="utf-8"/> -<title>Display JS Monitoring Panel</title> -<link rel="stylesheet" type="text/css" href="./panel-styles.css"/> - -<!-- /** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ ---> -</head> - -<body> - - -<a class="libre" id="ljs-settings" href="javascript:void"><h1 class="libre">LibreJS</h1></a> - -<div id='info'> - -<div id="dryrun"> -<h2 class="dryrun-js"></h2> -<ul class="dryrun-js"></ul> -</div> - -<div id="accepted"> -<h2 class="accepted-js"></h2> -<ul class="accepted-js"></ul> -</div> - -<div id="blocked"> -<h2 class="blocked-js"></h2> -<ul class="blocked-js"> -</div> - -</ul> - -</div> -</body> -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title-old.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title-old.png Binary files differdeleted file mode 100644 index 8a11527..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title-old.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title.png Binary files differdeleted file mode 100644 index c1a911c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/panel-styles.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/panel-styles.css deleted file mode 100644 index 66b0696..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/panel-styles.css +++ /dev/null @@ -1,177 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -html { - padding:10px; - color:#000 !important; - background:url('background-panel.jpg') !important; -} -document { - padding:10px; -} -body { - padding:10px; - font-size:67.5%; - overflow-x:hidden; - overflow-y:visible; - color:#000; -} - -.libre { - width:230px; - height:104px; - display:block; -} -h1.libre { - font-size:1.5em; - font-weight:normal; - font-family:Arial; - margin:-20px 0 0 0; - padding:0; - font-weight:bold; - background:url('librejs-title.png') no-repeat top left; - text-indent:-1000px; - overflow:hidden; -} -h2 { - font-size:1.5em; - font-weight:bold; - font-family:arial; - border-bottom:4px solid #444; - padding-bottom:0; - margin:30px 0 0 0; - width:710px; - line-height:140%; -} -code { - font-size:1.2em; - margin:0; - padding:0; -} -ul { - margin:0; - padding:0; - list-style:none; -} -ul.blocked-js li, ul.accepted-js li, ul.dryrun-js li { - padding:5px; - border-bottom:2px solid #CCC; - margin:0; - width:700px; -} - -ul ul { - margin:10px; - list-style:disc; -} -ul.blocked-js ul li, ul.accepted-js ul li, ul.dryrun-js ul li { - padding:5px; - border-bottom:0; - width:auto; -} -#info { - clear:both; -} -.button { - float:right; - padding:10px; - display:none; - clear:both; - margin:10px; -} - -/* - Pure JS button styles below taken from: - http://webdesignerwall.com/tutorials/css3-gradient-buttons - */ -.button { - display: inline-block; - outline: none; - cursor: pointer; - text-align: center; - text-decoration: none; - font: 14px/100% Arial, Helvetica, sans-serif; - padding: .5em 2em .55em; - text-shadow: 0 1px 1px rgba(0,0,0,.3); - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - border-radius: .5em; - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); - -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); - box-shadow: 0 1px 2px rgba(0,0,0,.2); -} -.small.button { - font-size:11px; - padding:.5em .5em; - margin-top:10px; -} -.button:hover { - text-decoration: none; -} -.button:active { - position: relative; - top: 1px; -} -.orange { - color: #fef4e9; - border: solid 1px #da7c0c; - background: #f78d1d; - background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20)); - background: -moz-linear-gradient(top, #faa51a, #f47a20); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); -} -.orange:hover { - background: #f47c20; - background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015)); - background: -moz-linear-gradient(top, #f88e11, #f06015); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015'); -} -.orange:active { - color: #fcd3a5; - background: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a)); - background: -moz-linear-gradient(top, #f47a20, #faa51a); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f47a20', endColorstr='#faa51a'); -} -.white { - background: -moz-linear-gradient(center top , #FFFFFF, #EDEDED) repeat scroll 0 0 transparent; - border: 1px solid #B7B7B7; - /* color: #606060;*/ - color:#9d0d0d; -} -.white:hover { - background: -moz-linear-gradient(center top , #FFFFFF, #DCDCDC) repeat scroll 0 0 transparent; -} -.white:active { - background: -moz-linear-gradient(center top , #EDEDED, #FFFFFF) repeat scroll 0 0 transparent; -/*color: #999999;*/ - -} - -span.accepted, span.blocked { - color:#008e00; - font-size:145%; - font-variant:small-caps; - font-weight:bold; -} -ul.blocked-js li { - overflow:hidden; -} -span.blocked { - color:#8e0000; -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/main_panel.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/main_panel.js deleted file mode 100644 index dfe2b73..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/main_panel.js +++ /dev/null @@ -1,319 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -var arraySrc, pageURL, urlData; - - -var displayPanel = { - complainButton: null, - button1: null, - button2: null, - pageURL: null, - urlData: null, - - init: function () { - // add the buttons to the panel dynamically. - $('body').prepend( - '<a id="complain-contact" class="button white" href="#">' + - '<span>Complain to site owner</span>' + - '</a>' + - '<a id="allow-button" class="button white" href="#">' + - '<span>Allow all scripts in this page</span>' + - '</a>' + - '<a id="disallow-button" class="button white" href="#">' + - '<span>Block all nonfree/nontrivial scripts from this page</span>' + - '</a>' + - '<a id="open-in-tab" class="button white" href="#">' + - '<span>Open this report in a new tab</span>' + - '</a>' - ); - - // assign properties to these new elements. - this.complainButton = $('#complain-contact'); - this.button1 = $('#allow-button'); - this.button2 = $('#disallow-button'); - - // start listening for messages sent from modules. - this.messageListen(); - this.openInNewTab(); - this.logoClick(); - }, - logoClick: function () { - $("#ljs-settings").click(function (e) { - e.preventDefault(); - self.port.emit('openSesame'); - }); - }, - openInNewTab: function () { - $('#open-in-tab').click(function (e) { - console.debug("open in tab clicked"); - try { - var html = $("#info").html(); - var text = window.btoa(unescape(encodeURIComponent(html))); - self.port.emit('openInTab', text); - } catch (x) { - console.debug("error", x.lineNumber, x.message); - } - return false; - }); - - }, - messageListen: function () { - var that = this; - self.on("message", function onMessage(message) { - that.handleMessage(message); - }); - }, - - getHostname: function (str) { - var re = new RegExp('^(http(?:s)?://[^/]+)', 'im'); - return str.match(re)[1].toString(); - }, - - /** - * formatListScript - * Depending on the type of script in the item, - * will return a preformatted code element with - * on-page JavaScript or a link to an external - * JavaScript file. - */ - formatListScript: function (item, canWhitelist) { - var li, pre, code, a, reason = ''; - li = $("<li/>"); - if (item.reason !== undefined) { - reason = item.reason; - } - if (item.inline === true) { - pre = $('<pre/>'); - pre.css('white-space', 'pre-wrap'); - code = $('<code/>'); - reason_obj = $('<span class="reason"/>').text(reason); - code.text(item.contents); - code.prepend($('<br/>')); - code.prepend(reason_obj); - - pre.append(code); - li.append(pre); - } else { - console.debug("item url is %s", item.url); - reason_obj = $('<span class="reason"/>').text(reason); - li.text(item.contents); - li.prepend($('<br/>')); - li.prepend(reason_obj); - a = $('<a/>'); - a.attr('href', item.url); - a.attr('target', '_blank'); - a.text(item.url); - li.append(a); - } - if (canWhitelist) { - li.prepend( - $('<a class="small button white whitelist">Whitelist</a>') - .data('librejs-hash', item.hash)); - } - else if (item.reason.indexOf('whitelisted by user') > -1) { - // a hack until LibreJS version 6.1. Need to have a value attached - // to item.whitelisted for this. - li.prepend( - $('<a class="small button white rm-whitelist">Remove from Whitelist</a>') - .data('librejs-hash', item.hash)); - } - return li; - }, - - resetButtons: function (message) { - this.complainButton.hide().unbind('click'); - if (message.contact === undefined) { - this.button1.hide(); - this.button2.hide(); - } - }, - - siteContactFound: function (url) { - this.complainButton.show(); - - this.complainButton.bind('click', - function (e) { - e.preventDefault(); - self.port.emit('complainButtonClicked'); - window.open(url,'_blank'); - }); - }, - - handleMessage: function (message) { - var removedLen, acceptedLen; - - this.resetButtons(message); - - // handle complaint feature message - if (message.event === 'contactLinkFound' || - message.event === 'uncertainLinkFound') { - this.siteContactFound(message.absolute); - return; - } else if (message.event === 'contactLinkNotFound') { - // no contact link was found. - this.complainButton.hide(); - } - - if (message.isAllowed !== undefined) { - this.button2.show(); - } else if (message.contact === undefined) { - this.button1.show(); - } - - var li, code, pre, len, i; - - if (message.pageURL !== undefined) { - - this.button1.attr('href', message.pageURL); - this.button2.attr('href', message.pageURL); - if (message.pageURL == 'resource://jid1-ktlzuoiikvffew-at-jetpack/librejs/data/settings/index.html') { - message.pageURL = "LibreJS Whitelist"; - } - $('#info').css({'opacity': 0}); - $('h2.blocked-js') - .html("List of <span class='blocked'>blocked</span> JavaScript in " + - $('<div/>').text(message.pageURL).html()); - $('#dryrun').hide(); - $('ul.blocked-js').empty(); - $('ul.accepted-js').empty(); - $('ul.dryrun-js').empty(); - - removedLen = message.urlData.removed.length; - acceptedLen = message.urlData.accepted.length; - dryRunLen = message.urlData.dryRun.length; - if (dryRunLen > 0) { - $dryRun = $("#dryrun"); - $dryRun.show(); - $('h2.dryrun-js') - .html("List of loaded <span class='blocked'>scripts that should be blocked</span> (but were allowed by you) in " + - $('<div/>').text(message.pageURL).html()); - for (i = 0; i < dryRunLen; i++) { - li = this.formatListScript(message.urlData.dryRun[i], - true); - $('ul.dryrun-js').append(li); - } - } - if (removedLen > 0) { - $("#blocked").insertBefore($('#accepted')); - for (i = 0; i < removedLen; i++) { - this.button1.fadeIn(); - li = this.formatListScript(message.urlData.removed[i], - true); - $('ul.blocked-js').append(li); - } - } else { - - this.button1.hide(); - - $('ul.blocked-js').append('<li>LibreJS did not block any script on this page: \n\n<ul><li>There may be no script on this page (check source, C-u).</li><li>All the scripts on this page may be trivial and/or free.</li><li>You may have whitelisted this domain name or url from the preferences (Type about:addons in your location bar to check)</li><li>You may have clicked the "allow all scripts" button, which causes LibreJS to load all JavaScript on a page regardless of whether it is free, trivial, nontrivial or nonfree. This policy is effective for the entire duration of a Firefox session.</li><li>If for any reason you think LibreJS should have blocked JavaScript code on this page, please report this issue to: <a id="report" href="" target="_blank">lduros@gnu.org</a></li></ul></li>'); - - $('#report').attr('href', - 'mailto:lduros@gnu.org?subject=LibreJS bug Report&body=LibreJS issue with page: ' + - message.pageURL); - } - - // get accepted scripts. - $('h2.accepted-js') - .html("List of <span class='accepted'>accepted</span> JavaScript in " + - $('<div/>').text(message.pageURL).html()); - - if (acceptedLen > 0) { - $('#accepted').insertBefore($('#blocked')); - for (i = 0; i < acceptedLen; i++) { - - li = this.formatListScript(message.urlData.accepted[i], - false); - $('ul.accepted-js').append(li); - - } - - } else { - $('ul.accepted-js').append( - '<li>LibreJS did not allow the execution of any script on this page: \n\n\'' + - '<ul>' + - '<li>There may be no script on this page (check source, C-u)</li>' + - '<li>The inline and on-page JavaScript code may not be free and/or may not have proper license information and external scripts (if present) may have been removed by default.</li>' + - '<li>External scripts may not be free and/or may not have proper licensing and are not part of the whitelist of free JavaScript libraries.</li></ul></li>'); - } - - $('#info').animate({opacity: 1}); - - // emit allowAllClicked when button is clicked. - this.button1.bind( - 'click', - function(e) { - console.debug('clicked allow button'); - e.preventDefault(); - var url = $(this).attr('href'); - - var urlForDisplay = (url.length > 100) ? - url.substr(0,100) + '…' : url; - var areYouSure = window.confirm( - "Allow all nonfree/nontrivial scripts on this page?\n\n" + - urlForDisplay); - - if (areYouSure) { - self.port.emit('allowAllClicked', url); - } - - }); - - this.button2.bind( - 'click', - function(e) { - e.preventDefault(); - var url = $(this).attr('href'); - self.port.emit('disallowAllClicked', url); - }); - var that = this; - // whitelist a script - $('.whitelist').bind( - 'click', - function (e) { - e.preventDefault(); - // get the url of the page from main button. - var url = that.button1.attr('href'); - var hash = $(this).data('librejs-hash'); - var reason = $(this).parent('li').children('.reason') - .text(); - if (!reason) { - reason = $(this).parent('li').children('pre') - .find('.reason').text(); - } - self.port.emit('whitelistByHash', hash, url, '', reason); - $(this).parent().append( - $('<span style="font-weight:bold"/>') - .text("Reload page to load script")); - $(this).remove(); - }); - - $('.rm-whitelist').bind( - 'click', - function (e) { - e.preventDefault(); - var hash = $(this).data('librejs-hash'); - self.port.emit('removeFromWhitelistByHash', hash); - $(this).text("Reload page to take effect"); - }); - } - } -}; - -displayPanel.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon-white.ico b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon-white.ico Binary files differdeleted file mode 100644 index c053584..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon-white.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.ico b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.ico Binary files differdeleted file mode 100644 index 709de01..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.ico +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.png Binary files differdeleted file mode 100644 index 7c603f0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/librejs-settings.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/librejs-settings.html deleted file mode 100644 index 1292280..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/librejs-settings.html +++ /dev/null @@ -1,23 +0,0 @@ -<!doctype html> -<html> -<head> -<meta charset=utf-8 /> -<title>LibreJS - Settings</title> -<link rel="icon" - type="image/icon" - href="images/gnu-icon.ico"> -<style> -body { - background:#e3dedb; - color:#1b1615; - font-family:Sans-Serif; - -} -h1 { - font-family:Georgia; -} -</style> -</head> -<body> -</body> -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/Boost-1.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/Boost-1.0.txt deleted file mode 100644 index 36b7cd9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/Boost-1.0.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/ISC.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/ISC.txt deleted file mode 100644 index 9f68299..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/ISC.txt +++ /dev/null @@ -1,12 +0,0 @@ -Permission to use, copy, modify, and/or distribute this software for -any purpose with or without fee is hereby granted, provided that the -above copyright notice and this permission notice appear in all -copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY -SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/IntelACPI.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/IntelACPI.txt deleted file mode 100644 index 8152ad6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/IntelACPI.txt +++ /dev/null @@ -1,116 +0,0 @@ -ACPI - Software License Agreement - - -Software License Agreement IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING. - -Do not use or load this software and any associated materials -(collectively, the "Software") until you have carefully read the -following terms and conditions. By loading or using the Software, you -agree to the terms of this Agreement. If you do not wish to so agree, -do not install or use the Software. - -1. COPYRIGHT NOTICE Some or all of this work - Copyright © 1999-2005, -Intel Corp. All rights reserved. - -2. LICENSE - -2.1. This is your license from Intel Corp. under its intellectual -property rights. You may have additional license terms from the party -that provided you this software, covering your right to use that -party's intellectual property rights. - -2.2. Intel grants, free of charge, to any person ("Licensee") -obtaining a copy of the source code appearing in this file ("Covered -Code") an irrevocable, perpetual, worldwide license under Intel's -copyrights in the base code distributed originally by Intel ("Original -Intel Code") to copy, make derivatives, distribute, use and display -any portion of the Covered Code in any form, with the right to -sublicense such rights; and - -2.3. Intel grants Licensee a non-exclusive and non-transferable patent -license (with the right to sublicense), under only those claims of -Intel patents that are infringed by the Original Intel Code, to make, -use, sell, offer to sell, and import the Covered Code and derivative -works thereof solely to the minimum extent necessary to exercise the -above copyright license, and in no event shall the patent license -extend to any additions to or modifications of the Original Intel -Code. No other license or right is granted directly or by implication, -estoppel or otherwise; The above copyright and patent license is -granted only if the following conditions are met: - -3. CONDITIONS - -3.1. Redistribution of Source with Rights to Further Distribute -Source. Redistribution of source code of any substantial portion of -the Covered Code or modification with rights to further distribute -source must include the above Copyright Notice, the above License, -this list of Conditions, and the following Disclaimer and Export -Compliance provision. In addition, Licensee must cause all Covered -Code to which Licensee contributes to contain a file documenting the -changes Licensee made to create that Covered Code and the date of any -change. Licensee must include in that file the documentation of any -changes made by any predecessor Licensee. Licensee must include a -prominent statement that the modification is derived, directly or -indirectly, from Original Intel Code. - -3.2. Redistribution of Source with no Rights to Further Distribute -Source. Redistribution of source code of any substantial portion of -the Covered Code or modification without rights to further distribute -source must include the following Disclaimer and Export Compliance -provision in the documentation and/or other materials provided with -distribution. In addition, Licensee may not authorize further -sublicense of source of any portion of the Covered Code, and must -include terms to the effect that the license from Licensee to its -licensee is limited to the intellectual property embodied in the -software Licensee provides to its licensee, and not to intellectual -property embodied in modifications its licensee may make. - -3.3. Redistribution of Executable. Redistribution in executable form -of any substantial portion of the Covered Code or modification must -reproduce the above Copyright Notice, and the following Disclaimer and -Export Compliance provision in the documentation and/or other -materials provided with the distribution. - -3.4. Intel retains all right, title, and interest in and to the -Original Intel Code. - -3.5. Neither the name Intel nor any other trademark owned or -controlled by Intel shall be used in advertising or otherwise to -promote the sale, use or other dealings in products derived from or -relating to the Covered Code without prior written authorization from -Intel. - -4. DISCLAIMER AND EXPORT COMPLIANCE - -4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE -PROVIDED HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM -INTEL SOFTWARE IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY -SUPPORT, ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL -WILL NOT PROVIDE ANY UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL -SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, -NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. - -4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS -LICENSEES OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, -LOSS OF USE OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, -OR FOR ANY INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF -THIS AGREEMENT, UNDER ANY CAUSE OF ACTION OR THEORY OF LIABILITY, AND -IRRESPECTIVE OF WHETHER INTEL HAS ADVANCE NOTICE OF THE POSSIBILITY OF -SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE -FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. - -4.3. Licensee shall not export, either directly or indirectly, any of -this software or system incorporating such software without first -obtaining any required license or other approval from the -U. S. Department of Commerce or any other agency or department of the -United States Government. In the event Licensee exports any such -software from the United States or re-exports any such software from a -foreign destination, Licensee shall ensure that the distribution and -export/re-export of the software is in compliance with all laws, -regulations, orders, or other restrictions of the U.S. Export -Administration Regulations. Licensee agrees that neither it nor any of -its subsidiaries will export/re-export any technical data, process, -software, or service, directly or indirectly, to any country for which -the United States government or any agency thereof requires an export -license, other governmental approval, or letter of assurance, without -first obtaining such license, approval or letter. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/agpl-3.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/agpl-3.0.txt deleted file mode 100644 index dba13ed..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/agpl-3.0.txt +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are 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. - - 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. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - 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 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 work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero 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 Affero 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 Affero 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 Affero 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - 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 AGPL, see -<http://www.gnu.org/licenses/>. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/apache-2.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/apache-2.0.txt deleted file mode 100644 index d645695..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/apache-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/artistic-2.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/artistic-2.0.txt deleted file mode 100644 index ddb9a46..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/artistic-2.0.txt +++ /dev/null @@ -1,201 +0,0 @@ - The Artistic License 2.0 - - Copyright (c) 2000-2006, The Perl Foundation. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - -This license establishes the terms under which a given free software -Package may be copied, modified, distributed, and/or redistributed. -The intent is that the Copyright Holder maintains some artistic -control over the development of that Package while still keeping the -Package available as open source and free software. - -You are always permitted to make arrangements wholly outside of this -license directly with the Copyright Holder of a given Package. If the -terms of this license do not permit the full use that you propose to -make of the Package, you should contact the Copyright Holder and seek -a different licensing arrangement. - -Definitions - - "Copyright Holder" means the individual(s) or organization(s) - named in the copyright notice for the entire Package. - - "Contributor" means any party that has contributed code or other - material to the Package, in accordance with the Copyright Holder's - procedures. - - "You" and "your" means any person who would like to copy, - distribute, or modify the Package. - - "Package" means the collection of files distributed by the - Copyright Holder, and derivatives of that collection and/or of - those files. A given Package may consist of either the Standard - Version, or a Modified Version. - - "Distribute" means providing a copy of the Package or making it - accessible to anyone else, or in the case of a company or - organization, to others outside of your company or organization. - - "Distributor Fee" means any fee that you charge for Distributing - this Package or providing support for this Package to another - party. It does not mean licensing fees. - - "Standard Version" refers to the Package if it has not been - modified, or has been modified only in ways explicitly requested - by the Copyright Holder. - - "Modified Version" means the Package, if it has been changed, and - such changes were not explicitly requested by the Copyright - Holder. - - "Original License" means this Artistic License as Distributed with - the Standard Version of the Package, in its current version or as - it may be modified by The Perl Foundation in the future. - - "Source" form means the source code, documentation source, and - configuration files for the Package. - - "Compiled" form means the compiled bytecode, object code, binary, - or any other form resulting from mechanical transformation or - translation of the Source form. - - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use -Modified Versions for any purpose without restriction, provided that -you do not Distribute the Modified Version. - - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the -Standard Version of this Package in any medium without restriction, -either gratis or for a Distributor Fee, provided that you duplicate -all of the original copyright notices and associated disclaimers. At -your discretion, such verbatim copies may or may not include a -Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other -modifications made available from the Copyright Holder. The resulting -Package will still be considered the Standard Version, and as such -will be subject to the Original License. - - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis -or for a Distributor Fee, and with or without a Compiled form of the -Modified Version) provided that you clearly document how it differs -from the Standard Version, including, but not limited to, documenting -any non-standard features, executables, or modules, and provided that -you do at least ONE of the following: - - (a) make the Modified Version available to the Copyright Holder - of the Standard Version, under the Original License, so that the - Copyright Holder may include your modifications in the Standard - Version. - - (b) ensure that installation of your Modified Version does not - prevent the user installing or running the Standard Version. In - addition, the Modified Version must bear a name that is different - from the name of the Standard Version. - - (c) allow anyone who receives a copy of the Modified Version to - make the Source form of the Modified Version available to others - under - - (i) the Original License or - - (ii) a license that permits the licensee to freely copy, - modify and redistribute the Modified Version using the same - licensing terms that apply to the copy that the licensee - received, and requires that the Source form of the Modified - Version, and of any works derived from it, be made freely - available in that license fees are prohibited but Distributor - Fees are allowed. - - -Distribution of Compiled Forms of the Standard Version -or Modified Versions without the Source - -(5) You may Distribute Compiled forms of the Standard Version without -the Source, provided that you include complete instructions on how to -get the Source of the Standard Version. Such instructions must be -valid at the time of your distribution. If these instructions, at any -time while you are carrying out such distribution, become invalid, you -must provide new instructions on demand or cease further distribution. -If you provide valid instructions or cease distribution within thirty -days after you become aware that the instructions are invalid, then -you do not forfeit any of your rights under this license. - -(6) You may Distribute a Modified Version in Compiled form without -the Source, provided that you comply with Section 4 with respect to -the Source of the Modified Version. - - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or -Modified Version) with other packages and Distribute the resulting -aggregation provided that you do not charge a licensing fee for the -Package. Distributor Fees are permitted, and licensing fees for other -components in the aggregation are permitted. The terms of this license -apply to the use and Distribution of the Standard or Modified Versions -as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with -other works, to embed the Package in a larger work of your own, or to -build stand-alone binary or bytecode versions of applications that -include the Package, and Distribute the result without restriction, -provided the result does not expose a direct interface to the Package. - - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that -merely extend or make use of the Package, do not, by themselves, cause -the Package to be a Modified Version. In addition, such works are not -considered parts of the Package itself, and are not subject to the -terms of this license. - - -General Provisions - -(10) Any use, modification, and distribution of the Standard or -Modified Versions is governed by this Artistic License. By using, -modifying or distributing the Package, you accept this license. Do not -use, modify, or distribute the Package, if you do not accept this -license. - -(11) If your Modified Version has been derived from a Modified -Version made by someone other than you, you are nevertheless required -to ensure that your Modified Version complies with the requirements of -this license. - -(12) This license does not grant you the right to use any trademark, -service mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, -free-of-charge patent license to make, have made, use, offer to sell, -sell, import and otherwise transfer the Package with respect to any -patent claims licensable by the Copyright Holder that are necessarily -infringed by the Package. If you institute patent litigation -(including a cross-claim or counterclaim) against any party alleging -that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the -date that such litigation is filed. - -(14) Disclaimer of Warranty: -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL -LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/bsd-3-clause.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/bsd-3-clause.txt deleted file mode 100644 index 0a0fa15..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/bsd-3-clause.txt +++ /dev/null @@ -1,27 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - (1) Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - (2) Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - (3)The name of the author may not be used to - endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cc0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cc0.txt deleted file mode 100644 index bdfff7a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cc0.txt +++ /dev/null @@ -1,118 +0,0 @@ - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT - PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT - CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES - THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO - WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION - OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES - RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR - WORKS PROVIDED HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically -confer exclusive Copyright and Related Rights (defined below) upon the -creator and subsequent owner(s) (each and all, an "owner") of an -original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work -for the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without -fear of later claims of infringement build upon, modify, incorporate -in other works, reuse and redistribute as freely as possible in any -form whatsoever and for any purposes, including without limitation -commercial purposes. These owners may contribute to the Commons to -promote the ideal of a free culture and the further production of -creative, cultural and scientific works, or to gain reputation or -greater distribution for their Work in part through the use and -efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or -she is an owner of Copyright and Related Rights in the Work, -voluntarily elects to apply CC0 to the Work and publicly distribute -the Work under its terms, with knowledge of his or her Copyright and -Related Rights in the Work and the meaning and intended legal effect -of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may -be protected by copyright and related or neighboring rights -("Copyright and Related Rights"). Copyright and Related Rights -include, but are not limited to, the following: - - the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; moral rights retained by the - original author(s) and/or performer(s); publicity and privacy - rights pertaining to a person's image or likeness depicted in a - Work; rights protecting against unfair competition in regards to a - Work, subject to the limitations in paragraph 4(a), below; rights - protecting the extraction, dissemination, use and reuse of data in - a Work; database rights (such as those arising under Directive - 96/9/EC of the European Parliament and of the Council of 11 March - 1996 on the legal protection of databases, and under any national - implementation thereof, including any amended or successor version - of such directive); and other similar, equivalent or corresponding - rights throughout the world based on applicable law or treaty, and - any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in -contravention of, applicable law, Affirmer hereby overtly, fully, -permanently, irrevocably and unconditionally waives, abandons, and -surrenders all of Affirmer's Copyright and Related Rights and -associated claims and causes of action, whether now known or unknown -(including existing as well as future claims and causes of action), in -the Work (i) in all territories worldwide, (ii) for the maximum -duration provided by applicable law or treaty (including future time -extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"Waiver"). Affirmer makes the Waiver for the benefit of each member of -the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal -or equitable action to disrupt the quiet enjoyment of the Work by the -public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any -reason be judged legally invalid or ineffective under applicable law, -then the Waiver shall be preserved to the maximum extent permitted -taking into account Affirmer's express Statement of Purpose. In -addition, to the extent the Waiver is so judged Affirmer hereby grants -to each affected person a royalty-free, non transferable, non -sublicensable, non exclusive, irrevocable and unconditional license to -exercise Affirmer's Copyright and Related Rights in the Work (i) in -all territories worldwide, (ii) for the maximum duration provided by -applicable law or treaty (including future time extensions), (iii) in -any current or future medium and for any number of copies, and (iv) -for any purpose whatsoever, including without limitation commercial, -advertising or promotional purposes (the "License"). The License shall -be deemed effective as of the date CC0 was applied by Affirmer to the -Work. Should any part of the License for any reason be judged legally -invalid or ineffective under applicable law, such partial invalidity -or ineffectiveness shall not invalidate the remainder of the License, -and in such case Affirmer hereby affirms that he or she will not (i) -exercise any of his or her remaining Copyright and Related Rights in -the Work or (ii) assert any associated claims and causes of action -with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - No trademark or patent rights held by Affirmer are waived, - abandoned, surrendered, licensed or otherwise affected by this - document. Affirmer offers the Work as-is and makes no - representations or warranties of any kind concerning the Work, - express, implied, statutory or otherwise, including without - limitation warranties of title, merchantability, fitness for a - particular purpose, non infringement, or the absence of latent or - other defects, accuracy, or the present or absence of errors, - whether or not discoverable, all to the greatest extent - permissible under applicable law. Affirmer disclaims - responsibility for clearing rights of other persons that may apply - to the Work or any use thereof, including without limitation any - person's Copyright and Related Rights in the Work. Further, - Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. Affirmer understands and acknowledges that Creative Commons - is not a party to this document and has no duty or obligation with - respect to this CC0 or use of the Work. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/clear-bsd.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/clear-bsd.txt deleted file mode 100644 index 550cf5b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/clear-bsd.txt +++ /dev/null @@ -1,33 +0,0 @@ -The Clear BSD License - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted (subject to the limitations in the -disclaimer below) provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. - - * Neither the name of <Owner Organization> nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE -GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT -HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cpal-1.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cpal-1.0.txt deleted file mode 100644 index c7ca984..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cpal-1.0.txt +++ /dev/null @@ -1,105 +0,0 @@ -Common Public Attribution License Version 1.0 (CPAL) -1. "Definitions" -1.0.1 "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. -1.1 "Contributor" means each entity that creates or contributes to the creation of Modifications. -1.2 "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. -1.3 "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. -1.4 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. -1.5 "Executable" means Covered Code in any form other than Source Code. -1.6 "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. -1.7 "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. -1.8 "License" means this document. -1.8.1 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. -1.9 "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: -A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. -B. Any new file that contains any part of the Original Code or previous Modifications. -1.10 "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. -1.10.1 "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. -1.11 "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. -1.12 "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. -2. Source Code License. -2.1 The Initial Developer Grant. -The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: -(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and -(b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). -(c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. -2.2 Contributor Grant. -Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license -(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and -(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). -(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. -(d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. -3. Distribution Obligations. -3.1 Application of License. -The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. -3.2 Availability of Source Code. -Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. -3.3 Description of Modifications. -You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. -3.4 Intellectual Property Matters -(a) Third Party Claims. -If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. -(b) Contributor APIs. -If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. -(c) Representations. -Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. -3.5 Required Notices. -You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. -3.6 Distribution of Executable Versions. -You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer, Original Developer or any Contributor. You hereby agree to indemnify the Initial Developer, Original Developer and every Contributor for any liability incurred by the Initial Developer, Original Developer or such Contributor as a result of any such terms You offer. -3.7 Larger Works. -You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. -5. Application of this License. -This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. -6. Versions of the License. -6.1 New Versions. -Socialtext, Inc. ("Socialtext") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. -6.2 Effect of New Versions. -Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Socialtext. No one other than Socialtext has the right to modify the terms applicable to Covered Code created under this License. -6.3 Derivative Works. -If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Socialtext", "CPAL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the CPAL. (Filling in the name of the Initial Developer, Original Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) -7. DISCLAIMER OF WARRANTY. -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER, ORIGINAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. -8. TERMINATION. -8.1 This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. -8.2 If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer, Original Developer or a Contributor (the Initial Developer, Original Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: -(a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. -(b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. -8.3 If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. -8.4 In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. -9. LIMITATION OF LIABILITY. -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ORIGINAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. -10. U.S. GOVERNMENT END USERS. -The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. -11. MISCELLANEOUS. -This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. -12. RESPONSIBILITY FOR CLAIMS. -As between Initial Developer, Original Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer, Original Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. -13. MULTIPLE-LICENSED CODE. -Initial Developer may designate portions of the Covered Code as Multiple-Licensed. Multiple-Licensed means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the CPAL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. -14. ADDITIONAL TERM: ATTRIBUTION -(a) As a modest attribution to the organizer of the development of the Original Code ("Original Developer"), in the hope that its promotional value may help justify the time, money and effort invested in writing the Original Code, the Original Developer may include in Exhibit B ("Attribution Information") a requirement that each time an Executable and Source Code or a Larger Work is launched or initially run (which includes initiating a session), a prominent display of the Original Developer's Attribution Information (as defined below) must occur on the graphic user interface employed by the end user to access such Covered Code (which may include display on a splash screen), if any. The size of the graphic image should be consistent with the size of the other elements of the Attribution Information. If the access by the end user to the Executable and Source Code does not create a graphic user interface for access to the Covered Code, this obligation shall not apply. If the Original Code displays such Attribution Information in a particular form (such as in the form of a splash screen, notice at login, an "about" display, or dedicated attribution area on user interface screens), continued use of such form for that Attribution Information is one way of meeting this requirement for notice. -(b) Attribution information may only include a copyright notice, a brief phrase, graphic image and a URL ("Attribution Information") and is subject to the Attribution Limits as defined below. For these purposes, prominent shall mean display for sufficient duration to give reasonable notice to the user of the identity of the Original Developer and that if You include Attribution Information or similar information for other parties, You must ensure that the Attribution Information for the Original Developer shall be no less prominent than such Attribution Information or similar information for the other party. For greater certainty, the Original Developer may choose to specify in Exhibit B below that the above attribution requirement only applies to an Executable and Source Code resulting from the Original Code or any Modification, but not a Larger Work. The intent is to provide for reasonably modest attribution, therefore the Original Developer cannot require that You display, at any time, more than the following information as Attribution Information: (a) a copyright notice including the name of the Original Developer; (b) a word or one phrase (not exceeding 10 words); (c) one graphic image provided by the Original Developer; and (d) a URL (collectively, the "Attribution Limits"). -(c) If Exhibit B does not include any Attribution Information, then there are no requirements for You to display any Attribution Information of the Original Developer. -(d) You acknowledge that all trademarks, service marks and/or trade names contained within the Attribution Information distributed with the Covered Code are the exclusive property of their owners and may only be used with the permission of their owners, or under circumstances otherwise permitted by law or as expressly set out in this License. -15. ADDITIONAL TERM: NETWORK USE. -The term "External Deployment" means the use, distribution, or communication of the Original Code or Modifications in any way such that the Original Code or Modifications may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Code or Modifications as a distribution under section 3.1 and make Source Code available under Section 3.2. -EXHIBIT A. Common Public Attribution License Version 1.0. -"The contents of this file are subject to the Common Public Attribution License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at _____________. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B. -Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. -The Original Code is______________________. -The Original Developer is not the Initial Developer and is __________. If left blank, the Original Developer is the Initial Developer. -The Initial Developer of the Original Code is ____________. All portions of the code written by ___________ are Copyright (c) _____. All Rights Reserved. -Contributor ______________________. -Alternatively, the contents of this file may be used under the terms of the _____ license (the (___) License), in which case the provisions of (______) License are applicable instead of those above. -If you wish to allow use of your version of this file only under the terms of the (____) License and not to allow others to use your version of this file under the CPAL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the (___) License. If you do not delete the provisions above, a recipient may use your version of this file under either the CPAL or the (___) License." -(NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.) -EXHIBIT B. Attribution Information -Attribution Copyright Notice: _______________________ -Attribution Phrase (not exceeding 10 words): _______________________ -Attribution URL: _______________________ -Graphic Image as provided in the Covered Code, if any. -Display of Attribution Information is (required/not required) in Larger Works which are defined in the CPAL as a work which combines Covered Code or portions thereof with code not governed by the terms of the CPAL. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/create-magnets.sh b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/create-magnets.sh deleted file mode 100644 index b20be4b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/create-magnets.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# This file is part of GNU LibreJS. -# -# GNU LibreJS 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. -# -# GNU LibreJS 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 Foobar. If not, see <http://www.gnu.org/licenses/>. - -# this script requires transmission-daemon. Install it as a package. -echo "" > magnet-links.txt -curtorrent="" -for f in *.txt -do - echo "Processing $f" - curtorrent="torrents/$f.torrent" - echo "Creating $curtorrent" - transmission-create -o "$curtorrent" "$f" - transmission-show --magnet "$curtorrent" >> magnet-links.txt -done diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/expat.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/expat.txt deleted file mode 100644 index 1f95d26..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/expat.txt +++ /dev/null @@ -1,5 +0,0 @@ -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. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/freebsd.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/freebsd.txt deleted file mode 100644 index 29b4d8e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/freebsd.txt +++ /dev/null @@ -1,25 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. Redistributions -in binary form must reproduce the above copyright notice, this list of -conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. THIS SOFTWARE IS -PROVIDED BY THE FREEBSD PROJECT ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation -are those of the authors and should not be interpreted as representing -official policies, either expressed or implied, of the FreeBSD -Project. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-2.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-2.0.txt deleted file mode 100644 index d159169..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-2.0.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - 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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. - - <signature of Ty Coon>, 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 Lesser General -Public License instead of this License. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-3.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-3.0.txt deleted file mode 100644 index 94a9ed0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-3.0.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - 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 <http://www.gnu.org/licenses/>. - -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: - - <program> Copyright (C) <year> <name of author> - 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 -<http://www.gnu.org/licenses/>. - - 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 -<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/illinois-NCSA.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/illinois-NCSA.txt deleted file mode 100644 index 4f2da6c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/illinois-NCSA.txt +++ /dev/null @@ -1,24 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -“Software”), to deal with 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: - -Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimers. -Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimers in the -documentation and/or other materials provided with the distribution. -Neither the names of <Name of Development Group, Name of Institution>, -nor the names of its contributors may be used to endorse or promote -products derived from this Software without specific prior written -permission. 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 CONTRIBUTORS 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 WITH THE -SOFTWARE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/imlib2.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/imlib2.txt deleted file mode 100644 index 5fc3f71..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/imlib2.txt +++ /dev/null @@ -1,31 +0,0 @@ -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 of the Software and its Copyright notices. In addition publicly -documented acknowledgment must be given that this software has been used if no -source code of this software is made available publicly. Making the source -available publicly means including the source for this software with the -distribution, or a method to get this software via some reasonable mechanism -(electronic transfer via a network or media) as well as making an offer to -supply the source on request. This Copyright notice serves as an offer to -supply the source on on request as well. Instead of this, supplying -acknowledgments of use of this software in either Copyright notices, Manuals, -Publicity and Marketing documents or any documentation provided with any -product containing this software. This License does not apply to any software -that links to the libraries provided by this software (statically or -dynamically), but only to the software provided. - -Please see the COPYING-PLAIN for a plain-english explanation of this notice -and its intent. - -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 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. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.0.txt deleted file mode 100644 index 5bc8fb2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.0.txt +++ /dev/null @@ -1,481 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, 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 library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, 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 companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, 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 library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete 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 distribute a copy of this License along with the -Library. - - 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 Library or any portion -of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -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 Library, 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 Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you 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. - - If distribution of 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 satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. 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. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library 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. - - 9. 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 Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -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. - - 11. 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 Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library 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 Library. - -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. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library 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. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library 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 Library -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 Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -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 - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. 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 LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. 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. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.1.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.1.txt deleted file mode 100644 index 4362b49..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.1.txt +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -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 and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, 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 library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete 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 distribute a copy of this License along with the -Library. - - 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 Library or any portion -of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -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 Library, 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 Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you 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. - - If distribution of 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 satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be 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. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library 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. - - 9. 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 Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -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 with -this License. - - 11. 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 Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library 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 Library. - -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. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library 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. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser 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 Library -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 Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -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 - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. 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 LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. 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. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-3.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-3.0.txt deleted file mode 100644 index 65c5ca8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-3.0.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser 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 -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/magnet-links.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/magnet-links.txt deleted file mode 100644 index 8026b91..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/magnet-links.txt +++ /dev/null @@ -1,26 +0,0 @@ - -magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt -magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt -magnet:?xt=urn:btih:54fd2283f9dbdf29466d2df1a98bf8f65cafe314&dn=artistic-2.0.txt -magnet:?xt=urn:btih:89a97c535628232f2f3888c2b7b8ffd4c078cec0&dn=Boost-1.0.txt -magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt -magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt -magnet:?xt=urn:btih:e8823381a12cbaec8042d8f5928ed9ca427ae6ed&dn=clear-bsd.txt -magnet:?xt=urn:btih:84143bc45939fc8fa42921d619a95462c2031c5c&dn=cpal-1.0.txt -magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt -magnet:?xt=urn:btih:0c9737ee7c3f64a549ae792605960b900d0bab7f&dn=freebsd.txt -magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt -magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt -magnet:?xt=urn:btih:035da57b2e51467406d7f737ce130844ceb555e1&dn=illinois-NCSA.txt -magnet:?xt=urn:btih:34b1392ce6108db166bd9ee4a37e655c67891e5b&dn=imlib2.txt -magnet:?xt=urn:btih:3254dcf4f9d9dadad8dfb4951177854d5d0e2491&dn=IntelACPI.txt -magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt -magnet:?xt=urn:btih:fcd495f3ca5fb96b147041401bcf213eec0a6439&dn=lgpl-2.0.txt -magnet:?xt=urn:btih:5de60da917303dbfad4f93fb1b985ced5a89eac2&dn=lgpl-2.1.txt -magnet:?xt=urn:btih:0ef1b8170b3b615170ff270def6427c317705f85&dn=lgpl-3.0.txt -magnet:?xt=urn:btih:3877d6d54b3accd4bc32f8a48bf32ebc0901502a&dn=mpl-2.0.txt -magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a&dn=public-domain.txt -magnet:?xt=urn:btih:5866afca5f37889c0c1fdd108f4922d4fcdb5e3d&dn=unlicense.txt -magnet:?xt=urn:btih:723febf9f6185544f57f0660a41489c7d6b4931b&dn=wtfpl.txt -magnet:?xt=urn:btih:5305d91886084f776adcf57509a648432709a7c7&dn=x11.txt -magnet:?xt=urn:btih:12f2ec9e8de2a3b0002a33d518d6010cc8ab2ae9&dn=xfree86.txt diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/mpl-2.0.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/mpl-2.0.txt deleted file mode 100644 index 14e2f77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/mpl-2.0.txt +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/public-domain.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/public-domain.txt deleted file mode 100644 index 68cf1a8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/public-domain.txt +++ /dev/null @@ -1,18 +0,0 @@ -Being in the public domain is not a license; rather, it means the -material is not copyrighted and no license is needed. Practically -speaking, though, if a work is in the public domain, it might as well -have an all-permissive non-copyleft free software license. Public -domain material is compatible with the GNU GPL. - -If you want to release your work to the public domain, we encourage -you to use formal tools to do so. We ask people who make small -contributions to GNU to sign a disclaimer form; that's one -solution. If you're working on a project that doesn't have formal -contribution policies like that, CC0 is a good tool that anyone can -use. It formally dedicates your work to the public domain, and -provides a fallback license for cases where that is not legally -possible. - -http://directory.fsf.org/wiki/License:CC0 - -Source: http://www.gnu.org/licenses/license-list.html#PublicDomain diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/Boost-1.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/Boost-1.0.txt.torrent deleted file mode 100644 index d859c22..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/Boost-1.0.txt.torrent +++ /dev/null @@ -1,2 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343399e8:encoding5:UTF-84:infod6:lengthi1338e4:name13:Boost-1.0.txt12:piece lengthi32768e6:pieces20:<ş)âąŐźbÖú -8k-˝7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/ISC.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/ISC.txt.torrent deleted file mode 100644 index c221f05..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/ISC.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343405e8:encoding5:UTF-84:infod6:lengthi683e4:name7:ISC.txt12:piece lengthi32768e6:pieces20:_9tq””ř…ç-°ä~.ŽÎw
7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/IntelACPI.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/IntelACPI.txt.torrent deleted file mode 100644 index 8de0ded..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/IntelACPI.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343405e8:encoding5:UTF-84:infod6:lengthi6080e4:name13:IntelACPI.txt12:piece lengthi32768e6:pieces20: Ťą×ćo°ź†ę*-|í_(7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/agpl-3.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/agpl-3.0.txt.torrent deleted file mode 100644 index 21f7000..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/agpl-3.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343398e8:encoding5:UTF-84:infod6:lengthi34520e4:name12:agpl-3.0.txt12:piece lengthi32768e6:pieces40:‚Ą˘öIß='5íN?bý¨¤.ĐĹİNĘŻČúď¸ŐJˇ”6˙ś7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/apache-2.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/apache-2.0.txt.torrent deleted file mode 100644 index f0b13ab..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/apache-2.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343398e8:encoding5:UTF-84:infod6:lengthi11358e4:name14:apache-2.0.txt12:piece lengthi32768e6:pieces20:+‹R)ŞŠaäűK X‹‹lI7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/artistic-2.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/artistic-2.0.txt.torrent Binary files differdeleted file mode 100644 index 5bb11db..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/artistic-2.0.txt.torrent +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/bsd-3-clause.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/bsd-3-clause.txt.torrent deleted file mode 100644 index 9dfc19a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/bsd-3-clause.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343400e8:encoding5:UTF-84:infod6:lengthi1373e4:name16:bsd-3-clause.txt12:piece lengthi32768e6:pieces20:ëŇP©`ďă‰ôZ†Śó#ô˛°ŕ‰7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cc0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cc0.txt.torrent deleted file mode 100644 index 02991e9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cc0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343400e8:encoding5:UTF-84:infod6:lengthi6982e4:name7:cc0.txt12:piece lengthi32768e6:pieces20:˘&NqL/bQVľŐĘ–™\Â7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/clear-bsd.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/clear-bsd.txt.torrent deleted file mode 100644 index 5f56d34..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/clear-bsd.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343401e8:encoding5:UTF-84:infod6:lengthi1633e4:name13:clear-bsd.txt12:piece lengthi32768e6:pieces20:źŤ”1m?
Ť„Á§[>$k™Ž7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cpal-1.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cpal-1.0.txt.torrent deleted file mode 100644 index 93e5631..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cpal-1.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343401e8:encoding5:UTF-84:infod6:lengthi28079e4:name12:cpal-1.0.txt12:piece lengthi32768e6:pieces20:Î*˛T#Ѹ
X;ŔhÔč?ÚŰć…7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/expat.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/expat.txt.torrent deleted file mode 100644 index 62f134f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/expat.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343402e8:encoding5:UTF-84:infod6:lengthi1023e4:name9:expat.txt12:piece lengthi32768e6:pieces20:©ó|+®ţDŕݶî( ˇ˛ąď957:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/freebsd.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/freebsd.txt.torrent deleted file mode 100644 index 8d07cb1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/freebsd.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343402e8:encoding5:UTF-84:infod6:lengthi1426e4:name11:freebsd.txt12:piece lengthi32768e6:pieces20: ŰSVuÓ;¦´‡™3ŕÜöGí7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-2.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-2.0.txt.torrent deleted file mode 100644 index 55830d3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-2.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343403e8:encoding5:UTF-84:infod6:lengthi18092e4:name11:gpl-2.0.txt12:piece lengthi32768e6:pieces20:LÇ{Ż‘ć¦JŕH“ý˙§“ť¸L7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-3.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-3.0.txt.torrent deleted file mode 100644 index b101841..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-3.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343403e8:encoding5:UTF-84:infod6:lengthi35147e4:name11:gpl-3.0.txt12:piece lengthi32768e6:pieces40:N@ă™Ţšmýę˘Íô’M焎šĄF–)f"&"`ŐHŠĺ~üw7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/illinois-NCSA.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/illinois-NCSA.txt.torrent deleted file mode 100644 index 3ce156a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/illinois-NCSA.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343404e8:encoding5:UTF-84:infod6:lengthi1462e4:name17:illinois-NCSA.txt12:piece lengthi32768e6:pieces20:Wá˘1úíőiĐé$±F¸´J–*Ę7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/imlib2.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/imlib2.txt.torrent deleted file mode 100644 index 5975ed3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/imlib2.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343404e8:encoding5:UTF-84:infod6:lengthi1987e4:name10:imlib2.txt12:piece lengthi32768e6:pieces20:÷´Řpi.§Ó»?ÉßtRî7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.0.txt.torrent deleted file mode 100644 index fe8e055..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343406e8:encoding5:UTF-84:infod6:lengthi25383e4:name12:lgpl-2.0.txt12:piece lengthi32768e6:pieces20:ş‰fâG:™i˝ĘłÜ‚'L|ýˇ7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.1.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.1.txt.torrent deleted file mode 100644 index ae6e06b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.1.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343406e8:encoding5:UTF-84:infod6:lengthi26530e4:name12:lgpl-2.1.txt12:piece lengthi32768e6:pieces20:¦´ży¬©µV‚&jú¸nŚOż7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-3.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-3.0.txt.torrent deleted file mode 100644 index c518b15..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-3.0.txt.torrent +++ /dev/null @@ -1,2 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343407e8:encoding5:UTF-84:infod6:lengthi7651e4:name12:lgpl-3.0.txt12:piece lengthi32768e6:pieces20:ô^áÇedh´BĘXŢrâ -d§Ýş7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/magnet-links.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/magnet-links.txt.torrent Binary files differdeleted file mode 100644 index 9e7641b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/magnet-links.txt.torrent +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/mpl-2.0.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/mpl-2.0.txt.torrent deleted file mode 100644 index cbe4ec0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/mpl-2.0.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343408e8:encoding5:UTF-84:infod6:lengthi16726e4:name11:mpl-2.0.txt12:piece lengthi32768e6:pieces20:—DÎÜŕ™÷'ł'Í™ˇýĹŠU™7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/public-domain.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/public-domain.txt.torrent deleted file mode 100644 index a1efd8a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/public-domain.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343408e8:encoding5:UTF-84:infod6:lengthi889e4:name17:public-domain.txt12:piece lengthi32768e6:pieces20:â§JaHűă2’IŰO‡4óľ(7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/unlicense.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/unlicense.txt.torrent deleted file mode 100644 index c77ff26..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/unlicense.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343409e8:encoding5:UTF-84:infod6:lengthi1212e4:name13:unlicense.txt12:piece lengthi32768e6:pieces20:§Źy’ŻFAŢmˇ†@$š˛ Žm—7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/wtfpl.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/wtfpl.txt.torrent deleted file mode 100644 index 7819326..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/wtfpl.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343409e8:encoding5:UTF-84:infod6:lengthi432e4:name9:wtfpl.txt12:piece lengthi32768e6:pieces20:ÔHŮ˙’šÂ·O.KŤŞßýUi7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/x11.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/x11.txt.torrent deleted file mode 100644 index f6239e2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/x11.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343410e8:encoding5:UTF-84:infod6:lengthi1293e4:name7:x11.txt12:piece lengthi32768e6:pieces20:&׾;T‚#˘+j‹¶H,uÜq7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/xfree86.txt.torrent b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/xfree86.txt.torrent deleted file mode 100644 index b4c430e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/xfree86.txt.torrent +++ /dev/null @@ -1 +0,0 @@ -d10:created by25:Transmission/2.82 (14160)13:creation datei1408343411e8:encoding5:UTF-84:infod6:lengthi2297e4:name11:xfree86.txt12:piece lengthi32768e6:pieces20:)~ŽSĹ˙Hu¤×í–Ź;y0°h>7:privatei0eee
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/unlicense.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/unlicense.txt deleted file mode 100644 index 471f09f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/unlicense.txt +++ /dev/null @@ -1,25 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -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 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. - -For more information, please refer to <http://unlicense.org/> - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/wtfpl.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/wtfpl.txt deleted file mode 100644 index 0557e73..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/wtfpl.txt +++ /dev/null @@ -1,11 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/x11.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/x11.txt deleted file mode 100644 index e133cb3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/x11.txt +++ /dev/null @@ -1,26 +0,0 @@ -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 X CONSORTIUM 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 the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from the X Consortium. - -X Window System is a trademark of X Consortium, Inc. - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/xfree86.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/xfree86.txt deleted file mode 100644 index b41fc74..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/xfree86.txt +++ /dev/null @@ -1,43 +0,0 @@ -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: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions, and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution, -and in the same place and form as other copyright, license and -disclaimer information. - -3. The end-user documentation included with the redistribution, if -any, must include the following acknowledgment: "This product includes -software developed by The XFree86 Project, Inc -(http://www.xfree86.org/) and its contributors", in the same place and -form as other third-party acknowledgments. Alternately, this -acknowledgment may appear in the software itself, in the same form and -location as other such third-party acknowledgments. - -4. Except as contained in this notice, the name of The XFree86 -Project, Inc shall not be used in advertising or otherwise to promote -the sale, use or other dealings in this Software without prior written -authorization from The XFree86 Project, Inc. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE XFREE86 PROJECT, INC OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loader.gif b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loader.gif Binary files differdeleted file mode 100644 index 22a5bb3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loader.gif +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loading-panel.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loading-panel.html deleted file mode 100644 index 4db4709..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loading-panel.html +++ /dev/null @@ -1,31 +0,0 @@ -<!doctype html> - -<html> -<head> -<!-- /** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ ---> -</head> - -<body> -<h1>LibreJS: Analyzing JavaScript</h1> -<img src="./loader.gif"/> -</body> -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/contentscript.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/contentscript.js deleted file mode 100644 index 6ac7578..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/contentscript.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/* - * Handle messages sent from add-on to the content script - */ -//onMessage = function onMessage(message) { -self.on('message', function (message) { - var reason = message[0]; - - if(reason == "INCOMINGPREFS") { - // These are the prefs we need to set up the pref panel - - initPanel(message); - } -}); - -function initPanel(prefObject) { - - for(var i in prefObject) { - if(prefObject[i]) { - if(prefObject[i].split(":")[1]) { - try { - var item = this.document.getElementById("pref_" + prefObject[i].split(":")[0]); - item.checked = prefObject[i].split(":")[1] == "true"; - } catch(e) { - //"ERROR: " + //console.log(i); - } - } - } - } - - - var inputs = this.document.getElementsByTagName("input"); - - for(i in inputs) { - - input = inputs[i]; // correct version - - if(input) { - if(input.nodeName == "INPUT") { - input.onclick = function() { - self.postMessage("SETPREF:" + this.id.split("pref_")[1] + ":" + this.checked); - }; - } - } - } - - - - - prefObject = null; -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/preferences_panel.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/preferences_panel.html deleted file mode 100644 index ffb1c5a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/preferences_panel.html +++ /dev/null @@ -1,71 +0,0 @@ -<html> - <head> -<!-- /** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ ---> - <title> - LibreJS preferences - </title> - <style> - body > div { - border: 1px black; - } - div.choice { - background: #555; - color:#c4c4c4; - margin:10px; - - padding:10px; - font-size:13px; - clear:both; - overflow:hidden; - } - input { - float:left; - display:inline; - } - div.choice p { - display:block; - width:200px; - float:left; - margin-left:0; - } - span.notdone { - color:red; - } - #pref_whitelist { - width:240px; - } - </style> - - </head> - - <body> - <h3> - LibreJS Preferences - </h1> - <div> - <div> - <div class="choice"> - <input id="pref_nolazy" type="checkbox"/><p>Do not consider lazy license mentions as free (e.g.: dual-licensed under MIT and GPL, ...)</p> - </div> - </div> - </body> -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_detector/script_detector.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_detector/script_detector.js deleted file mode 100644 index b16b9dd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_detector/script_detector.js +++ /dev/null @@ -1,363 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// array reflects valid types as listed in -// http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsScriptLoader.cpp#437 -// anything appended to end of strings is considered valid: -var jsValidTypes = [ - /^text\/javascript/i, - /^text\/ecmascript/i, - /^application\/javascript/i, - /^application\/ecmascript/i, - /^application\/x-javascript/i -]; - -// the list of all available event attributes -var intrinsecEvents = [ - "onload", - "onunload", - "onclick", - "ondblclick", - "onmousedown", - "onmouseup", - "onmouseover", - "onmousemove", - "onmouseout", - "onfocus", - "onblur", - "onkeypress", - "onkeydown", - "onkeyup", - "onsubmit", - "onreset", - "onselect", - "onchange"]; - - -/** - * scriptHasInvalidType - * - * Checks that a script does not have a js "template" type. - * Normally any script that has a type attribute other than the - * few allowed ones is not interpreted. But by security, we only - * discard a few of them. - * - * @param script obj The script element. - * @return returns true if it matches a template type. - * - */ -var scriptHasInvalidType = function (type) { - - var i = 0, - le = jsValidTypes.length; - - if (type === 'librejs/blocked') { - // js has already been blocked. - return true; - } - - if (!type) { - // type isn't set, don't look further. - return false; - } - - for (; i < le; i++) { - if (jsValidTypes[i].test(type)) { - return false; - } - } - - // type is invalid and - // hence cannot be executed. - return true; - -}; - - -/** - * scriptDetector - * Detects all scripts (inline, onpage, and external) - * and checks whether they have been blocked or if they - * are being executed. - */ - -var scriptDetector = { - contactLink: null, - blockedScripts: null, - acceptedScripts: null, - dryRunScripts: null, - acceptedAttributes: null, - acceptedCode: [], - blockedCode: [], - dryRunCode: [], - - init: function() { - if (typeof $ !== 'function') { - return; - } - this.blockedScripts = $('script[type="librejs/blocked"]'); - this.acceptedScripts = $('script[type!="librejs/blocked"]') - .not('script[data-librejs-dryrun]'); - this.dryRunScripts = $('script[data-librejs-dryrun]'); - console.debug(this.dryRunScripts); - this.fetchAllNonScriptTags(); - - if (this.blockedScripts.length) { - - // display noscript tags if applicable. - this.displayNoScriptTags(); - try { - // initialize the page mod code. - pageModFinder.init(); - } catch (e) { - // fail silently. - } - this.fetchBlockedScripts(); - } - - if (this.acceptedScripts.length) { - this.fetchAcceptedScripts(); - } - if (this.dryRunScripts.length) { - this.fetchDryRunScripts(); - } - - self.postMessage({ - 'event': 'scriptsFetched', - 'value': { - 'blocked': this.blockedCode, - 'accepted': this.acceptedCode, - 'dryRun': this.dryRunCode - } - }); - }, - - /** - * fetchBlockedScripts - * - * Gather blocked scripts. - * - */ - fetchBlockedScripts: function () { - var that = this, - singleton = '', reason; - - this.blockedScripts.each(function() { - singleton = ''; - reason = ""; - - - if ($(this).data('librejs-reason') && $(this).data('librejs-reason').length > 9) { - reason = $(this).data('librejs-reason') + ': '; - } - - if ($(this).text()) { - - if ($(this).data('singleton') === true) { - singleton = 'This script was removed before LibreJS analysis: '; - } - - that.blockedCode.push({'contents': singleton + reason + that.truncateText($(this).text()), - 'inline': true}); - } - - if ($(this).data('librejs-blocked-src')) { - - that.blockedCode.push({'url': $(this).data('librejs-blocked-src'), 'contents': reason, 'inline': false}); - } - - }); - }, - - /** - * fetchAcceptedScripts - * - * Gather accepted scripts. - * - */ - fetchAcceptedScripts: function () { - - var that = this, typeMessage = '', reason = ""; - - this.acceptedScripts.each(function() { - reason = ""; - - if ($(this).data('librejs-reason') && $(this).data('librejs-reason').length > 9) { - reason = $(this).data('librejs-reason') + ':'; - } - - if ($(this).attr('type') && - scriptHasInvalidType($(this).attr('type'))) { - typeMessage = 'script type is not valid (js is not executed): '+ $(this).attr('type') + ' '; - } - - if ($(this).text()) { - that.acceptedCode.push({'contents': reason + typeMessage + that.truncateText($(this).text()), - 'inline': true}); - } - - if ($(this).attr('src')) { - that.acceptedCode.push({'url': $(this).attr('src'), 'contents': reason + typeMessage, - 'inline': false}); - } - - }); - - }, - - /** - * fetchDryRunScripts - * - * Gather accepted scripts. - * - */ - fetchDryRunScripts: function () { - - var that = this, typeMessage = '', reason = ""; - - this.dryRunScripts.each(function() { - reason = ""; - - if ($(this).data('librejs-reason') && $(this).data('librejs-reason').length > 9) { - reason = $(this).data('librejs-reason') + ':'; - } - - if ($(this).attr('type') && - scriptHasInvalidType($(this).attr('type'))) { - typeMessage = 'script type is not valid (js is not executed): '+ $(this).attr('type') + ' '; - } - - if ($(this).text()) { - that.dryRunCode.push({'contents': reason + typeMessage + that.truncateText($(this).text()), - 'inline': true}); - } - - if ($(this).attr('src')) { - that.dryRunCode.push({'url': $(this).attr('src'), 'contents': reason + typeMessage, - 'inline': false}); - } - - }); - - }, - - fetchAllNonScriptTags: function () { - var that = this; - var blockedAnchors = $('*[data-librejs="rejected"]').not('script'); - var acceptedAnchors = $('*[data-librejs="accepted"]').not('script'); - var i = 0, le, attributes; - - acceptedAnchors.each(function () { - - var content = ""; - - if ($(this).attr('href')) { - - content = $(this).attr('href'); - - } - - else { - content = that.findOnAttributeContent($(this)); - } - - that.acceptedCode.push( - {contents: 'in attribute: ' + content, - inline: true} - ); - - }); - - blockedAnchors.each(function () { - - var content = ""; - - if ($(this).attr('href')) { - content = $(this).attr('href'); - } else if ($(this).data('librejs-blocked-event')) { - attributes = $(this).data('librejs-blocked-event'); - le = attributes.length; - for (i = 0; i < le; i++) { - content += attributes[i].attribute + ":" + attributes[i].value + ";\n"; - } - } - - that.blockedCode.push( - {contents: 'in attribute: ' + content, - inline: true} - ); - }); - }, - - findOnAttributeContent: function (elem) { - var i = 0, - le = intrinsecEvents.length, - content = ""; - - for (; i < le; i++) { - - if (elem.attr(intrinsecEvents[i])) { - - content += elem.attr(intrinsecEvents[i]) + " -- "; - - } - - } - return content; - }, - - /** - * displayNoScriptTags - * Whenever blocked scripts are found, deep clone noscript tags - * and place them in a new div. - */ - displayNoScriptTags: function () { - - var noscripts = $('body noscript'), - div, content; - - noscripts.each(function (index) { - div = $('<div/>'); - - - content = $(this).contents(); - content = $("<div>").html(content).text(); - - div.append(content); - div.children('style, script, meta').remove(); - - - // insert noscript content right after the - // original noscript tag. - div.insertAfter($(this)); - }); - - }, - truncateText: function (str) { - - if (str.length > 1000) { - str = str.slice(0, 1000) + '…'; - } - return str; - } - -}; - -scriptDetector.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/gethash.sh b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/gethash.sh deleted file mode 100644 index f55b45c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/gethash.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -# -# gethash.sh -# -# Get the hash of a js file for use in the librejs database. -# - -FILE=$1 -wget -O /tmp/jsfile $FILE -iconv -f LATIN1 -t UTF8 /tmp/jsfile | sha1sum diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/script-libraries.json b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/script-libraries.json deleted file mode 100644 index 437f70b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/script-libraries.json +++ /dev/null @@ -1,1440 +0,0 @@ -{ - "9d6f8bdcadd59eba977e9e31066bf393c9fdf8a4": { - "filename": "http://code.jquery.com/jquery-1.0.4.js", - "result": "[freelib]" - }, - "31555f340a206de7622fb760718ef4a1b296ed44": { - "filename": "http://code.jquery.com/jquery-1.1.js", - "result": "[freelib]" - }, - "88c03b5c437ac3551661ecfbe6e1de155c3099c4": { - "filename": "http://code.jquery.com/jquery-1.0.pack.js", - "result": "[freelib]" - }, - "08341cd159e29f561ca0ec16c99bf4b85e43d30f": { - "filename": "http://code.jquery.com/jquery-1.0.1.pack.js", - "result": "[freelib]" - }, - "84b1514a01def3bc0b52f6fa03d0d9fa349bef72": { - "filename": "http://code.jquery.com/jquery-1.0.2.pack.js", - "result": "[freelib]" - }, - "d3b30b0fead39e4c40fb0c91408e74439020a279": { - "filename": "http://code.jquery.com/jquery-1.0.2.js", - "result": "[freelib]" - }, - "fa05290dadfb7d2659a55c50b77595e23f999a74": { - "filename": "http://code.jquery.com/jquery-1.0.1.js", - "result": "[freelib]" - }, - "4a2c9fd552e1ca9ad66feaaad365990b1e664a8f": { - "filename": "http://code.jquery.com/jquery-1.0.4.pack.js", - "result": "[freelib]" - }, - "ddb4126bf4713cb4e0f2310401e58cb9e3f98997": { - "filename": "http://code.jquery.com/jquery-1.0.3.pack.js", - "result": "[freelib]" - }, - "4c12e01d990bd2b1075812d9f28e3ffa50ca59df": { - "filename": "http://code.jquery.com/jquery-1.0.3.js", - "result": "[freelib]" - }, - "16306f8187df578589821e6eb6b807ac4d467d1f": { - "filename": "http://code.jquery.com/jquery-1.1.pack.js", - "result": "[freelib]" - }, - "24dd74d65d2e02aae973af97ebbb31b9820a5bbb": { - "filename": "http://code.jquery.com/jquery-1.1.1.pack.js", - "result": "[freelib]" - }, - "24fdaa88685c8b2dadcc94559ceef318fdcd115b": { - "filename": "http://code.jquery.com/jquery-1.1.1.js", - "result": "[freelib]" - }, - "07c089df7b7a5da16f434870087d6b0e1c45d3b5": { - "filename": "http://code.jquery.com/jquery-1.1.2.pack.js", - "result": "[freelib]" - }, - "788bb58005b75a004cd7abbd26f942eea0391f47": { - "filename": "http://code.jquery.com/jquery-1.1.2.js", - "result": "[freelib]" - }, - "a7e07121debf460f86aa77073676c1e936478c22": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.1.3.js", - "result": "[freelib]" - }, - "d0d4200eedc83fe692dd65aeab5a548bfe840d06": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.1.3.1.pack.js", - "result": "[freelib]" - }, - "e1c9252b3e60673e4fa1bb1648cb18cd33139535": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.1.3.1.js", - "result": "[freelib]" - }, - "0c80055d513ce3103bb70ca956be005f63e32922": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.1.4.pack.js", - "result": "[freelib]" - }, - "5af7abb29b3b091080db17e53ef6ddcfa555dbe6": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.1.4.js", - "result": "[freelib]" - }, - "e0c497fc264d7706da23235266ed52acf2c7b89a": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.min.js", - "result": "[freelib]" - }, - "3aca6488dfb65cf0e600a7a70376ca1354b7377c": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.js", - "result": "[freelib]" - }, - "0cafb88edcaebad82c207cdf124de1889364c9f3": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.1.min.js", - "result": "[freelib]" - }, - "384cbfe95d92a30d7c86ac07ea5de56f79c15f6a": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.1.js", - "result": "[freelib]" - }, - "2710cce192fcc4dc676d9572cd852f104ea59387": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.2.pack.js", - "result": "[freelib]" - }, - "6869cb783670d6a4923aaccfe4331015961ed8d6": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.4.pack.js", - "result": "[freelib]" - }, - "55c7f265deba4afc1335071fafbbf7fda8f02bbe": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.6.js", - "result": "[freelib]" - }, - "f3abd53f3725675e3e049c414749e16df11951ba": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.js", - "result": "[freelib]" - }, - "7b9e8594368d30387059e5fdef9d662095dbbf7a": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.min.js", - "result": "[freelib]" - }, - "6be187a67b639b65dc8427eb8e790e42bbe4d7dd": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.1.js", - "result": "[freelib]" - }, - "fed603a4db640b82de54b246de4be7a1cffa8780": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js", - "result": "[freelib]" - }, - "f0b95e99225f314fbe37ccf6b74ce2f916c517de": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.2.js", - "result": "[freelib]" - }, - "3dc9f7c2642efff4482e68c9d9df874bf98f5bcb": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js", - "result": "[freelib]" - }, - "ea6cc893792569fdbb344181034eb668261f2b24": { - "filename": "http://code.jquery.com/jquery-1.5.1.js", - "result": "[freelib]" - }, - "fe7b4d1b72fc22fc397f3df3f1fd891c78f8fc96": { - "filename": "http://code.jquery.com/jquery-1.5.2.min.js", - "result": "[freelib]" - }, - "b509dd44ba3f9c72cf8bba6fcb5f06fae15cabf6": { - "filename": "http://code.jquery.com/jquery-1.5.2.js", - "result": "[freelib]" - }, - "22c1eefcce5be20a3e0966f5bcdf88ed81e9f5e7": { - "filename": "http://code.jquery.com/jquery-1.6.1.js", - "result": "[freelib]" - }, - "7fa300666dadade0d006e4c496bf1c85f4b0ab0c": { - "filename": "http://code.jquery.com/jquery-1.6.2.min.js", - "result": "[freelib]" - }, - "eeee9d4604e71f2e01b818fc1439f7b5baf1be7a": { - "filename": "http://code.jquery.com/jquery-1.6.2.js", - "result": "[freelib]" - }, - "aee58a81bea80c20176c61ff03caaf0aa273f9a1": { - "filename": "http://code.jquery.com/jquery-1.6.3.min.js", - "result": "[freelib]" - }, - "61a11f601d70a331de6444c11e72eab2ffd86427": { - "filename": "http://code.jquery.com/jquery-1.6.4.min.js", - "result": "[freelib]" - }, - "3e5c6d7c6e09965d36df8c1e3d9dca6462c41ec1": { - "filename": "http://code.jquery.com/jquery-1.6.3.js", - "result": "[freelib]" - }, - "921e7702ac9e4c4a4bca052b7bc83b0304440ee3": { - "filename": "http://code.jquery.com/jquery-1.6.4.js", - "result": "[freelib]" - }, - "13184e03cd6a0fc0020cf5ad4eee3d8cb3fadac1": { - "filename": "http://code.jquery.com/jquery-1.7.min.js", - "result": "[freelib]" - }, - "7f389928e5f9d3cb2ae273ae1a6913741d18f0a6": { - "filename": "http://code.jquery.com/jquery-1.7.js", - "result": "[freelib]" - }, - "b47730ffaec4272a8a01756af2ef13ecea1c4e92": { - "filename": "http://code.jquery.com/jquery-1.7.1.js", - "result": "[freelib]" - }, - "0b6da89c21e1dd2093fb26366dd90ffeea635c6a": { - "filename": "http://code.jquery.com/jquery-1.7.1.min.js", - "result": "[freelib]" - }, - "7c64f79dbeeebaa7accd13bf68302c7adb195d7d": { - "filename": "http://code.jquery.com/jquery-1.7.2.min.js", - "result": "[freelib]" - }, - "0d7896e2bb23f88e26e52b22a075350b354df447": { - "filename": "http://code.jquery.com/jquery-1.7.2.js", - "result": "[freelib]" - }, - "0eaabd478dd9538ac53334276b8ff784180140a6": { - "filename": "http://code.jquery.com/jquery-1.8.0.js", - "result": "[freelib]" - }, - "b567b6dd8cb0cb5c1183e55d2f2d1466f32edb39": { - "filename": "http://code.jquery.com/jquery-1.8.2.min.js", - "result": "[freelib]" - }, - "229d5537173d1f006b744b014a28f64912988c61": { - "filename": "http://code.jquery.com/jquery-1.8.2.js", - "result": "[freelib]" - }, - "8b6babff47b8a9793f37036fd1b1a3ad41d38423": { - "filename": "http://code.jquery.com/jquery-1.8.3.min.js", - "result": "[freelib]" - }, - "49a6d1346f3d5a167331a8a5de4f34b5fcc1f6d0": { - "filename": "http://code.jquery.com/jquery-1.8.3.js", - "result": "[freelib]" - }, - "002da8cbe90fcf32fbdebb72386125079e3805ee": { - "filename": "http://code.jquery.com/jquery-1.9.0.min.js", - "result": "[freelib]" - }, - "bfc05b695dfa4f23e11d04b84993585da7a764bf": { - "filename": "http://code.jquery.com/jquery-1.9.0.js", - "result": "[freelib]" - }, - "6c6f10e003ad0c7f462802c0e6422971577c3532": { - "filename": "http://code.jquery.com/jquery-1.8.1.min.js", - "result": "[freelib]" - }, - "45efe8797f5a875878fec7fdaaa90d99532dbf16": { - "filename": "http://code.jquery.com/jquery-1.8.1.js", - "result": "[freelib]" - }, - "ebc4e804054a68c177e9c67cc58e7960d3a8706f": { - "filename": "http://code.jquery.com/jquery-1.8.0.min.js", - "result": "[freelib]" - }, - "ae49e56999d82802727455f0ba83b63acd90a22b": { - "filename": "http://code.jquery.com/jquery-1.9.1.min.js", - "result": "[freelib]" - }, - "9257afd2d46c3a189ec0d40a45722701d47e9ca5": { - "filename": "http://code.jquery.com/jquery-1.9.1.js", - "result": "[freelib]" - }, - "348ab13488f5ab45e048dfb39bb4bc8ed9d840c2": { - "filename": "http://code.jquery.com/jquery-1.10.0.js", - "result": "[freelib]" - }, - "19715ffee604b54e95a0e9db76f6de2b5125c29e": { - "filename": "http://code.jquery.com/jquery-1.10.0.min.js", - "result": "[freelib]" - }, - "b39b6f7d8c5f62a40960ded5c40cc288c10b438d": { - "filename": "http://code.jquery.com/jquery-1.10.1.js", - "result": "[freelib]" - }, - "161b78ec52f28657a835e4a5423f03782fd35806": { - "filename": "http://code.jquery.com/jquery-1.10.1.min.js", - "result": "[freelib]" - }, - "1d85f0f3464e5e49b0522744bf7314e176ac76d9": { - "filename": "http://code.jquery.com/jquery-1.10.2.js", - "result": "[freelib]" - }, - "0511abe9863c2ea7084efa7e24d1d86c5b3974f1": { - "filename": "http://code.jquery.com/jquery-1.10.2.min.js", - "result": "[freelib]" - }, - "6945741107601d402c70a13ce46eb72fd1168bc8": { - "filename": "http://code.jquery.com/jquery-1.11.0.js", - "result": "[freelib]" - }, - "b66ed708717bf0b4a005a4d0113af8843ef3b8ff": { - "filename": "http://code.jquery.com/jquery-1.11.0.min.js", - "result": "[freelib]" - }, - "73e5d044bd153dd912930e8be433059454ce19cd": { - "filename": "http://code.jquery.com/jquery-1.11.1.js", - "result": "[freelib]" - }, - "d6c1f41972de07b09bfa63d2e50f9ab41ec372bd": { - "filename": "http://code.jquery.com/jquery-1.11.1.min.js", - "result": "[freelib]" - }, - "0be05c714a7e6cf28fe692629ece5b3769901dca": { - "filename": "http://code.jquery.com/jquery-2.0.0.min.js", - "result": "[freelib]" - }, - "79db35e3a94da9ce724c4d3c8ccc5d1864b23a95": { - "filename": "http://code.jquery.com/jquery-2.0.0.js", - "result": "[freelib]" - }, - "d193cc22196566fce6b7a54d483f8ca55b38a2f5": { - "filename": "http://code.jquery.com/jquery-2.0.1.js", - "result": "[freelib]" - }, - "2a35d61baf7dde4a800b08fd7b495a62a8a1e620": { - "filename": "http://code.jquery.com/jquery-2.0.1.min.js", - "result": "[freelib]" - }, - "37fc3e651159cf6b9353a3f6f3bfe6e5e63e0092": { - "filename": "http://code.jquery.com/jquery-2.0.2.js", - "result": "[freelib]" - }, - "1e0331b6dd11e6b511d2e3d75805f5ccdb3b83df": { - "filename": "http://code.jquery.com/jquery-2.0.2.min.js", - "result": "[freelib]" - }, - "ad73590c92b4c3f08d02a0751ba4e4aef658daa0": { - "filename": "http://code.jquery.com/jquery-2.0.3.js", - "result": "[freelib]" - }, - "fbf9c77d0c4e3c34a485980c1e5316b6212160c8": { - "filename": "http://code.jquery.com/jquery-2.0.3.min.js", - "result": "[freelib]" - }, - "0fe3e567e0776226ee98326ba8cae7680683c112": { - "filename": "http://code.jquery.com/jquery-2.1.0.js", - "result": "[freelib]" - }, - "98884258cbdb0d939fa2c5e74fc7ac9e56d8170f": { - "filename": "http://code.jquery.com/jquery-2.1.0.min.js", - "result": "[freelib]" - }, - "8d55aabf2b76486cc311fdc553a3613cad46aa3f": { - "filename": "http://code.jquery.com/jquery-2.1.1.js", - "result": "[freelib]" - }, - "afb90752e0a90c24b7f724faca86c5f3d15d1178": { - "filename": "http://code.jquery.com/jquery-2.1.1.min.js", - "result": "[freelib]" - }, - - "5f99079e4564f94a1d5e45d22d6dc18acbb148da": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.js", - "result": "[freelib]" - }, - "a2035b74876c5212cfe3e4e35dfd070e74e8c3fd": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.22/jquery-ui.js", - "result": "[freelib]" - }, - "2a3fa481079f9e02043810cbeee6b5481abf51c0": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.20/jquery-ui.js", - "result": "[freelib]" - }, - "0881516b541abe68d79724c08c1a665872f8f2c2": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.js", - "result": "[freelib]" - }, - "85b15aef55b1eede971c7febd0c00ba04dc16edf": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js", - "result": "[freelib]" - }, - "d9b48fef067caa58d4e1dec54801c22fe0ea7449": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js", - "result": "[freelib]" - }, - "990dbb08231ef9c9c59653051f5ac7c1e2185d46": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.js", - "result": "[freelib]" - }, - "2e140b943f459e383f569227b3e5569f0dbc6f34": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.js", - "result": "[freelib]" - }, - "53dd39212504739ac18790a4461b9a67c50f2728": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.js", - "result": "[freelib]" - }, - "5cd73db8238d48c08c88f12fe9e5b99b6fa644f7": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.js", - "result": "[freelib]" - }, - "0c3d725fac553c73368496769ff77c3045103704": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.js", - "result": "[freelib]" - }, - "e5de581f09ac990adae2b4aede35264f1dc5cd72": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.js", - "result": "[freelib]" - }, - "e1e87320b2d14e36a9bba1b637b5247645df7185": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.19/jquery-ui.js", - "result": "[freelib]" - }, - "8b71e136c6275d0eeed2b55b9e718a54ce343015": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.js", - "result": "[freelib]" - }, - "c71ddb1b3843c24e909a31595b7e873d7e6da45d": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js", - "result": "[freelib]" - }, - "d5203dbbb97db1a68ca5a3adf265f17cdaea738d": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.js", - "result": "[freelib]" - }, - "1b96be82b697e835b903c6c22799c8e4e55e285c": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.js", - "result": "[freelib]" - }, - "2804fac51308f459c3eb9c3d20e7ee009a8ba31c": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js", - "result": "[freelib]" - }, - "5d61b19cbee2f8047f518a58ceff7fdaeeb24921": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.js", - "result": "[freelib]" - }, - "7f7859e006f0644a43a7294b50b39e7e9159b3a2": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js", - "result": "[freelib]" - }, - "842cb8f83614f6de98f70fa7de2f866eecae7ab4": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.js", - "result": "[freelib]" - }, - "90fab357529f510e5134ad0dcdad3f654894d4fc": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.3/jquery-ui.js", - "result": "[freelib]" - }, - "960e36796c42dadf66fafb63bba6087c7d6e1d85": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.js", - "result": "[freelib]" - }, - "1f102103bea71c5e173a916137c563dc62a97cdb": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.js", - "result": "[freelib]" - }, - "61c88c8898ae6bd653737a9dae52209a98998def": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.js", - "result": "[freelib]" - }, - "b87f7150da2b0811ed143443af4038e3e2d41eda": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.js", - "result": "[freelib]" - }, - "429282063ca7f3bae9797d70a6f09f2e3e05458a": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js", - "result": "[freelib]" - }, - "e398b87b98ae72cbee9f7d3044189ea638f3f80c": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.22/jquery-ui.min.js", - "result": "[freelib]" - }, - "e9b5baec45507c35477aac5d19afbca8cad92426": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js", - "result": "[freelib]" - }, - "431b7ebb5e36d5af5e7890b782789ac983e28d00": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.19/jquery-ui.min.js", - "result": "[freelib]" - }, - "680f1bd5b4021dbac8b82d68a818d3a94f097ffd": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js", - "result": "[freelib]" - }, - "fc4c1a4691f3819ecd16eaefa68f96f764538f1e": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js", - "result": "[freelib]" - }, - "1d97dd4111b504abc8f6dee45daf6f358aa40140": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.js", - "result": "[freelib]" - }, - "aff393e11d2122a6026df1e2f75d46de4ead89ff": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.js", - "result": "[freelib]" - }, - "d81b246f0f221f4d9a6eb74a8994c4041d2b7215": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.6.0/jquery-ui.js", - "result": "[freelib]" - }, - "8e8b0dccbacc70dc6406023be9e35dfa4f3a944e": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js", - "result": "[freelib]" - }, - "67070ff953d6b0f886083edba723f6d66fa6cbca": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js", - "result": "[freelib]" - }, - "6952564ff6404bd93cb523f1634b451ac1cc8fec": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js", - "result": "[freelib]" - }, - "b48e01c35c1e6ad622386b9a3161bd1bf02723c8": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js", - "result": "[freelib]" - }, - "34d32c47711aa10bdeb196c55d489962296a64c4": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js", - "result": "[freelib]" - }, - "33f5808531e82f2f6e8859da3a765c4d8a0073d2": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js", - "result": "[freelib]" - }, - "973e1554af7d9240e059e38165f2e7b5fc7aa0a5": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js", - "result": "[freelib]" - }, - "ae74362cdb2fadb2eee6c962f47f1e33af51c79d": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.20/jquery-ui.min.js", - "result": "[freelib]" - }, - "31d0cb90f7b82088df6c4e00b5765f9dccc48329": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.js", - "result": "[freelib]" - }, - "a192b2ef3371febba192179ff86e3da3f633160d": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js", - "result": "[freelib]" - }, - "db895a7ed5c8b42e27de2b3ef3199d038a259fdb": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.min.js", - "result": "[freelib]" - }, - "06adc576409427237ce3c269bb9a568d3cd53c9b": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js", - "result": "[freelib]" - }, - "8fdfbe7ccaf0bdcde4c0b34738c0cd73b4587a45": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js", - "result": "[freelib]" - }, - "02d2e4a524b0da52c3cb236619ad065fec44d69a": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js", - "result": "[freelib]" - }, - "42936431058c6c4663e64e2c07931b9159083c31": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js", - "result": "[freelib]" - }, - "bbf7ce8f5ce8d8f9d207f8973328527ac0093b17": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js", - "result": "[freelib]" - }, - "09fdd3d9aebc9086b27b45b3fb051ebded272b39": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", - "result": "[freelib]" - }, - "e002b335c75b5edefcd251962f61f53a2ab8e0f2": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js", - "result": "[freelib]" - }, - "b5f2733aac4e257929a5f1ff93410ee0bda311b6": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.3/jquery-ui.min.js", - "result": "[freelib]" - }, - "f978dcb9ea6ecfbc7f8a2f9948bacd679c0cd1b4": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js", - "result": "[freelib]" - }, - "f78ae3cdaf4a6a21dfb2565491f5d295462d8be3": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js", - "result": "[freelib]" - }, - "5ed6bdacae842fc530dbc83aabb9a466c7f2b5a1": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.6.0/jquery-ui.min.js", - "result": "[freelib]" - }, - "fe810f47883364fbc4dc2c61e03a3aca0f74fed7": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js", - "result": "[freelib]" - }, - "da851ac384c279992d1855d59257f8d98c603063": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js", - "result": "[freelib]" - }, - "5b59bc1a7087c3a83abd5b9ff559a88428ceab0a": { - "filename": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js", - "result": "[freelib]" - }, - - "0a2054143eddc76447bacf3da455ffc1c726e304": { - "filename": "http://yui.yahooapis.com/3.6.0/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "5f47da5d3c8902e763ef6ae02e9307a63a95ae5a": { - "filename": "http://yui.yahooapis.com/2.6.0/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "52ebc252c54e6cdaa9e349e1fea37a2950f6af96": { - "filename": "http://yui.yahooapis.com/2.7.0/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "e77f9c1022bb48425d63cbaf309d7718ff5d3fbd": { - "filename": "http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "8f1cfeefecc782f53f411de1bf64c77b48b8ba56": { - "filename": "http://yui.yahooapis.com/2.8.1/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "aa113da84ddbad46a8002ea22393a238eccf9ee4": { - "filename": "http://yui.yahooapis.com/2.9.0/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "a4fadcd6f68d7823a9fd9d1f6089025041a3212a": { - "filename": "http://yui.yahooapis.com/2.8.2/build/yuiloader/yuiloader-min.js", - "result": "[freelib]" - }, - "c398b7eab95bfe84816f60311eaf91194f3bfec8": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/aes.js", - "result": "[freelib]" - }, - "a7eba31001379f751d1a54b988ccdb500d873ec1": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/enc-base64.js", - "result": "[freelib]" - }, - "9bdf0dfad487422fd36693d4119b59175f0112ee": { - "filename": "http://yui.yahooapis.com/2.8.1/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "d9f710afddaba467707c0d6e7b187a8beae1e1f2": { - "filename": "http://yui.yahooapis.com/2.8.2/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "5f8d372d7b385588f61dd53c588608f47a3c3b60": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/enc-utf16.js", - "result": "[freelib]" - }, - "4dc6c77a03258ee7fbe5e877a1ed97311bc45652": { - "filename": "https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject_src.js", - "result": "[freelib]" - }, - "5847ed101f55d51c53538a7078971e7de8fb6762": { - "filename": "https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", - "result": "[freelib]" - }, - "fe91b37266d1cdb4b4f51297f69326e271704f35": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "493afa22594fdff6e6fc4f21f99c626533c35b06": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "9fa29ea8f3ec6714b3b6236eb2ce6e1ce905c560": { - "filename": "http://yui.yahooapis.com/2.6.0/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "1523029ce227a35976407408c5d08039c8fe4f0e": { - "filename": "http://yui.yahooapis.com/2.7.0/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "9514b1927292acf4c670fae6492e9ce2e263472f": { - "filename": "http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "6b911b0dc178423b946b0299851d9661004c21ef": { - "filename": "http://code.jquery.com/jquery-1.4.1.js", - "result": "[freelib]" - }, - "65cbff4e9d95d47a6f31d96ab4ea361c1f538a7b": { - "filename": "http://code.jquery.com/jquery-1.4.2.min.js", - "result": "[freelib]" - }, - "f02e1f7f1bb966d5fcf16b03daa79ee077a993f8": { - "filename": "http://code.jquery.com/jquery-1.4.js", - "result": "[freelib]" - }, - "b9c72aa78de3c124248f30234c64bf6f3b1a7cb5": { - "filename": "http://code.jquery.com/jquery-1.1.3.pack.js", - "result": "[freelib]" - }, - "bff995d3a845903f281b0b51fea421059459a808": { - "filename": "http://code.jquery.com/jquery-1.4.1.min.js", - "result": "[freelib]" - }, - "b5efe44645f5358e3d785091af3440f80afa85e3": { - "filename": "http://code.jquery.com/jquery-1.4.min.js", - "result": "[freelib]" - }, - "0e9545b59077541c44f521769243a8b717d83aae": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "e80905e4a45e31075b89189f5ba4913fc0451fdf": { - "filename": "http://yui.yahooapis.com/2.9.0/build/yuiloader/yuiloader.js", - "result": "[freelib]" - }, - "80494ad8eb98e317ffec3671b00944cdc30cee02": { - "filename": "http://yui.yahooapis.com/3.4.0/build/yui-base/yui-base-min.js", - "result": "[freelib]" - }, - "83d1b489e30275a03f568f7e3fa6537d695e0197": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.pack.js", - "result": "[freelib]" - }, - "e956e4de8f223992e2d1362d78c5b5bb33e27497": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "3c737636f4789a45b73f5365cd4cfc8c0922f458": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/hmac.js", - "result": "[freelib]" - }, - "42a8029d12e24767778fc1c6d978b4696b445524": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/mode-cfb.js", - "result": "[freelib]" - }, - "14682f01c5c15f8656cb01425487ad675676df8e": { - "filename": "http://yui.yahooapis.com/3.5.1/build/yui-base/yui-base-min.js", - "result": "[freelib]" - }, - "e1ae2c72f8c5e1b6c423c015349a476f8a908b22": { - "filename": "http://yui.yahooapis.com/3.4.1/build/yui-base/yui-base-min.js", - "result": "[freelib]" - }, - "ca0aea084a63d0a56e1bbf17fde5061f631b391f": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.1.pack.js", - "result": "[freelib]" - }, - "265a86a9d9df5dfdbad77e06c85605bec4beb32a": { - "filename": "http://code.jquery.com/jquery-1.4.2.js", - "result": "[freelib]" - }, - "a2358d630d1a5dad24b679d52e9777b7349910b2": { - "filename": "http://yui.yahooapis.com/3.5.0/build/yui-base/yui-base-min.js", - "result": "[freelib]" - }, - "65fe3b80fae349ecb3acd6541ef651d1ff4961f6": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.1/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "66851ab2133e27b97c4f3048416b947aa7ed82c5": { - "filename": "https://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js", - "result": "[freelib]" - }, - "08f37f8169e620c6ecd87635c18fc2b22e3e850e": { - "filename": "https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js", - "result": "[freelib]" - }, - "28780fdb8fc54bf7d80b1f223abca4f77cd89e85": { - "filename": "https://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject_src.js", - "result": "[freelib]" - }, - "00a5e26ff9ed4b84fc93c764225684c33588a41e": { - "filename": "http://yui.yahooapis.com/3.6.0/build/yui-base/yui-base-min.js", - "result": "[freelib]" - }, - "fe56013bb04c602e676feb34bb49add4da2e0225": { - "filename": "https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js", - "result": "[freelib]" - }, - "6c445baf655cccb16ee2788714827ab186ed94bf": { - "filename": "https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js", - "result": "[freelib]" - }, - "74974f9dc0810ea359367589cb273dd5174d80df": { - "filename": "https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js", - "result": "[freelib]" - }, - "c7e9c7f2fb17e0d2ca2391e33007bf3547fec465": { - "filename": "https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js", - "result": "[freelib]" - }, - "d97ecac3f1b3ccf1f0f68434e8406f87f5acc907": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.2.min.js", - "result": "[freelib]" - }, - "97be02d1785b7bb4f41ae116a6a9bef74cb018d6": { - "filename": "http://code.jquery.com/jquery-1.4.3.min.js", - "result": "[freelib]" - }, - "6a7a7d88fa4e7369003de24164f5961852731e0e": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/mode-ctr.js", - "result": "[freelib]" - }, - "d65a39fc4b09df061a30172f080019ef9d800ca4": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/mode-ecb.js", - "result": "[freelib]" - }, - "427300f82762288c5af967dbf642fbec58c201ea": { - "filename": "http://code.jquery.com/jquery-1.4.4.js", - "result": "[freelib]" - }, - "94ec4a3bcd6b30353584026c0e109e79fb21b6ad": { - "filename": "http://code.jquery.com/jquery-1.5.min.js", - "result": "[freelib]" - }, - "71adcc2cae87e412e521e4a7276efeaee2347927": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.2.js", - "result": "[freelib]" - }, - "677c1ad6d84705c818d63a43298ee3a12959c1b3": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.3.pack.js", - "result": "[freelib]" - }, - "3d542e33a9f3eb3cb45e06fe93d08dd4b7490496": { - "filename": "https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js", - "result": "[freelib]" - }, - "e70997dd3dbadadebf375908515617059d0c597e": { - "filename": "http://yui.yahooapis.com/3.4.1/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "b3db6906c1c0641b7a3098e547e0a8039accd80a": { - "filename": "http://yui.yahooapis.com/3.5.0/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "cc66556593e147584f19b41b697405f828f7562e": { - "filename": "http://code.jquery.com/jquery-1.5.js", - "result": "[freelib]" - }, - "c147a1a86a2c33e60f160b8861501f43f4638c8d": { - "filename": "https://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js", - "result": "[freelib]" - }, - "d45787e64e233eb17f3f1492b12a682f294f866a": { - "filename": "http://code.jquery.com/jquery-1.5.1.min.js", - "result": "[freelib]" - }, - "278d68b8e9edad4895836e272fbc8f78ec4f2f3e": { - "filename": "https://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js", - "result": "[freelib]" - }, - "b98bb654c88a9b7da659fe8dad95a5c7376bb166": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/md5.js", - "result": "[freelib]" - }, - "6463e558dd79d51a2e8464806824c7bbc18c77fd": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.3.min.js", - "result": "[freelib]" - }, - "5cc87d3fcd5cb3c5913c08bad17ff80f4d0d7f46": { - "filename": "http://yui.yahooapis.com/3.4.0/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "333b6d92a99eac873b1de2045c670fbdb61970ab": { - "filename": "http://yui.yahooapis.com/3.5.1/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "522f0852b91775306ca47138c1d6ceeb87677880": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/mode-ofb.js", - "result": "[freelib]" - }, - "4407f7b9602539e80f1569ae734696fd92deeff0": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pad-ansix923.js", - "result": "[freelib]" - }, - "c82ea9768b18696832408b6cc729e2e121def691": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.3.js", - "result": "[freelib]" - }, - "0d2bc9db63acd9cc238a4925e79f9a3079490970": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.4.min.js", - "result": "[freelib]" - }, - "5900300a75ed7917eaa6f75077afe9ef49e66986": { - "filename": "https://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js", - "result": "[freelib]" - }, - "2cc787ebd4d29f2e24646f76f9c525336949783e": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js", - "result": "[freelib]" - }, - "a965003ea3313be11a02743f4807411c9eb71f04": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pad-iso10126.js", - "result": "[freelib]" - }, - "3bb92e84642c03cf0fe49174d0e1c420d46d2e18": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.4.js", - "result": "[freelib]" - }, - "325edd57857f7a3160cfe2512dff5526d7e647db": { - "filename": "http://code.jquery.com/jquery-1.6.min.js", - "result": "[freelib]" - }, - "034970f98cb529c779c8f961b2b7c09ecb499240": { - "filename": "http://code.jquery.com/jquery-1.6.js", - "result": "[freelib]" - }, - "341a7a52109c3abfb23d5a5b4f363fd8d6a52f6c": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pad-iso97971.js", - "result": "[freelib]" - }, - "c654cdaa3ca1184d9b18d0c31f8369a04c63f7f5": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pad-nopadding.js", - "result": "[freelib]" - }, - "20860bad9c83c3890be57052f009b9d97848c9ec": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.5.min.js", - "result": "[freelib]" - }, - "6111fcf6c2277eba8821ca365dbbea472a3206e7": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.4/mootools.js", - "result": "[freelib]" - }, - "9025fe9334566eb919ddca85a8f949b01c7d837d": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.5.pack.js", - "result": "[freelib]" - }, - "0e9a07ee104153a459cdbcb9fa28293b4bbb429f": { - "filename": "http://code.jquery.com/jquery-1.6.1.min.js", - "result": "[freelib]" - }, - "e55462193a857ffe36e42bfcbecfebf1ca33d0b8": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools.js", - "result": "[freelib]" - }, - "7df0e9aae795337db012b3efd0b9ee9cc7719b56": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools.js", - "result": "[freelib]" - }, - "8963108fa84c2033a1052d47079d7f75a7e5b60e": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.5.js", - "result": "[freelib]" - }, - "aa7020d6c8d5475ae588640954caa9e4cdd7eca0": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pad-zeropadding.js", - "result": "[freelib]" - }, - "1be9c3684054001f53fa7ff6d85ec3cb573a9cd2": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js", - "result": "[freelib]" - }, - "e0f3225498158bc63af7bfba636b091ea4ee5fcd": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/pbkdf2.js", - "result": "[freelib]" - }, - "c415b533f7edda8b9de417cc0517904f86e9fe1f": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/rabbit.js", - "result": "[freelib]" - }, - "c10dbe0c2b23444d0794f3376398702d84f41583": { - "filename": "http://jqueryjs.googlecode.com/files/jquery-1.2.6.pack.js", - "result": "[freelib]" - }, - "f4d4125bcd5151aad69dd849a11fc1ca589cc64b": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools.js", - "result": "[freelib]" - }, - "4ee6675ca57dda3255aa669d8ec4d35760eb47c3": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.0/mootools.js", - "result": "[freelib]" - }, - "0c89448016629bb2ea758f4e98529c2e166a122d": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools.js", - "result": "[freelib]" - }, - "b4096385cad3144e81c255aa6e4b7dabb30bc19f": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/rc4.js", - "result": "[freelib]" - }, - "037f4fadbc2020ccb4935384b8ae5af62bdd0145": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/sha1.js", - "result": "[freelib]" - }, - "bc018ec49a5c7757577bb63e5d5f8a99be0e3954": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools.js", - "result": "[freelib]" - }, - "aa5c283b9e094eeacdd080b44951406abbc9e58c": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/sha224.js", - "result": "[freelib]" - }, - "6dc7644a54d5cc254a1f6d7cb7154128b2b6570a": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.3/mootools.js", - "result": "[freelib]" - }, - "c0c37b7d3119f29d3759fdaf7eb8bc4670ea9e7f": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.1.1/mootools.js", - "result": "[freelib]" - }, - "b38f741b43f6ddcce3f1b47274d1683cca9f07a8": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/sha256.js", - "result": "[freelib]" - }, - "e29701dd85d792bddbf52d1e1fc3d1ada41b6192": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/sha384.js", - "result": "[freelib]" - }, - "cc019ac09f68258ee3442fe7cc440adf78a3cef2": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "e88bb2c302b41a4cc5b97604354a48d068e3e1eb": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/sha512.js", - "result": "[freelib]" - }, - "fc39ed8ca4a58668124471e509506443de4467f2": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.4/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "b1a271458ae47d0b47c9e0996956091a93dec16f": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "86f0df8662b511142dfc4e0ce9c81d805c8d7a7e": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.0/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "e0bfed3ffc741a9f4e59e6004a1dec9c71241a59": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/x64-core.js", - "result": "[freelib]" - }, - "fc21f8084ad4040ddbf620ba79acd3998fb3dc7b": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "1e8f9e1614db771782bc9e871fb712b06610b9f4": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "c7e2076a3af9997731499bc1f7dc3941b522c1eb": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.4.3/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "dd7783b4c8d4ecaad4091d1d32df2f97d7b10ddc": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.1.2/mootools.js", - "result": "[freelib]" - }, - "55bba460dcbb70562536ddd5c8734b311f38c42d": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.1/mootools.js", - "result": "[freelib]" - }, - "3c1ddf62af20a1f5c5de7a3af180b32528dc47db": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools.js", - "result": "[freelib]" - }, - "c43a38fce1aa745d59b1a6f7ab7def81f28701a4": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools.js", - "result": "[freelib]" - }, - "e5335c2a82f26e49b1324edc21e452de040d5cdc": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools.js", - "result": "[freelib]" - }, - "ccf015fcd45618c6b116977c96539d93ee10b542": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/tripledes.js", - "result": "[freelib]" - }, - "3d9fc65389ce7de16f87909039aa2e728c693b3d": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools.js", - "result": "[freelib]" - }, - "5f970c3c8ca26a94c14a1ae1e7321621cf4eae0c": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.1.2/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "03a65e56fc95caea1b85a591c984e9b6c080726d": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.1.1/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "669d164e3bff6156b21084cf035979d62433df75": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "f3e20ad41082a93dbd09202590717da71aebd316": { - "filename": "https://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js", - "result": "[freelib]" - }, - "8dda5f159c9bedee9f4a6b7a7a6028a554977994": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "15c3f73c75bb3ab87040fe55240f9dd5ea69b6bf": { - "filename": "https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core-debug.js", - "result": "[freelib]" - }, - "5c83aac1a3409dc1ec3a228e4c765292eb4434d4": { - "filename": "https://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core-debug.js", - "result": "[freelib]" - }, - "7dc1b4f3e358c58030c4676c990eff60a0fc838f": { - "filename": "https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js", - "result": "[freelib]" - }, - "d19d40a20252730e9fd9af1c7867c0f5417ebe32": { - "filename": "https://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core.js", - "result": "[freelib]" - }, - "e1db767afb82018ab6a695fe52334f2f5d81a0e3": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "a90b5f6afb6c78b30c3539392d49e45fd9dfe3d9": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.5.1/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "0a0a820f2bc4f2dac8dcfde2282411275e2dc697": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "b6d2c0b655b327407966b52303449dedce084ded": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "4cc838a3be933fda21bbbfc8f52b01e14a1e70a5": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "2ef4341a4ca0b9a0fc1aea422d85b5d9771fde87": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "df435b881e8364ddfbd44d5f786b10c75f964175": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "19214655c4152b79f204e222a481d1e18da84972": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.1/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "f444ee6b041735ee6109dd2fe3c3a7755fa949f7": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.0/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "c7f5b42b2306a79f67988ee073ac98c2a1d5782f": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "d8afec39893c1a99139212feb40888847f8a5253": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "a6edefef305d9164212fa140426629c7d8a58c93": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.1.1/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "a3e5c42f93722ad28cda811f8635bddf213819ed": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "741b8eeb65774256a8a76ea1af91f976357fcd81": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.5.1/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "911a35988b8540414cfbc990fbc112eb124fd968": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "c753cf372377ef0b5a18204cd86df8d4792fa8f5": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "8b95d59f6b28b072ceb4228a6db107b934500a02": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "8c135fc57355fe5d5a18f3dbe5736bc772bb20a7": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "70b1fe9dd4ebec0b5d417647e549bca8f9200020": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.1/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "8980e43d4750c63eb57cfff5f0723f118d243c67": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.3.0/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "d2fc56e1b9f2014fb7710d186a355a57e3acd283": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "2bab42610adee25cdc0d3a4ba96b94f1e9ccd115": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "6bb906d86dd239add79d0779a9fcdf9740aa7e3b": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.1.1/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "3d96f61e48510cbe595081ef8b2d5c8479f95d3e": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "1e4cb0dcb97df9a15433477f9f8a666914eedc3c": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "47732fb5e03d251aff1a7c0b550a3af74c7ceea5": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.3/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "85399dd9527026afc66a6fb43ad5c0d4ea97f83e": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "147eab514dfe1d88506a5e158b782cb5c504c056": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.xd.js.uncompressed.js", - "result": "[freelib]" - }, - "229e4025f71b0b94d98505f56c5cfd7cd41d06aa": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.3/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "135ade1e60da3e3b79fd73c3a6a005a250e2a7f7": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "135188b624daae8f4b015b0b8b75875a6132aa3d": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "fac80a6188865418344d4b6c5d4955ee7e7362c2": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "311d8f38b12a09f16f5a19e1dfb6575b5ce0f83c": { - "filename": "https://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.xd.js", - "result": "[freelib]" - }, - "ca2868985811d45cfbad118a297869707572e0bb": { - "filename": "https://raw.github.com/voldsoftware/toolbarbutton-jplib/stable/lib/toolbarbutton.js", - "result": "[freelib]" - }, - "32d542564913a016f1cea340ba8ac164c160004d": { - "filename": "http://yui.yahooapis.com/3.3.0/build/yui-base/yui-base.js", - "result": "[freelib]" - }, - "012cc186912c473552a341b2eaffb71240688ccd": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/cipher-core.js", - "result": "[freelib]" - }, - "d1c9d4d91c1c3c76f601778cb5e0489e0f80a10d": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/evpkdf.js", - "result": "[freelib]" - }, - "794503310ed31a11f233e1acdddc10f2ce91748e": { - "filename": "http://crypto-js.googlecode.com/svn/tags/3.0.2/src/core.js", - "result": "[freelib]" - }, - "5717e22c3b2c7caf870fc0772a64344962b59ee6": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.6/underscore.js", - "result": "[freelib]" - }, - "7e0294019938a772f4ddd7799501496074e0f0fb": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.7/underscore.js", - "result": "[freelib]" - }, - "28e41c3ce9232633468013342c49fd62a4f5f6bd": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.2/underscore.js", - "result": "[freelib]" - }, - "8d84b347dfe4f5b75f7b5f670326ca5c8041b7a9": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.3/underscore.js", - "result": "[freelib]" - }, - "9564fa7a6a001e4e56b0244ccda03eef3940813e": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.3/underscore.js", - "result": "[freelib]" - }, - "058cbd179f032f667823545519aa2d10b0b69508": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.2/underscore.js", - "result": "[freelib]" - }, - "868141351efa758d031779c776e608e3a049d823": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.4/underscore.js", - "result": "[freelib]" - }, - "2fee700150a7de876acc21403f77e57dae2f5618": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.5/underscore.js", - "result": "[freelib]" - }, - "40946800c5c8bee189ca3e7f8017661f9456e490": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.0/underscore.js", - "result": "[freelib]" - }, - "b842a8ca5e996e001e648fc8c73316cd55e496ed": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.4/underscore.js", - "result": "[freelib]" - }, - "f2fa9179d764f6a688dc0c99b1b5283f1b680249": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.1/underscore.js", - "result": "[freelib]" - }, - "c1dff1c5dbb68af6e22bd401afd28aab970a8aff": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.3/underscore.js", - "result": "[freelib]" - }, - "5846c870e0f1daca152db22277915adb6520ffa3": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.0/underscore.js", - "result": "[freelib]" - }, - "cdacc2b0045fa1b920b64664b88b155d0c0df169": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.2/underscore.js", - "result": "[freelib]" - }, - "baa693e82387a328abccf9694c6d2db571ac8aca": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.3/underscore-min.js", - "result": "[freelib]" - }, - "e67cf6a985999c7ef5595772e4ffefeacd0c6ac3": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.1/underscore.js", - "result": "[freelib]" - }, - "0a15952061f6fb7a5493281f6ff8eb916a417e2f": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.1/underscore-min.js", - "result": "[freelib]" - }, - "bd9624f882f7d3d29292ddc7f484987b3e991cb5": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.0/underscore.js", - "result": "[freelib]" - }, - "ede1d022640f26eaa6109da9e924670f6ed14cce": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.2/underscore-min.js", - "result": "[freelib]" - }, - "63f6a94752e5fde78627529763e67ecd4ef78f12": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.4/underscore-min.js", - "result": "[freelib]" - }, - "1185da1043863517c6aa0a4e0a3bc433dfb98313": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.2/underscore-min.js", - "result": "[freelib]" - }, - "86752ba2e4f3855a8a5e45d5f07567ea70a9cc98": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.0/underscore-min.js", - "result": "[freelib]" - }, - "cfbc3fa20d685d100308e123c3310dc9600ef0fd": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.3/underscore-min.js", - "result": "[freelib]" - }, - "083bbcd739b7b1336f13c72603e1704b164c02bd": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.1/underscore-min.js", - "result": "[freelib]" - }, - "f665459959c5167c0905974a62ffe923f2c19813": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.5/underscore-min.js", - "result": "[freelib]" - }, - "2de2ecea5ba12e7235ffb44d6892cc77fe6f4abe": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.4/underscore-min.js", - "result": "[freelib]" - }, - "81afb4cd3755671fea5e74d7118d7d460c475308": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.7/underscore-min.js", - "result": "[freelib]" - }, - "9e389ede8ed7f782c5ecf2f87c3afa3b1e309bff": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.3/underscore-min.js", - "result": "[freelib]" - }, - "703d6a61f31ddb45252c55813556a92e8cc2ee22": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.6/underscore-min.js", - "result": "[freelib]" - }, - "7d6e352b0d26655ba851863561b5d912cc24caa7": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.0/underscore-min.js", - "result": "[freelib]" - }, - "5de53da57fc8b7ab6c77d597c22875d747352fef": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.1/underscore-min.js", - "result": "[freelib]" - }, - "bcdd63e18a8a7cf728253f738556ad3b88d74649": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.2/underscore-min.js", - "result": "[freelib]" - }, - "ee68308411c690cd51cc8a43fe6ae60d3d1678af": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.4/underscore-min.js", - "result": "[freelib]" - }, - "49a747d3284b1d04f3eb823a4188f7725004f823": { - "filename": "https://raw.github.com/documentcloud/underscore/1.1.0/underscore-min.js", - "result": "[freelib]" - }, - "97f93241957893ebd7febc5b5bac9a7bd1d94a0f": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.3/underscore-min.js", - "result": "[freelib]" - }, - "710c3a99f0bd456c2fd6dcbcbd1e500e0646ec19": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.1/underscore-min.js", - "result": "[freelib]" - }, - "7361e8afa72bd0098e2520584786474c9c4a5064": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.2/underscore-min.js", - "result": "[freelib]" - }, - "ad0775c89a87111019840dc7bbf902d832e4ccdf": { - "filename": "https://raw.github.com/documentcloud/underscore/1.0.0/underscore-min.js", - "result": "[freelib]" - }, - "34454bfed864addf8ec4aacdd9adf872f8360ed3": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.1/underscore.js", - "result": "[freelib]" - }, - "07916c0b7274275f916fe288d01b254545b17d9a": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.4/underscore.js", - "result": "[freelib]" - }, - "133de2283d03193cb06f62f92c494afe098460a5": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.0/underscore.js", - "result": "[freelib]" - }, - "4c977634c87efbd2b7113993d36dad603b8dcf2f": { - "filename": "https://raw.github.com/documentcloud/underscore/1.2.1/underscore.js", - "result": "[freelib]" - }, - "3fa74bb289537fcdee796b26968e47d53d38f903": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.2/underscore.js", - "result": "[freelib]" - }, - "772b2587aa2fa345fb760eff9ebe5acd97937243": { - "filename": "https://raw.github.com/documentcloud/underscore/1.3.3/underscore.js", - "result": "[freelib]" - }, - "562c6c44b39809ec07c047f4ed6c591f3ae7c034": { - "filename": "https://raw.github.com/documentcloud/underscore/1.4.0/underscore.js", - "result": "[freelib]" - }, - "063a7d75792dff2b46eee81cc12de63def672911": { - "filename": "https://raw.github.com/documentcloud/underscore/1.4.1/underscore.js", - "result": "[freelib]" - }, - "47479149fe12fc56685a9de90c5a9903390cb451": { - "filename": "https://raw.github.com/documentcloud/underscore/1.4.2/underscore.js", - "result": "[freelib]" - }, - "d53fbd7308ae3d7eeb4a536c2cbfe739648850b4": { - "filename": "https://raw.github.com/documentcloud/underscore/1.4.3/underscore.js", - "result": "[freelib]" - }, - "6d9ee62759cb911ec03b21078c9f92f0f2afa25c": { - "filename": "https://raw.github.com/documentcloud/underscore/1.4.4/underscore.js", - "result": "[freelib]" - }, - "5d42ed92480d3a88efa270449f38c6d88d653af5": { - "filename": "https://raw.github.com/documentcloud/underscore/1.5.0/underscore.js", - "result": "[freelib]" - }, - "9ee15c1f1a84a258ba5f48de72da3538c8b7c375": { - "filename": "https://raw.github.com/documentcloud/underscore/1.5.1/underscore.js", - "result": "[freelib]" - }, - "c9ae7b502c521d2f53b9065ef4fc7d7cc97dce4c": { - "filename": "https://raw.github.com/documentcloud/underscore/1.5.2/underscore.js", - "result": "[freelib]" - }, - "fe1b87838b7328273812380d26837f58348103b0": { - "filename": "https://raw.github.com/documentcloud/underscore/1.6.0/underscore.js", - "result": "[freelib]" - } -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon-cropped.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon-cropped.png Binary files differdeleted file mode 100644 index 738a0ea..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon-cropped.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon.png Binary files differdeleted file mode 100644 index 3ba267b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/beta-ribbon.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/button-download.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/button-download.png Binary files differdeleted file mode 100644 index 5ca5430..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/button-download.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/collapsed-nonfree.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/collapsed-nonfree.png Binary files differdeleted file mode 100644 index 0790b1b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/collapsed-nonfree.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/expanded-nonfree.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/expanded-nonfree.png Binary files differdeleted file mode 100644 index 0d8bc70..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/expanded-nonfree.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/libre.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/libre.png Binary files differdeleted file mode 100644 index 8042caa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/libre.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/librejs-running-blocked-wikipedia.jpg b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/librejs-running-blocked-wikipedia.jpg Binary files differdeleted file mode 100644 index c54d839..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/librejs-running-blocked-wikipedia.jpg +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/logo-medium.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/logo-medium.png Binary files differdeleted file mode 100644 index 0bb6eb2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/logo-medium.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/index.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/index.html deleted file mode 100644 index 5bbc3aa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/index.html +++ /dev/null @@ -1,131 +0,0 @@ -<!doctype html> -<html lang="en"> - - <head> - <meta charset="utf-8" /> - <title>LibreJS | Whitelist </title> - - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - - - <!-- Your styles --> - <link rel="stylesheet" href="styles/styles.css" type="text/css" media="screen" /> - <script type="text/javascript"> - /** - * - * @licstart The following is the entire license notice for the - * JavaScript code in this page. - * - * - * Copyright (C) 2011, 2014 Loic J. Duros - * - * The JavaScript code in this page is free software: you can - * redistribute it and/or modify it under the terms of the GNU - * General Public License (GNU GPL) as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) - * any later version. The code is distributed WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. - * - * As additional permission under GNU GPL version 3 section 7, you - * may distribute non-source (e.g., minimized or compacted) forms of - * that code without the copy of the GNU GPL normally required by - * section 4, provided you include this license notice and a URL - * through which recipients can access the Corresponding Source. - * - * - * - * @licend The above is the entire license notice - * for the JavaScript code in this page. - * - * - * - */ - </script> - <!-- Bootstrap CSS (APL 2.0)--> - <link href="third-party/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"> - <link href="third-party/jquery-ui/css/ui-lightness/jquery-ui.theme.min.css" rel="stylesheet" media="screen"> - - <link media="screen" rel="stylesheet" href="styles/form.css"> - <script src="third-party/jquery/jquery.min.js"></script> - <script src="third-party/jquery-ui/js/jquery-ui.min.js"></script> - <script src="third-party/bootstrap/js/bootstrap.min.js"></script> - - <link href="third-party/editable/bootstrap-editable/css/bootstrap-editable.css" rel="stylesheet"> - <script src="third-party/editable/bootstrap-editable/js/bootstrap-editable-inline.min.js"></script> - <script src="third-party/block-ui/jquery.blockUI.js"></script> - <!--<script src="js/form-types.js"></script>--> - <script src="js/form-row.js"></script> - <style> - #rules button { - margin-top:0 !important; - } - .drag-handle { - cursor:pointer; - } - #loadingBox { - display:none; - } - </style> - - </head> - - <body> - <header id="site-header"> - <div class="container"> - <hgroup class="row"> - <h1><a id="logo" target="_blank" href="http://www.gnu.org/s/librejs/" title="LibreJS -- Free JavaScript in your browser">LibreJS -- Free JavaScript in your browser</a></h1> - </hgroup> - </div> - </header> - - <div id="main"> - <div id="promotional"> - <div class="container"> - - <div class="row"> - - <div class="span12"> - <div class="page-header"> - <h1>LibreJS | Whitelist</h1> - </div> - <div> - <button class="deleteall btn">reset whitelist to default.</button> - <table style="max-width:800px" id="whitelist" class="table table-bordered table-striped"> - <thead> - <tr> - <th class="rule-type">JavaScript contents hash-code</th> - <th class="url">Found at URL</th> - <th class="reason">Reason</th> - <th class="delete-rule">Delete script from whitelist</th> - </tr> - </thead> - <tbody> - - </tbody> - </table> - </div> - </div> - </div> - - </div> - <div id="loadingBox"><img src="images/ajax-loader.gif"/></div> - - </div> - <div id="banners" class="row"> - <div class="twelvecol"> - <a href="http://www.gnu.org/philosophy/free-sw.html"><img src="images/libre.png"></a> - - </div> - </div> - - </div> - <footer> - <p class="copyrights"> - Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros<br/> - </p> - </footer> - - </body> - -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-row.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-row.js deleted file mode 100644 index 13390eb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-row.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var GenerateForm = { - $trContainer: null, // will jQuery element for rules table tboby - - le: 0, - - init: function () { - var that = this; - $(document).ready(function (e) { - that.$trContainer = $("#whitelist").children('tbody'); - - // listen for when data is ready to populate form. - document.documentElement.addEventListener( - "populate-form", - function (event) { - //console.log("populate-form event triggered in form-row.js"); - that.populateForm(event.detail.data); - - }, false); - that.$trContainer.on("click", ".delete", function (event) { - that.deleteRow($(this)); - }); - $('deleteall').click(function (e) { - that.deleteAll(); - }); - }); - }, - - deleteAll: function () { - event.initCustomEvent("librejs-settings-change", true, true, {event: 'rules-form-delete-all', value: ''}); - }, - - deleteRow: function ($button) { - var hash = $button.parents('tr').children('.hash').text(); - //console.log("hash is", hash); - this.le--; - this.changeTitle(); - $button.parents('tr').remove(); - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("librejs-settings-change", true, true, {event: 'rules-form-delete', value: hash}); - document.documentElement.dispatchEvent(event); - }, - - createRow: function (key, url, reason) { - - var $tr = $("<tr/>");//.addClass('sortable'); - var $td = $('<td/>').addClass('hash').text(key); - var $delete, $button; - $tr.append($td); - $td = $('<td/>').append($('<a/>').attr({"href": url, - "target": "_blank"}).text(url)); - $tr.append($td); - $td = $('<td/>').text(reason); - $tr.append($td); - - //$tr.append($('<td/>').append("<span class='drag-handle ui-icon ui-icon-arrowthick-2-n-s'>drag</span>")); - $delete = $("<td/>"); - $button = $("<button/>").addClass("delete btn").attr({'value': 'delete'}).text("delete"); - $delete.append($button); - $tr.append($delete); - return $tr; - }, - - appendNewRow: function (key, rowData) { - if (key && rowData !== undefined) { - //console.log(rowData); - this.$trContainer.append(this.createRow(key, (rowData.filename || rowData.url), (rowData.result.reason || "no reason recorded"))); - } - }, - clearForm: function () { - $('#whitelist').children('tbody').empty(); - }, - changeTitle: function () { - var tt = this.le + " scripts whitelisted"; - $('div.page-header h1').text(tt); - $('title').text(tt); - }, - populateForm: function (data) { - var key; - this.le = Object.keys(data).length; - this.changeTitle(); - //console.log("populateForm triggered"); - this.clearForm(); - for (key in data) { - this.appendNewRow(key, data[key]); - } - - } -}; - -GenerateForm.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-types.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-types.js deleted file mode 100644 index 3d0d6de..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-types.js +++ /dev/null @@ -1,150 +0,0 @@ -/** - * Permafrost - Protect your privacy! - * * - * Copyright (C) 2012 2013 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -/*jslint indent: 2 */ -/*jslint white: false */ -/*jslint eqeq: true */ -/*jslint plusplus: true*/ -/*global clearInterval: false, clearTimeout: false, document: false, event: false, frames: false, history: false, Image: false, location: false, name: false, navigator: false, Option: false, parent: false, screen: false, setInterval: false, setTimeout: false, window: false, XMLHttpRequest: false */ - -var FORM_TYPES; - -/* constructor for form types options */ -function FormType(options) { - "use strict"; - var item; - for (item in options) { - this[item] = options[item]; - } -} - -FormType.prototype = { - onblur: 'submit', - showbuttons: true, - pk: null, - name: null, - value: null, - url: function (params) { - "use strict"; - // see https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/content-scripts/communicating-with-other-scripts.html#Using%20Custom%20DOM%20Events for information on this. - FORM_TYPES.triggerEvent({'event': 'rules-form-update', 'value': params}); - - } -}; - - -FORM_TYPES = { - - patternPlaceholder: 'Enter wildcard patterns or regular expression ' + - 'patterns, one per line', - - ruleType: null, - - requestOrigin: null, - - visitingSite: null, - - contentType: null, - - blockUI: function () { - "use strict"; - $.blockUI({ - message: null, - overlayCSS: { backgroundColor: 'none' }}); - }, - - unblockUI: function () { - "use strict"; - window.setTimeout($.unblockUI, 500); - }, - - triggerEvent: function (msg) { - "use strict"; - var event = document.createEvent("CustomEvent"); - var that = this; - event.initCustomEvent("permafrost-settings-change", true, true, msg); - document.documentElement.dispatchEvent(event); - this.blockUI(); - - var success = function (event) { - that.unblockUI(); - document.documentElement.removeListener("rules-form-data-written", success, false); - }; - - document.documentElement.addEventListener("rules-form-data-written", success, false); - - }, - - init: function () { - "use strict"; - - var formTypesHelper = this; - - // these four objects will be used to represent all the - // form items in the table, and will hold different values - // depending on the last active html form object. - - this.ruleType = new FormType({ - type: 'select', - name: 'rule', - source: [ - {value: 'block', text: 'Block'}, - {value: 'allow', text: 'Allow'} - ] - }); - - this.requestOrigin = new FormType({ - type: 'textarea', - name: 'content-location', - title: 'Requests originating from', - placeholder: formTypesHelper.patternPlaceholder - }); - - this.visitingSite = new FormType({ - type: 'textarea', - name: 'request-origin', - title: 'when visiting (referrer)', - placeholder: formTypesHelper.patternPlaceholder - }); - - this.contentType = new FormType({ - type: 'checklist', - name: 'content-type', - title: 'and are of type', - separator: ',', - source: [ - { value: 'script', text: 'scripts' }, - { value: 'image', text: 'images' }, - { value: 'stylesheet', text: 'stylesheets' }, - { value: 'object', text: 'objects and plugin contents' }, - { value: 'object-request', text: 'requests made by plugins' }, - { value: 'subdocument', text: 'subdocuments (iframes, frames, and objects)' }, - { value: 'font', text: 'web font (@font-face)' }, - { value: 'media', text: 'video or audio content' }, - { value: 'xbl', text: 'XBL binding request' }, - { value: 'dtd', text: 'DTD loaded by an XML document' }, - { value: 'xrh', text: 'Ajax requests (XMLHttpRequests)' }, - { value: 'others', text: 'miscellaneous content' } - ] - }); - - - } - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-emitter.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-emitter.js deleted file mode 100644 index a29c806..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-emitter.js +++ /dev/null @@ -1,14 +0,0 @@ -// listen for addon script emit and pass on the object to the page script. -self.port.on("populate-form", function (data) { - // custom DOM event - var event = document.createEvent('CustomEvent'); - event.initCustomEvent("populate-form", true, true, { data: data }); - document.documentElement.dispatchEvent(event); -}); - -/*self.port.on("rules-form-data-written", function (data) { - // custom DOM event - var event = document.createEvent('CustomEvent'); - event.initCustomEvent("rules-form-data-written", true, true, {}); - document.documentElement.dispatchEvent(event); -});*/ diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-listener.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-listener.js deleted file mode 100644 index af01544..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-listener.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Permafrost - Protect your privacy! - * * - * Copyright (C) 2012 2013 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/*jslint indent: 2 */ -/*jslint white: false */ -/*jslint eqeq: true */ -/*jslint plusplus: true*/ -/*jslint forin: true */ -/*global document: false, self: false */ - -// listen for a message from the pagescript -document.documentElement.addEventListener("librejs-settings-change", function (event) { - "use strict"; - - switch (event.detail.event) { - - case 'rules-form-update': - self.port.emit('rules-form-update', event.detail.value); - break; - - case 'rules-form-delete': - //console.log('hash is', event.detail.value); - self.port.emit('rules-form-delete', event.detail.value); - break; - - case 'rules-form-delete-all': - self.port.emit('rules-form-delete-all'); - break; - - case 'rules-form-reorder': - self.port.emit('rules-form-reorder', event.detail.value); - break; - - case 'rules-form-add-empty-row': - self.port.emit('rules-form-add-empty-row', event.detail.value); - break; - - } - -}, false); - - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/permafrost-info-box.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/permafrost-info-box.js deleted file mode 100644 index 51c33cb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/permafrost-info-box.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Permafrost - Protect your privacy! - * * - * Copyright (C) 2012 2013 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var box = '<div id="permafrost-info-panel" style="width: 250px; height: auto; padding: 20px; background-color: rgba(255, 255, 255, 0.9); box-shadow: 0px 0px 50px rgb(255, 255, 255); margin: 2%; border-radius: 15px 15px 0 0; font-family: Droid Sans,Helvetica,Arial,Sans; font-size: 12px; z-index: 20000; position: fixed; right: 3%; bottom: -10px; margin-bottom:0;;"> <ul> <li>test 1</li> <li>test 2</li> <li>test 3</li> <li>test 4</li><li>blah</li><li>blobl</li> </ul></div>'; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/1140.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/1140.css deleted file mode 100644 index b8d6fa2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/1140.css +++ /dev/null @@ -1,130 +0,0 @@ -/* CSS Resets */ - -html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,address,cite,code,del,dfn,em,img,ins,q,small,strong,sub,sup,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;margin:0;padding:0}article,aside,figure,figure img,figcaption,hgroup,footer,header,nav,section,video,object{display:block}a img{border:0}figure{position:relative}figure img{width:100%} - - -/* ==================================================================================================================== */ -/* ! The 1140px Grid V2 by Andy Taylor \ http://cssgrid.net \ http://www.twitter.com/andytlr \ http://www.andytlr.com */ -/* ==================================================================================================================== */ - -.container { -padding-left: 20px; -padding-right: 20px; -} - -.row { -width: 100%; -max-width: 1140px; -min-width: 755px; -margin: 0 auto; -overflow: hidden; -} - -.onecol, .twocol, .threecol, .fourcol, .fivecol, .sixcol, .sevencol, .eightcol, .ninecol, .tencol, .elevencol { -margin-right: 3.8%; -float: left; -min-height: 1px; -} - -.row .onecol { -width: 4.85%; -} - -.row .twocol { -width: 13.45%; -} - -.row .threecol { -width: 22.05%; -} - -.row .fourcol { -width: 30.75%; -} - -.row .fivecol { -width: 39.45%; -} - -.row .sixcol { -width: 48%; -} - -.row .sevencol { -width: 56.75%; -} - -.row .eightcol { -width: 65.4%; -} - -.row .ninecol { -width: 74.05%; -} - -.row .tencol { -width: 82.7%; -} - -.row .elevencol { -width: 91.35%; -} - -.row .twelvecol { -width: 100%; -float: left; -} - -.last { -margin-right: 0px; -} - -img, object, embed { -max-width: 100%; -} - -img { - height: auto; -} - - -/* Smaller screens */ - -@media only screen and (max-width: 1023px) { - - body { - font-size: 0.8em; - line-height: 1.5em; - } - - } - - -/* Mobile */ - -@media handheld, only screen and (max-width: 767px) { - - body { - font-size: 16px; - -webkit-text-size-adjust: none; - } - - .row, body, .container { - width: 100%; - min-width: 0; - margin-left: 0px; - margin-right: 0px; - padding-left: 0px; - padding-right: 0px; - } - - .row .onecol, .row .twocol, .row .threecol, .row .fourcol, .row .fivecol, .row .sixcol, .row .sevencol, .row .eightcol, .row .ninecol, .row .tencol, .row .elevencol, .row .twelvecol { - width: auto; - float: none; - margin-left: 0px; - margin-right: 0px; - padding-left: 20px; - padding-right: 20px; - } - -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/form.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/form.css deleted file mode 100644 index 3e8c3bf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/form.css +++ /dev/null @@ -1,8 +0,0 @@ -tr.ui-sortable-helper > td { - background: #229ac1 !important; -} - -#whitelist td { - max-width:350px; - word-wrap: break-word; -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/index.html b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/index.html deleted file mode 100644 index 2883db3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/index.html +++ /dev/null @@ -1,277 +0,0 @@ -<!doctype html> -<html lang="en"> - -<head> - <meta charset="utf-8" /> - <title>The 1140px Grid · Fluid down to mobile</title> - - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - - <!-- 1140px Grid styles for IE --> - <!--[if lte IE 9]><link rel="stylesheet" href="css/ie.css" type="text/css" media="screen" /><![endif]--> - - <!-- The 1140px Grid - http://cssgrid.net/ --> - <link rel="stylesheet" href="css/1140.css" type="text/css" media="screen" /> - - <!-- Your styles --> - <link rel="stylesheet" href="css/styles.css" type="text/css" media="screen" /> - - <!--css3-mediaqueries-js - http://code.google.com/p/css3-mediaqueries-js/ - Enables media queries in some unsupported browsers--> - <script type="text/javascript" src="js/css3-mediaqueries.js"></script> - - <!--Delete embedded styles, just for example.--> - <style type="text/css"> - - body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .container p { - color: #fff; - line-height: 100px; - background: #000; - text-align: center; - margin: 20px 0 0 0; - } - - </style> - -</head> - - -<body> - -<div class="container"> - <div class="row"> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol"> - <p>One</p> - </div> - <div class="onecol last"> - <p>One</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="twocol last"> - <p>Two columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="threecol"> - <p>Three columns</p> - </div> - <div class="threecol"> - <p>Three columns</p> - </div> - <div class="threecol"> - <p>Three columns</p> - </div> - <div class="threecol last"> - <p>Three columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="fourcol"> - <p>Four columns</p> - </div> - <div class="fourcol"> - <p>Four columns</p> - </div> - <div class="fourcol last"> - <p>Four columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="onecol"> - <p>One</p> - </div> - <div class="elevencol last"> - <p>Eleven columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="twocol"> - <p>Two columns</p> - </div> - <div class="tencol last"> - <p>Ten columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="threecol"> - <p>Three columns</p> - </div> - <div class="ninecol last"> - <p>Nine columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="fourcol"> - <p>Four columns</p> - </div> - <div class="eightcol last"> - <p>Eight columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="fivecol"> - <p>Five columns</p> - </div> - <div class="sevencol last"> - <p>Seven columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="sixcol"> - <p>Six columns</p> - </div> - <div class="sixcol last"> - <p>Six columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="sevencol"> - <p>Seven columns</p> - </div> - <div class="fivecol last"> - <p>Five columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="eightcol"> - <p>Eight columns</p> - </div> - <div class="fourcol last"> - <p>Four columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="ninecol"> - <p>Nine columns</p> - </div> - <div class="threecol last"> - <p>Three columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="tencol"> - <p>Ten columns</p> - </div> - <div class="twocol last"> - <p>Two columns</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="elevencol"> - <p>Eleven columns</p> - </div> - <div class="onecol last"> - <p>One</p> - </div> - </div> -</div> - -<div class="container"> - <div class="row"> - <div class="threecol"> - <p>Three columns</p> - </div> - <div class="sixcol"> - <p>Six columns</p> - </div> - <div class="threecol last"> - <p>Three columns</p> - </div> - </div> -</div> - - -</body> - -</html>
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/styles.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/styles.css deleted file mode 100644 index 7e50c65..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/styles.css +++ /dev/null @@ -1,135 +0,0 @@ -body { - font-size:67.5%; - background:#CCC; -} -#site-header { - background:#898168; - min-height:130px; - position:relative; - border-bottom:#916f6f solid 10px; - overflow:hidden; -} - -#logo { - background:url('../images/logo-medium.png') top left no-repeat; - width:269px; - height:119px; - display:block; - text-indent:-1000em; - overflow:hidden; - margin:10px 0; -} - -#ribbon { - position:absolute; - right:-50px; - top:-15px; - z-index:2; -} - -header nav { - position:absolute; - bottom:0; - right:3em; - z-index:3; -} - -header nav ul li { - display:inline; -} -header nav ul li a { - display:block; - float:left; - background:#916f6f; - width:auto; - height:10px; - padding:10px; - text-align:center; - margin:0 0.5em; - text-decoration:none; - color:#000; - font-family:Georgia Serif; - font-weight:bold; - font-size:1.1em; -} -header nav ul li a:visited { - color:#000; -} - -#main { - background:#CCC; - padding:1em 0; -} -div.screenshot img { - float:right; - display:block; -} -.description { - padding-top:5px; - font-family:Georgia, Serif; - font-size:1.2em; - line-height:2em; -} -article p, article ul { - padding-top:1em; -} -article li { - padding-top:0.7em; -} -#promotional { - padding-top:30px; - -} - -a.download { - background:url('../images/button-download.png') top left no-repeat; - width:192px; - height:57px; - display:block; - margin:20px auto; - overflow:hidden; - text-indent:-10000em; -} - -#main ul { - list-style-type:disc; -} - -#main h1 { - color:#453B35; - font-family:arial, sans-serif; - font-size:3.5em; -} -#main h2 { - color:#453B35; - font-size:2em; - margin:1.5em 0 0; -} -#banners { - text-align:center; - padding:3em 0; -} -#banners a { - margin:0 5em; -} - -footer p.copyrights { - text-align:center; - padding:2em 0; - -} - -figcaption { - font-style:italic; - font-size:1em; - padding:0 3em; -} - -div.intro { - padding-top:2em; -} -.announcement { - color:#453B35; - font-size:1.2em; - margin:1em 0; -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/block-ui/jquery.blockUI.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/block-ui/jquery.blockUI.js deleted file mode 100644 index d60303d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/block-ui/jquery.blockUI.js +++ /dev/null @@ -1,574 +0,0 @@ -/*! - * jQuery blockUI plugin - * Version 2.54 (17-DEC-2012) - * @requires jQuery v1.3 or later - * - * Examples at: http://malsup.com/jquery/block/ - * Copyright (c) 2007-2012 M. Alsup - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Thanks to Amir-Hossein Sobhi for some excellent contributions! - */ - -;(function() { -"use strict"; - - function setup($) { - if (/^1\.(0|1|2)/.test($.fn.jquery)) { - /*global alert:true */ - alert('blockUI requires jQuery v1.3 or later! You are using v' + $.fn.jquery); - return; - } - - $.fn._fadeIn = $.fn.fadeIn; - - var noOp = $.noop || function() {}; - - // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle - // retarded userAgent strings on Vista) - var msie = /MSIE/.test(navigator.userAgent); - var ie6 = /MSIE 6.0/.test(navigator.userAgent); - var mode = document.documentMode || 0; - // var setExpr = msie && (($.browser.version < 8 && !mode) || mode < 8); - var setExpr = $.isFunction( document.createElement('div').style.setExpression ); - - // global $ methods for blocking/unblocking the entire page - $.blockUI = function(opts) { install(window, opts); }; - $.unblockUI = function(opts) { remove(window, opts); }; - - // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl) - $.growlUI = function(title, message, timeout, onClose) { - var $m = $('<div class="growlUI"></div>'); - if (title) $m.append('<h1>'+title+'</h1>'); - if (message) $m.append('<h2>'+message+'</h2>'); - if (timeout === undefined) timeout = 3000; - $.blockUI({ - message: $m, fadeIn: 700, fadeOut: 1000, centerY: false, - timeout: timeout, showOverlay: false, - onUnblock: onClose, - css: $.blockUI.defaults.growlCSS - }); - }; - - // plugin method for blocking element content - $.fn.block = function(opts) { - var fullOpts = $.extend({}, $.blockUI.defaults, opts || {}); - this.each(function() { - var $el = $(this); - if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked')) - return; - $el.unblock({ fadeOut: 0 }); - }); - - return this.each(function() { - if ($.css(this,'position') == 'static') - this.style.position = 'relative'; - this.style.zoom = 1; // force 'hasLayout' in ie - install(this, opts); - }); - }; - - // plugin method for unblocking element content - $.fn.unblock = function(opts) { - return this.each(function() { - remove(this, opts); - }); - }; - - $.blockUI.version = 2.54; // 2nd generation blocking at no extra cost! - - // override these in your code to change the default behavior and style - $.blockUI.defaults = { - // message displayed when blocking (use null for no message) - message: '<h1>Please wait...</h1>', - - title: null, // title string; only used when theme == true - draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded) - - theme: false, // set to true to use with jQuery UI themes - - // styles for the message when blocking; if you wish to disable - // these and use an external stylesheet then do this in your code: - // $.blockUI.defaults.css = {}; - css: { - padding: 0, - margin: 0, - width: '30%', - top: '40%', - left: '35%', - textAlign: 'center', - color: '#000', - border: '3px solid #aaa', - backgroundColor:'#fff', - cursor: 'wait' - }, - - // minimal style set used when themes are used - themedCSS: { - width: '30%', - top: '40%', - left: '35%' - }, - - // styles for the overlay - overlayCSS: { - backgroundColor: '#000', - opacity: 0.6, - cursor: 'wait' - }, - - // style to replace wait cursor before unblocking to correct issue - // of lingering wait cursor - cursorReset: 'default', - - // styles applied when using $.growlUI - growlCSS: { - width: '350px', - top: '10px', - left: '', - right: '10px', - border: 'none', - padding: '5px', - opacity: 0.6, - cursor: 'default', - color: '#fff', - backgroundColor: '#000', - '-webkit-border-radius':'10px', - '-moz-border-radius': '10px', - 'border-radius': '10px' - }, - - // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w - // (hat tip to Jorge H. N. de Vasconcelos) - /*jshint scripturl:true */ - iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', - - // force usage of iframe in non-IE browsers (handy for blocking applets) - forceIframe: false, - - // z-index for the blocking overlay - baseZ: 1000, - - // set these to true to have the message automatically centered - centerX: true, // <-- only effects element blocking (page block controlled via css above) - centerY: true, - - // allow body element to be stetched in ie6; this makes blocking look better - // on "short" pages. disable if you wish to prevent changes to the body height - allowBodyStretch: true, - - // enable if you want key and mouse events to be disabled for content that is blocked - bindEvents: true, - - // be default blockUI will supress tab navigation from leaving blocking content - // (if bindEvents is true) - constrainTabKey: true, - - // fadeIn time in millis; set to 0 to disable fadeIn on block - fadeIn: 200, - - // fadeOut time in millis; set to 0 to disable fadeOut on unblock - fadeOut: 400, - - // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock - timeout: 0, - - // disable if you don't want to show the overlay - showOverlay: true, - - // if true, focus will be placed in the first available input field when - // page blocking - focusInput: true, - - // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity) - // no longer needed in 2012 - // applyPlatformOpacityRules: true, - - // callback method invoked when fadeIn has completed and blocking message is visible - onBlock: null, - - // callback method invoked when unblocking has completed; the callback is - // passed the element that has been unblocked (which is the window object for page - // blocks) and the options that were passed to the unblock call: - // onUnblock(element, options) - onUnblock: null, - - // callback method invoked when the overlay area is clicked. - // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used. - onOverlayClick: null, - - // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493 - quirksmodeOffsetHack: 4, - - // class name of the message block - blockMsgClass: 'blockMsg', - - // if it is already blocked, then ignore it (don't unblock and reblock) - ignoreIfBlocked: false - }; - - // private data and functions follow... - - var pageBlock = null; - var pageBlockEls = []; - - function install(el, opts) { - var css, themedCSS; - var full = (el == window); - var msg = (opts && opts.message !== undefined ? opts.message : undefined); - opts = $.extend({}, $.blockUI.defaults, opts || {}); - - if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked')) - return; - - opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); - css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); - if (opts.onOverlayClick) - opts.overlayCSS.cursor = 'pointer'; - - themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {}); - msg = msg === undefined ? opts.message : msg; - - // remove the current block (if there is one) - if (full && pageBlock) - remove(window, {fadeOut:0}); - - // if an existing element is being used as the blocking content then we capture - // its current place in the DOM (and current display style) so we can restore - // it when we unblock - if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) { - var node = msg.jquery ? msg[0] : msg; - var data = {}; - $(el).data('blockUI.history', data); - data.el = node; - data.parent = node.parentNode; - data.display = node.style.display; - data.position = node.style.position; - if (data.parent) - data.parent.removeChild(node); - } - - $(el).data('blockUI.onUnblock', opts.onUnblock); - var z = opts.baseZ; - - // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform; - // layer1 is the iframe layer which is used to supress bleed through of underlying content - // layer2 is the overlay layer which has opacity and a wait cursor (by default) - // layer3 is the message content that is displayed while blocking - var lyr1, lyr2, lyr3, s; - if (msie || opts.forceIframe) - lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>'); - else - lyr1 = $('<div class="blockUI" style="display:none"></div>'); - - if (opts.theme) - lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>'); - else - lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'); - - if (opts.theme && full) { - s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">'; - if ( opts.title ) { - s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>'; - } - s += '<div class="ui-widget-content ui-dialog-content"></div>'; - s += '</div>'; - } - else if (opts.theme) { - s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">'; - if ( opts.title ) { - s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>'; - } - s += '<div class="ui-widget-content ui-dialog-content"></div>'; - s += '</div>'; - } - else if (full) { - s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>'; - } - else { - s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>'; - } - lyr3 = $(s); - - // if we have a message, style it - if (msg) { - if (opts.theme) { - lyr3.css(themedCSS); - lyr3.addClass('ui-widget-content'); - } - else - lyr3.css(css); - } - - // style the overlay - if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/) - lyr2.css(opts.overlayCSS); - lyr2.css('position', full ? 'fixed' : 'absolute'); - - // make iframe layer transparent in IE - if (msie || opts.forceIframe) - lyr1.css('opacity',0.0); - - //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el); - var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el); - $.each(layers, function() { - this.appendTo($par); - }); - - if (opts.theme && opts.draggable && $.fn.draggable) { - lyr3.draggable({ - handle: '.ui-dialog-titlebar', - cancel: 'li' - }); - } - - // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) - var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0); - if (ie6 || expr) { - // give body 100% height - if (full && opts.allowBodyStretch && $.support.boxModel) - $('html,body').css('height','100%'); - - // fix ie6 issue when blocked element has a border width - if ((ie6 || !$.support.boxModel) && !full) { - var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth'); - var fixT = t ? '(0 - '+t+')' : 0; - var fixL = l ? '(0 - '+l+')' : 0; - } - - // simulate fixed position - $.each(layers, function(i,o) { - var s = o[0].style; - s.position = 'absolute'; - if (i < 2) { - if (full) - s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'); - else - s.setExpression('height','this.parentNode.offsetHeight + "px"'); - if (full) - s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'); - else - s.setExpression('width','this.parentNode.offsetWidth + "px"'); - if (fixL) s.setExpression('left', fixL); - if (fixT) s.setExpression('top', fixT); - } - else if (opts.centerY) { - if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); - s.marginTop = 0; - } - else if (!opts.centerY && full) { - var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0; - var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"'; - s.setExpression('top',expression); - } - }); - } - - // show the message - if (msg) { - if (opts.theme) - lyr3.find('.ui-widget-content').append(msg); - else - lyr3.append(msg); - if (msg.jquery || msg.nodeType) - $(msg).show(); - } - - if ((msie || opts.forceIframe) && opts.showOverlay) - lyr1.show(); // opacity is zero - if (opts.fadeIn) { - var cb = opts.onBlock ? opts.onBlock : noOp; - var cb1 = (opts.showOverlay && !msg) ? cb : noOp; - var cb2 = msg ? cb : noOp; - if (opts.showOverlay) - lyr2._fadeIn(opts.fadeIn, cb1); - if (msg) - lyr3._fadeIn(opts.fadeIn, cb2); - } - else { - if (opts.showOverlay) - lyr2.show(); - if (msg) - lyr3.show(); - if (opts.onBlock) - opts.onBlock(); - } - - // bind key and mouse events - bind(1, el, opts); - - if (full) { - pageBlock = lyr3[0]; - pageBlockEls = $(':input:enabled:visible',pageBlock); - if (opts.focusInput) - setTimeout(focus, 20); - } - else - center(lyr3[0], opts.centerX, opts.centerY); - - if (opts.timeout) { - // auto-unblock - var to = setTimeout(function() { - if (full) - $.unblockUI(opts); - else - $(el).unblock(opts); - }, opts.timeout); - $(el).data('blockUI.timeout', to); - } - } - - // remove the block - function remove(el, opts) { - var full = (el == window); - var $el = $(el); - var data = $el.data('blockUI.history'); - var to = $el.data('blockUI.timeout'); - if (to) { - clearTimeout(to); - $el.removeData('blockUI.timeout'); - } - opts = $.extend({}, $.blockUI.defaults, opts || {}); - bind(0, el, opts); // unbind events - - if (opts.onUnblock === null) { - opts.onUnblock = $el.data('blockUI.onUnblock'); - $el.removeData('blockUI.onUnblock'); - } - - var els; - if (full) // crazy selector to handle odd field errors in ie6/7 - els = $('body').children().filter('.blockUI').add('body > .blockUI'); - else - els = $el.find('>.blockUI'); - - // fix cursor issue - if ( opts.cursorReset ) { - if ( els.length > 1 ) - els[1].style.cursor = opts.cursorReset; - if ( els.length > 2 ) - els[2].style.cursor = opts.cursorReset; - } - - if (full) - pageBlock = pageBlockEls = null; - - if (opts.fadeOut) { - els.fadeOut(opts.fadeOut); - setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut); - } - else - reset(els, data, opts, el); - } - - // move blocking element back into the DOM where it started - function reset(els,data,opts,el) { - els.each(function(i,o) { - // remove via DOM calls so we don't lose event handlers - if (this.parentNode) - this.parentNode.removeChild(this); - }); - - if (data && data.el) { - data.el.style.display = data.display; - data.el.style.position = data.position; - if (data.parent) - data.parent.appendChild(data.el); - $(el).removeData('blockUI.history'); - } - - if (typeof opts.onUnblock == 'function') - opts.onUnblock(el,opts); - - // fix issue in Safari 6 where block artifacts remain until reflow - var body = $(document.body), w = body.width(), cssW = body[0].style.width; - body.width(w-1).width(w); - body[0].style.width = cssW; - } - - // bind/unbind the handler - function bind(b, el, opts) { - var full = el == window, $el = $(el); - - // don't bother unbinding if there is nothing to unbind - if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) - return; - - $el.data('blockUI.isBlocked', b); - - // don't bind events when overlay is not in use or if bindEvents is false - if (!opts.bindEvents || (b && !opts.showOverlay)) - return; - - // bind anchors and inputs for mouse and key events - var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove'; - if (b) - $(document).bind(events, opts, handler); - else - $(document).unbind(events, handler); - - // former impl... - // var $e = $('a,:input'); - // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler); - } - - // event handler to suppress keyboard/mouse events when blocking - function handler(e) { - // allow tab navigation (conditionally) - if (e.keyCode && e.keyCode == 9) { - if (pageBlock && e.data.constrainTabKey) { - var els = pageBlockEls; - var fwd = !e.shiftKey && e.target === els[els.length-1]; - var back = e.shiftKey && e.target === els[0]; - if (fwd || back) { - setTimeout(function(){focus(back);},10); - return false; - } - } - } - var opts = e.data; - var target = $(e.target); - if (target.hasClass('blockOverlay') && opts.onOverlayClick) - opts.onOverlayClick(); - - // allow events within the message content - if (target.parents('div.' + opts.blockMsgClass).length > 0) - return true; - - // allow events for content that is not being blocked - return target.parents().children().filter('div.blockUI').length === 0; - } - - function focus(back) { - if (!pageBlockEls) - return; - var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0]; - if (e) - e.focus(); - } - - function center(el, x, y) { - var p = el.parentNode, s = el.style; - var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth'); - var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth'); - if (x) s.left = l > 0 ? (l+'px') : '0'; - if (y) s.top = t > 0 ? (t+'px') : '0'; - } - - function sz(el, p) { - return parseInt($.css(el,p),10)||0; - } - - } - - - /*global define:true */ - if (typeof define === 'function' && define.amd && define.amd.jQuery) { - define(['jquery'], setup); - } else { - setup(jQuery); - } - -})(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap-responsive.min.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap-responsive.min.css deleted file mode 100644 index 96a435b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap-responsive.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2013 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world by @mdo and @fat. - */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap.min.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap.min.css deleted file mode 100644 index df96c86..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/css/bootstrap.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap v2.3.2 - * - * Copyright 2013 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world by @mdo and @fat. - */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings-white.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings-white.png Binary files differdeleted file mode 100644 index 3bf6484..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings-white.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings.png Binary files differdeleted file mode 100644 index 8815a8a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/img/glyphicons-halflings.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/js/bootstrap.min.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/js/bootstrap.min.js deleted file mode 100644 index 848258d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/bootstrap/js/bootstrap.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -* Bootstrap.js by @fat & @mdo -* Copyright 2013 Twitter, Inc. -* http://www.apache.org/licenses/LICENSE-2.0.txt -*/ -!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/CHANGELOG.txt b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/CHANGELOG.txt deleted file mode 100644 index 5c410ec..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/CHANGELOG.txt +++ /dev/null @@ -1,103 +0,0 @@ -X-editable changelog -============================= - - -Version 1.3.0 Dec 10, 2012 ----------------------------- -[enh] added html5 inputs support: password, email, url, tel, number, range (vitalets) -[bug #43] fix for bootstrap 2.2.2 (vitalets) -[enh #41] 'abstract' class renamed to 'abstractinput' as abstract is reserved word (vitalets) -[enh #40] 'params' option defined as function overwrites original ajax data instead of appending (vitalets) -[bug] datepicker: error when click on arrows after clear date (vitalets) -[enh] 'hidden' event: added possible value of reason param - 'nochange'. Occurs when form is submitted but value was not changed (vitalets) -[enh] 'submit' method changed: error-callback's parameter simplified (vitalets) -[enh] 'submit' method changed: now when response 200 OK it does not set pk automatically (vitalets) -[enh] 'submit' method changed: removed dataType='json'. Use 'ajaxOptions' to specify dataType if needed (vitalets) -[enh] removed default ajax dataType='json'. Use 'ajaxOptions' to specify dataType if needed (vitalets) -[enh] select: do not show 'sourceError' in element during autotext execution (vitalets) - - -Version 1.2.0 Dec 6, 2012 ----------------------------- -[enh #36] 'submit' method: added 'ajaxOptions' property to modify ajax request (vitalets) -[enh] inputs now internally use 'value2submit' method instead of previous 'value2str' (vitalets) -[enh] editableContainer removed from docs (vitalets) -[enh] editableContainer: removed 'autohide' option and 'cancel' event. Use 'hidden' event instead (vitalets) -[enh] 'hidden' event: added param 'reason' that points to reason caused hiding (vitalets) -[enh] 'select' submit by enter (vitalets) -[bug #37] fix incorrectly shown datepicker in jquery 1.7.1 + webkit (vitalets) -[enh] added url param 'jquery' to run tests in different versions of jquery, e.g. '&jquery=1.7.2' (vitalets) -[enh] 'enablefocus' option removed. More efficient to use 'save/hide' events to set focus to any element (vitalets) -[enh] 'init' event was added due to removal of render event (vitalets) -[enh] 'render' event was removed, use 'display' callback instead (vitalets) -[enh] 'checklist' submit value as array, not comma separated string (vitalets) -[enh] 'checklist' was refactored: options 'viewseparator', 'limit', 'limitText' are supressed by 'display' callback (vitalets) -[enh] new option: 'display' callback. Makes far more flexible rendering value into element's text. (vitalets) -[bug] fix typos (atrophic) -[enh] all callbacks scope changed to element (vitalets) -[enh] new option: 'savenochange' to save or cancel value when it was not changed in form (vitalets) -[enh] composite pk can be defined as JSON in data-pk attribute (vitalets) -[enh #30] new option 'sourceCache' true|false to disable cache for select (vitalets) -[bug #34] inputclass span* broken with fluid bootstrap layout. Classes changed to 'input-*'. (vitalets) -[enh] utils now added to $.fn.editableutils instead of $.fn.editableform.utils (vitalets) -[enh] input types now added to $.fn.editabletypes instead of $.fn.editableform.types (vitalets) -[enh] playground and tests now use requirejs (vitalets) -[bug #27] 'today' button toggle bug in bootstrap-datepicker (vitalets) - - -Version 1.1.1 Nov 30, 2012 ----------------------------- -[enh] 'showbuttons' option to hide buttons in form (vitalets) -[enh] object can be passed in 'option' method to set several options at once (vitalets) -[enh #20] toggle editable by 'dblclick' and 'mouseenter' (vitalets) -[enh] added 'inputs-ext' directory with sample input 'address'. They will not be concatenated to main files (vitalets) -[enh #13] 'onblur' option: to cancel, submit or ignore when user clicks outside the form (vitalets) -[enh] 'ajaxOptions' parameter for advanced ajax configuration (vitalets) -[enh] 'success' callback can return object to overwrite submitted value (vitalets) - - -Version 1.1.0 Nov 27, 2012 ----------------------------- -[enh #11] icon cancel changed to 'cross' (tarciozemel) -[enh] added support for IE7+ (vitalets) -[enh #9] 'name' or 'id' is not required anymore (vitalets) -[enh] 'clear' button added in date and dateui (vitalets) -[enh] form template changed: added DIV.editable-input, DIV.editable.buttons and $.fn.editableform.buttons (vitalets) -[enh] new input type: checklist (vitalets) -[enh] updated docs: inputs dropdown menu, global templates section (vitalets) - - -Version 1.0.1 Nov 22, 2012 ----------------------------- -[enh] contribution guide in README.md (vitalets) -[enh #7] 'shown', 'hidden' events added (vitalets) -[enh #1] params can be a function to calculate it dynamically (vitalets) -[enh #6] do not preventDefault() in click when toggle='manual'. This allows to have clickable links (vitalets) -[bug #3] should not mark element with unsave css if url is user's function (vitalets) - - -Version 1.0.0 Nov 19, 2012 ----------------------------- -Initial release. This library is new life of bootstrap-editable (1.1.4) that was strongly refactored and improved. -Main features: -- support not only bootstrap but any core library: bootstrap, jquery-ui or pure jquery -- different container classes to show form: popover, tooltip, poshytip, etc -- inline and popup versions -- new directory structure and logic in separate js files allowing easy contribution - -It is not fully compatible with bootstrap-editable but has mainly the same interface and api. -Here list of differences to help you to upgrade your application: - -[change] 'toggle' option value can be only click|manual (not toggling element id). In case of 'manual' you should write handler calling 'show' method. -[change] 'validate' option cannot be defined as object anymore. -[change] events 'init', 'update', 'shown', 'hidden' removed. Events 'save', 'cancel' added. Event 'render' remains. -[change] input's option 'template' renamed to 'tpl' (to exclude conflict with container's template). -[change] value can be stored internally as object (previously was always string). Useful for date input. -[change] 'error' callback option is removed. 'success' callback remained. -[enh] 'source' option in select can be array of structure [{value: 1, text: 'abc'}, {...}]. This allows to keep ordering of items in dropdown list. Previous format is supported for compatibility. -[enh] api method 'setValue' to set manually value of editable. -[change] locales directory is excluded from bootstrap-datepicker input. If you need localization you should jus download corresponding file from github. -[change] date and dateui specific options can be set only via 'datepicker' option in first level of config (previously it was possible to set some options directly in config, e.g. weekStart). -[change] if 'url' option defined as function - it is used as submit method instead of ajax (previously it was dynamically return url string and ajax occurred anyway) - -Also all known bugs of bootstrap-editable were closed. diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/LICENSE-MIT b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/LICENSE-MIT deleted file mode 100644 index bc67d5b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Vitaliy Potapov
-
-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.
diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/README.md b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/README.md deleted file mode 100644 index 38aacf7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# X-editable - -In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery. -It is a new life of [bootstrap-editable plugin](http://github.com/vitalets/bootstrap-editable) that was strongly refactored and improved. - -## Demo + Docs + Download -See **http://vitalets.github.com/x-editable** - -## Reporting issues -When creating issues please provide [jsFiddle](http://jsfiddle.net) example. You can easily fork one of **jsFiddle templates**: -1. [bootstrap](http://jsfiddle.net/xBB5x/25/) -2. [jqueryui](http://jsfiddle.net/xBB5x/24/) -3. [plain](http://jsfiddle.net/xBB5x/23/) -Your feedback is very appreciated! - -## Contribution -A few steps how to start contributing: - -1.[Fork X-editable](https://github.com/vitalets/x-editable/fork) and pull the latest changes from <code>dev</code> branch - -2.Arrange local directory structure. It should be: -**x-editable** - | -- **lib** (repo related to <code>dev</code> and <code>master</code> branches) - | -- **gh-pages** (repo related to <code>gh-pages</code> branch for docs & demo) - | -- **playground** (simple node-server and html page for testing, [playground_1.2.zip](https://github.com/downloads/vitalets/x-editable/playground_1.2.zip), **updated in 1.2.0!**) - -To make it easy follow this script ( _assuming you have [nodejs](http://nodejs.org) installed_ ). -Please replace <code><your-github-name></code> with your name: -```` -mkdir x-editable -cd x-editable - -#lib -git clone https://github.com/<your-github-name>/x-editable.git -b dev lib -cd lib -#install gruntjs globally - building tool -npm install -g grunt -#install other dependencies - grunt-contrib -npm install -cd .. - -#gh-pages -git clone https://github.com/<your-github-name>/x-editable.git -b gh-pages gh-pages -cd gh-pages -npm install -cd .. - -#playground -#download playground.zip from https://github.com/downloads/vitalets/x-editable/playground_1.2.zip -unzip playground.zip -cd playground -npm install -```` -3.That's it! You can start editing files in **lib/src** directory or create new editable input/container/whatever. -To test the result go to **playground**, start server <code>node server.js</code> and open in your browser [http://localhost:3000/playground](http://localhost:3000/playground). - -4.To run unit tests you can open it directly in browser **lib/test/index.html**. -Or use grunt's _qunit_ task <code>grunt test</code>. For that you also need to [install PhantomJS](https://github.com/gruntjs/grunt/blob/master/docs/faq.md#why-does-grunt-complain-that-phantomjs-isnt-installed) - -5.To build distributive run <code>grunt build</code> in **lib** directory. Result will appear in **lib/dist**. - -6.To build docs run <code>build data-docs-dist</code> in **gh-pages** directory. Result will appear in **gh-pages/*.html**. -Do not edit **index.html** and **docs.html** directly! Instead look at [Handlebars](https://github.com/wycats/handlebars.js) templates in **generator/templates**. - -7.Commit changes on <code>dev</code> / <code>gh-pages-dev</code> branch and make pull request as usual. - -Thanks for your support! - -## License -Copyright (c) 2012 Vitaliy Potapov -Licensed under the MIT licenses.
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/bootstrap-editable.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/bootstrap-editable.css deleted file mode 100644 index 7c0b1c2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/bootstrap-editable.css +++ /dev/null @@ -1,434 +0,0 @@ -/*! X-editable - v1.3.0
-* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
-* http://github.com/vitalets/x-editable
-* Copyright (c) 2012 Vitaliy Potapov; Licensed MIT */
-
-.editableform { - margin-bottom: 0; /* overwrites bootstrap margin */ -} - -.editableform .control-group { - margin-bottom: 0; /* overwrites bootstrap margin */ - white-space: nowrap; /* prevent wrapping buttons on new line */ -} - -.editable-buttons { - display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ - vertical-align: top; - margin-left: 7px; - /* display-inline emulation for IE7*/ - zoom: 1; - *display: inline; -} - - - -.editable-input { - vertical-align: top; - display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ - width: auto; /* bootstrap-responsive has width: 100% that breakes layout */ - white-space: normal; /* reset white-space decalred in parent*/ - /* display-inline emulation for IE7*/ - zoom: 1; - *display: inline; -} - -.editable-buttons .editable-cancel { - margin-left: 7px; -} - -/*for jquery-ui buttons need set height to look more pretty*/ -.editable-buttons button.ui-button-icon-only { - height: 24px; - width: 30px; -} - -.editableform-loading { - background: url('img/loading.gif') center center no-repeat; - height: 25px; - width: auto; - min-width: 25px; -} - -.editable-inline .editableform-loading { - background-position: left 5px; -} - - .editable-error-block { - max-width: 300px; - margin: 5px 0 0 0; - width: auto; - white-space: normal; -} - -/*add padding for jquery ui*/ -.editable-error-block.ui-state-error { - padding: 3px; -} - -.editable-error { - color: red; -} - -.editableform textarea { - height: 150px; /*default height for textarea*/ -} - -.editableform .editable-date { - padding: 0; - margin: 0; - float: left; -} - - -/* checklist vertical alignment */ -.editable-checklist label input[type="checkbox"], -.editable-checklist label span { - vertical-align: middle; - margin: 0; -} - -.editable-checklist label { - white-space: nowrap; -} - -.editable-clear { - clear: both; - font-size: 0.9em; - text-decoration: none; - text-align: right; -}
-.editable-container { - max-width: none !important; /* without this rule poshytip/tooltip does not stretch */ -} - -.editable-container.popover { -/* width: 300px;*/ /* debug */ - width: auto; /* without this rule popover does not stretch */ -} - -.editable-container.editable-inline { -/* display: inline; */ /* display: inline does not correctly work with show()/hide() in jquery <= 1.7.2 */ - display: inline-block; - vertical-align: middle; -} - -.editable-container.ui-widget { - font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */ -}
-.editable-click, -a.editable-click, -a.editable-click:hover { - text-decoration: none; - border-bottom: dashed 1px #0088cc; -} - -.editable-click.editable-disabled, -a.editable-click.editable-disabled, -a.editable-click.editable-disabled:hover { - color: #585858; - cursor: default; - border-bottom: none; -} - -.editable-empty, .editable-empty:hover{ - font-style: italic; - color: #DD1144; - border-bottom: none; - text-decoration: none; -} - -.editable-unsaved { - font-weight: bold; -} - -.editable-unsaved:after { -/* content: '*'*/ -} - -
-/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} - -.datepicker-inline { - width: 220px; -/* height: 220px; */ -} - -.datepicker-float { - top: 0; - left: 0; -} - -.datepicker-float:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 6px; -} -.datepicker-float:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - position: absolute; - top: -6px; - left: 7px; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; -} -.datepicker td, -.datepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - /* vitalets: required to disable css inheritance when display inline inside table */ - border: none !important; - background-color: transparent !important; -} -.datepicker td.day:hover { - background: #eeeeee !important; /* disable inheritance for inline */ - cursor: pointer; -} -.datepicker td.old, -.datepicker td.new { - color: #999999; -} -.datepicker td.disabled, -.datepicker td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker td.today, -.datepicker td.today:hover, -.datepicker td.today.disabled, -.datepicker td.today.disabled:hover { - background-color: #fde19a !important; /* disable inheritance for inline */ - background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); - background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); - background-image: linear-gradient(top, #fdd49a, #fdf59a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); - border-color: #fdf59a #fdf59a #fbed50; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} -.datepicker td.today:hover, -.datepicker td.today:hover:hover, -.datepicker td.today.disabled:hover, -.datepicker td.today.disabled:hover:hover, -.datepicker td.today:active, -.datepicker td.today:hover:active, -.datepicker td.today.disabled:active, -.datepicker td.today.disabled:hover:active, -.datepicker td.today.active, -.datepicker td.today:hover.active, -.datepicker td.today.disabled.active, -.datepicker td.today.disabled:hover.active, -.datepicker td.today.disabled, -.datepicker td.today:hover.disabled, -.datepicker td.today.disabled.disabled, -.datepicker td.today.disabled:hover.disabled, -.datepicker td.today[disabled], -.datepicker td.today:hover[disabled], -.datepicker td.today.disabled[disabled], -.datepicker td.today.disabled:hover[disabled] { - background-color: #fdf59a !important; /* disable inheritance for inline */ -} -.datepicker td.today:active, -.datepicker td.today:hover:active, -.datepicker td.today.disabled:active, -.datepicker td.today.disabled:hover:active, -.datepicker td.today.active, -.datepicker td.today:hover.active, -.datepicker td.today.disabled.active, -.datepicker td.today.disabled:hover.active { - background-color: #fbf069 \9; -} -.datepicker td.active, -.datepicker td.active:hover, -.datepicker td.active.disabled, -.datepicker td.active.disabled:hover { - background-color: #006dcc !important; /* disable inheritance for inline */ - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker td.active:hover, -.datepicker td.active:hover:hover, -.datepicker td.active.disabled:hover, -.datepicker td.active.disabled:hover:hover, -.datepicker td.active:active, -.datepicker td.active:hover:active, -.datepicker td.active.disabled:active, -.datepicker td.active.disabled:hover:active, -.datepicker td.active.active, -.datepicker td.active:hover.active, -.datepicker td.active.disabled.active, -.datepicker td.active.disabled:hover.active, -.datepicker td.active.disabled, -.datepicker td.active:hover.disabled, -.datepicker td.active.disabled.disabled, -.datepicker td.active.disabled:hover.disabled, -.datepicker td.active[disabled], -.datepicker td.active:hover[disabled], -.datepicker td.active.disabled[disabled], -.datepicker td.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker td.active:active, -.datepicker td.active:hover:active, -.datepicker td.active.disabled:active, -.datepicker td.active.disabled:hover:active, -.datepicker td.active.active, -.datepicker td.active:hover.active, -.datepicker td.active.disabled.active, -.datepicker td.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.datepicker td span:hover { - background: #eeeeee; -} -.datepicker td span.disabled, -.datepicker td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker td span.active, -.datepicker td span.active:hover, -.datepicker td span.active.disabled, -.datepicker td span.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker td span.active:hover, -.datepicker td span.active:hover:hover, -.datepicker td span.active.disabled:hover, -.datepicker td span.active.disabled:hover:hover, -.datepicker td span.active:active, -.datepicker td span.active:hover:active, -.datepicker td span.active.disabled:active, -.datepicker td span.active.disabled:hover:active, -.datepicker td span.active.active, -.datepicker td span.active:hover.active, -.datepicker td span.active.disabled.active, -.datepicker td span.active.disabled:hover.active, -.datepicker td span.active.disabled, -.datepicker td span.active:hover.disabled, -.datepicker td span.active.disabled.disabled, -.datepicker td span.active.disabled:hover.disabled, -.datepicker td span.active[disabled], -.datepicker td span.active:hover[disabled], -.datepicker td span.active.disabled[disabled], -.datepicker td span.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker td span.active:active, -.datepicker td span.active:hover:active, -.datepicker td span.active.disabled:active, -.datepicker td span.active.disabled:hover:active, -.datepicker td span.active.active, -.datepicker td span.active:hover.active, -.datepicker td span.active.disabled.active, -.datepicker td span.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker td span.old { - color: #999999; -} -.datepicker th.switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr:first-child th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr:first-child th:hover { - background: #eeeeee; -} -.input-append.date .add-on i, -.input-prepend.date .add-on i { - display: block; - cursor: pointer; - width: 16px; - height: 16px; -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/img/loading.gif b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/img/loading.gif Binary files differdeleted file mode 100644 index 5b33f7e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/css/img/loading.gif +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/js/bootstrap-editable-inline.min.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/js/bootstrap-editable-inline.min.js deleted file mode 100644 index ed749a3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/editable/bootstrap-editable/js/bootstrap-editable-inline.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! X-editable - v1.3.0
-* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
-* http://github.com/vitalets/x-editable
-* Copyright (c) 2012 Vitaliy Potapov; Licensed MIT */
-(function(e){var t=function(t,n){this.options=e.extend({},e.fn.editableform.defaults,n),this.$div=e(t),this.options.scope||(this.options.scope=this),this.initInput()};t.prototype={constructor:t,initInput:function(){var t,n;if(typeof e.fn.editabletypes[this.options.type]!="function"){e.error("Unknown type: "+this.options.type);return}t=e.fn.editabletypes[this.options.type],n=e.fn.editableutils.sliceObj(this.options,e.fn.editableutils.objectKeys(t.defaults)),this.input=new t(n),this.value=this.input.str2value(this.options.value)},initTemplate:function(){this.$form=e(e.fn.editableform.template)},initButtons:function(){this.$form.find(".editable-buttons").append(e.fn.editableform.buttons)},render:function(){this.$loading=e(e.fn.editableform.loading),this.$div.empty().append(this.$loading),this.showLoading(),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.$div.triggerHandler("rendering"),e.when(this.input.render()).then(e.proxy(function(){this.$form.find("div.editable-input").append(this.input.$input),this.options.showbuttons||this.input.autosubmit(),this.input.$clear&&this.$form.find("div.editable-input").append(e('<div class="editable-clear">').append(this.input.$clear)),this.$div.append(this.$form),this.$form.find(".editable-cancel").click(e.proxy(this.cancel,this)),this.input.error?(this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(e){e.preventDefault()})):(this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled"),this.input.value2input(this.value),this.$form.submit(e.proxy(this.submit,this))),this.$div.triggerHandler("rendered"),this.showForm()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var e;this.$form?(this.$loading.width(this.$form.outerWidth()),this.$loading.height(this.$form.outerHeight()),this.$form.hide()):(e=this.$loading.parent().width(),e&&this.$loading.width(e)),this.$loading.show()},showForm:function(e){this.$loading.hide(),this.$form.show(),e!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(t){var n=this.$form.find(".control-group"),r=this.$form.find(".editable-error-block");t===!1?(n.removeClass(e.fn.editableform.errorGroupClass),r.removeClass(e.fn.editableform.errorBlockClass).empty().hide()):(n.addClass(e.fn.editableform.errorGroupClass),r.addClass(e.fn.editableform.errorBlockClass).text(t).show())},submit:function(t){t.stopPropagation(),t.preventDefault();var n,r=this.input.input2value();if(n=this.validate(r)){this.error(n),this.showForm();return}if(!this.options.savenochange&&this.input.value2str(r)==this.input.value2str(this.value)){this.$div.triggerHandler("nochange");return}e.when(this.save(r)).done(e.proxy(function(e){var t=typeof this.options.success=="function"?this.options.success.call(this.options.scope,e,r):null;if(t===!1){this.error(!1),this.showForm(!1);return}if(typeof t=="string"){this.error(t),this.showForm();return}t&&typeof t=="object"&&t.hasOwnProperty("newValue")&&(r=t.newValue),this.error(!1),this.value=r,this.$div.triggerHandler("save",{newValue:r,response:e})},this)).fail(e.proxy(function(e){this.error(typeof e=="string"?e:e.responseText||e.statusText||"Unknown error!"),this.showForm()},this))},save:function(t){var n=this.input.value2submit(t);this.options.pk=e.fn.editableutils.tryParseJson(this.options.pk,!0);var r=typeof this.options.pk=="function"?this.options.pk.call(this.options.scope):this.options.pk,i=!!(typeof this.options.url=="function"||this.options.url&&(this.options.send==="always"||this.options.send==="auto"&&r)),s;if(i)return this.showLoading(),s={name:this.options.name||"",value:n,pk:r},typeof this.options.params=="function"?s=this.options.params.call(this.options.scope,s):(this.options.params=e.fn.editableutils.tryParseJson(this.options.params,!0),e.extend(s,this.options.params)),typeof this.options.url=="function"?this.options.url.call(this.options.scope,s):e.ajax(e.extend({url:this.options.url,data:s,type:"POST"},this.options.ajaxOptions))},validate:function(e){e===undefined&&(e=this.value);if(typeof this.options.validate=="function")return this.options.validate.call(this.options.scope,e)},option:function(e,t){this.options[e]=t,e==="value"&&this.setValue(t)},setValue:function(e,t){t?this.value=this.input.str2value(e):this.value=e}},e.fn.editableform=function(n){var r=arguments;return this.each(function(){var i=e(this),s=i.data("editableform"),o=typeof n=="object"&&n;s||i.data("editableform",s=new t(this,o)),typeof n=="string"&&s[n].apply(s,Array.prototype.slice.call(r,1))})},e.fn.editableform.Constructor=t,e.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,send:"auto",validate:null,success:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},e.fn.editableform.template='<form class="form-inline editableform"><div class="control-group"><div><div class="editable-input"></div><div class="editable-buttons"></div></div><div class="editable-error-block"></div></div></form>',e.fn.editableform.loading='<div class="editableform-loading"></div>',e.fn.editableform.buttons='<button type="submit" class="editable-submit">ok</button><button type="button" class="editable-cancel">cancel</button>',e.fn.editableform.errorGroupClass=null,e.fn.editableform.errorBlockClass="editable-error"})(window.jQuery),function(e){e.fn.editableutils={inherit:function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.superclass=t.prototype},setCursorPosition:function(e,t){if(e.setSelectionRange)e.setSelectionRange(t,t);else if(e.createTextRange){var n=e.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",t),n.select()}},tryParseJson:function(e,t){if(typeof e=="string"&&e.length&&e.match(/^[\{\[].*[\}\]]$/))if(t)try{e=(new Function("return "+e))()}catch(n){}finally{return e}else e=(new Function("return "+e))();return e},sliceObj:function(t,n,r){var i,s,o={};if(!e.isArray(n)||!n.length)return o;for(var u=0;u<n.length;u++){i=n[u],t.hasOwnProperty(i)&&(o[i]=t[i]);if(r===!0)continue;s=i.toLowerCase(),t.hasOwnProperty(s)&&(o[i]=t[s])}return o},getConfigData:function(t){var n={};return e.each(t.data(),function(e,t){if(typeof t!="object"||t&&typeof t=="object"&&t.constructor===Object)n[e]=t}),n},objectKeys:function(e){if(Object.keys)return Object.keys(e);if(e!==Object(e))throw new TypeError("Object.keys called on a non-object");var t=[],n;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},escape:function(t){return e("<div>").text(t).html()}}}(window.jQuery),function(e){var t=function(e,t){this.init(e,t)};t.prototype={containerName:null,innerCss:null,init:function(n,r){this.$element=e(n),this.options=e.extend({},e.fn.editableContainer.defaults,e.fn.editableutils.getConfigData(this.$element),r),this.splitOptions(),this.initContainer(),this.$element.on("destroyed",e.proxy(function(){this.destroy()},this)),e(document).data("editable-handlers-attached")||(e(document).on("keyup.editable",function(t){t.which===27&&e(".editable-open").editableContainer("hide")}),e(document).on("click.editable",function(n){var r=e(n.target);if(r.is(".editable-container")||r.parents(".editable-container").length||r.parents(".ui-datepicker-header").length)return;t.prototype.closeOthers(n.target)}),e(document).data("editable-handlers-attached",!0))},splitOptions:function(){this.containerOptions={},this.formOptions={};var t=e.fn[this.containerName].defaults;for(var n in this.options)n in t?this.containerOptions[n]=this.options[n]:this.formOptions[n]=this.options[n]},initContainer:function(){this.call(this.containerOptions)},initForm:function(){return this.formOptions.scope=this.$element[0],this.$form=e("<div>").editableform(this.formOptions).on({save:e.proxy(this.save,this),cancel:e.proxy(function(){this.hide("cancel")},this),nochange:e.proxy(function(){this.hide("nochange")},this),show:e.proxy(this.setPosition,this),rendering:e.proxy(this.setPosition,this),rendered:e.proxy(function(){this.$element.triggerHandler("shown")},this)}),this.$form},tip:function(){return this.container().$tip},container:function(){return this.$element.data(this.containerName)},call:function(){this.$element[this.containerName].apply(this.$element,arguments)},show:function(e){this.$element.addClass("editable-open"),e!==!1&&this.closeOthers(this.$element[0]),this.innerShow()},innerShow:function(){this.call("show"),this.tip().addClass("editable-container"),this.initForm(),this.tip().find(this.innerCss).empty().append(this.$form),this.$form.editableform("render")},hide:function(e){if(!this.tip()||!this.tip().is(":visible")||!this.$element.hasClass("editable-open"))return;this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",e)},innerHide:function(){this.call("hide")},toggle:function(e){this.tip&&this.tip().is(":visible")?this.hide():this.show(e)},setPosition:function(){},save:function(e,t){this.hide("save"),this.$element.triggerHandler("save",t)},option:function(e,t){this.options[e]=t,e in this.containerOptions?(this.containerOptions[e]=t,this.setContainerOption(e,t)):(this.formOptions[e]=t,this.$form&&this.$form.editableform("option",e,t))},setContainerOption:function(e,t){this.call("option",e,t)},destroy:function(){this.call("destroy")},closeOthers:function(t){e(".editable-open").each(function(n,r){if(r===t||e(r).find(t).length)return;var i=e(r),s=i.data("editableContainer");if(!s)return;s.options.onblur==="cancel"?i.data("editableContainer").hide("onblur"):s.options.onblur==="submit"&&i.data("editableContainer").tip().find("form").submit()})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},e.fn.editableContainer=function(n){var r=arguments;return this.each(function(){var i=e(this),s="editableContainer",o=i.data(s),u=typeof n=="object"&&n;o||i.data(s,o=new t(this,u)),typeof n=="string"&&o[n].apply(o,Array.prototype.slice.call(r,1))})},e.fn.editableContainer.Constructor=t,e.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel"},jQuery.event.special.destroyed={remove:function(e){e.handler&&e.handler()}}}(window.jQuery),function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.editable.defaults,e.fn.editableutils.getConfigData(this.$element),n),this.init()};t.prototype={constructor:t,init:function(){var t,n=!1,r,i;if(!e.fn.editableContainer){e.error("You must define $.fn.editableContainer via including corresponding file (e.g. editable-popover.js)");return}this.options.name=this.options.name||this.$element.attr("id");if(typeof e.fn.editabletypes[this.options.type]!="function"){e.error("Unknown type: "+this.options.type);return}t=e.fn.editabletypes[this.options.type],this.typeOptions=e.fn.editableutils.sliceObj(this.options,e.fn.editableutils.objectKeys(t.defaults)),this.input=new t(this.typeOptions),this.options.value===undefined||this.options.value===null?(this.value=this.input.html2value(e.trim(this.$element.html())),n=!0):(this.options.value=e.fn.editableutils.tryParseJson(this.options.value,!0),typeof this.options.value=="string"?this.value=this.input.str2value(this.options.value):this.value=this.options.value),this.$element.addClass("editable"),this.options.toggle!=="manual"?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",e.proxy(function(e){e.preventDefault();if(this.options.toggle==="mouseenter")this.show();else{var t=this.options.toggle!=="click";this.toggle(t)}},this))):this.$element.attr("tabindex",-1),r=!n&&this.value!==null&&this.value!==undefined,r&=this.options.autotext==="always"||this.options.autotext==="auto"&&!this.$element.text().length,e.when(r?this.render():!0).then(e.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))},render:function(){if(this.options.display===!1)return;return this.input.options.hasOwnProperty("source")?this.input.value2html(this.value,this.$element[0],this.options.display):typeof this.options.display=="function"?this.options.display.call(this.$element[0],this.value):this.input.value2html(this.value,this.$element[0])},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(),this.options.toggle!=="manual"&&this.$element.attr("tabindex")==="-1"&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(t,n){if(t&&typeof t=="object"){e.each(t,e.proxy(function(t,n){this.option(e.trim(t),n)},this));return}this.options[t]=n;if(t==="disabled"){n?this.disable():this.enable();return}t==="value"&&this.setValue(n),this.container&&this.container.option(t,n)},handleEmpty:function(){if(this.options.display===!1)return;var t="editable-empty";this.options.disabled?this.$element.hasClass(t)&&(this.$element.empty(),this.$element.removeClass(t)):e.trim(this.$element.text())===""?this.$element.addClass(t).text(this.options.emptytext):this.$element.removeClass(t)},show:function(t){if(this.options.disabled)return;if(!this.container){var n=e.extend({},this.options,{value:this.value});this.$element.editableContainer(n),this.$element.on("save.internal",e.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}else if(this.container.tip().is(":visible"))return;this.container.show(t)},hide:function(){this.container&&this.container.hide()},toggle:function(e){this.container&&this.container.tip().is(":visible")?this.hide():this.show(e)},save:function(e,t){typeof this.options.url!="function"&&this.options.display!==!1&&t.response===undefined&&this.input.value2str(this.value)!==this.input.value2str(t.newValue)?this.$element.addClass("editable-unsaved"):this.$element.removeClass("editable-unsaved"),this.setValue(t.newValue)},validate:function(){if(typeof this.options.validate=="function")return this.options.validate.call(this,this.value)},setValue:function(t,n){n?this.value=this.input.str2value(t):this.value=t,this.container&&this.container.option("value",this.value),e.when(this.render()).then(e.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()}},e.fn.editable=function(n){var r={},i=arguments,s="editable";switch(n){case"validate":return this.each(function(){var t=e(this),n=t.data(s),i;n&&(i=n.validate())&&(r[n.options.name]=i)}),r;case"getValue":return this.each(function(){var t=e(this),n=t.data(s);n&&n.value!==undefined&&n.value!==null&&(r[n.options.name]=n.input.value2submit(n.value))}),r;case"submit":var o=arguments[1]||{},u=this,a=this.editable("validate"),f;return e.isEmptyObject(a)?(f=this.editable("getValue"),o.data&&e.extend(f,o.data),e.ajax(e.extend({url:o.url,data:f,type:"POST"},o.ajaxOptions)).success(function(e){typeof o.success=="function"&&o.success.call(u,e,o)}).error(function(){typeof o.error=="function"&&o.error.apply(u,arguments)})):typeof o.error=="function"&&o.error.call(u,a),this}return this.each(function(){var r=e(this),o=r.data(s),u=typeof n=="object"&&n;o||r.data(s,o=new t(this,u)),typeof n=="string"&&o[n].apply(o,Array.prototype.slice.call(i,1))})},e.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null}}(window.jQuery),function(e){e.fn.editabletypes={};var t=function(){};t.prototype={init:function(t,n,r){this.type=t,this.options=e.extend({},r,n),this.$input=null,this.$clear=null,this.error=null},render:function(){this.$input=e(this.options.tpl),this.options.inputclass&&this.$input.addClass(this.options.inputclass),this.options.placeholder&&this.$input.attr("placeholder",this.options.placeholder)},value2html:function(t,n){e(n).text(t)},html2value:function(t){return e("<div>").html(t).text()},value2str:function(e){return e},str2value:function(e){return e},value2submit:function(e){return e},value2input:function(e){this.$input.val(e)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(t){return e("<div>").text(t).html()},autosubmit:function(){}},t.defaults={tpl:"",inputclass:"input-medium",name:null},e.extend(e.fn.editabletypes,{abstractinput:t})}(window.jQuery),function(e){var t=function(e){};e.fn.editableutils.inherit(t,e.fn.editabletypes.abstractinput),e.extend(t.prototype,{render:function(){t.superclass.render.call(this);var n=e.Deferred();return this.error=null,this.sourceData=null,this.prependData=null,this.onSourceReady(function(){this.renderList(),n.resolve()},function(){this.error=this.options.sourceError,n.resolve()}),n.promise()},html2value:function(e){return null},value2html:function(t,n,r){var i=e.Deferred();return this.onSourceReady(function(){typeof r=="function"?r.call(n,t,this.sourceData):this.value2htmlFinal(t,n),i.resolve()},function(){i.resolve()}),i.promise()},onSourceReady:function(t,n){if(e.isArray(this.sourceData)){t.call(this);return}try{this.options.source=e.fn.editableutils.tryParseJson(this.options.source,!1)}catch(r){n.call(this);return}if(typeof this.options.source=="string"){if(this.options.sourceCache){var i=this.options.source+(this.options.name?"-"+this.options.name:""),s;e(document).data(i)||e(document).data(i,{}),s=e(document).data(i);if(s.loading===!1&&s.sourceData){this.sourceData=s.sourceData,t.call(this);return}if(s.loading===!0){s.callbacks.push(e.proxy(function(){this.sourceData=s.sourceData,t.call(this)},this)),s.err_callbacks.push(e.proxy(n,this));return}s.loading=!0,s.callbacks=[],s.err_callbacks=[]}e.ajax({url:this.options.source,type:"get",cache:!1,data:this.options.name?{name:this.options.name}:{},dataType:"json",success:e.proxy(function(r){s&&(s.loading=!1),this.sourceData=this.makeArray(r),e.isArray(this.sourceData)?(this.doPrepend(),t.call(this),s&&(s.sourceData=this.sourceData,e.each(s.callbacks,function(){this.call()}))):(n.call(this),s&&e.each(s.err_callbacks,function(){this.call()}))},this),error:e.proxy(function(){n.call(this),s&&(s.loading=!1,e.each(s.err_callbacks,function(){this.call()}))},this)})}else this.sourceData=this.makeArray(this.options.source),e.isArray(this.sourceData)?(this.doPrepend(),t.call(this)):n.call(this)},doPrepend:function(){if(this.options.prepend===null||this.options.prepend===undefined)return;e.isArray(this.prependData)||(this.options.prepend=e.fn.editableutils.tryParseJson(this.options.prepend,!0),typeof this.options.prepend=="string"&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),e.isArray(this.prependData)&&e.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData))},renderList:function(){},value2htmlFinal:function(e,t){},makeArray:function(t){var n,r,i=[],s;if(!t||typeof t=="string")return null;if(e.isArray(t)){s=function(e,t){r={value:e,text:t};if(n++>=2)return!1};for(var o=0;o<t.length;o++)typeof t[o]=="object"?(n=0,e.each(t[o],s),n===1?i.push(r):n>1&&t[o].hasOwnProperty("value")&&t[o].hasOwnProperty("text")&&i.push(t[o])):i.push({value:t[o],text:t[o]})}else e.each(t,function(e,t){i.push({value:e,text:t})});return i},itemByVal:function(t){if(e.isArray(this.sourceData))for(var n=0;n<this.sourceData.length;n++)if(this.sourceData[n].value==t)return this.sourceData[n]}}),t.defaults=e.extend({},e.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0}),e.fn.editabletypes.list=t}(window.jQuery),function(e){var t=function(e){this.init("text",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.abstractinput),e.extend(t.prototype,{activate:function(){this.$input.is(":visible")&&(this.$input.focus(),e.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length))}}),t.defaults=e.extend({},e.fn.editabletypes.abstractinput.defaults,{tpl:'<input type="text">',placeholder:null}),e.fn.editabletypes.text=t}(window.jQuery),function(e){var t=function(e){this.init("textarea",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.abstractinput),e.extend(t.prototype,{render:function(){t.superclass.render.call(this),this.$input.keydown(function(t){t.ctrlKey&&t.which===13&&e(this).closest("form").submit()})},value2html:function(t,n){var r="",i;if(t){i=t.split("\n");for(var s=0;s<i.length;s++)i[s]=e("<div>").text(i[s]).html();r=i.join("<br>")}e(n).html(r)},html2value:function(t){if(!t)return"";var n=t.split(/<br\s*\/?>/i);for(var r=0;r<n.length;r++)n[r]=e("<div>").html(n[r]).text();return n.join("\n")},activate:function(){this.$input.is(":visible")&&(e.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.$input.focus())}}),t.defaults=e.extend({},e.fn.editabletypes.abstractinput.defaults,{tpl:"<textarea></textarea>",inputclass:"input-large",placeholder:null}),e.fn.editabletypes.textarea=t}(window.jQuery),function(e){var t=function(e){this.init("select",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.list),e.extend(t.prototype,{renderList:function(){if(!e.isArray(this.sourceData))return;for(var t=0;t<this.sourceData.length;t++)this.$input.append(e("<option>",{value:this.sourceData[t].value}).text(this.sourceData[t].text));this.$input.on("keydown.editable",function(t){t.which===13&&e(this).closest("form").submit()})},value2htmlFinal:function(e,n){var r="",i=this.itemByVal(e);i&&(r=i.text),t.superclass.constructor.superclass.value2html(r,n)},autosubmit:function(){this.$input.off("keydown.editable").on("change.editable",function(){e(this).closest("form").submit()})}}),t.defaults=e.extend({},e.fn.editabletypes.list.defaults,{tpl:"<select></select>"}),e.fn.editabletypes.select=t}(window.jQuery),function(e){var t=function(e){this.init("checklist",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.list),e.extend(t.prototype,{renderList:function(){var t,n;if(!e.isArray(this.sourceData))return;for(var r=0;r<this.sourceData.length;r++)t=e("<label>").append(e("<input>",{type:"checkbox",value:this.sourceData[r].value,name:this.options.name})).append(e("<span>").text(" "+this.sourceData[r].text)),e("<div>").append(t).appendTo(this.$input)},value2str:function(t){return e.isArray(t)?t.sort().join(e.trim(this.options.separator)):""},str2value:function(t){var n,r=null;return typeof t=="string"&&t.length?(n=new RegExp("\\s*"+e.trim(this.options.separator)+"\\s*"),r=t.split(n)):e.isArray(t)&&(r=t),r},value2input:function(t){var n=this.$input.find('input[type="checkbox"]');n.removeAttr("checked"),e.isArray(t)&&t.length&&n.each(function(n,r){var i=e(r);e.each(t,function(e,t){i.val()==t&&i.attr("checked","checked")})})},input2value:function(){var t=[];return this.$input.find("input:checked").each(function(n,r){t.push(e(r).val())}),t},value2htmlFinal:function(t,n){var r=[],i=e.grep(this.sourceData,function(n){return e.grep(t,function(e){return e==n.value}).length});i.length?(e.each(i,function(t,n){r.push(e.fn.editableutils.escape(n.text))}),e(n).html(r.join("<br>"))):e(n).empty()},activate:function(){this.$input.find('input[type="checkbox"]').first().focus()},autosubmit:function(){this.$input.find('input[type="checkbox"]').on("keydown",function(t){t.which===13&&e(this).closest("form").submit()})}}),t.defaults=e.extend({},e.fn.editabletypes.list.defaults,{tpl:"<div></div>",inputclass:"editable-checklist",separator:","}),e.fn.editabletypes.checklist=t}(window.jQuery),function(e){var t=function(e){this.init("password",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.text),e.extend(t.prototype,{value2html:function(t,n){t?e(n).text("[hidden]"):e(n).empty()},html2value:function(e){return null}}),t.defaults=e.extend({},e.fn.editabletypes.text.defaults,{tpl:'<input type="password">'}),e.fn.editabletypes.password=t}(window.jQuery),function(e){var t=function(e){this.init("email",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.text),t.defaults=e.extend({},e.fn.editabletypes.text.defaults,{tpl:'<input type="email">'}),e.fn.editabletypes.email=t}(window.jQuery),function(e){var t=function(e){this.init("url",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.text),t.defaults=e.extend({},e.fn.editabletypes.text.defaults,{tpl:'<input type="url">'}),e.fn.editabletypes.url=t}(window.jQuery),function(e){var t=function(e){this.init("tel",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.text),t.defaults=e.extend({},e.fn.editabletypes.text.defaults,{tpl:'<input type="tel">'}),e.fn.editabletypes.tel=t}(window.jQuery),function(e){var t=function(e){this.init("number",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.text),e.extend(t.prototype,{render:function(){t.superclass.render.call(this),this.options.min!==null&&this.$input.attr("min",this.options.min),this.options.max!==null&&this.$input.attr("max",this.options.max),this.options.step!==null&&this.$input.attr("step",this.options.step)}}),t.defaults=e.extend({},e.fn.editabletypes.text.defaults,{tpl:'<input type="number">',inputclass:"input-mini",min:null,max:null,step:null}),e.fn.editabletypes.number=t}(window.jQuery),function(e){var t=function(e){this.init("range",e,t.defaults)};e.fn.editableutils.inherit(t,e.fn.editabletypes.number),e.extend(t.prototype,{render:function(){this.$input=e(this.options.tpl);var t=this.$input.filter("input");this.options.inputclass&&t.addClass(this.options.inputclass),this.options.min!==null&&t.attr("min",this.options.min),this.options.max!==null&&t.attr("max",this.options.max),this.options.step!==null&&t.attr("step",this.options.step),t.on("input",function(){e(this).siblings("output").text(e(this).val())})},activate:function(){this.$input.filter("input").focus()}}),t.defaults=e.extend({},e.fn.editabletypes.number.defaults,{tpl:'<input type="range"><output style="width: 30px; display: inline-block"></output>',inputclass:"input-medium"}),e.fn.editabletypes.range=t}(window.jQuery),function(e){e.extend(e.fn.editableform.Constructor.prototype,{initTemplate:function(){this.$form=e(e.fn.editableform.template),this.$form.find(".editable-error-block").addClass("help-block")}}),e.fn.editableform.buttons='<button type="submit" class="btn btn-primary editable-submit"><i class="icon-ok icon-white"></i></button><button type="button" class="btn editable-cancel"><i class="icon-remove"></i></button>',e.fn.editableform.errorGroupClass="error",e.fn.editableform.errorBlockClass=null}(window.jQuery),function(e){e.extend(e.fn.editableContainer.Constructor.prototype,{containerName:"editableform",innerCss:null,initContainer:function(){this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$form},innerShow:function(){this.$element.hide(),this.$form&&this.$form.remove(),this.initForm(),this.tip().addClass("editable-container").addClass("editable-inline"),this.$form.insertAfter(this.$element),this.$form.show(this.options.anim),this.$form.editableform("render")},innerHide:function(){this.$form.hide(this.options.anim,e.proxy(function(){this.$element.show()},this))},destroy:function(){this.tip().remove()}}),e.fn.editableContainer.defaults=e.extend({},e.fn.editableContainer.defaults,{anim:"fast"})}(window.jQuery),function(e){var t=function(n){this.init("date",n,t.defaults);var r=e.fn.editableutils.sliceObj(this.options,["format"]);this.options.datepicker=e.extend({},t.defaults.datepicker,r,n.datepicker),this.options.viewformat||(this.options.viewformat=this.options.datepicker.format),this.options.datepicker.language=this.options.datepicker.language||"en",this.dpg=e.fn.datepicker.DPGlobal,this.parsedFormat=this.dpg.parseFormat(this.options.datepicker.format),this.parsedViewFormat=this.dpg.parseFormat(this.options.viewformat)};e.fn.editableutils.inherit(t,e.fn.editabletypes.abstractinput),e.extend(t.prototype,{render:function(){t.superclass.render.call(this),this.$input.datepicker(this.options.datepicker),this.options.clear&&(this.$clear=e('<a href="#"></a>').html(this.options.clear).click(e.proxy(function(e){e.preventDefault(),e.stopPropagation(),this.clear()},this)))},value2html:function(e,n){var r=e?this.dpg.formatDate(e,this.parsedViewFormat,this.options.datepicker.language):"";t.superclass.value2html(r,n)},html2value:function(e){return e?this.dpg.parseDate(e,this.parsedViewFormat,this.options.datepicker.language):null},value2str:function(e){return e?this.dpg.formatDate(e,this.parsedFormat,this.options.datepicker.language):""},str2value:function(e){return e?this.dpg.parseDate(e,this.parsedFormat,this.options.datepicker.language):null},value2submit:function(e){return this.value2str(e)},value2input:function(e){this.$input.datepicker("update",e)},input2value:function(){return this.$input.data("datepicker").date},activate:function(){},clear:function(){this.$input.data("datepicker").date=null,this.$input.find(".active").removeClass("active")},autosubmit:function(){this.$input.on("changeDate",function(t){var n=e(this).closest("form");setTimeout(function(){n.submit()},200)})}}),t.defaults=e.extend({},e.fn.editabletypes.abstractinput.defaults,{tpl:"<div></div>",inputclass:"editable-date well",format:"yyyy-mm-dd",viewformat:null,datepicker:{weekStart:0,startView:0,autoclose:!1},clear:"× clear"}),e.fn.editabletypes.date=t}(window.jQuery),!function(e){function t(){return new Date(Date.UTC.apply(Date,arguments))}function n(){var e=new Date;return t(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}var r=function(t,n){var r=this;this.element=e(t),this.language=n.language||this.element.data("date-language")||"en",this.language=this.language in i?this.language:"en",this.format=s.parseFormat(n.format||this.element.data("date-format")||"mm/dd/yyyy"),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.is(".date")?this.element.find(".add-on"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&this.component.length===0&&(this.component=!1),this.isInput?this.element.on({focus:e.proxy(this.show,this),keyup:e.proxy(this.update,this),keydown:e.proxy(this.keydown,this)}):this.component&&this.hasInput?(this.element.find("input").on({focus:e.proxy(this.show,this),keyup:e.proxy(this.update,this),keydown:e.proxy(this.keydown,this)}),this.component.on("click",e.proxy(this.show,this))):this.element.is("div")?this.isInline=!0:this.element.on("click",e.proxy(this.show,this)),this.picker=e(s.template).appendTo(this.isInline?this.element:"body").on({click:e.proxy(this.click,this),mousedown:e.proxy(this.mousedown,this)}),this.isInline?this.picker.addClass("datepicker-inline"):this.picker.addClass("dropdown-menu"),e(document).on("mousedown",function(t){e(t.target).closest(".datepicker").length==0&&r.hide()}),this.autoclose=!1,"autoclose"in n?this.autoclose=n.autoclose:"dateAutoclose"in this.element.data()&&(this.autoclose=this.element.data("date-autoclose")),this.keyboardNavigation=!0,"keyboardNavigation"in n?this.keyboardNavigation=n.keyboardNavigation:"dateKeyboardNavigation"in this.element.data()&&(this.keyboardNavigation=this.element.data("date-keyboard-navigation"));switch(n.startView||this.element.data("date-start-view")){case 2:case"decade":this.viewMode=this.startViewMode=2;break;case 1:case"year":this.viewMode=this.startViewMode=1;break;case 0:case"month":default:this.viewMode=this.startViewMode=0}this.todayBtn=n.todayBtn||this.element.data("date-today-btn")||!1,this.todayHighlight=n.todayHighlight||this.element.data("date-today-highlight")||!1,this.weekStart=(n.weekStart||this.element.data("date-weekstart")||i[this.language].weekStart||0)%7,this.weekEnd=(this.weekStart+6)%7,this.startDate=-Infinity,this.endDate=Infinity,this.setStartDate(n.startDate||this.element.data("date-startdate")),this.setEndDate(n.endDate||this.element.data("date-enddate")),this.fillDow(),this.fillMonths(),this.update(),this.showMode(),this.isInline&&this.show()};r.prototype={constructor:r,show:function(t){this.picker.show(),this.height=this.component?this.component.outerHeight():this.element.outerHeight(),this.update(),this.place(),e(window).on("resize",e.proxy(this.place,this)),t&&(t.stopPropagation(),t.preventDefault()),this.element.trigger({type:"show",date:this.date})},hide:function(t){if(this.isInline)return;this.picker.hide(),e(window).off("resize",this.place),this.viewMode=this.startViewMode,this.showMode(),this.isInput||e(document).off("mousedown",this.hide),t&&t.currentTarget.value&&this.setValue(),this.element.trigger({type:"hide",date:this.date})},getDate:function(){var e=this.getUTCDate();return new Date(e.getTime()+e.getTimezoneOffset()*6e4)},getUTCDate:function(){return this.date},setDate:function(e){this.setUTCDate(new Date(e.getTime()-e.getTimezoneOffset()*6e4))},setUTCDate:function(e){this.date=e,this.setValue()},setValue:function(){var e=this.getFormattedDate();this.isInput?this.element.prop("value",e):(this.component&&this.element.find("input").prop("value",e),this.element.data("date",e))},getFormattedDate:function(e){return e==undefined&&(e=this.format),s.formatDate(this.date,e,this.language)},setStartDate:function(e){this.startDate=e||-Infinity,this.startDate!==-Infinity&&(this.startDate=s.parseDate(this.startDate,this.format,this.language)),this.update(),this.updateNavArrows()},setEndDate:function(e){this.endDate=e||Infinity,this.endDate!==Infinity&&(this.endDate=s.parseDate(this.endDate,this.format,this.language)),this.update(),this.updateNavArrows()},place:function(){if(this.isInline)return;var t=parseInt(this.element.parents().filter(function(){return e(this).css("z-index")!="auto"}).first().css("z-index"))+10,n=this.component?this.component.offset():this.element.offset();this.picker.css({top:n.top+this.height,left:n.left,zIndex:t})},update:function(){var e,t=!1;arguments&&arguments.length&&(typeof arguments[0]=="string"||arguments[0]instanceof Date)?(e=arguments[0],t=!0):e=this.isInput?this.element.prop("value"):this.element.data("date")||this.element.find("input").prop("value"),this.date=s.parseDate(e,this.format,this.language),t&&this.setValue(),this.date<this.startDate?this.viewDate=new Date(this.startDate):this.date>this.endDate?this.viewDate=new Date(this.endDate):this.viewDate=new Date(this.date),this.fill()},fillDow:function(){var e=this.weekStart,t="<tr>";while(e<this.weekStart+7)t+='<th class="dow">'+i[this.language].daysMin[e++%7]+"</th>";t+="</tr>",this.picker.find(".datepicker-days thead").append(t)},fillMonths:function(){var e="",t=0;while(t<12)e+='<span class="month">'+i[this.language].monthsShort[t++]+"</span>";this.picker.find(".datepicker-months td").html(e)},fill:function(){var e=new Date(this.viewDate),n=e.getUTCFullYear(),r=e.getUTCMonth(),o=this.startDate!==-Infinity?this.startDate.getUTCFullYear():-Infinity,u=this.startDate!==-Infinity?this.startDate.getUTCMonth():-Infinity,a=this.endDate!==Infinity?this.endDate.getUTCFullYear():Infinity,f=this.endDate!==Infinity?this.endDate.getUTCMonth():Infinity,l=this.date&&this.date.valueOf(),c=new Date;this.picker.find(".datepicker-days thead th:eq(1)").text(i[this.language].months[r]+" "+n),this.picker.find("tfoot th.today").text(i[this.language].today).toggle(this.todayBtn!==!1),this.updateNavArrows(),this.fillMonths();var h=t(n,r-1,28,0,0,0,0),p=s.getDaysInMonth(h.getUTCFullYear(),h.getUTCMonth());h.setUTCDate(p),h.setUTCDate(p-(h.getUTCDay()-this.weekStart+7)%7);var d=new Date(h);d.setUTCDate(d.getUTCDate()+42),d=d.valueOf();var v=[],m;while(h.valueOf()<d){h.getUTCDay()==this.weekStart&&v.push("<tr>"),m="";if(h.getUTCFullYear()<n||h.getUTCFullYear()==n&&h.getUTCMonth()<r)m+=" old";else if(h.getUTCFullYear()>n||h.getUTCFullYear()==n&&h.getUTCMonth()>r)m+=" new";this.todayHighlight&&h.getUTCFullYear()==c.getFullYear()&&h.getUTCMonth()==c.getMonth()&&h.getUTCDate()==c.getDate()&&(m+=" today"),l&&h.valueOf()==l&&(m+=" active");if(h.valueOf()<this.startDate||h.valueOf()>this.endDate)m+=" disabled";v.push('<td class="day'+m+'">'+h.getUTCDate()+"</td>"),h.getUTCDay()==this.weekEnd&&v.push("</tr>"),h.setUTCDate(h.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(v.join(""));var g=this.date&&this.date.getUTCFullYear(),y=this.picker.find(".datepicker-months").find("th:eq(1)").text(n).end().find("span").removeClass("active");g&&g==n&&y.eq(this.date.getUTCMonth()).addClass("active"),(n<o||n>a)&&y.addClass("disabled"),n==o&&y.slice(0,u).addClass("disabled"),n==a&&y.slice(f+1).addClass("disabled"),v="",n=parseInt(n/10,10)*10;var b=this.picker.find(".datepicker-years").find("th:eq(1)").text(n+"-"+(n+9)).end().find("td");n-=1;for(var w=-1;w<11;w++)v+='<span class="year'+(w==-1||w==10?" old":"")+(g==n?" active":"")+(n<o||n>a?" disabled":"")+'">'+n+"</span>",n+=1;b.html(v)},updateNavArrows:function(){var e=new Date(this.viewDate),t=e.getUTCFullYear(),n=e.getUTCMonth();switch(this.viewMode){case 0:this.startDate!==-Infinity&&t<=this.startDate.getUTCFullYear()&&n<=this.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==Infinity&&t>=this.endDate.getUTCFullYear()&&n>=this.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:this.startDate!==-Infinity&&t<=this.startDate.getUTCFullYear()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==Infinity&&t>=this.endDate.getUTCFullYear()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}},click:function(n){n.stopPropagation(),n.preventDefault();var r=e(n.target).closest("span, td, th");if(r.length==1)switch(r[0].nodeName.toLowerCase()){case"th":switch(r[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var i=s.modes[this.viewMode].navStep*(r[0].className=="prev"?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,i);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,i)}this.fill();break;case"today":var o=new Date;o=t(o.getFullYear(),o.getMonth(),o.getDate(),0,0,0),this.showMode(-2);var u=this.todayBtn=="linked"?null:"view";this._setDate(o,u)}break;case"span":if(!r.is(".disabled")){this.viewDate.setUTCDate(1);if(r.is(".month")){var a=r.parent().find("span").index(r);this.viewDate.setUTCMonth(a),this.element.trigger({type:"changeMonth",date:this.viewDate})}else{var f=parseInt(r.text(),10)||0;this.viewDate.setUTCFullYear(f),this.element.trigger({type:"changeYear",date:this.viewDate})}this.showMode(-1),this.fill()}break;case"td":if(r.is(".day")&&!r.is(".disabled")){var l=parseInt(r.text(),10)||1,f=this.viewDate.getUTCFullYear(),a=this.viewDate.getUTCMonth();r.is(".old")?a==0?(a=11,f-=1):a-=1:r.is(".new")&&(a==11?(a=0,f+=1):a+=1),this._setDate(t(f,a,l,0,0,0,0))}}},_setDate:function(e,t){if(!t||t=="date")this.date=e;if(!t||t=="view")this.viewDate=e;this.fill(),this.setValue(),this.element.trigger({type:"changeDate",date:this.date});var n;this.isInput?n=this.element:this.component&&(n=this.element.find("input")),n&&(n.change(),this.autoclose&&this.hide())},moveMonth:function(e,t){if(!t)return e;var n=new Date(e.valueOf()),r=n.getUTCDate(),i=n.getUTCMonth(),s=Math.abs(t),o,u;t=t>0?1:-1;if(s==1){u=t==-1?function(){return n.getUTCMonth()==i}:function(){return n.getUTCMonth()!=o},o=i+t,n.setUTCMonth(o);if(o<0||o>11)o=(o+12)%12}else{for(var a=0;a<s;a++)n=this.moveMonth(n,t);o=n.getUTCMonth(),n.setUTCDate(r),u=function(){return o!=n.getUTCMonth()}}while(u())n.setUTCDate(--r),n.setUTCMonth(o);return n},moveYear:function(e,t){return this.moveMonth(e,t*12)},dateWithinRange:function(e){return e>=this.startDate&&e<=this.endDate},keydown:function(e){if(this.picker.is(":not(:visible)")){e.keyCode==27&&this.show();return}var t=!1,n,r,i,s,o;switch(e.keyCode){case 27:this.hide(),e.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation)break;n=e.keyCode==37?-1:1,e.ctrlKey?(s=this.moveYear(this.date,n),o=this.moveYear(this.viewDate,n)):e.shiftKey?(s=this.moveMonth(this.date,n),o=this.moveMonth(this.viewDate,n)):(s=new Date(this.date),s.setUTCDate(this.date.getUTCDate()+n),o=new Date(this.viewDate),o.setUTCDate(this.viewDate.getUTCDate()+n)),this.dateWithinRange(s)&&(this.date=s,this.viewDate=o,this.setValue(),this.update(),e.preventDefault(),t=!0);break;case 38:case 40:if(!this.keyboardNavigation)break;n=e.keyCode==38?-1:1,e.ctrlKey?(s=this.moveYear(this.date,n),o=this.moveYear(this.viewDate,n)):e.shiftKey?(s=this.moveMonth(this.date,n),o=this.moveMonth(this.viewDate,n)):(s=new Date(this.date),s.setUTCDate(this.date.getUTCDate()+n*7),o=new Date(this.viewDate),o.setUTCDate(this.viewDate.getUTCDate()+n*7)),this.dateWithinRange(s)&&(this.date=s,this.viewDate=o,this.setValue(),this.update(),e.preventDefault(),t=!0);break;case 13:this.hide(),e.preventDefault();break;case 9:this.hide()}if(t){this.element.trigger({type:"changeDate",date:this.date});var u;this.isInput?u=this.element:this.component&&(u=this.element.find("input")),u&&u.change()}},showMode:function(e){e&&(this.viewMode=Math.max(0,Math.min(2,this.viewMode+e))),this.picker.find(">div").hide().filter(".datepicker-"+s.modes[this.viewMode].clsName).css("display","block"),this.updateNavArrows()}},e.fn.datepicker=function(t){var n=Array.apply(null,arguments);return n.shift(),this.each(function(){var i=e(this),s=i.data("datepicker"),o=typeof t=="object"&&t;s||i.data("datepicker",s=new r(this,e.extend({},e.fn.datepicker.defaults,o))),typeof t=="string"&&typeof s[t]=="function"&&s[t].apply(s,n)})},e.fn.datepicker.defaults={},e.fn.datepicker.Constructor=r;var i=e.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today"}},s={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(e){return e%4===0&&e%100!==0||e%400===0},getDaysInMonth:function(e,t){return[31,s.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]},validParts:/dd?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\r]+/g,parseFormat:function(e){var t=e.replace(this.validParts,"\0").split("\0"),n=e.match(this.validParts);if(!t||!t.length||!n||n.length==0)throw new Error("Invalid date format.");return{separators:t,parts:n}},parseDate:function(n,s,o){if(n instanceof Date)return n;if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(n)){var u=/([-+]\d+)([dmwy])/,a=n.match(/([-+]\d+)([dmwy])/g),f,l;n=new Date;for(var c=0;c<a.length;c++){f=u.exec(a[c]),l=parseInt(f[1]);switch(f[2]){case"d":n.setUTCDate(n.getUTCDate()+l);break;case"m":n=r.prototype.moveMonth.call(r.prototype,n,l);break;case"w":n.setUTCDate(n.getUTCDate()+l*7);break;case"y":n=r.prototype.moveYear.call(r.prototype,n,l)}}return t(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),0,0,0)}var a=n&&n.match(this.nonpunctuation)||[],n=new Date,h={},p=["yyyy","yy","M","MM","m","mm","d","dd"],d={yyyy:function(e,t){return e.setUTCFullYear(t)},yy:function(e,t){return e.setUTCFullYear(2e3+t)},m:function(e,t){t-=1;while(t<0)t+=12;t%=12,e.setUTCMonth(t);while(e.getUTCMonth()!=t)e.setUTCDate(e.getUTCDate()-1);return e},d:function(e,t){return e.setUTCDate(t)}},v,m,f;d.M=d.MM=d.mm=d.m,d.dd=d.d,n=t(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0);if(a.length==s.parts.length){for(var c=0,g=s.parts.length;c<g;c++){v=parseInt(a[c],10),f=s.parts[c];if(isNaN(v))switch(f){case"MM":m=e(i[o].months).filter(function(){var e=this.slice(0,a[c].length),t=a[c].slice(0,e.length);return e==t}),v=e.inArray(m[0],i[o].months)+1;break;case"M":m=e(i[o].monthsShort).filter(function(){var e=this.slice(0,a[c].length),t=a[c].slice(0,e.length);return e==t}),v=e.inArray(m[0],i[o].monthsShort)+1}h[f]=v}for(var c=0,y;c<p.length;c++)y=p[c],y in h&&d[y](n,h[y])}return n},formatDate:function(t,n,r){var s={d:t.getUTCDate(),m:t.getUTCMonth()+1,M:i[r].monthsShort[t.getUTCMonth()],MM:i[r].months[t.getUTCMonth()],yy:t.getUTCFullYear().toString().substring(2),yyyy:t.getUTCFullYear()};s.dd=(s.d<10?"0":"")+s.d,s.mm=(s.m<10?"0":"")+s.m;var t=[],o=e.extend([],n.separators);for(var u=0,a=n.parts.length;u<a;u++)o.length&&t.push(o.shift()),t.push(s[n.parts[u]]);return t.join("")},headTemplate:'<thead><tr><th class="prev"><i class="icon-arrow-left"/></th><th colspan="5" class="switch"></th><th class="next"><i class="icon-arrow-right"/></th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr></tfoot>'};s.template='<div class="datepicker"><div class="datepicker-days"><table class=" table-condensed">'+s.headTemplate+"<tbody></tbody>"+s.footTemplate+"</table>"+"</div>"+'<div class="datepicker-months">'+'<table class="table-condensed">'+s.headTemplate+s.contTemplate+s.footTemplate+"</table>"+"</div>"+'<div class="datepicker-years">'+'<table class="table-condensed">'+s.headTemplate+s.contTemplate+s.footTemplate+"</table>"+"</div>"+"</div>",e.fn.datepicker.DPGlobal=s}(window.jQuery);
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.min.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.min.css deleted file mode 100644 index 4649e5d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery UI - v1.11.1 - 2014-08-23 -* http://jqueryui.com -* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.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:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;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:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,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:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;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 #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.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}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.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-on{background-position:-96px -144px}.ui-icon-radio-off{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{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}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.structure.min.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.structure.min.css deleted file mode 100644 index 52b2349..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/no-theme/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.11.1 - 2014-08-19 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.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:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;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:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png Binary files differdeleted file mode 100644 index 2639bee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png Binary files differdeleted file mode 100644 index f2d760e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png Binary files differdeleted file mode 100644 index ad01bf6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png Binary files differdeleted file mode 100644 index dad987a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png Binary files differdeleted file mode 100644 index 0875e4f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png Binary files differdeleted file mode 100644 index 0af0537..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png Binary files differdeleted file mode 100644 index e6e5130..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png Binary files differdeleted file mode 100644 index be87342..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png Binary files differdeleted file mode 100644 index fe75af5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png Binary files differdeleted file mode 100644 index 5977ef2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png Binary files differdeleted file mode 100644 index 8df056f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png Binary files differdeleted file mode 100644 index 9d3db37..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png Binary files differdeleted file mode 100644 index 392fd6e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png Binary files differdeleted file mode 100644 index a45283b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/jquery-ui.theme.min.css b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/jquery-ui.theme.min.css deleted file mode 100644 index 6bdc4ef..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/css/ui-lightness/jquery-ui.theme.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.11.1 - 2014-08-23 -* http://jqueryui.com -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,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:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;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 #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.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}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.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-on{background-position:-96px -144px}.ui-icon-radio-off{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{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}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/js/jquery-ui.min.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/js/jquery-ui.min.js deleted file mode 100644 index 71b02d1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery-ui/js/jquery-ui.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! jQuery UI - v1.11.1 - 2014-08-19 -* http://jqueryui.com -* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.1",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return n=!a&&o.length?e.widget.extend.apply(null,[n].concat(o)):n,a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.1",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):t.which?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,N=e.extend({},y),M=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?N.left-=d:"center"===n.my[0]&&(N.left-=d/2),"bottom"===n.my[1]?N.top-=c:"center"===n.my[1]&&(N.top-=c/2),N.left+=M[0],N.top+=M[1],a||(N.left=h(N.left),N.top=h(N.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](N,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+M[0],p[1]+M[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-N.left,i=t+m-d,s=v.top-N.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:N.left,top:N.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(N,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.document[0],s=this.options;try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(n){}return this.helper||s.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(s.iframeFix===!0?"iframe":s.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)} -},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=s.options,a=e.extend({},i,{item:s.element});s.sortables=[],e(n.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});e.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,n))})},drag:function(t,i,s){var n=this;e.each(s.sortables,function(){var a=!1,o=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(o.instance.element[0],this.instance.element[0])&&(a=!1),a})),a?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",t),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",t),s.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left,l=h+s.snapElements[c].width,u=s.snapElements[c].top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top-s.margins.top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top-s.margins.top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left-s.margins.left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left-s.margins.left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top-s.margins.top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top-s.margins.top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left-s.margins.left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left-s.margins.left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.1",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left,o=(t.positionAbs||t.position.absolute).top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=u-t.height,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this; -this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td> </td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!t){for(this._trigger("beforeStop",e,this._uiHash()),s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!1}if(t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.1",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id"); -t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function i(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,h=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:h=!1,n=this.previousFilter||"",a=String.fromCharCode(t.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.find(this.options.items).filter(function(){return r.test(e(this).text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(t.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.find(this.options.items).filter(function(){return r.test(e(this).text())})),s.length?(this.focus(t,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)}}),e.widget("ui.autocomplete",{version:"1.11.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.1",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.1",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.1"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty()) -},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,N,M,C,A,P,I,H,z,F,E,W,L,O,j=new Date,R=this._daylightSavingAdjust(new Date(j.getFullYear(),j.getMonth(),j.getDate())),Y=this._get(e,"isRTL"),J=this._get(e,"showButtonPanel"),B=this._get(e,"hideIfNoPrevNext"),K=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),U=this._get(e,"showCurrentAtPos"),q=this._get(e,"stepMonths"),G=1!==V[0]||1!==V[1],X=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-U,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-V[0]*V[1]+1,$.getDate())),t=Q&&Q>t?Q:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-q,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":B?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+q,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":B?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?X:R,o=K?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=J?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;V[0]>w;w++){for(k="",this.maxRows=4,T=0;V[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",N="",G){if(N+="<div class='ui-datepicker-group",V[1]>1)switch(T){case 0:N+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case V[1]-1:N+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:N+=" ui-datepicker-group-middle",S=""}N+="'>"}for(N+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,Q,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",M=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)C=(x+u)%7,M+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[C]+"'>"+p[C]+"</span></th>";for(N+=M+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=G?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(N+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)W=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],L=z.getMonth()!==Z,O=L&&!y||!W[0]||Q&&Q>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(L?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(O?" "+this._unselectableClass+" ui-state-disabled":"")+(L&&!v?"":" "+W[1]+(z.getTime()===X.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(L&&!v||!W[2]?"":" title='"+W[2].replace(/'/g,"'")+"'")+(O?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(L&&!v?" ":O?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===X.getTime()?" ui-state-active":"")+(L?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);N+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),N+="</tbody></table>"+(G?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=N}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.1",e.datepicker,e.widget("ui.dialog",{version:"1.11.1",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement; -e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.progressbar",{version:"1.11.1",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectmenu",{version:"1.11.1",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this,i=this.element.attr("tabindex");this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:i||this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(e){e.preventDefault()},click:"_toggle",keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.attr("value"),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.1",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental; -return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.1",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.1",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,a.is(":hidden")||a.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i),a.length)return a.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):a.position(e.extend({of:i},this.options.position)),this.hiding=!1,this.closing=!1,a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:a}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(o.remove=function(){this._removeTooltip(a)}),t&&"mouseover"!==t.type||(o.mouseleave="close"),t&&"focusin"!==t.type||(o.focusout="close"),this._on(!0,i,o)}},close:function(t){var i=this,s=e(t?t.currentTarget:this.element),n=this._find(s);this.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),this.hiding=!0,n.stop(!0),this._hide(n,this.options.hide,function(){i._removeTooltip(e(this)),this.hiding=!1,this.closing=!1}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,s){e(s.element).attr("title",s.title),delete i.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:n}),this.hiding||(this.closing=!1))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]=t,i},_find:function(t){var i=t.data("ui-tooltip-id");return i?e("#"+i):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s[0],t.close(n,!0),e("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title")||s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}});var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.1",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e) -},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}});
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery/jquery.min.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery/jquery.min.js deleted file mode 100644 index 9f7b3d3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery/jquery.min.js +++ /dev/null @@ -1,9190 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:11Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var arr = []; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android < 4.0, iOS < 6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v1.10.19 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-04-18 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== strundefined && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, - doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", function() { - setDocument(); - }, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", function() { - setDocument(); - }); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { - div.innerHTML = "<div class='a'></div><div class='a i'></div>"; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = "<select msallowclip=''><option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowclip^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android < 4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Math.random(); -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android < 4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -/* - Implementation Summary - - 1. Enforce API surface and semantic compatibility with 1.9.x branch - 2. Improve the module's maintainability by reducing the storage - paths to a single mechanism. - 3. Use the same single mechanism to support "private" and "user" data. - 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - 5. Avoid exposing implementation details on user objects (eg. expando properties) - 6. Provide a clear path for implementation upgrade to WeakMap in 2014 -*/ -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // #11217 - WebKit loses check when the name is after the checked attribute - // Support: Windows Web Apps (WWA) - // `name` and `type` need .setAttribute for WWA - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE9-IE11+ - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome < 28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Create "bubbling" focus and blur events -// Support: Firefox, Chrome, Safari -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE 9 - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE 9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Support: IE >= 9 -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Support: IE >= 9 - // Fix Cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Fixes #12346 - // Support: Webkit, IE - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1></$2>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = iframe[ 0 ].contentDocument; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = (/^margin/); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); - }; - - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - } - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: iOS < 6 - // A tribute to the "awesome hack by Dean Edwards" - // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - // Support: IE - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - // Hook not needed (or it's not possible to use it due to missing dependency), - // remove it. - // Since there are no other hooks for marginRight, remove the whole object. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - - return (this.get = hookFn).apply( this, arguments ); - } - }; -} - - -(function() { - var pixelPositionVal, boxSizingReliableVal, - docElem = document.documentElement, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - if ( !div.style ) { - return; - } - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + - "position:absolute"; - container.appendChild( div ); - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computePixelPositionAndBoxSizingReliable() { - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + - "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + - "border:1px;padding:1px;width:4px;position:absolute"; - div.innerHTML = ""; - docElem.appendChild( container ); - - var divStyle = window.getComputedStyle( div, null ); - pixelPositionVal = divStyle.top !== "1%"; - boxSizingReliableVal = divStyle.width === "4px"; - - docElem.removeChild( container ); - } - - // Support: node.js jsdom - // Don't assume that getComputedStyle is a property of the global object - if ( window.getComputedStyle ) { - jQuery.extend( support, { - pixelPosition: function() { - // This test is executed only once but we still do memoizing - // since we can use the boxSizingReliable pre-computing. - // No need to check if the test was already performed, though. - computePixelPositionAndBoxSizingReliable(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computePixelPositionAndBoxSizingReliable(); - } - return boxSizingReliableVal; - }, - reliableMarginRight: function() { - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // This support function is only executed once so no memoizing is needed. - var ret, - marginDiv = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - docElem.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); - - docElem.removeChild( container ); - - return ret; - } - }); - } -})(); - - -// A method for quickly swapping in/out CSS properties to get correct calculations. -jQuery.swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ), - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name[0].toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = data_priv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) ); - } - } else { - hidden = isHidden( elem ); - - if ( display !== "none" || !hidden ) { - data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set. See: #7116 - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - style[ name ] = value; - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -jQuery.each([ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - // certain elements can have dimension info if we invisibly show them - // however, it must have a current display style that would benefit from this - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? - jQuery.swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - }) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var styles = extra && getStyles( elem ); - return setPositiveNumber( elem, value, extra ? - augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ) : 0 - ); - } - }; -}); - -// Support: Android 2.3 -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // Work around by temporarily setting element display to inline-block - return jQuery.swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each({ - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // assumes a single number if not a string - parts = typeof value === "string" ? value.split(" ") : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -}); - -jQuery.fn.extend({ - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || "swing"; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - if ( tween.elem[ tween.prop ] != null && - (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { - return tween.elem[ tween.prop ]; - } - - // passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails - // so, simple values such as "10px" are parsed to Float. - // complex values such as "rotate(1rad)" are returned as is. - result = jQuery.css( tween.elem, tween.prop, "" ); - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - // use step hook for back compat - use cssHook if its there - use .style if its - // available and use plain properties where available - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE9 -// Panic based approach to setting things on disconnected nodes - -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - } -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), - rrun = /queueHooks$/, - animationPrefilters = [ defaultPrefilter ], - tweeners = { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ), - target = tween.cur(), - parts = rfxnum.exec( value ), - unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && - rfxnum.exec( jQuery.css( tween.elem, prop ) ), - scale = 1, - maxIterations = 20; - - if ( start && start[ 3 ] !== unit ) { - // Trust units reported by jQuery.css - unit = unit || start[ 3 ]; - - // Make sure we update the tween properties later on - parts = parts || []; - - // Iteratively approximate from a nonzero starting point - start = +target || 1; - - do { - // If previous iteration zeroed out, double until we get *something* - // Use a string for doubling factor so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - start = start / scale; - jQuery.style( tween.elem, prop, start + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // And breaking the loop if scale is unchanged or perfect, or if we've just had enough - } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); - } - - // Update tween properties - if ( parts ) { - start = tween.start = +start || +target || 0; - tween.unit = unit; - // If a +=/-= token was provided, we're doing a relative animation - tween.end = parts[ 1 ] ? - start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : - +parts[ 2 ]; - } - - return tween; - } ] - }; - -// Animations created synchronously will run synchronously -function createFxNow() { - setTimeout(function() { - fxNow = undefined; - }); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // if we include width, step value is 1 to do all cssExpand values, - // if we don't include width, step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( (tween = collection[ index ].call( animation, prop, value )) ) { - - // we're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = data_priv.get( elem, "fxshow" ); - - // handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always(function() { - // doing this makes sure that the complete handler will be called - // before this completes - anim.always(function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - }); - }); - } - - // height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE9-10 do not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - style.display = "inline-block"; - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always(function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - }); - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = data_priv.access( elem, "fxshow", {} ); - } - - // store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done(function() { - jQuery( elem ).hide(); - }); - } - anim.done(function() { - var prop; - - data_priv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - }); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // not quite $.extend, this wont overwrite keys already present. - // also - reusing 'index' from above because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = animationPrefilters.length, - deferred = jQuery.Deferred().always( function() { - // don't match elem in the :animated selector - delete tick.elem; - }), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ]); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise({ - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { specialEasing: {} }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - // if we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // resolve when we played the last frame - // otherwise, reject - if ( gotoEnd ) { - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - }), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - }) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.split(" "); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - tweeners[ prop ] = tweeners[ prop ] || []; - tweeners[ prop ].unshift( callback ); - } - }, - - prefilter: function( callback, prepend ) { - if ( prepend ) { - animationPrefilters.unshift( callback ); - } else { - animationPrefilters.push( callback ); - } - } -}); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend({ - fadeTo: function( speed, to, easing, callback ) { - - // show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // animate to the value specified - .end().animate({ opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || data_priv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each(function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = data_priv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // start the next in the queue if the last step wasn't forced - // timers currently will call their complete callbacks, which will dequeue - // but only if they were gotoEnd - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - }); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each(function() { - var index, - data = data_priv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // enable finishing flag on private data - data.finish = true; - - // empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // turn off finishing flag - delete data.finish; - }); - } -}); - -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -}); - -// Generate shortcuts for custom animations -jQuery.each({ - slideDown: genFx("show"), - slideUp: genFx("hide"), - slideToggle: genFx("toggle"), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -}); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; - -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - clearInterval( timerId ); - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); -}; - - -(function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: iOS 5.1, Android 4.x, Android 2.3 - // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) - support.checkOn = input.value !== ""; - - // Must access the parent to make an option select properly - // Support: IE9, IE10 - support.optSelected = opt.selected; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Check if an input maintains its value after becoming a radio - // Support: IE9, IE10 - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -})(); - - -var nodeHook, boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - } -}); - -jQuery.extend({ - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - } -}); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; -}); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i; - -jQuery.fn.extend({ - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each(function() { - delete this[ jQuery.propFix[ name ] || name ]; - }); - } -}); - -jQuery.extend({ - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? - elem.tabIndex : - -1; - } - } - } -}); - -// Support: IE9+ -// Selectedness for an option in an optgroup can be inaccurate -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - - - - -var rclass = /[\t\r\n\f]/g; - -jQuery.fn.extend({ - addClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = arguments.length === 0 || typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = value ? jQuery.trim( cur ) : ""; - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - data_priv.set( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - } -}); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend({ - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - jQuery.trim( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE6-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) { - optionSet = true; - } - } - - // force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -}); - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - // Support: Webkit - // "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); - - - - -// Return jQuery for attributes-only inclusion - - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -}); - -jQuery.fn.extend({ - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - } -}); - - -var nonce = jQuery.now(); - -var rquery = (/\?/); - - - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - tmp = new DOMParser(); - xml = tmp.parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - // Document location - ajaxLocParts, - ajaxLocation, - - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat("*"); - -// #8138, IE may throw an exception when accessing -// a field from window.location if document.domain has been set -try { - ajaxLocation = location.href; -} catch( e ) { - // Use the href attribute of an A element - // since IE will modify it given document.location - ajaxLocation = document.createElement( "a" ); - ajaxLocation.href = ""; - ajaxLocation = ajaxLocation.href; -} - -// Segment location into parts -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - // For each dataType in the dataTypeExpression - while ( (dataType = dataTypes[i++]) ) { - // Prepend if requested - if ( dataType[0] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); - - // Otherwise append - } else { - (structure[ dataType ] = structure[ dataType ] || []).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - }); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s[ "throws" ] ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend({ - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: ajaxLocation, - type: "GET", - isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /xml/, - html: /html/, - json: /json/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - // URL without anti-cache param - cacheURL, - // Response headers - responseHeadersString, - responseHeaders, - // timeout handle - timeoutTimer, - // Cross-domain detection vars - parts, - // To know if global events are to be dispatched - fireGlobals, - // Loop variable - i, - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - // Callbacks context - callbackContext = s.context || s, - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks("once memory"), - // Status-dependent callbacks - statusCode = s.statusCode || {}, - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - // The jqXHR state - state = 0, - // Default abort message - strAbort = "canceled", - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( (match = rheaders.exec( responseHeadersString )) ) { - responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ) - .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when we have a protocol:host:port mismatch - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - fireGlobals = s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger("ajaxStart"); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - // Abort if not done already and return - return jqXHR.abort(); - } - - // aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout(function() { - jqXHR.abort("timeout"); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader("Last-Modified"); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader("etag"); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - // We extract error from statusText - // then normalize statusText and status for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger("ajaxStop"); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -}); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }); - }; -}); - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -}); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); -}; - - -jQuery.fn.extend({ - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapAll( html.call(this, i) ); - }); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); - - -jQuery.expr.filters.hidden = function( elem ) { - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; -}; -jQuery.expr.filters.visible = function( elem ) { - return !jQuery.expr.filters.hidden( elem ); -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - // Item is non-scalar (array or object), encode its numeric index. - buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); - } - }); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - }); - - } else { - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend({ - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map(function() { - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - }) - .filter(function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - }) - .map(function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }).get(); - } -}); - - -jQuery.ajaxSettings.xhr = function() { - try { - return new XMLHttpRequest(); - } catch( e ) {} -}; - -var xhrId = 0, - xhrCallbacks = {}, - xhrSuccessStatus = { - // file protocol always yields status code 0, assume 200 - 0: 200, - // Support: IE9 - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -// Support: IE9 -// Open requests must be manually aborted on unload (#5280) -if ( window.ActiveXObject ) { - jQuery( window ).on( "unload", function() { - for ( var key in xhrCallbacks ) { - xhrCallbacks[ key ](); - } - }); -} - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport(function( options ) { - var callback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(), - id = ++xhrId; - - xhr.open( options.type, options.url, options.async, options.username, options.password ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers["X-Requested-With"] ) { - headers["X-Requested-With"] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - delete xhrCallbacks[ id ]; - callback = xhr.onload = xhr.onerror = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - complete( - // file: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - // Support: IE9 - // Accessing binary-data responseText throws an exception - // (#11426) - typeof xhr.responseText === "string" ? { - text: xhr.responseText - } : undefined, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - xhr.onerror = callback("error"); - - // Create the abort callback - callback = xhrCallbacks[ id ] = callback("abort"); - - try { - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -// Install script dataType -jQuery.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /(?:java|ecma)script/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -}); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -}); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery("<script>").prop({ - async: true, - charset: s.scriptCharset, - src: s.url - }).on( - "load error", - callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } - ); - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -}); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters["script json"] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always(function() { - // Restore preexisting value - window[ callbackName ] = overwritten; - - // Save back as free - if ( s[ callbackName ] ) { - // make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - }); - - // Delegate to script - return "script"; - } -}); - - - - -// data: string of html -// context (optional): If specified, the fragment will be created in this context, defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf(" "); - - if ( off >= 0 ) { - selector = jQuery.trim( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax({ - url: url, - - // if "type" variable is undefined, then "GET" method will be used - type: type, - dataType: "html", - data: params - }).done(function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - }).complete( callback && function( jqXHR, status ) { - self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); - }); - } - - return this; -}; - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep(jQuery.timers, function( fn ) { - return elem === fn.elem; - }).length; -}; - - - - -var docElem = window.document.documentElement; - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf("auto") > -1; - - // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - options = options.call( elem, i, curOffset ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend({ - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each(function( i ) { - jQuery.offset.setOffset( this, options, i ); - }); - } - - var docElem, win, - elem = this[ 0 ], - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - // If we don't have gBCR, just use 0,0 rather than error - // BlackBerry 5, iOS 3 (original iPhone) - if ( typeof elem.getBoundingClientRect !== strundefined ) { - box = elem.getBoundingClientRect(); - } - win = getWindow( doc ); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - // We assume that getBoundingClientRect is available when computed position is fixed - offset = elem.getBoundingClientRect(); - - } else { - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - offsetParent: function() { - return this.map(function() { - var offsetParent = this.offsetParent || docElem; - - while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || docElem; - }); - } -}); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : window.pageXOffset, - top ? val : window.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length, null ); - }; -}); - -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// getComputedStyle returns percent when specified for top/left/bottom/right -// rather than make the css module depend on the offset module, we just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - // if curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -}); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { - // margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - }); -}); - - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - }); -} - - - - -var - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in -// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( typeof noGlobal === strundefined ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; - -})); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/README b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/README deleted file mode 100644 index a8c11c4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/README +++ /dev/null @@ -1,14 +0,0 @@ -The following is the license information for the file jquery-src.js -/*! - * jQuery JavaScript Library v2.1.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:11Z - */ diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery-src.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery-src.js deleted file mode 100644 index 9f7b3d3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery-src.js +++ /dev/null @@ -1,9190 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:11Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var arr = []; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android < 4.0, iOS < 6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v1.10.19 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-04-18 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== strundefined && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, - doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", function() { - setDocument(); - }, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", function() { - setDocument(); - }); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { - div.innerHTML = "<div class='a'></div><div class='a i'></div>"; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = "<select msallowclip=''><option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowclip^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android < 4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Math.random(); -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android < 4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -/* - Implementation Summary - - 1. Enforce API surface and semantic compatibility with 1.9.x branch - 2. Improve the module's maintainability by reducing the storage - paths to a single mechanism. - 3. Use the same single mechanism to support "private" and "user" data. - 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - 5. Avoid exposing implementation details on user objects (eg. expando properties) - 6. Provide a clear path for implementation upgrade to WeakMap in 2014 -*/ -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // #11217 - WebKit loses check when the name is after the checked attribute - // Support: Windows Web Apps (WWA) - // `name` and `type` need .setAttribute for WWA - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE9-IE11+ - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome < 28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Create "bubbling" focus and blur events -// Support: Firefox, Chrome, Safari -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE 9 - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE 9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Support: IE >= 9 -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Support: IE >= 9 - // Fix Cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Fixes #12346 - // Support: Webkit, IE - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1></$2>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = iframe[ 0 ].contentDocument; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = (/^margin/); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); - }; - - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - } - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: iOS < 6 - // A tribute to the "awesome hack by Dean Edwards" - // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - // Support: IE - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - // Hook not needed (or it's not possible to use it due to missing dependency), - // remove it. - // Since there are no other hooks for marginRight, remove the whole object. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - - return (this.get = hookFn).apply( this, arguments ); - } - }; -} - - -(function() { - var pixelPositionVal, boxSizingReliableVal, - docElem = document.documentElement, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - if ( !div.style ) { - return; - } - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + - "position:absolute"; - container.appendChild( div ); - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computePixelPositionAndBoxSizingReliable() { - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + - "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + - "border:1px;padding:1px;width:4px;position:absolute"; - div.innerHTML = ""; - docElem.appendChild( container ); - - var divStyle = window.getComputedStyle( div, null ); - pixelPositionVal = divStyle.top !== "1%"; - boxSizingReliableVal = divStyle.width === "4px"; - - docElem.removeChild( container ); - } - - // Support: node.js jsdom - // Don't assume that getComputedStyle is a property of the global object - if ( window.getComputedStyle ) { - jQuery.extend( support, { - pixelPosition: function() { - // This test is executed only once but we still do memoizing - // since we can use the boxSizingReliable pre-computing. - // No need to check if the test was already performed, though. - computePixelPositionAndBoxSizingReliable(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computePixelPositionAndBoxSizingReliable(); - } - return boxSizingReliableVal; - }, - reliableMarginRight: function() { - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // This support function is only executed once so no memoizing is needed. - var ret, - marginDiv = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - docElem.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); - - docElem.removeChild( container ); - - return ret; - } - }); - } -})(); - - -// A method for quickly swapping in/out CSS properties to get correct calculations. -jQuery.swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ), - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name[0].toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = data_priv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) ); - } - } else { - hidden = isHidden( elem ); - - if ( display !== "none" || !hidden ) { - data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set. See: #7116 - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - style[ name ] = value; - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -jQuery.each([ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - // certain elements can have dimension info if we invisibly show them - // however, it must have a current display style that would benefit from this - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? - jQuery.swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - }) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var styles = extra && getStyles( elem ); - return setPositiveNumber( elem, value, extra ? - augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ) : 0 - ); - } - }; -}); - -// Support: Android 2.3 -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // Work around by temporarily setting element display to inline-block - return jQuery.swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each({ - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // assumes a single number if not a string - parts = typeof value === "string" ? value.split(" ") : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -}); - -jQuery.fn.extend({ - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || "swing"; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - if ( tween.elem[ tween.prop ] != null && - (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { - return tween.elem[ tween.prop ]; - } - - // passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails - // so, simple values such as "10px" are parsed to Float. - // complex values such as "rotate(1rad)" are returned as is. - result = jQuery.css( tween.elem, tween.prop, "" ); - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - // use step hook for back compat - use cssHook if its there - use .style if its - // available and use plain properties where available - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE9 -// Panic based approach to setting things on disconnected nodes - -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - } -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), - rrun = /queueHooks$/, - animationPrefilters = [ defaultPrefilter ], - tweeners = { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ), - target = tween.cur(), - parts = rfxnum.exec( value ), - unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && - rfxnum.exec( jQuery.css( tween.elem, prop ) ), - scale = 1, - maxIterations = 20; - - if ( start && start[ 3 ] !== unit ) { - // Trust units reported by jQuery.css - unit = unit || start[ 3 ]; - - // Make sure we update the tween properties later on - parts = parts || []; - - // Iteratively approximate from a nonzero starting point - start = +target || 1; - - do { - // If previous iteration zeroed out, double until we get *something* - // Use a string for doubling factor so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - start = start / scale; - jQuery.style( tween.elem, prop, start + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // And breaking the loop if scale is unchanged or perfect, or if we've just had enough - } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); - } - - // Update tween properties - if ( parts ) { - start = tween.start = +start || +target || 0; - tween.unit = unit; - // If a +=/-= token was provided, we're doing a relative animation - tween.end = parts[ 1 ] ? - start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : - +parts[ 2 ]; - } - - return tween; - } ] - }; - -// Animations created synchronously will run synchronously -function createFxNow() { - setTimeout(function() { - fxNow = undefined; - }); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // if we include width, step value is 1 to do all cssExpand values, - // if we don't include width, step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( (tween = collection[ index ].call( animation, prop, value )) ) { - - // we're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = data_priv.get( elem, "fxshow" ); - - // handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always(function() { - // doing this makes sure that the complete handler will be called - // before this completes - anim.always(function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - }); - }); - } - - // height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE9-10 do not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - style.display = "inline-block"; - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always(function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - }); - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = data_priv.access( elem, "fxshow", {} ); - } - - // store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done(function() { - jQuery( elem ).hide(); - }); - } - anim.done(function() { - var prop; - - data_priv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - }); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // not quite $.extend, this wont overwrite keys already present. - // also - reusing 'index' from above because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = animationPrefilters.length, - deferred = jQuery.Deferred().always( function() { - // don't match elem in the :animated selector - delete tick.elem; - }), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ]); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise({ - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { specialEasing: {} }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - // if we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // resolve when we played the last frame - // otherwise, reject - if ( gotoEnd ) { - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - }), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - }) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.split(" "); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - tweeners[ prop ] = tweeners[ prop ] || []; - tweeners[ prop ].unshift( callback ); - } - }, - - prefilter: function( callback, prepend ) { - if ( prepend ) { - animationPrefilters.unshift( callback ); - } else { - animationPrefilters.push( callback ); - } - } -}); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend({ - fadeTo: function( speed, to, easing, callback ) { - - // show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // animate to the value specified - .end().animate({ opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || data_priv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each(function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = data_priv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // start the next in the queue if the last step wasn't forced - // timers currently will call their complete callbacks, which will dequeue - // but only if they were gotoEnd - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - }); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each(function() { - var index, - data = data_priv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // enable finishing flag on private data - data.finish = true; - - // empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // turn off finishing flag - delete data.finish; - }); - } -}); - -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -}); - -// Generate shortcuts for custom animations -jQuery.each({ - slideDown: genFx("show"), - slideUp: genFx("hide"), - slideToggle: genFx("toggle"), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -}); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; - -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - clearInterval( timerId ); - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); -}; - - -(function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: iOS 5.1, Android 4.x, Android 2.3 - // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) - support.checkOn = input.value !== ""; - - // Must access the parent to make an option select properly - // Support: IE9, IE10 - support.optSelected = opt.selected; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Check if an input maintains its value after becoming a radio - // Support: IE9, IE10 - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -})(); - - -var nodeHook, boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - } -}); - -jQuery.extend({ - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - } -}); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; -}); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i; - -jQuery.fn.extend({ - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each(function() { - delete this[ jQuery.propFix[ name ] || name ]; - }); - } -}); - -jQuery.extend({ - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? - elem.tabIndex : - -1; - } - } - } -}); - -// Support: IE9+ -// Selectedness for an option in an optgroup can be inaccurate -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - - - - -var rclass = /[\t\r\n\f]/g; - -jQuery.fn.extend({ - addClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = arguments.length === 0 || typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = value ? jQuery.trim( cur ) : ""; - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - data_priv.set( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - } -}); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend({ - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - jQuery.trim( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE6-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) { - optionSet = true; - } - } - - // force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -}); - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - // Support: Webkit - // "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); - - - - -// Return jQuery for attributes-only inclusion - - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -}); - -jQuery.fn.extend({ - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - } -}); - - -var nonce = jQuery.now(); - -var rquery = (/\?/); - - - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - tmp = new DOMParser(); - xml = tmp.parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - // Document location - ajaxLocParts, - ajaxLocation, - - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat("*"); - -// #8138, IE may throw an exception when accessing -// a field from window.location if document.domain has been set -try { - ajaxLocation = location.href; -} catch( e ) { - // Use the href attribute of an A element - // since IE will modify it given document.location - ajaxLocation = document.createElement( "a" ); - ajaxLocation.href = ""; - ajaxLocation = ajaxLocation.href; -} - -// Segment location into parts -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - // For each dataType in the dataTypeExpression - while ( (dataType = dataTypes[i++]) ) { - // Prepend if requested - if ( dataType[0] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); - - // Otherwise append - } else { - (structure[ dataType ] = structure[ dataType ] || []).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - }); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s[ "throws" ] ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend({ - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: ajaxLocation, - type: "GET", - isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /xml/, - html: /html/, - json: /json/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - // URL without anti-cache param - cacheURL, - // Response headers - responseHeadersString, - responseHeaders, - // timeout handle - timeoutTimer, - // Cross-domain detection vars - parts, - // To know if global events are to be dispatched - fireGlobals, - // Loop variable - i, - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - // Callbacks context - callbackContext = s.context || s, - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks("once memory"), - // Status-dependent callbacks - statusCode = s.statusCode || {}, - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - // The jqXHR state - state = 0, - // Default abort message - strAbort = "canceled", - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( (match = rheaders.exec( responseHeadersString )) ) { - responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ) - .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when we have a protocol:host:port mismatch - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - fireGlobals = s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger("ajaxStart"); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - // Abort if not done already and return - return jqXHR.abort(); - } - - // aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout(function() { - jqXHR.abort("timeout"); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader("Last-Modified"); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader("etag"); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - // We extract error from statusText - // then normalize statusText and status for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger("ajaxStop"); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -}); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }); - }; -}); - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -}); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); -}; - - -jQuery.fn.extend({ - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapAll( html.call(this, i) ); - }); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); - - -jQuery.expr.filters.hidden = function( elem ) { - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; -}; -jQuery.expr.filters.visible = function( elem ) { - return !jQuery.expr.filters.hidden( elem ); -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - // Item is non-scalar (array or object), encode its numeric index. - buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); - } - }); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - }); - - } else { - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend({ - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map(function() { - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - }) - .filter(function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - }) - .map(function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }).get(); - } -}); - - -jQuery.ajaxSettings.xhr = function() { - try { - return new XMLHttpRequest(); - } catch( e ) {} -}; - -var xhrId = 0, - xhrCallbacks = {}, - xhrSuccessStatus = { - // file protocol always yields status code 0, assume 200 - 0: 200, - // Support: IE9 - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -// Support: IE9 -// Open requests must be manually aborted on unload (#5280) -if ( window.ActiveXObject ) { - jQuery( window ).on( "unload", function() { - for ( var key in xhrCallbacks ) { - xhrCallbacks[ key ](); - } - }); -} - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport(function( options ) { - var callback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(), - id = ++xhrId; - - xhr.open( options.type, options.url, options.async, options.username, options.password ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers["X-Requested-With"] ) { - headers["X-Requested-With"] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - delete xhrCallbacks[ id ]; - callback = xhr.onload = xhr.onerror = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - complete( - // file: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - // Support: IE9 - // Accessing binary-data responseText throws an exception - // (#11426) - typeof xhr.responseText === "string" ? { - text: xhr.responseText - } : undefined, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - xhr.onerror = callback("error"); - - // Create the abort callback - callback = xhrCallbacks[ id ] = callback("abort"); - - try { - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -// Install script dataType -jQuery.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /(?:java|ecma)script/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -}); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -}); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery("<script>").prop({ - async: true, - charset: s.scriptCharset, - src: s.url - }).on( - "load error", - callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } - ); - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -}); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters["script json"] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always(function() { - // Restore preexisting value - window[ callbackName ] = overwritten; - - // Save back as free - if ( s[ callbackName ] ) { - // make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - }); - - // Delegate to script - return "script"; - } -}); - - - - -// data: string of html -// context (optional): If specified, the fragment will be created in this context, defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf(" "); - - if ( off >= 0 ) { - selector = jQuery.trim( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax({ - url: url, - - // if "type" variable is undefined, then "GET" method will be used - type: type, - dataType: "html", - data: params - }).done(function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - }).complete( callback && function( jqXHR, status ) { - self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); - }); - } - - return this; -}; - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep(jQuery.timers, function( fn ) { - return elem === fn.elem; - }).length; -}; - - - - -var docElem = window.document.documentElement; - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf("auto") > -1; - - // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - options = options.call( elem, i, curOffset ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend({ - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each(function( i ) { - jQuery.offset.setOffset( this, options, i ); - }); - } - - var docElem, win, - elem = this[ 0 ], - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - // If we don't have gBCR, just use 0,0 rather than error - // BlackBerry 5, iOS 3 (original iPhone) - if ( typeof elem.getBoundingClientRect !== strundefined ) { - box = elem.getBoundingClientRect(); - } - win = getWindow( doc ); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - // We assume that getBoundingClientRect is available when computed position is fixed - offset = elem.getBoundingClientRect(); - - } else { - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - offsetParent: function() { - return this.map(function() { - var offsetParent = this.offsetParent || docElem; - - while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || docElem; - }); - } -}); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : window.pageXOffset, - top ? val : window.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length, null ); - }; -}); - -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// getComputedStyle returns percent when specified for top/left/bottom/right -// rather than make the css module depend on the offset module, we just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - // if curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -}); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { - // margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - }); -}); - - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - }); -} - - - - -var - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in -// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( typeof noGlobal === strundefined ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; - -})); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery.easing.1.3.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery.easing.1.3.js deleted file mode 100644 index ef74321..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/third_party/jquery.easing.1.3.js +++ /dev/null @@ -1,205 +0,0 @@ -/* - * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ - * - * Uses the built in easing capabilities added In jQuery 1.1 - * to offer multiple easing options - * - * TERMS OF USE - jQuery Easing - * - * Open source under the BSD License. - * - * Copyright © 2008 George McGinley Smith - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * -*/ - -// t: current time, b: begInnIng value, c: change In value, d: duration -jQuery.easing['jswing'] = jQuery.easing['swing']; - -jQuery.extend( jQuery.easing, -{ - def: 'easeOutQuad', - swing: function (x, t, b, c, d) { - //alert(jQuery.easing.default); - return jQuery.easing[jQuery.easing.def](x, t, b, c, d); - }, - easeInQuad: function (x, t, b, c, d) { - return c*(t/=d)*t + b; - }, - easeOutQuad: function (x, t, b, c, d) { - return -c *(t/=d)*(t-2) + b; - }, - easeInOutQuad: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - easeInCubic: function (x, t, b, c, d) { - return c*(t/=d)*t*t + b; - }, - easeOutCubic: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t + 1) + b; - }, - easeInOutCubic: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t + b; - return c/2*((t-=2)*t*t + 2) + b; - }, - easeInQuart: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t + b; - }, - easeOutQuart: function (x, t, b, c, d) { - return -c * ((t=t/d-1)*t*t*t - 1) + b; - }, - easeInOutQuart: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t + b; - return -c/2 * ((t-=2)*t*t*t - 2) + b; - }, - easeInQuint: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t*t + b; - }, - easeOutQuint: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t*t*t + 1) + b; - }, - easeInOutQuint: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; - return c/2*((t-=2)*t*t*t*t + 2) + b; - }, - easeInSine: function (x, t, b, c, d) { - return -c * Math.cos(t/d * (Math.PI/2)) + c + b; - }, - easeOutSine: function (x, t, b, c, d) { - return c * Math.sin(t/d * (Math.PI/2)) + b; - }, - easeInOutSine: function (x, t, b, c, d) { - return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; - }, - easeInExpo: function (x, t, b, c, d) { - return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; - }, - easeOutExpo: function (x, t, b, c, d) { - return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; - }, - easeInOutExpo: function (x, t, b, c, d) { - if (t==0) return b; - if (t==d) return b+c; - if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; - return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; - }, - easeInCirc: function (x, t, b, c, d) { - return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; - }, - easeOutCirc: function (x, t, b, c, d) { - return c * Math.sqrt(1 - (t=t/d-1)*t) + b; - }, - easeInOutCirc: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; - return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; - }, - easeInElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - }, - easeOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; - }, - easeInOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; - }, - easeInBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*(t/=d)*t*((s+1)*t - s) + b; - }, - easeOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; - }, - easeInOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; - return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; - }, - easeInBounce: function (x, t, b, c, d) { - return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; - }, - easeOutBounce: function (x, t, b, c, d) { - if ((t/=d) < (1/2.75)) { - return c*(7.5625*t*t) + b; - } else if (t < (2/2.75)) { - return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; - } else if (t < (2.5/2.75)) { - return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; - } else { - return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; - } - }, - easeInOutBounce: function (x, t, b, c, d) { - if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; - return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; - } -}); - -/* - * - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright © 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/README b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/README deleted file mode 100644 index e442861..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/README +++ /dev/null @@ -1,21 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -All images in this directory are free, released under the GPLv3 or later.
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-off.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-off.png Binary files differdeleted file mode 100644 index abb7b95..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-off.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs.png b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs.png Binary files differdeleted file mode 100644 index ee6a59b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/widget.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/widget.js deleted file mode 100644 index 5bbb77a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/widget.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -this.addEventListener('click', function(event) { - if(event.button === 0 && event.shiftKey === false) { - - self.port.emit('left-click'); - - } - - if(event.button == 2 || (event.button === 0 && event.shiftKey === true)){ - self.port.emit('right-click'); - } - event.preventDefault(); -}, true); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/install_uninstall.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/install_uninstall.js deleted file mode 100644 index 6a4999d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/install_uninstall.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * The following module is intended to perform tasks when the - * add-on is enabled and disabled. - */ - -const {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -const httpObserver = require("http_observer/http_request_observer"); - -const narcissusWorker = require("narcissus_parser/narcissus_worker"); - -const caching = require("http_observer/caching"); - -const prompt = Cc["@mozilla.org/embedcomp/prompt-service;1"]. - getService(Ci.nsIPromptService); - - -const tabs = require('sdk/tabs'); - -/** - * Stop the httpObserver when the add-on - * is disabled or removed. - */ -exports.onUnload = function(reason) { - - if (reason == "disable" || - reason == "shutdown" || - reason == "upgrade" || - reason == "downgrade") { - require("settings/storage").librejsStorage.writeCacheToDB(); - // remove all http notifications - httpObserver.removeHttpObserver(); - // remove worker. - narcissusWorker.stopWorker(); - } - -}; - -exports.onLoad = function () { - try { - var clearCache = prompt.dialog(null, "LibreJS installation", "If you have tabs and windows opened prior to installing LibreJS, you will have to refresh them for their JavaScript to be analyzed and blocked. Press OK to clear the browser cache."); - if (clearCache) { - caching.clearAllCache(); - } - } catch (e) { - console.debug(e); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/prefchange.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/prefchange.js deleted file mode 100644 index 532dd81..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/prefchange.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var whitelist = []; - -var prefSet = require("sdk/simple-prefs"); -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var prompt = Cc['@mozilla.org/embedcomp/prompt-service;1']. - getService(Ci.nsIPromptService); -var scriptsCached = require("script_entries/scripts_cache").scriptsCached; - -var setWhitelist = function () { - - whitelist = []; - - var str; - - var whitelistString = prefSet.prefs.whitelist.split(','); - - for (var i = 0; i < whitelistString.length; i++) { - - // remove space, trailing slash, escape any nonalpha except *, replace * with .* - str = whitelistString[i].replace(" ", "").replace(/\/$/, "").replace(/[^a-z0-9\*]/ig, "\\$&").replace("*", ".*"); - - if (str !== '') { - whitelist.push(new RegExp('^https?:\/\/(www\.)?' + str + '/', 'i')); - } - - } - -}; - -exports.getWhitelist = function () { - return whitelist; -}; - -exports.init = function () { - setWhitelist(); -}; - -prefSet.on("whitelist", setWhitelist); - -var setDryRun = function () { - var dryRun = prefSet.prefs.dryrun; - if (dryRun === true) { - prompt.alert(null, "LibreJS Dry Run Mode", "Is Dry Run Mode really what you want? LibreJS will still analyze JavaScript on a page, but it will not block any of it. As a result, ALL of the JavaScript on a page will run as is, whether it is free and trivial or not. You will not be warned again. Uncheck that box if you are unsure."); - scriptsCached.resetCache(); - } else { - prompt.alert(null, "LibreJS Dry Run Mode", "LibreJS Dry Run Mode is now disabled"); - } -}; - -//prefSet.on("dryrun", setDryRun); - -exports.isDryRun = function () { - /** - * Returns true if dryRun mode is enabled. False otherwise. - */ - //return prefSet.prefs.dryrun; - return false; -}; - - - -var setComplaintTab = function () { - var complaintTab = prefSet.prefs.complaint_tab; - if (complaintTab === true) { - prompt.alert(null, "Turning on complaint tab", "A complaint tab will be displayed on pages where nonfree nontrivial JavaScript is found and contact information is found as well."); - } else { - prompt.alert(null, "Turning off complaint tab", "No complaint tab will appear on pages, even when nonfree nontrivial JavaScript is found."); - } -}; -prefSet.on("complaint_tab", setComplaintTab); - -exports.isComplaintTab = function () { - /** - * Returns true if complaint tab mode is enabled. False otherwise. - */ - return prefSet.prefs.complaint_tab; -}; - - - -var setDisplayNotifications = function () { - var displayNotifications = prefSet.prefs.display_notifications; - if (displayNotifications === true) { - prompt.alert(null, "Turning on notifications", "Notifications with code snippets will now appear while LibreJS is analyzing JavaScript on a page."); - } else { - prompt.alert(null, "Turning off notifications", "Notifications of code being analyzed will not be displayed."); - } -}; - -prefSet.on("display_notifications", setDisplayNotifications); - -exports.isDisplayNotifications = function () { - /** - * Returns true if complaint tab mode is enabled. False otherwise. - */ - return prefSet.prefs.display_notifications; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/bug_fix.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/bug_fix.js deleted file mode 100644 index bba7653..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/bug_fix.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -exports.END_OF_SCRIPT = 'this.narcissusBugFixLibreJS'; // value from parse tree without \n\n -exports.narcissusBugFixLibreJS = '\n\n' + exports.END_OF_SCRIPT; // real value from source. - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler.js deleted file mode 100644 index db0c46c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler.js +++ /dev/null @@ -1,560 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * - * dom_handler.js - * - * After the HTML DOM has been parsed, domHandler finds all the scripts - * on a page (including inline, on-page, and external files), and triggers the - * JavaScript analysis for each of them. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var scriptProperties = require("html_script_finder/dom_handler/script_properties"); - -const scriptTypes = scriptProperties.scriptTypes; - -const statusTypes = scriptProperties.statusTypes; - -const reasons = scriptProperties.reasons; - -var urlHandler = require("url_handler/url_handler"); - -var WebLabelFinder = require("html_script_finder/web_labels/js_web_labels").WebLabelFinder; - -// object model for script entries. -var scriptObject = require("html_script_finder/dom_handler/script_object"); - -var privacyChecker = require("js_checker/privacy_checker").privacyCheck; -var jsChecker = require("js_checker/js_checker"); - -const types = require("js_checker/constant_types"); - -var checkTypes = types.checkTypes; - -var stripCDATAOpen = /<\!\[CDATA\[/gi; -var stripCDATAClose = /]]>/g; - -var isDryRun = require("addon_management/prefchange").isDryRun; -var allowedRef = require('http_observer/allowed_referrers').allowedReferrers; - -var attributeHelpers = require("html_script_finder/dom_handler/attributes"); - -// javascript:* -var jsInAttrRe = attributeHelpers.jsInAttrRe; - -// the list of all available event attributes -var intrinsecEvents = attributeHelpers.intrinsecEvents; - -var domGatherer = require("html_script_finder/dom_handler/dom_gatherer").domGatherer; - -var domChecker = require("html_script_finder/dom_handler/dom_checker").domChecker; - -/** - * The DomHandler object takes a whole document, - * finds script elements within that DOM, analyzes them - * using the js_checker module and finally returns a cleaned - * DOM depending on the result. - */ -var DomHandler = function() { - // external object with methods used - // in DomHandler - this.domGatherer = null; - - // external object with methods used - // in DomHandler - this.domChecker = null; - - this.dom = null; - this.pageURL = null; - - // fragment found in url. - this.fragment = null; - - // array containing all scripts on a page. - this.domScripts = null; - - // array containing all scripts on a page, - // data related to them, such as parse tree, ... - this.inlineScripts = null; - - this.externalScripts = null; - - // all scripts. - this.scripts = null; - - // keeps track of the number of scripts. - this.numScripts = 0; - - // store the reference to the callback method - // presumably from htmlParser. - this.callback = null; - - // boolean set to true if external scripts are loaded - // from the html page. - this.loadsHtmlExternalScripts = false; - - this.jsCheckString = null; - - /* object containing boolean property set to false if trivialness - is not allowed anymore (if another script defines ajax requests, - ...) */ - this.allowTrivial = null; - - // boolean set to true if inline JavaScript - // is found to be free. - this.inlineJsFree = null; - - // boolean set to true when at least one script - // has been removed. - this.hasRemovedScripts = null; - - // boolean to check if scripts were removed - // prevents removeAllJs from running multiple times. - this.removedAllScripts = null; - - // will eventually contain an array of data - // for the js web labels licenses. - this.licenseList = null; - - // the response status for the page (200, 404, ...) - this.responseStatus = null; - - // count the number of scripts fully tested. - this.scriptsTested = null; - - // number of external scripts to be tested. - this.numExternalScripts = null; - - // number of inline/inattribute scripts - this.numInlineScripts = null; -}; - -/** - * Initialize properties of the object - * - * @param {domObject} obj A reference of the DOM object being - * analyzed. - * - * @param {pageURL} string The formatted URL (with fragment - * removed) of the corresponding page for this DOM - * - * @param {fragment} the #fragment from the url if applicable. - * - * @param {callback} the callback function. - * - */ -DomHandler.prototype.init = function( - domObject, pageURL, fragment, responseStatus, callback) { - // initialize object properties. - - console.debug('init', pageURL); - var that = this; - - this.reset(); - - // arguments passed. - this.dom = domObject; - this.pageURL = pageURL; - this.fragment = fragment; - this.responseStatus = responseStatus; - - console.debug('in dom handler, responseStatus is', this.responseStatus); - - // make callback function available - // for the entire object. - this.callback = function (dom) { - callback(dom); - that.destroy(); - }; -}; - -DomHandler.prototype.reset = function () { - - this.dom = null; - // arrays. - this.onEventElement = []; - this.scriptStatus = []; - this.inlineScripts = []; - this.externalScripts = []; - this.scripts = []; - - // booleans - this.allowTrivial = true; - this.inlineJsFree = false; - this.hasRemovedScripts = false; - this.removedAllScripts = false; - - // we start with 0, and will increment in - // dom_checker. - this.numExternalScripts = 0; - - this.numInlineScripts = 0; - - this.scriptsTested = 0; - -}; - -DomHandler.prototype.destroy = function () { - this.domGatherer = null; - this.domChecker = null; - /* destroy callback so that it can't be called multiple times. */ - this.callback = function() {}; - //this.reset(); -}; - -DomHandler.prototype.scriptHasBeenTested = function () { - this.scriptsTested++; -}; - -/** - * scriptHasJsWebLabel - * - * Checks if a script was found earlier in a Js License Web Label - * table. See http://www.gnu.org/licenses/javascript-labels.html - * for more information. - * - */ -DomHandler.prototype.scriptHasJsWebLabel = function (script) { - if (this.licenseList) { - - var url = urlHandler.resolve(this.pageURL, script.src), - i = 0, - len = this.licenseList.length; - - console.debug('looking for web label'); - - for (; i < len; i++) { - if (this.licenseList[i].fileUrl === url && - this.licenseList[i].free === true) { - console.debug('found something true'); - console.debug(this.licenseList[i].fileUrl, ' is found'); - return true; - } - } - } - return false; -}; - -/** - * processScripts. - * Starts by looking for a js web labels page - * then calls the complete function, which runs - * the rest of the check. - */ -DomHandler.prototype.processScripts = function () { - var that = this; - - // check for the existence of the - // js web labels first. - this.lookForJsWebLabels(function () { - - // gather and check all script elements on - // page. - console.debug("Calling checkAllScripts"); - that.checkAllScripts(); - - }); - -}; - -/** - * jsWebLabelsComplete - * - */ -DomHandler.prototype.checkAllScripts = function () { - try { - console.debug('found in', this.pageURL, JSON.stringify(this.licenseList)); - console.debug('checkAllScripts triggered async'); - - // use domGatherer to gather scripts. - this.domGatherer.findScripts(); - this.domGatherer.gatherScriptsContent(); - this.domGatherer.gatherIntrinsecEvents(); - - console.debug('fragment is', this.fragment); - - if ( - (this.fragment === undefined || - this.fragment === null || - this.fragment.indexOf('librejs=true') < 0) && - this.responseStatus != 404 - ) { - try { - - // use domChecker to check scripts. - console.debug("Calling checkAllInlineScripts"); - this.domChecker.checkAllInlineScripts(); - } catch (x) { - console.debug('error in domChecker:', x, x.lineNumber); - this.removeAllJs(); - } - } else { - console.debug('404 or pageworker, removing all js'); - // this is the page Worker to find contact link - // just remove all the JS since we don't need it. - console.debug('fragment found, remove js'); - this.removeAllJs(); - } - } catch (x) { - console.debug('error', x, x.lineNumber, x.fileName); - } -}; - -/** - * lookForJsWebLabels - * - * Checks if a link to a js web label table exists. - * If it does, return an array of objects with the data - * gathered (script name, path, license name, url, ...) - * - */ -DomHandler.prototype.lookForJsWebLabels = function (completed) { - var that = this; - console.debug("calling lookForJsWebLabels"); - if (this.fragment != '#librejs=true') { - var webLabelFinder = new WebLabelFinder(); - webLabelFinder.init( - this.dom, - this.pageURL, - function (licenseList) { - // assign array returned to property. - that.licenseList = licenseList; - console.debug("calling completed"); - completed(); - }); - } else { - completed(); - } -}; - -DomHandler.prototype.checkScriptForJsWebLabels = function (script) { - var scriptEntry; - - if (this.hasSrc(script) && this.scriptHasJsWebLabel(script)) { - - // in the list of allowed scripts (through web labels) - scriptEntry = scriptObject.Script({'type': scriptTypes.EXTERNAL, - 'status': statusTypes.ACCEPTED, - 'element':script, - 'url': urlHandler.resolve(this.pageURL, script.src)}); - - scriptEntry.tagAsAccepted(this.pageURL, reasons.FREE); - - return true; - } -}; - - -/** - * hasSrc - * Check the given script has an src attribute. - * @param script obj The script element. - * @return a string with the value of the src attribute. - */ -DomHandler.prototype.hasSrc = function(script) { - if (script.src) { - return script.src; - } - return false; -}; - -/** - * Uses relationChecker to guess whether the script only uses - * predefined functions/variables or interacts with other scripts - * (this is still very experimental and needs improvement.) - * - */ -DomHandler.prototype.removeScriptIfDependent = function (script) { - - var nonWindowProps = script.tree.relationChecker.nonWindowProperties; - - for (var entry in nonWindowProps) { - if (nonWindowProps[entry]) { - console.debug('script has non window properties.'); - this.removeGivenJs(script, reasons.TRIVIAL_NOT_ALLOWED); - return true; - } - } - -}; - -/** - * removeGivenJs - * Remove a single script from the DOM. - * @param script Obj The script element to be removed from the - * DOM. - * - */ -DomHandler.prototype.removeGivenJs = function (script, reason, singleton, hash) { - var commentedOut; - var isAllowed = allowedRef.urlInAllowedReferrers(this.pageURL); - console.debug("removing given js hash", hash); - - if (script.status != statusTypes.REJECTED && - script.status != statusTypes.JSWEBLABEL - ) { - console.debug('removing a', script.type); - if (script.type === scriptTypes.ATTRIBUTE && - !isAllowed - ) { - this.removeGivenAttribute(script, reason); - return; - } - if (!isAllowed) { - // set invalid type if dry run off. - script.element.setAttribute('type', 'librejs/blocked'); - // add entry as removed. - console.debug('removeGivenJs hash is', hash); - script.tagAsRemoved(this.pageURL, reason, hash); - } else { - script.element.setAttribute('data-librejs-dryrun', 'librejs/blocked'); - script.tagAsDryRun(this.pageURL, reason, hash); - } - - if (singleton === true) { - // flag singletons. - script.element.setAttribute('data-singleton', 'true'); - } - - // remove src if dry run off. - if (script.element.getAttribute('src') !== undefined) { - script.element.setAttribute('data-librejs-blocked-src', script.element.getAttribute('src')); - if (!isAllowed) { - script.element.removeAttribute('src'); - } - } - if (isAllowed) { - comment_str = 'LibreJS: Script should be blocked, but page is whitelisted.'; - script.status = statusTypes.ACCEPTED; - } else { - comment_str = 'LibreJS: script blocked.'; - script.status = statusTypes.REJECTED; - } - - commentedOut = this.dom.createComment(comment_str); - // add a comment for curious source readers. - script.element.parentNode.appendChild(commentedOut); - script.element.parentNode.insertBefore(commentedOut, script.element); - this.hasRemovedScripts = true; - } -}; - -DomHandler.prototype.removeGivenAttribute = function (script, reason) { - var i = 0, - le = script.jsAttributes.length; - - console.debug('removing given attribute', script, reason); - script.element.setAttribute('data-librejs-blocked-event', - JSON.stringify(script.jsAttributes)); - - script.tagAsRemoved(this.pageURL, reason, script.hash || script.tree.hash); - - // might need to be removed. - script.element.setAttribute('data-librejs-blocked-value', ''); - - if (!allowedRef.urlInAllowedReferrers(this.pageURL)) { - // only run if not in dry run mode. - for (; i < le; i++) { - console.debug('removing attribute', JSON.stringify(script.jsAttributes)); - script.element.removeAttribute(script.jsAttributes[i].attribute); - } - } else { - - } - this.hasRemovedScripts = true; -}; - -/** - * removeAllJs - * Loop through all scripts from top to bottom and add a type - * attribute 'librejs/blocked' to prevent their interpretation - * by the browser. - * - */ -DomHandler.prototype.removeAllJs = function (reason) { - // remove all js is useless from now on. - console.debug('removeAllJs'); - this.hasRemovedScripts = true; - - // removeAllJs needs not be run next time. - this.removedAllScripts = true; - - try { - this.removeAllArray(this.scripts, reason); - this.callback(this.dom); - } catch (x) { - console.debug('in removeAllJs method: ', x, 'number of scripts is', this.numScripts); - this.callback(this.dom); - } - -}; - -DomHandler.prototype.removeAllArray = function(scriptArray, reason) { - var script, i = 0, le; - console.debug('removeAllArray'); - try { - le = scriptArray.length; - // loop through all scripts. - - for (; i < le; i++) { - script = scriptArray[i]; - if (script.type === scriptTypes.INLINE || - script.type === scriptTypes.EXTERNAL) { - this.removeGivenJs(script, reason); - } - else if (script.type === scriptTypes.ATTRIBUTE) { - this.removeGivenAttribute(script, reason); - } - } - } catch (e) { - this.callback(""); - } - -}; - -exports.DomHandler = DomHandler; - -/** - * exports.domHandler - * Instantiates a DomHandler and checks the DOM - * @param dom obj The given dom for analysis. - * @param pageURL string the URL for the page. - * @param callback function callback when all the work has been performed. - */ -exports.domHandler = function( - dom, pageURL, fragment, responseStatus, callback) { - console.debug("Creating domHandler"); - var domHandler = new DomHandler(); - domHandler.init(dom, pageURL, fragment, responseStatus, callback); - - // use domGatherer methods. - domHandler.domGatherer = domGatherer(domHandler); - - // use domChecker methods. - domHandler.domChecker = domChecker(domHandler); - - // launch the whole process. - console.debug("Calling processScripts"); - domHandler.processScripts(); -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/attributes.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/attributes.js deleted file mode 100644 index 6e9ace4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/attributes.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// object model for script entries. -var scriptObject = require("html_script_finder/dom_handler/script_object"); - -var scriptProperties = require("html_script_finder/dom_handler/script_properties"); - -const scriptTypes = scriptProperties.scriptTypes; - -const statusTypes = scriptProperties.statusTypes; - -var jsInAttrRe = /javascript:/ig; - -// the list of all available event attributes -var intrinsecEvents = [ - "onload", - "onunload", - "onclick", - "ondblclick", - "onmousedown", - "onmouseup", - "onmouseover", - "onmousemove", - "onmouseout", - "onfocus", - "onblur", - "onkeypress", - "onkeydown", - "onkeyup", - "onsubmit", - "onreset", - "onselect", - "onchange"]; - -exports.jsInAttrRe = jsInAttrRe; -exports.intrinsecEvents = intrinsecEvents; - - -/** - * findJSinAttribute - * - * Looks for attributes containing 'javascript:' - * - */ -exports.findJSinAttribute = function (elem, callback) { - var i = 0, attrLen = elem.attributes.length; - - var attribPairs = []; - - for (; i < attrLen; i++) { - - //looping through all attributes in elem to look for "javascript:" - attrib = elem.attributes[i]; - - if (attrib.value.match(jsInAttrRe)) { - str = attrib.value.replace(jsInAttrRe, ''); - attribPairs.push({attribute: attrib.name, value: str}); - } - - } - - if (attribPairs.length > 0) { - // contains in attribute javascript. - scriptEntry = scriptObject.Script({'type': scriptTypes.ATTRIBUTE, - 'status': statusTypes.UNCHECKED, - 'element': elem, - 'jsAttributes': attribPairs - }); - - // push back to DOMHandler - callback(scriptEntry); - - } else { - callback(false); - } - -}; - -/** - * findOnJSAttribute. - * - * Look for attributes in on* - * - */ -exports.findOnJSAttribute = function (elem, callback) { - - var i = 0, eventsLen = intrinsecEvents.length; - - var attribPairs = []; - - for (; i < eventsLen; i++) { - - // looping through all on* attributes - if (elem.hasAttribute(intrinsecEvents[i])) { - - attribPairs.push({ - attribute: intrinsecEvents[i], - value: elem.getAttribute(intrinsecEvents[i]) - }); - - } - - } - if (attribPairs.length > 0) { - - console.debug('found an attribute', scriptTypes.ATTRIBUTE); - scriptEntry = scriptObject.Script({'type': scriptTypes.ATTRIBUTE, - 'status': statusTypes.UNCHECKED, - 'element':elem, - 'jsAttributes': attribPairs - }); - // Push back to DOMHandler. - // push back to DOMHandler - callback(scriptEntry); - - } else { - callback(false); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_checker.js deleted file mode 100644 index 76cbc3e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_checker.js +++ /dev/null @@ -1,464 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * dom_checker.js - * - * checks scripts for nonfree/nontrivial. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var scriptProperties = require("html_script_finder/dom_handler/script_properties"); - -const scriptTypes = scriptProperties.scriptTypes; - -const statusTypes = scriptProperties.statusTypes; - -const reasons = scriptProperties.reasons; - -// ensure xhr won't create an infinite loop -// with html content. -var urlTester = require("html_script_finder/url_seen_tester").urlSeenTester; -var urlHandler = require("url_handler/url_handler"); - - -var privacyChecker = require("js_checker/privacy_checker").privacyCheck; -var jsChecker = require("js_checker/js_checker"); - -const types = require("js_checker/constant_types"); - -var checkTypes = types.checkTypes; - -var stripCDATAOpen = /<\!\[CDATA\[/gi; -var stripCDATAClose = /]]>/g; - -var timer = require("sdk/timers"); - -const getHash = require("script_entries/scripts_cache").scriptsCached.getHash; - -var DomChecker = function() { - // reference to domHandler instance - // using this object. - this.d = null; -}; - -/** - * init - * - * assign a reference domHandler object - * to access/updates its properties. - * - */ -DomChecker.prototype.init = function(domHandler) { - "use strict"; - - this.d = domHandler; -}; - -DomChecker.prototype.destroy = function() { - "use strict"; - - this.d = null; -}; - -/** - * checkAllInlineScripts - * - * Sends all the inline/onpage scripts as a whole for a check and - * removes all scripts if nonfree nontrivial is found. - * - */ -DomChecker.prototype.checkAllInlineScripts = function() { - "use strict"; - - try { - var i = 0, len, script; - - if (typeof this.d.inlineScripts !== 'undefined' && - this.d.inlineScripts.length > 0 - ) { - script = this.d.inlineScripts.shift(); - console.debug("checking script for page", - this.d.pageURL - /*, JSON.stringify(script)*/); - if (this.d.removedAllScripts) { - // all js has already been removed. - // stop check. - console.debug("removed all"); - return; - } - - if (this.d.inlineJsFree === true) { - // add entry as accepted. - try { - hash = getHash(script.text); - script.tagAsAccepted(this.d.pageURL, reasons.FREE, hash); - } catch (e) { - console.debug(e); - } - } - - // even if page is free we need to check for allow trivial. - if (script.type === scriptTypes.INLINE) { - console.debug("analyzing script", script); - this.analyzeJs(script, - script.text, - this.checkSingleInlineScript.bind(this)); - } else if (script.type === scriptTypes.ATTRIBUTE) { - console.debug("analyzing inline script", script); - this.analyzeJs(script, - this.concatAttributes(script), - this.checkSingleElementAttributes.bind(this)); - } - } else { - // no more inline scripts. Switch to external scripts. - this.readyForExternal(); - } - } catch (x) { - console.debug('checkAllInlineScripts error', - x, x.lineNumber, x.fileName); - this.readyForExternal(); - } -}; - -DomChecker.prototype.concatAttributes = function(script) { - "use strict"; - var i = 0, - le = script.jsAttributes.length, - text = ""; - - // we concatenate all js in multiple attributes. - // because it's too much of a hassle to keep track - // otherwise. - for (; i < le; i++) { - text += script.jsAttributes[i].value + '\n'; - } - - return text; - -}; - -/** - * - * check a single element with attributes - */ -DomChecker.prototype.checkSingleElementAttributes = function( - script, loadedScript, checker) { - "use strict"; - var check, value, - i = 0, - le = script.jsAttributes.length, - text = ""; - - try { - check = checker.parseTree.freeTrivialCheck; - script.tree = checker; - script.result = check; - script.status = statusTypes.CHECKED; - } catch (e) { - console.debug('problem checking inline scripts', e, e.lineNumber); - this.d.removeGivenJs(script); - } - - this.processInlineCheckResult(script, check, checker); -}; - -DomChecker.prototype.processInlineCheckResult = function( - script, check, checker) { - "use strict"; - console.debug("check.reason is", check.reason, "and type", check.type); - var hash = checker.hash; - - if (this.d.inlineJsFree === true) { - console.debug('tagging', script.text, 'as accepted', "with reason", check.reason); - script.tagAsAccepted(this.d.pageURL, this.d.freeReason + " -- " + check.reason, hash); - } - - // process the result. - if (check.type === checkTypes.FREE) { - // this is free. - console.debug('tagging', script.text, 'as accepted with reason', check.reason); - this.d.inlineJsFree = true; - this.d.freeReason = check.reason; - // add entry as accepted. - script.tagAsAccepted(this.d.pageURL, check.reason, hash); - } else if (check.type === checkTypes.FREE_SINGLE_ITEM) { - // accept this script. - console.debug("free single item, ", check.reason); - script.tagAsAccepted(this.d.pageURL, check.reason, hash); - } else if (check.type === checkTypes.NONTRIVIAL) { - console.debug("nontrivial hash is", hash); - if (this.d.inlineJsFree) { - // inline is free. So accept. - console.debug('tagging', script.text, 'as accepted'); - script.tagAsAccepted( - this.d.pageURL, - this.d.freeReason + ' -- ' + check.reason, - hash); - } else { - console.debug('tagging', script.text, 'as removed'); - this.d.removeGivenJs(script, check.reason, false, hash); - } - } else if (!this.d.inlineJsFree && - this.d.loadsHtmlExternalScripts && - check.type === checkTypes.TRIVIAL_DEFINES_FUNCTION - ) { - // nontrivial, because defines function and loads - // external scripts - console.debug('tagging', script.text, 'as removed'); - this.d.removeGivenJs(script, reasons.FUNCTIONS_INLINE, false, hash); - } else if (!this.d.loadsHtmlExternalScripts && - check === checkTypes.TRIVIAL_DEFINES_FUNCTION - ) { - console.debug("Tag as accepted doesn't load another external script"); - script.tagAsAccepted(this.d.pageURL, check.reason, hash); - } else if (check.type === checkTypes.TRIVIAL || - check.type === checkTypes.TRIVIAL_DEFINES_FUNCTION || - check.type === checkTypes.WHITELISTED - ) { - // add entry as accepted. - console.debug("Trivial accepted"); - script.tagAsAccepted(this.d.pageURL, check.reason, hash); - } - - // next inline script, if applicable. - this.checkAllInlineScripts(); -}; - -DomChecker.prototype.readyForExternal = function() { - "use strict"; - - // done with those inline scripts, continue with - // the rest. - this.checkExternalScripts(); -}; - -/** - * check a single inline script. - */ -DomChecker.prototype.checkSingleInlineScript = function( - script, loadedScript, checker) { - "use strict"; - var check, text; - - try { - - check = checker.parseTree.freeTrivialCheck; - - // update status. - script.tree = checker; - script.result = check; - console.debug("script result is", check.type); - script.status = statusTypes.CHECKED; - - } catch (e) { - console.debug('problem checking inline scripts', e, e.lineNumber); - this.d.removeGivenJs(script, '', false, checker.hash); - } - - this.processInlineCheckResult(script, check, checker); - -}; - -/** - * checkExternalScripts - * Loop through series of external scripts, - * perform xhr to get their data, and check them - * to see whether they are free/nontrivial - * - */ -DomChecker.prototype.checkExternalScripts = function() { - "use strict"; - var i = 0, - len = this.d.externalScripts.length, - that = this; - console.debug("externalScripts length", this.d.externalScripts.length); - if (this.d.removedAllScripts || - this.d.externalScripts.length === 0) { - // all js has already been removed. - // stop check. - this.wrapUpBeforeLeaving(); - return; - - } - - for (; i < len; i++) { - - this.xhr(this.d.externalScripts[i], - - function(script, scriptText) { - console.debug("doing xhr", script.url); - if (scriptText === false) { - that.d.removeGivenJs(script); - that.d.scriptHasBeenTested(); - that.externalCheckIsDone(); - return; - } - - that.analyzeJs(script, - scriptText, - that.checkSingleExternalScript.bind(that)); - }); - } -}; - -DomChecker.prototype.wrapUpBeforeLeaving = function() { - "use strict"; - - console.debug("wrap up before leaving triggered"); - console.debug('wrapping up'); - this.d.callback(this.d.dom); - -}; - -DomChecker.prototype.analyzeJs = function(script, scriptText, callback) { - "use strict"; - try { - console.debug("checking ", script.url); - var checker = jsChecker.jsChecker(); - var url = ""; - if (typeof script.url !== "undefined") { - url = script.url; - } else { - url = this.pageURL; - } - checker.searchJs(scriptText, function() { - console.debug("Analyze JS"/*, JSON.stringify(checker)*/); - timer.setTimeout(function() { - callback(script, scriptText, checker); - }, 0); - }, url); - } catch (x) { - console.debug('error', x, x.lineNumber, x.fileName); - } -}; - -/** - * Check a single external script. - */ -DomChecker.prototype.checkSingleExternalScript = function( - script, loadedScript, checker) { - "use strict"; - var check; - - try { - - check = checker.parseTree.freeTrivialCheck; - - script.tree = checker; - script.result = check; - console.debug('in checkSingleExternalScript, checker.hash is', checker.hash); - if (script.status != statusTypes.JSWEBLABEL) { - script.status = statusTypes.CHECKED; - } - - if (check.type === checkTypes.FREE || - check.type === checkTypes.FREE_SINGLE_ITEM - ) { - // add entry as accepted. - script.tagAsAccepted(this.d.pageURL, check.reason, checker.hash); - } - - else if (check.type === checkTypes.NONTRIVIAL) { - console.debug("Removing given js", check.reason); - this.d.removeGivenJs(script, check.reason, false, checker.hash); - } - - else if (check.type === checkTypes.TRIVIAL || - check.type === checkTypes.WHITELISTED - ) { - // if it's accepted, allow. - script.tagAsAccepted(this.d.pageURL, check.reason, checker.hash); - } else { - // anything else is nontrivial. Including TRIVIAL_DEFINES_FUNCTION. - console.debug("checker hash for remove is ", checker.hash); - this.d.removeGivenJs(script, reasons.FUNCTIONS_EXTERNAL, false, checker.hash); - } - - } catch (e) { - console.debug('error in checkExternalScript', - e, e.lineNumber, 'for script', script.url); - - this.d.removeAllJs(); - this.destroy(); - return; - } - console.debug('script url is', script.url, 'result is', script.result); - this.d.scriptHasBeenTested(); - this.externalCheckIsDone(); -}; - -DomChecker.prototype.externalCheckIsDone = function() { - "use strict"; - - console.debug('scriptsTested is', this.d.scriptsTested); - console.debug('num external', this.d.numExternalScripts); - - if (this.d.scriptsTested >= this.d.numExternalScripts) { - console.debug('wrapping up external'); - this.wrapUpBeforeLeaving(); - } -}; - -/** - * xhr - * Perform a XMLHttpRequest on the url given. - * @param url string A URL. - * @return The response text. - */ -DomChecker.prototype.xhr = function(script, responseCallback) { - "use strict"; - - var regex = /^text\/html/i; - var url = script.url; - - try { - // add url to whitelist. - urlTester.addUrl(url); - - // request module. Compatible with Https-Everywhere. - require('html_script_finder/dom_handler/request') - .request(script, responseCallback).request(); - } catch (x) { - console.debug('error', x, x.lineNumber, x.fileName); - responseCallback(script, false); - } -}; - -/** - * exports.domChecker - * Instantiate a brand new clone of the domChecker. - * @param dom obj The given dom for analysis. - * @param pageURL string the URL for the page. - * @param callback function callback when all the work has been performed. - */ -exports.domChecker = function(domHandler) { - "use strict"; - - var domChecker = new DomChecker(); - - domChecker.init(domHandler); - - return domChecker; -}; - -exports.xhr = new DomChecker().xhr; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_gatherer.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_gatherer.js deleted file mode 100644 index 5451f53..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_gatherer.js +++ /dev/null @@ -1,301 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - - -var scriptProperties = require("html_script_finder/dom_handler/script_properties"); - -const scriptTypes = scriptProperties.scriptTypes; -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; - -const statusTypes = scriptProperties.statusTypes; -// object model for script entries. -var scriptObject = require("html_script_finder/dom_handler/script_object"); - -var urlHandler = require("url_handler/url_handler"); - -var attributeHelpers = require("html_script_finder/dom_handler/attributes"); - -// javascript:* -var jsInAttrRe = attributeHelpers.jsInAttrRe; - -// the list of all available event attributes -var intrinsecEvents = attributeHelpers.intrinsecEvents; - -var privacyChecker = require("js_checker/privacy_checker").privacyCheck; - -const types = require("js_checker/constant_types"); - -var checkTypes = types.checkTypes; - - -// array reflex valid types as listed in -// http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsScriptLoader.cpp#437 -// anything appended to end of strings is considered valid: -var jsValidTypes = [ - /^text\/javascript/i, - /^text\/ecmascript/i, - /^application\/javascript/i, - /^application\/ecmascript/i, - /^application\/x-javascript/i -]; - -var stripCDATAOpen = /<\!\[CDATA\[/gi; -var stripCDATAClose = /]]>/g; - -var stripHtmlCommentsInScript = function (s) { - s = s.replace(stripCDATAOpen, ''); - s = s.replace(stripCDATAClose, ''); - return s; -}; - - - -// gather scripts and javascript in attributes across a dom object. -var domGathererObject = { - - // domHandler object. - d: null, - - /** - * init - * - * assign a reference domHandler object - * to access/updates its properties. - * - */ - init: function (domHandler) { - - this.d = domHandler; - - }, - - /** - * scriptHasInvalidType - * - * Checks that a script does not have a js "template" type. - * Normally any script that has a type attribute other than the - * few allowed ones is not interpreted. But by security, we only - * discard a few of them. - * - * @param script obj The script element. - * @return returns true if it matches a template type. - * - */ - scriptHasInvalidType: function (script) { - var i = 0, - le = jsValidTypes.length; - - var type = script.getAttribute('type'); - - if (type === 'librejs/blocked') { - // js has already been blocked. - return true; - } - - if (!type) { - // type isn't set, don't look further. - return false; - } - - for (; i < le; i++) { - if (jsValidTypes[i].test(type)) { - return false; - } - } - - // type is invalid and - // hence cannot be executed. - return true; - - - }, - - /** - * findScripts - * - * Assigns the array of scripts in the dom to a property - * as well as a number of scripts present for looping purposing. - */ - findScripts: function() { - this.d.domScripts = this.d.dom.getElementsByTagName('script'); - this.d.numScripts = this.d.domScripts.length; - }, - - /** - * gatherIntrinsecEvents - * - * Fetches all the event attributes that might contain JavaScript - * as well as all element attributes that start with - * "javascript:". - * - */ - gatherIntrinsecEvents: function() { - var i = 0, j, k, - all = this.d.dom.getElementsByTagName('*'), - max = all.length, - that = this, - attrLen, attrib, str, scriptEntry; - - - - for (; i < max; i++) { - - // look for attributes with value javascript:* - attributeHelpers.findJSinAttribute(all[i], - function (scriptEntry) { - if (scriptEntry !== false) { - - that.d.inlineScripts.push(scriptEntry); - that.d.scripts.push(scriptEntry); - - // add inline script in the count. - that.d.numInlineScripts++; - - } - }); - - // look for attributes of on* (onLoad, ...) - attributeHelpers.findOnJSAttribute(all[i], - function (scriptEntry) { - if (scriptEntry !== false) { - that.d.inlineScripts.push(scriptEntry); - that.d.scripts.push(scriptEntry); - - // add inline script in the count. - that.d.numInlineScripts++; - } - }); - - } - - }, - - /** - * gatherScriptsContent - * - * Aggregate all content within on-page JavaScript code. - * Keep a list of all absolute urls to external scripts. - * - */ - gatherScriptsContent: function() { - var i = 0, currentScript = '', absolutePath, scriptEntry, - that = this; - try { - for (; i < this.d.numScripts; i++) { - - if (this.d.checkScriptForJsWebLabels(this.d.domScripts[i])) { - //break; - absolutePath = urlHandler.resolve(this.d.pageURL, this.d.domScripts[i].src); - scriptEntry = scriptObject.Script({'type': scriptTypes.EXTERNAL, - 'status': statusTypes.JSWEBLABEL, - 'element': this.d.domScripts[i], - 'url': absolutePath}); - scriptEntry.tree = {}; - - this.d.externalScripts.push(scriptEntry); - that.d.scripts.push(scriptEntry); - - this.d.loadsHtmlExternalScripts = true; - - // increment number of scripts found. - this.d.numExternalScripts++; - - } - - // check that script has valid type - else if (!this.scriptHasInvalidType(this.d.domScripts[i])) { - - - if (this.d.hasSrc(this.d.domScripts[i]) && - !this.d.scriptHasJsWebLabel(this.d.domScripts[i])) { - - console.debug('an external script', this.d.domScripts[i]); - - absolutePath = urlHandler.resolve(this.d.pageURL, this.d.domScripts[i].src); - scriptEntry = scriptObject.Script({'type': scriptTypes.EXTERNAL, - 'status': statusTypes.UNCHECKED, - 'element': this.d.domScripts[i], - 'url': absolutePath}); - this.d.externalScripts.push(scriptEntry); - that.d.scripts.push(scriptEntry); - - this.d.loadsHtmlExternalScripts = true; - - // increment number of scripts found. - this.d.numExternalScripts++; - - } - - else if (privacyChecker.checkScriptPrivacyThreat(this.d.domScripts[i].text)) { - - this.d.removeGivenJs(scriptObject.Script({'type': scriptTypes.SINGLETON, - 'status': statusTypes.UNCHECKED, - 'element': this.d.domScripts[i], - 'text': this.d.domScripts[i].text - }), '', true); - } - - else if (this.d.domScripts[i].text !== '') { - // using else if since script text is - // ignored if src attribute is set. - // adding this.narcissusBugFixLibreJS to fix comment bug. - var bugfix = require('html_script_finder/bug_fix').narcissusBugFixLibreJS; - currentScript = stripHtmlCommentsInScript(this.d.domScripts[i].text + bugfix); - - scriptEntry = scriptObject.Script({'type': scriptTypes.INLINE, - 'status': statusTypes.UNCHECKED, - 'element': this.d.domScripts[i], - 'text': currentScript}); - this.d.inlineScripts.push(scriptEntry); - this.d.scripts.push(scriptEntry); - - // add inline script in the count. - this.d.numInlineScripts++; - - } - } - } - } catch (e) { - // Any problem arising, we remove the script. - console.debug('problem gathering scripts', e, e.lineNumber); - this.d.removeAllJs(); - } - - } - - -}; - -/* - * exports.domGatherer - * Instantiate a brand new clone of the domGatherer. - * @param dom obj The given dom for analysis. - * @param pageURL string the URL for the page. - * @param callback function callback when all the work has been performed. - */ -exports.domGatherer = function (domHandler) { - - var domGatherer = Object.create(domGathererObject); - - domGatherer.init(domHandler); - - return domGatherer; - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/request.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/request.js deleted file mode 100644 index d1d26d8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/request.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var timer = require("sdk/timers"); - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); -var {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - - -// ensure xhr won't create an infinite loop -// with html content. -var urlTester = require("html_script_finder/url_seen_tester").urlSeenTester; -var urlHandler = require("url_handler/url_handler"); -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; - -var Request = function() { - this.url = null; - this.channel = null; - this.script = null; - this.responseCallback = null; -}; - -/** - * init - */ -Request.prototype.init = function(script, callback) { - this.script = script; - // set initial url - this.url = this.script.url; - - this.responseCallback = callback; - - var iOService = Cc["@mozilla.org/network/io-service;1"] - .getService(Ci.nsIIOService); - - this.channel = iOService.newChannel(this.url, null, null); -}; - -Request.prototype.request = function() { - var that = this; - var responseReceived = function (data) { - that.responseCallback(that.script, data); - }; - try { - this.channel.asyncOpen({ - QueryInterface: XPCOMUtils.generateQI( - [Ci.nsIRequestObserver, Ci.nsIStreamListener]), - data: "", - charset: null, - - onStartRequest: function(request, context) { - this.charset = request.contentCharset || "UTF-8"; - }, - - onDataAvailable: function (request, context, stream, offset, count) { - try { - var binaryInputStream = Cc["@mozilla.org/binaryinputstream;1"] - .createInstance(Ci.nsIBinaryInputStream); - binaryInputStream.setInputStream(stream); - var data = binaryInputStream.readBytes(count); - this.data += data; - } catch (x) { - console.debug('error in request', x, x.lineNumber); - responseReceived(""); - } - }, - - onStopRequest: function (request, context, result) { - try { - if (this.charset.toLowerCase() != "utf-8") { - var uConv = Cc["@mozilla.org/intl/utf8converterservice;1"] - .createInstance(Ci.nsIUTF8ConverterService); - - this.data = uConv.convertStringToUTF8(this.data, this.charset, true); - } - } catch (e) { - console.debug("Issue with nsIUTF8ConverterService", e); - console.debug("Charset was", this.charset); - responseReceived(""); - } - responseReceived(this.data); - } - }, null); - } catch(e) { - console.debug("asyncOpen exception", e); - responseReceived(""); - } -}; - -// Instantiate a Request -exports.request = function (script, callback) { - var obj = new Request(); - obj.init(script, callback); - return obj; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_object.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_object.js deleted file mode 100644 index e919f23..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_object.js +++ /dev/null @@ -1,198 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var removedScripts = require("script_entries/removed_scripts").removedScripts; - -var acceptedScripts = require("script_entries/accepted_scripts").acceptedScripts; -var dryRunScripts = require("script_entries/dryrun_scripts").dryRunScripts; - -var Script = function(props) { - // can be an attribute, an inline script, - // or an external script. - this.type = null; - - // flagged whether it is unchecked, checked, - // accepted, or rejected, ... - this.status = null; - - // contains the dom element - this.element = null; - - // the attribute name, if applicable. - this.attribute = null; - - // the script text as a string. - this.value = null; - - // the src url if external. - this.url = null; - - // the script text if inline. - this.text = null; - - this.init(props); -}; - -Script.prototype.init = function(props) { - // check the required elements are present. - if (props == undefined) { - throw "Error, missing script entry value in script_object.js"; - } - - // required properties - if (props.type != undefined) { - this.type = props.type; - } else { - throw "type is missing"; - } - - if (props.status != undefined) { - this.status = props.status; - } else { - throw "status is missing"; - } - - if (props.element != undefined) { - this.element = props.element; - } else { - throw "element is missing"; - } - - // conditional properties. - this.url = (props.url) ? props.url : null; - this.text = (props.text) ? props.text : null; - this.jsAttributes = (props.jsAttributes) ? props.jsAttributes : null; - - if (typeof this.text !== 'string' && - this.tree !== null && - typeof this.tree === 'object' && - this.tree.hasOwnProperty('jsCode') - ) { - this.text = this.tree.jsCode; - } -}; - -Script.prototype.tagAsDryRun = function(pageURL, reason, hash) { - var content = this.findContentType(); - var inline = (this.url != undefined) ? false : true; - var url = (inline == false ? this.url : null); - console.debug("url is", url); - this.element.setAttribute('data-librejs', 'dryrun'); - - - this.element.setAttribute('data-librejs-reason', reason); - - dryRunScripts.addAScript(pageURL, {'inline': inline, - 'contents': content, - 'reason': reason, - 'url': url, - 'hash': hash - }); -}; - -Script.prototype.tagAsAccepted = function(pageURL, reason, hash) { - var content = this.findContentType(); - var inline = (this.url != undefined) ? false : true; - var url = (inline == false ? this.url : null); - console.debug("url is", url); - this.element.setAttribute('data-librejs', 'accepted'); - - - this.element.setAttribute('data-librejs-reason', reason); - - acceptedScripts.addAScript(pageURL, {'inline': inline, - 'contents': content, - 'reason': reason, - 'url': url, - 'hash': hash - }); - -}; - -Script.prototype.tagAsRemoved = function(pageURL, reason, hash) { - var content = this.findContentType(); - var inline = (this.url != undefined) ? false : true; - var url = (inline == false ? this.url : null); - this.element.setAttribute('data-librejs', 'rejected'); - this.element.setAttribute('data-librejs-reason', reason); - console.debug("tagAsRemoved hash is", hash); - removedScripts.addAScript(pageURL, { - 'inline': inline, - 'contents': content, - 'reason': reason, - 'url': url, - 'hash': hash - }); - -}; - -Script.prototype.tagAsDryRun = function(pageURL, reason, hash) { - var content = this.findContentType(); - var inline = (this.url != undefined) ? false : true; - var url = (inline == false ? this.url : null); - this.element.setAttribute('data-librejs', 'dryrun'); - this.element.setAttribute('data-librejs-reason', reason); - - dryRunScripts.addAScript(pageURL, {'inline': inline, - 'contents': content, - 'reason': reason, - 'url': url, - 'hash': hash - }); -}; - -/** - * removeNarcissusBugLine - * - * Removes the line that is appended to all - * inline scripts and prevent the bug that prevent - * script tags with comments only from being checked. - * - */ -Script.prototype.removeNarcissusBugLine = function(str) { - return str.replace('\n\nthis.narcissusBugFixLibreJS', ''); -}; - -/** - * findContentType - * - * Figure out whether it's an external script, - * an inline script, or an attribute from the property - * that has been set, rather than blindly trusting the given - * constant. - */ -Script.prototype.findContentType = function() { - if (this.url != undefined) { - - return ""; - - } else if (this.text != undefined) { - - return this.element.text; - - } else if (this.jsAttributes != undefined) { - // return the array. - return JSON.stringify(this.jsAttributes); - } -}; - -exports.Script = function(props) { - return new Script(props); -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_properties.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_properties.js deleted file mode 100644 index 2eeeedb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_properties.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -exports.scriptTypes = { - INLINE: 0, - EXTERNAL: 1, - ATTRIBUTE: 2, - SINGLETON: 3 -}; - -exports.statusTypes = { - UNCHECKED: 0, - CHECKED: 1, - ACCEPTED: 2, - REJECTED: 3, - JSWEBLABEL: 4 -}; - -exports.reasons = { - 'FUNCTIONS_INLINE': 'This script is detected as inline, nonfree, defining functions or methods, and the rest of the page as loading external scripts', - 'FUNCTIONS_EXTERNAL': 'This script is detected as nonfree, external, and as defining functions or methods', - 'CONSTRUCT': 'This script is detected as nonfree and as defining nontrivial constructs', - 'FREE': 'This script is detected as free', - 'TRIVIAL': 'This script is detected as trivial', - 'TRIVIAL_NOT_ALLOWED': 'This script is detected as trivial, but trivial is not allowed here because of other scripts' -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/html_parser.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/html_parser.js deleted file mode 100644 index 69b2acc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/html_parser.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - # ***** BEGIN LICENSE BLOCK ***** - # Version: MPL 1.1/GPL 2.0/LGPL 2.1 - # - # The contents of this file are subject to the Mozilla Public License Version - # 1.1 (the "License"); you may not use this file except in compliance with - # the License. You may obtain a copy of the License at - # http://www.mozilla.org/MPL/ - # - # Software distributed under the License is distributed on an "AS IS" basis, - # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - # for the specific language governing rights and limitations under the - # License. - # - # The Original Code is Microsummarizer. - # - # The Initial Developer of the Original Code is Mozilla. - # Portions created by the Initial Developer are Copyright (C) 2006 - # the Initial Developer. All Rights Reserved. - # - # Contributor(s): - # Myk Melez <myk@mozilla.org> (Original Author) - # Simon BĂĽnzli <zeniko@gmail.com> - # Asaf Romano <mano@mozilla.com> - # Dan Mills <thunder@mozilla.com> - # Ryan Flint <rflint@dslr.net> - # - # Alternatively, the contents of this file may be used under the terms of - # either the GNU General Public License Version 2 or later (the "GPL"), or - # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - # in which case the provisions of the GPL or the LGPL are applicable instead - # of those above. If you wish to allow use of your version of this file only - # under the terms of either the GPL or the LGPL, and not to allow others to - # use your version of this file under the terms of the MPL, indicate your - # decision by deleting the provisions above and replace them with the notice - # and other provisions required by the GPL or the LGPL. If you do not delete - # the provisions above, a recipient may use your version of this file under - # the terms of any one of the MPL, the GPL or the LGPL. - # - # ***** END LICENSE BLOCK ***** - */ - -/* - * The original file is located here: - * http://mxr.mozilla.org/mozilla/source/browser/components/microsummaries/src/nsMicrosummaryService.js?raw=1 - * - */ - -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * html_parser - * - * Takes in an http response (string), loads it into a secured iframe - * so that it can be manipulated as a DOM object. It then returns a - * modified string to be passed along as a replacement of the original - * response. - * - */ - -var {Cc, Ci, Cu} = require("chrome"); - -var domHandlerModule = require("html_script_finder/dom_handler"); - -const PR_UINT32_MAX = 2147483647; - - -exports.htmlParser = function () { - - return { - charset: null, - htmlText: null, - pageURL: null, - fragment: null, - contentType: null, - responseStatus: null, - - parse: function (htmlText, charset, contentType, url, fragment, - responseStatus, parseResult) { - - // DOMParser still has too many issues. - this.htmlText = htmlText; - this.charset = charset; - - if (this.charset === "" || this.charset === undefined) { - this.charset = "utf-8"; - } - this.contentType = contentType; - this.pageURL = url; - this.fragment = fragment; - this.responseStatus = responseStatus; - var that = this; - - var domParser = Cc["@mozilla.org/xmlextras/domparser;1"]. - createInstance(Ci.nsIDOMParser); - - var dom = domParser.parseFromString(this.htmlText, this.contentType); - // console.debug(dom.getElementsByTagName('body')[0].innerHTML); - domHandlerModule.domHandler(dom, this.pageURL, this.fragment, this.responseStatus, function (newDom) { - parseResult(that.serializeToStream(newDom, that)); - }); - - }, - - /** - * serializeToStream - * Serializes an HTML DOM into a binary stream. Uses - * nsIDOMSerializer only as a backup to when the - * reconstituteHtmlString method fails (not sure if/when it - * happens). - * @param dom obj Reference to the dom object - * @param that obj Reference to the object returned by htmlParser. - * This allows to give access to the iframe. - * @return a binary stream. - */ - serializeToStream: function (dom, that) { - - var newData, len; - - try { - var storageStream = Cc["@mozilla.org/storagestream;1"].createInstance(Ci.nsIStorageStream); - var binaryOutputStream = Cc["@mozilla.org/binaryoutputstream;1"].createInstance(Ci.nsIBinaryOutputStream); - var serializer = Cc["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Ci.nsIDOMSerializer); - var encoder = Cc["@mozilla.org/layout/documentEncoder;1?type=" + this.contentType] - .createInstance(Ci.nsIDocumentEncoder); - - encoder.setCharset(this.charset); - encoder.init(dom, this.contentType, 0); - storageStream.init(8192, PR_UINT32_MAX, null); - - binaryOutputStream.setOutputStream(storageStream.getOutputStream(0)); - encoder.encodeToStream(binaryOutputStream); - return storageStream; - } catch (e) { - console.debug('issue with serializer', e, e.lineNumber); - } - } - - }; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/url_seen_tester.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/url_seen_tester.js deleted file mode 100644 index 6b98ce1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/url_seen_tester.js +++ /dev/null @@ -1,87 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var httpRe = /^(http:)/i; - -var httpsRe = /^(https:)/i; - -exports.urlSeenTester = { - - whitelist: {}, - - - httpToHttps: function (url) { - try { - - if (httpRe.test(url)) { - - return url.replace(httpRe, 'https:'); - - } else if (httpsRe.test(url)) { - - return url.replace(httpsRe, 'http:'); - - } else { - - return url; - - } - } catch (x) { - console.debug('error', x); - } - - }, - - clearUrls: function () { - this.whitelist = {}; - }, - - clearUrl: function (url) { - - if (this.whitelist[url]) { - - // console.debug('disallowing', url); - delete this.whitelist[url]; - - } - - }, - - addUrl: function (url) { - - console.debug('adding', url); - - if (!this.isWhitelisted(url)) { - - console.debug('allowing', url); - this.whitelist[url] = true; - } - - }, - - isWhitelisted: function (url) { - if (this.whitelist[url] || this.whitelist[this.httpToHttps(url)]) { - console.debug('found to be whitelisted', url); - return true; - } - return false; - } - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/find_js_labels.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/find_js_labels.js deleted file mode 100644 index d56d650..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/find_js_labels.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * This file works in conjunction with lib/html_script_finder/js_web_labels.js - * to find mentions of external JavaScript files and their license information. - * This allows the dom_handler to allow them by default. - */ - -// find table. -exports.getLicenseList = function (document) { - - var tbl = document.getElementById("jslicense-labels1"), - jsList = [], - i = 0, - le, - rows, - link, - fileCell, - licenseCell, - sourceCell, - row; - - - if (tbl) { - - try { - rows = tbl.getElementsByTagName("tr"); - le = rows.length; - var mockElem = {textContent: "Unknown", href: "Unknown" }; - // loop through rows, and add each valid element to - // the array. - for (; i < le; i++) { - - row = rows[i].getElementsByTagName('td'); - - if (row[0] && row[0].getElementsByTagName('a')[0]) { - fileCell = row[0].getElementsByTagName('a')[0]; - } else { - fileCell = mockElem; - } - - if (row[1] && row[1].getElementsByTagName('a')[0]) { - licenseCell = row[1].getElementsByTagName('a')[0]; - } else { - licenseCell = mockElem; - } - - if (row[2] && row[2].getElementsByTagName('a')[0]) { - sourceCell = row[2].getElementsByTagName('a')[0]; - } else { - sourceCell = mockElem; - } - if (fileCell.href != 'Unknown') { - jsList.push({ - - 'fileName': fileCell.textContent, - 'fileUrl': fileCell.href, - 'fileHash': null, // we'll fill this with value when needed to compare script. - - 'licenseName': licenseCell.textContent, - 'licenseUrl': licenseCell.href, // this will now be a magnet link, most likely. - - 'sourceName': sourceCell.textContent, - 'sourceUrl': sourceCell.href - }); - } - - } - } catch (e) { - console.debug("Error fetching JS Web Label licenses", e, - e.lineNumber, e.fileName, "index is", i); - } - } - - return jsList; - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/js_web_labels.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/js_web_labels.js deleted file mode 100644 index f13091c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/js_web_labels.js +++ /dev/null @@ -1,216 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// node.js url module. Makes it easier to resole -// urls in that datauri loaded dom -var urlHandler = require("url_handler/url_handler"); -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var data = require("sdk/self").data; - -// license definitions, we are using canonical urls and license -// identifiers. -var licenses = require('js_checker/license_definitions').licenses; - -var getLicenseList = require('html_script_finder/web_labels/find_js_labels').getLicenseList; -const types = require("js_checker/constant_types"); - -const addToCache = require("html_script_finder/web_labels/script_hash_worker").addToCache; - -// keep web labels in memory so that they can be checked even when they -// are embedded dynamically. -var jsWebLabelEntries = {}; - -// store the url to js web labels already visited during this session -var jsLabelsPageVisited = {}; - -var WebLabelFinder = function () { - this.dom = null; - this.pageURL = null; - this.jslicenseURL = null; - this.pageContent = null; - this.licenseList = null; - this.callback = null; -}; - -WebLabelFinder.prototype.init = function(dom, pageURL, callback) { - var that = this; - this.pageURL = pageURL; - this.dom = dom; - this.callback = function (a) { - if (typeof a == 'undefined') { - a = null; - } - - // rewrite callback as soon as it is triggered once. - that.callback = function () { - console.debug("Callback already called"); - }; - - callback(a); - }; - this.findJavaScriptLicenses(); - this.pageContent = ''; - this.jslicenseURL = ''; -}; - -WebLabelFinder.prototype.findJavaScriptLicenses = function () { - this.searchForJsLink(); - - if (this.jslicenseURL && !(jsLabelsPageVisited[this.jslicenseURL])) { - // get content from license page. - console.debug('called fetch license page for', this.jslicenseURL); - this.pageContent = this.fetchLicensePage(); - } - else { - console.debug(this.jslicenseURL, "already visited"); - this.callback(); - } -}; - -WebLabelFinder.prototype.searchForJsLink = function() { - console.debug('triggered searchForJsLink'); - if (this.dom) { - var linkTags = this.dom.getElementsByTagName('a'), - i = 0, - len = linkTags.length, - path; - - // loop through all a tags. - for (; i < len; i++) { - if (linkTags[i].hasAttribute('rel') && - linkTags[i].getAttribute('rel') === 'jslicense') { - return this.formatURL(linkTags[i]); - } - } - } - // no js web labels were found. call back. - this.callback(); -}; - -WebLabelFinder.prototype.formatURL = function(link) { - this.jslicenseURL = urlHandler.resolve(this.pageURL, link.href); - this.jslicenseURL = urlHandler.addFragment(this.jslicenseURL, 'librejs=true'); - console.debug('license URL found', this.jslicenseURL); -}; - -WebLabelFinder.prototype.fetchLicensePage = function() { - var that = this; - try { - - var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); - - req.onload = function() { - console.debug("Fetching License!"); - console.debug("URL is ", this._url); - - that.licenseList = getLicenseList(this.responseXML); - console.debug("the license list", that.licenseList); - that.matchListWithDefs(this._url); - - // add these entries to the global - // object for dynamically embedded scripts. - jsWebLabelEntries[that.pageURL] = that.licenseList; - jsLabelsPageVisited[req._url] = 1; - - }; - console.debug(this.jslicenseURL); - req.open('GET', this.jslicenseURL, true); - req._url = this.jslicenseURL; - req.responseType = "document"; - req.send(); - - } catch (e) { - console.debug(e, e.lineNumber, e.fileName, this.jslicenseURL); - this.callback({}); - } - -}; - -WebLabelFinder.prototype.matchListWithDefs = function(jslicenseURL) { - var i = 0, - len = this.licenseList.length, - lic, - licDef, - urlLength, - iUrl, - licArray = null, - license, script; - var cacheCalls = 0; - list_check = {}; - // nested loop. - cacheCalls = 0; - var callback = function (url) { - cacheCalls++; - list_check[url] = 1; - if (cacheCalls == Object.keys(list_check).length) { - console.debug("triggering callback duh"); - // return array to requester object - callback = false; - that.callback(that.licenseList); - } - }; - require("sdk/timers").setTimeout(function () { - // callback after 60 seconds if it's still not returned. - // using this as a safeguard. - // return array to requester object - if (callback !== false) { - that.callback(that.licenseList); - console.debug(list_check); - } - }, 15000); - - for (; i < len; i++) { - lic = this.licenseList[i]; - var that = this; - for (license in licenses) { - licDef = licenses[license]; - if (licDef.canonicalUrl !== undefined) { - if (typeof licDef.canonicalUrl == 'string') { - // this is a string. make it an array. - licArray = [licDef.canonicalUrl]; - } else { - licArray = licDef.canonicalUrl; - } - - urlLength = licArray.length; - - for (iUrl = 0; iUrl < urlLength; iUrl++) { - if (urlHandler.removeFragment(licArray[iUrl]) === urlHandler.removeFragment(lic.licenseUrl)) { - if (!require("sdk/url").isValidURI(lic.fileUrl)) { - console.debug(lic.fileUrl, " is not a valid URL"); - callback(); - } - lic.free = true; - var notif = require("ui/notification").createNotification(lic.fileUrl).notification; - console.debug("about TO ADD TO XHR: ", lic.fileUrl); - list_check[lic.fileUrl] = 0; - addToCache(lic, 0, jslicenseURL, callback); - } - } - } - } - } -}; - -exports.WebLabelFinder = WebLabelFinder; - -// store the web labels harvested across webpages (single session). -exports.jsWebLabelEntries = jsWebLabelEntries; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/script_hash_worker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/script_hash_worker.js deleted file mode 100644 index e62133e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/script_hash_worker.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -const types = require("js_checker/constant_types"); -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; -const xhr = require('html_script_finder/dom_handler/dom_checker').xhr; -const timers = require("sdk/timers"); - -exports.addToCache = function (lic, delay, jsWebLabelsURL, callback) { - console.debug("jslicenseURL is", jsWebLabelsURL); - if (typeof delay === 'undefined') { - delay = 0; - } - - // get file hash and store as cached. - console.debug('performing xhr for', lic.fileUrl); - timers.setTimeout(function() { - var cb = function (script, contents) { - try { - // add a cache entry. - var hash = scriptsCached.addEntryIfNotCached(contents, - types.freeWithComment( - 'This script is free according to a JS Web Labels page visited recently (at ' + - jsWebLabelsURL.replace("librejs=true", "") + ' )'), - {}, - true, - lic.fileUrl); - console.debug('returning xhr from', lic.fileUrl); - callback(lic.fileUrl); - } catch (e) { - callback(lic.fileUrl); - } - }; - // just callback after 5 seconds if we don't get the answer yet. - timers.setTimeout(function() { - cb = function() {}; - callback(lic.fileUrl); }, 20000); - - xhr({'url': lic.fileUrl}, cb);}, - delay); -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/allowed_referrers.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/allowed_referrers.js deleted file mode 100644 index 4f524a7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/allowed_referrers.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var prefChange = require("addon_management/prefchange"); - -/** - * Contains a list of pages that are allowed - * to execute JavaScript regardless of whether it is - * nonfree and nontrivial. - */ -exports.allowedReferrers = { - - allowed: {}, - - addPage: function (url) { - this.allowed[url] = 1; - }, - - urlInAllowedReferrers: function (url) { - - if (this.allowed[url] === 1) { - return true; - } - // check if whitelisted. - return this.urlInWhitelist(url); - - }, - - urlInWhitelist: function (url) { - var whitelist = prefChange.getWhitelist(); - var i = 0, le = whitelist.length; - - for (; i < le; i++) { - - if (whitelist[i].test(url)) { - - return true; - - } - - } - - }, - - clearSinglePageEntry: function (url) { - - var index = this.allowed[url]; - - if (this.allowed[url] === 1) { - delete this.allowed[url]; - } - - }, - - clearAllEntries: function () { - this.allowed = {}; - } -};
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/caching.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/caching.js deleted file mode 100644 index 1463b1c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/caching.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -const nsICacheService = Ci.nsICacheService; -const cacheService = Cc["@mozilla.org/network/cache-service;1"].getService(nsICacheService); - -exports.clearAllCache = function () { - cacheService.evictEntries(Ci.nsICache.STORE_ON_DISK); - cacheService.evictEntries(Ci.nsICache.STORE_IN_MEMORY); -}; - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/http_request_observer.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/http_request_observer.js deleted file mode 100644 index 09e66e8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/http_request_observer.js +++ /dev/null @@ -1,161 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var observerService = Cc["@mozilla.org/observer-service;1"] - .getService(Ci.nsIObserverService); - -// these are our target mime types for response interception. -var targetMimeTypes = /.*(javascript|ecmascript|html).*/i; -//var targetMimeTypes = /.*(html).*/i; - -// ensure xhr won't create an infinite loop -// with html content. -var urlTester = require("html_script_finder/url_seen_tester").urlSeenTester; - -var streamLoader = require("http_observer/stream_loader").streamLoader; - -var httpRequestObserver = { - - observe: function(request, aTopic, aData) { - - console.debug('atopic is', aTopic); - - var url, newListener, status; - - if (aTopic == "http-on-examine-response" || - aTopic == "http-on-examine-cached-response" || - aTopic == "http-on-examine-merged-response") { - - request.QueryInterface(Ci.nsIHttpChannel); - - if (request.URI.scheme != 'chrome' && - (request.responseStatus < 300 || - request.responseStatus > 399) && - (targetMimeTypes.test(request.contentType) || - request.contentType == undefined) && - (!urlTester.isWhitelisted(request.URI.spec) && - !urlTester.isWhitelisted(request.originalURI.spec))) { - - newListener = new TracingListener(); - request.QueryInterface(Ci.nsITraceableChannel); - newListener.originalListener = request.setNewListener(newListener); - - } - - else if (urlTester.isWhitelisted(request.URI.spec) || - urlTester.isWhitelisted(request.originalURI.spec)) { - urlTester.clearUrl(request.URI.spec); - urlTester.clearUrl(request.originalURI.spec); - } - - } - }, - - QueryInterface : function (aIID) { - if (aIID.equals(Ci.nsIObserver) || - aIID.equals(Ci.nsISupports)) { - return this; - } - throw Cr.NS_NOINTERFACE; - } -}; - -// Copy response listener implementation. -function TracingListener() { - this.originalListener = null; - this.streamLoader = streamLoader(); -} - -TracingListener.prototype = { - - onDataAvailable: function(request, context, inputStream, offset, count) { - - try { - this.streamLoader.loader.onDataAvailable(request, context, inputStream, offset, count); - } catch (x) { - - console.debug(x, x.lineNumber, x.fileName, "In this case, charset is"); - - } - - }, - - onStartRequest: function(request, context) { - - this.streamLoader.setOriginalListener(this.originalListener); - this.streamLoader.loader.onStartRequest(request, context); - this.originalListener.onStartRequest(request, context); - - }, - - onStopRequest: function(request, context, statusCode) { - - try { - this.streamLoader.loader.onStopRequest(request, context, statusCode); - } catch (e) { - console.debug('error in onStopRequest', e, e.lineNumber); - } - }, - - QueryInterface: function (aIID) { - if (aIID.equals(Ci.nsIStreamListener) || - aIID.equals(Ci.nsISupports)) { - return this; - } - throw Cr.NS_NOINTERFACE; - }, - - -}; - -observerService.addObserver(httpRequestObserver, - "http-on-examine-response", false); - -observerService.addObserver(httpRequestObserver, - "http-on-examine-cached-response", false); - -observerService.addObserver(httpRequestObserver, - "http-on-examine-merged-response", false); - - - -/* remove observer */ -exports.removeHttpObserver = function () { - - try { - - observerService.removeObserver(httpRequestObserver, - "http-on-examine-response"); - - observerService.removeObserver(httpRequestObserver, - "http-on-examine-cached-response"); - - observerService.removeObserver(httpRequestObserver, - "http-on-examine-merged-response"); - - console.debug('turned off http observer'); - - } catch (e) { - console.debug(e); - } - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/process_response.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/process_response.js deleted file mode 100644 index 759adf7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/process_response.js +++ /dev/null @@ -1,408 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * This module checks http responses by mime type and returns a - * modified response. - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var jsChecker = require("js_checker/js_checker"); - -const types = require("js_checker/constant_types"); -var checkTypes = types.checkTypes; - -// check if scripts embedded dynamically have a jsWebLabel entry indexed by referrer. -var jsWebLabelEntries = require("html_script_finder/web_labels/js_web_labels").jsWebLabelEntries; - -var htmlParser = require("html_script_finder/html_parser"); - -var removedScripts = require("script_entries/removed_scripts").removedScripts; -var allowedRef = require('http_observer/allowed_referrers').allowedReferrers; - -var acceptedScripts = require("script_entries/accepted_scripts").acceptedScripts; - -// used to display info when a url is whitelisted. -var dryRunScripts = require("script_entries/dryrun_scripts").dryRunScripts; - -// node.js url module. Makes it easier to resolve -// urls in that datauri loaded dom -var urlHandler = require("url_handler/url_handler"); -var isDryRun = require("addon_management/prefchange").isDryRun; - -var jsMimeTypeRe = /.*(javascript|ecmascript).*/i; -var htmlMimeTypeRe = /.*(xhtml\+xml|html|multipart\/x-mixed-replace).*/i; - - -var processResponseObject = { - data: null, - myParser: null, - url: null, - scriptFinder: null, - jsCheckString: null, - referrer: null, - contentType: null, - resInfo: null, - listener: null, - req: null, - - /** - * starts the handling of a new response. - */ - init: function (listener, resInfo) { - this.resInfo = resInfo; - this.req = resInfo.request; - /* needed for this.req.referrer */ - this.req.QueryInterface(Ci.nsIHttpChannel); - this.listener = listener; - this.setData(); - this.setContentType(); - this.setUrls(); - }, - - /** - * genBinaryOutput - * Set or reset binaryOutputStream and storageStream. - */ - genBinaryOutput: function () { - this.storageStream = Cc["@mozilla.org/storagestream;1"].createInstance(Ci.nsIStorageStream); - this.binaryOutputStream = Cc["@mozilla.org/binaryoutputstream;1"].createInstance(Ci.nsIBinaryOutputStream); - }, - - /** - * Gather the data gathered from onDataAvailable. - */ - setData: function () { - - this.data = this.resInfo.receivedData; - console.debug("\n\nDump of whole data:\n\n", this.data, "\n\n end of dump"); - // Prevents the http response body from being empty, - // which would throw an error. - if (this.data == '' || this.data == undefined) { - this.data = " "; - } - - }, - - /** - * Set a standardized lowercase mime type. - */ - setContentType: function() { - if (this.req.contentType != undefined) { - this.contentType = String(this.req.contentType).toLowerCase(); - } - }, - - /** - * setUrls - * Set the current URL of the response, and - * set referrer if applicable. - */ - setUrls: function() { - - if (this.req.URI != undefined) { - this.fragment = urlHandler.getFragment(this.req.URI.spec); - console.debug('fragment is', this.fragment); - this.url = urlHandler.removeFragment(this.req.URI.spec); - } - if (this.req.referrer != undefined) { - this.referrerFragment = urlHandler.getFragment(this.req.referrer.spec); - this.referrer = urlHandler.removeFragment(this.req.referrer.spec); - } - }, - - /** - * processHTML - * Modifies a string of html - */ - processHTML: function() { - - var charset = this.req.contentCharset, myParser; - - if (this.req.contentCharset != undefined && this.req.contentCharset != "") { - charset = this.req.contentCharset; - } else { - charset = ""; - } - acceptedScripts.clearScripts(this.req.URI.spec); - removedScripts.clearScripts(this.req.URI.spec); - dryRunScripts.clearScripts(this.req.URI.spec); - - console.debug('charset is', charset); - console.debug('responseStatus for', this.url, 'is', this.req.responseStatus); - - // send data to htmlParser, and pass on modified data to - // originalListener. - - myParser = htmlParser.htmlParser().parse(this.data, - charset, - this.contentType, - this.url, - this.fragment, - this.req.responseStatus, - this.htmlParseCallback.bind(this)); - }, - - /** - * - * htmlParseCallback - * - * Passed on the callback result to - * the originalListener. - * - */ - htmlParseCallback: function(result) { - - var len = result.length; - - try { - - this.listener.onDataAvailable(this.req, - this.resInfo.context, - result.newInputStream(0), 0, len); - - - } catch (e) { - - this.req.cancel(this.req.NS_BINDING_ABORTED); - - } - - this.listener.onStopRequest(this.req, - this.resInfo.context, this.resInfo.statusCode); - - }, - - /** - * processJS - * Process and modify a string of JavaScript. - */ - processJS: function() { - var checker, check, jsCheckString, - that = this; - //var start = Date.now(), end; - - try { - // make sure script isn't already listed as free - // in a JS web labels table. - if (this.checkJsWebLabelsForScript()) { - // this is free. we are done. - this.jsListenerCallback(); - return; - - } - - // analyze javascript in response. - checker = jsChecker.jsChecker(); - check = checker.searchJs(this.data, function () { - console.debug("Has been analyzing", that.data); - that.processJsCallback(checker); - }, that.url); - - - - } catch(e) { - - // any error is considered nontrivial. - console.debug('js error in js app, removing script', e); - console.debug("error", e, e.lineNumber); - // modify data that will be sent to the browser. - this.data = '// LibreJS: Script contents were removed when it was loaded from a page, because another script attempted to load this one dynamically. Please place your cursor in the url bar and press the enter key to see the source.'; - this.jsListenerCallback(); - } - - }, - - /** - * checkJsWebLabelsForScript - * - * check whether script that's been received has an entry - * in a js web labels table (lookup referrer.) - * - */ - checkJsWebLabelsForScript: function () { - - console.debug('checking script', this.url); - console.debug('current list is', JSON.stringify(jsWebLabelEntries)); - if (jsWebLabelEntries[this.referrer] != undefined) { - - var scriptList = jsWebLabelEntries[this.referrer], - i = 0, - len = scriptList.length; - - for (; i < len; i++) { - - if (scriptList[i].fileUrl === this.url && - scriptList[i].free === true) { - - console.debug(this.url, "is free and dynamic!"); - - var scriptObj = {inline: false, - url: this.url, - contents: this.url, - reason: "This script is free (see JS Web Labels page for detail)"}; - - acceptedScripts.addAScript(this.req.referrer.spec, scriptObj, "Script is free"); - - return true; - - } - - } - - - } - - }, - - processJsCallback: function(checker) { - try { - var scriptObj; - - var jsCheckString = checker.parseTree.freeTrivialCheck; - console.debug("analyzing js callback for", this.url); - // for testing only. - //var jsCheckString = {'type': checkTypes.FREE_SINGLE_ITEM }; - console.debug('jscheckstring is', jsCheckString.type); - - if (jsCheckString.type === checkTypes.NONTRIVIAL) { - if (!allowedRef.urlInAllowedReferrers(this.req.referrer.spec)) { - //if (true) { - console.debug("url", this.url, " is found nontrivial", "with reason", jsCheckString.reason); - scriptObj = {inline: false, - contents: '', - removalReason: 'nontrivial', - reason: jsCheckString.reason, - url: this.url, - hash: checker.hash}; - removedScripts.addAScript(this.req.referrer.spec, scriptObj); - - // modify data that will be sent to the browser. - this.data = '// LibreJS: Script contents were removed when it was loaded from a page, because another script attempted to load this one dynamically and its contents appear to be nonfree/nontrivial. Please hit enter in the location bar to see the actual source.'; - } else { - console.debug("writing to dry run", this.url); - scriptObj = {inline:false, - contents: '', - removalReason: 'nontrivial', - reason: jsCheckString.reason, - url: this.url, - hash:checker.hash}; - dryRunScripts.addAScript(this.req.referrer.spec, scriptObj); - } - - this.jsListenerCallback(); - - } else if (jsCheckString.type === checkTypes.FREE || - jsCheckString.type === checkTypes.FREE_SINGLE_ITEM || - jsCheckString.type === checkTypes.TRIVIAL || - jsCheckString.type === checkTypes.TRIVIAL_DEFINES_FUNCTION || - jsCheckString.type === checkTypes.WHITELISTED) { - console.debug("found a free script for", this.url, this.req.referrer.spec, jsCheckString.reason); - console.debug('found a free script', this.req.referrer.spec); - - scriptObj = {inline: false, - contents: '', - reason: jsCheckString.reason, - url: this.url, - hash:checker.hash}; - - acceptedScripts.addAScript(this.req.referrer.spec, scriptObj); - this.jsListenerCallback(); - } - - //var end = Date.now(); - console.debug('exec time', this.url, ' -- ', end - start); - } catch (x) { - console.debug('error', x); - } - }, - - /** - * ProcessAllTypes - * Calls processHTML or JS if it finds an appropriate content - * type. For everything else it just passes on the data to the - * original listener. - */ - processAllTypes: function() { - // toggle xlibrejs if X-LibreJS is set. - - // process HTML - if ((htmlMimeTypeRe.test(this.contentType) || - this.req.contentType === undefined)) { - this.processHTML(); - return; - } - - else { - // process external JS files that are called from another - // file (and hence have a referrer). - - if (this.referrer != undefined && - jsMimeTypeRe.test(this.contentType) && - !(acceptedScripts.isFound(this.referrer, {inline: false, contents: this.url})) && - !(acceptedScripts.isFound(this.referrer, {inline:false, contents:this.req.originalURI.spec}))) { - - // console.debug('process js triggered for', this.url); - this.processJS(); - - } else { - this.jsListenerCallback(); - } - - } - - }, - - jsListenerCallback: function () { - - var len = this.data.length; - - this.genBinaryOutput(); - - this.storageStream.init(8192, len, null); - this.binaryOutputStream.setOutputStream(this.storageStream.getOutputStream(0)); - this.binaryOutputStream.writeBytes(this.data, len); - - try { - this.listener.onDataAvailable(this.req, - this.resInfo.context, - this.storageStream.newInputStream(0), - 0, len); - } catch (e) { - this.req.cancel(this.req.NS_BINDING_ABORTED); - } - - this.listener.onStopRequest(this.req, - this.resInfo.context, - this.resInfo.statusCode); - - } - - -}; - -// creates an instance of processResponseObject. -exports.ProcessResponse = function (listener, resInfo) { - console.debug('triggered'); - var procResponse = Object.create(processResponseObject); - procResponse.init(listener, resInfo); - return procResponse; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/stream_loader.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/stream_loader.js deleted file mode 100644 index bd27132..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/stream_loader.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -const processResponse = require('http_observer/process_response'); - -var StreamLoader = function() { - this.loader = null; - this.listener = null; - this.originalListener = null; -} - -StreamLoader.prototype.setOriginalListener = function(listener) { - this.originalListener = listener; -}; - -StreamLoader.prototype.init = function() { - try { - var that = this; - this.listener = new StreamListener(); - - this.listener.callback = function (loader, context, status, data) { - console.debug("here is the data", data); - var responseInfo = {'request': loader.channel, - 'context': context, - 'statusCode': status, - 'receivedData': data}; - var responseHandler = processResponse.ProcessResponse(that.originalListener, responseInfo); - responseHandler.processAllTypes(); - - that.destroy(); - }; - - this.loader = Cc["@mozilla.org/network/unichar-stream-loader;1"]. - createInstance(Ci.nsIUnicharStreamLoader); - - this.loader.init(this.listener); - } catch (e) { - console.debug(e); - } -}; - -StreamLoader.prototype.destroy = function () { - this.loader = null; - this.listener = null; -}; - -var getRegexForContentType = function (contentType) { - if (/xhtml/i.test(contentType)) { - return /<\?[^>]*?encoding=(?:["']*)([^"'\s\?>]+)(?:["']*)/i; - } - - // return the regular html regexp for anything else. - return /<meta[^>]*?charset=(?:["']*)([^"'\s>]+)(?:["']*)/i; -}; - -var StreamListener = function() {}; - -StreamListener.prototype.QueryInterface = function listener_qi(iid) { - if (iid.equals(Ci.nsISupports) || - iid.equals(Ci.nsIUnicharStreamLoaderObserver)) { - return this; - } - throw Cr.NS_ERROR_NO_INTERFACE; -}; - -StreamListener.prototype.onStreamComplete = function onStreamComplete( - loader, context, status, data) { - this.callback(loader, context, status, data); -}; - -StreamListener.prototype.onDetermineCharset = function onDetermineCharset( - loader, context, data) { - var match, regex; - if (loader.channel.contentCharset != undefined && - loader.channel.contentCharset != "") { - return loader.channel.contentCharset; - } else { - match = getRegexForContentType(loader.channel.contentType).exec(data); - if (match) { - loader.channel.contentCharset = match[1]; - return match[1]; - } else { - return "UTF-8"; - } - } -}; - -exports.streamLoader = function () { - var l = new StreamLoader(); - l.init(); - return l; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/constant_types.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/constant_types.js deleted file mode 100644 index 1a3b2a9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/constant_types.js +++ /dev/null @@ -1,190 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -//var debug = require("debug/debug"); - -// token list from exports.init(); -exports.token = { - END: 0, - NEWLINE: 1, - SEMICOLON: 2, - COMMA: 3, - ASSIGN: 4, - HOOK: 5, - COLON: 6, - CONDITIONAL: 7, - OR: 8, - AND: 9, - BITWISE_OR: 10, - BITWISE_XOR: 11, - BITWISE_AND: 12, - EQ: 13, - NE: 14, - STRICT_EQ: 15, - STRICT_NE: 16, - LT: 17, - LE: 18, - GE: 19, - GT: 20, - LSH: 21, - RSH: 22, - URSH: 23, - PLUS: 24, - MINUS: 25, - MUL: 26, - DIV: 27, - MOD: 28, - NOT: 29, - BITWISE_NOT: 30, - UNARY_PLUS: 31, - UNARY_MINUS: 32, - INCREMENT: 33, - DECREMENT: 34, - DOT: 35, - LEFT_BRACKET: 36, - RIGHT_BRACKET: 37, - LEFT_CURLY: 38, - RIGHT_CURLY: 39, - LEFT_PAREN: 40, - RIGHT_PAREN: 41, - SCRIPT: 42, - BLOCK: 43, - LABEL: 44, - FOR_IN: 45, - CALL: 46, - NEW_WITH_ARGS: 47, - INDEX: 48, - ARRAY_INIT: 49, - OBJECT_INIT: 50, - PROPERTY_INIT: 51, - GETTER: 52, - SETTER: 53, - GROUP: 54, - LIST: 55, - LET_BLOCK: 56, - ARRAY_COMP: 57, - GENERATOR: 58, - COMP_TAIL: 59, - IDENTIFIER: 60, - NUMBER: 61, - STRING: 62, - REGEXP: 63, - BREAK: 64, - CASE: 65, - CATCH: 66, - CONST: 67, - CONTINUE: 68, - DEBUGGER: 69, - DEFAULT: 70, - DELETE: 71, - DO: 72, - ELSE: 73, - EXPORT: 74, - FALSE: 75, - FINALLY: 76, - FOR: 77, - FUNCTION: 78, - IF: 79, - IMPORT: 80, - IN: 81, - INSTANCEOF: 82, - LET: 83, - MODULE: 84, - NEW: 85, - NULL: 86, - RETURN: 87, - SWITCH: 88, - THIS: 89, - THROW: 90, - TRUE: 91, - TRY: 92, - TYPEOF: 93, - VAR: 94, - VOID: 95, - YIELD: 96, - WHILE: 97, - WITH: 98 -}; - -var checkTypes = { - // trivial. - TRIVIAL: 1, - - // defines functions, and so might or might not - // be trivial in the end. - TRIVIAL_DEFINES_FUNCTION: 2, - - NONTRIVIAL: 3, - - // Free - FREE: 4, - FREE_SINGLE_ITEM: 5, - WHITELISTED: 6 -}; - -exports.checkTypes = checkTypes; - -exports.emptyTypeObj = function () { - return { - 'type': null, - 'reason': null - }; -}; - -exports.nontrivialWithComment = function (comment) { - return { - 'type': checkTypes.NONTRIVIAL, - 'reason': comment - }; -}; - -exports.trivialWithComment = function (comment) { - return { - 'type': checkTypes.TRIVIAL, - 'reason': comment - }; -}; - -exports.trivialFuncWithComment = function (comment) { - return { - 'type': checkTypes.TRIVIAL_DEFINES_FUNCTION, - 'reason': comment - }; -}; - -exports.freeWithComment = function (comment) { - return { - 'type': checkTypes.FREE, - 'reason': comment - }; -}; - -exports.singleFreeWithComment = function (comment) { - return { - 'type': checkTypes.FREE_SINGLE_ITEM, - 'reason': comment - }; -}; - -exports.whitelisted = function (comment) { - return { - 'type': checkTypes.WHITELISTED, - 'reason': comment + ' -- whitelisted by user' - }; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/free_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/free_checker.js deleted file mode 100644 index f5690f2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/free_checker.js +++ /dev/null @@ -1,227 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - - - -var licenses = require('js_checker/license_definitions'); -var simpleStorage = require("sdk/simple-storage"); -const LAZY = licenses.types.LAZY; -var licenseRegex = []; -const END_OF_SCRIPT = require('html_script_finder/bug_fix').END_OF_SCRIPT; -const types = require("js_checker/constant_types"); - -const token = types.token; - -var patternUtils = require('js_checker/pattern_utils').patternUtils; - -var licStartLicEndRe = /@licstartThefollowingistheentirelicensenoticefortheJavaScriptcodeinthis(?:page|file)(.*)?@licendTheaboveistheentirelicensenoticefortheJavaScriptcodeinthis(?:page|file)/mi; -var licenseMagnet = /.*@license ?(magnet\:\?xt=urn\:btih\:[0-9A-Za-z]+).*/; -var licenseEndMagnet = /.*@license-end.*/i; -exports.freeCheck = { - initLicenses: function (licenses) { - for (var item in licenses) { - this.stripLicenseToRegexp(licenses[item]); - } - }, - - /** - * stripLicenseToRegexp - * - * Removes all non-alphanumeric characters except for the - * special tokens, and replace the text values that are - * hardcoded in license_definitions.js - * - */ - stripLicenseToRegexp: function (license) { - var i = 0, - max = license.licenseFragments.length, - item; - - for (; i < max; i++) { - item = license.licenseFragments[i]; - item.regex = patternUtils.removeNonalpha(item.text); - - if (license.licenseFragments[i].type === LAZY) { - - // do not permit words before. Since "Not" could be added - // and make it nonfree. e.g.: Not licensed under the GPLv3. - item.regex = '^(?!.*not).*' + item.regex; - - } - - item.regex = new RegExp(patternUtils.replaceTokens(item.regex), 'i'); - } - - return license; - }, - - /** - * checkNodeFreeLicense - * - * Check if the node mentions a free license - * in one of its comments. - * - */ - checkNodeFreeLicense: function (n, queue) { - var strippedComment, - magnetLink, - comment = this.getComment(n), - list = licenses.licenses, - i, j, - max, - regex, - frag, - matchLicStart, - matchMagnet, - license, - isMagnetValid = false; - - if (n.counter === 2 && - n.parent != undefined && - n.parent.type === token.SCRIPT && - comment != undefined && - comment != " ") { - strippedComment = patternUtils.removeNonalpha(comment); - matchLicStart = strippedComment.match(licStartLicEndRe); - console.debug("matchMagnet is", matchMagnet); - if (matchLicStart) { - strippedComment = matchLicStart[1]; - for (license in list) { - frag = list[license].licenseFragments; - max = list[license].licenseFragments.length; - for (i = 0;i < max; i++) { - if (frag[i].regex.test(strippedComment)) { - return {licenseName: list[license].licenseName, - type: types.checkTypes.FREE} ; - - } - } - } - } - return this.matchMagnet(comment, queue); /// check for @license -- @license-end notation. - } - - }, - - /** - * matchMagnet - * Attempts to find valid @license [magnet] - * and @license-end notation. - */ - matchMagnet: function (comment, queue) { - let matchMagnet = comment.match(licenseMagnet); - if (matchMagnet) { - let magnetLinkRe = new RegExp(matchMagnet[1].replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")); - let list = licenses.licenses; - let queue_end = queue.length; - - for (var license in list) { - frag = list[license].canonicalUrl; - console.debug("frag is ", frag); - if (frag != undefined) { - max = list[license].canonicalUrl.length; - console.debug("max is", max); - for (i = 0;i < max; i++) { - console.debug("current frag is", frag[i]); - if (frag[i].match(magnetLinkRe)) { - for (let i = 0; i < queue_end; i++) { - console.debug(queue[i]); - let n = queue[i]; - comment = this.getComment(n); - if (comment != undefined && - comment.match(licenseEndMagnet) && - this.checkIsLastNode(n)) { - // found a closing match. Just accept this script. - return {licenseName: list[license].licenseName, - type: types.checkTypes.FREE_SINGLE_ITEM}; - } - } - } - } - } - } - } - return; - }, - - /** - * checkIsLastJsNode. - * returns true if n is the last node. - * Or if nodes before it are only comments etc (not valid code.) - * A special LibreJS node is appended at the end of a script tree to - * check if this is the last (and also for narcissus to keep the last comment - * in the tree.) - * TODO: Refactor LibreJS so that END nodes can have a comment. - */ - checkIsLastNode: function (n) { - // first check if the comment is part of the very last statement. - if (n.value == "this" && n.next == undefined) { - // just make sure the last node is indeed our harmless bit of - // js. - if (n.tokenizer) { - let source = n.tokenizer.source; - let substring = source.substr(n.start, n.end+23); - if (substring == END_OF_SCRIPT) { - return true; - } - else { - console.debug("substring is ", substring); - return false; - } - } - console.debug("Hurra! This is the end of our script"); - return true; - } - - // isn't our last node. - return false; - }, - - /** - * getComment - * - * Grab the comment(s) from the node. Concatenates - * multiple comments. - * - */ - getComment: function (n) { - - var i = 0, length, comment = ""; - - if (n.blockComments == undefined || n.blockComments == " ") { - return; - } - - length = n.blockComments.length; - if (length > 0) { - for (; i < length; i++) { - comment += n.blockComments[i]; - } - } - if (comment == "") { - return; - } - return comment; - - } - -}; - -exports.freeCheck.initLicenses(licenses.licenses); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/js_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/js_checker.js deleted file mode 100644 index a96eea7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/js_checker.js +++ /dev/null @@ -1,513 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -const narcissusWorker = require("narcissus_parser/narcissus_worker"); - -const nonTrivialModule = require("js_checker/nontrivial_checker"); -const freeChecker = require("js_checker/free_checker"); -const relationChecker = require("js_checker/relation_checker"); -const types = require("js_checker/constant_types"); - -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; -var isDryRun = require("addon_management/prefchange").isDryRun; - -var checkTypes = types.checkTypes; - -const token = types.token; - -// for setTimeout. -const timer = require("sdk/timers"); - -var callbackMap = {}; - -/** - * This module needs to be updated so that it is asynchronous - * and to reduce CPU usage -- - * - * Partly already done in: - * https://gitorious.org/librejs/librejs/blobs/async/lib/js_checker/js_checker.js - * data/complain/contact_finder.js on how to proceed. - * - */ -/** - * - * Pairs a hash with a given callback - * method from an object. - * - */ -var setHashCallback = function(hash, callback, notification) { - console.debug("hash is now ", hash); - if (hash in callbackMap && isDryRun()) { - // work around for issue with dryrun after - // checking box. - // do nothing. - callbackMap[hash] = callback; - } - else if (hash in callbackMap) { - // console.debug("callback", callbackMap[hash]); - notification.close(); - throw Error("already being checked."); - } else { - callbackMap[hash] = callback; - } - console.debug("callback is type: ", callback.constructor); - //callbackMap[hash] = callback; -}; - -var removeHashCallback = function(hash) { - if (hash in callbackMap) { - delete callbackMap[hash]; - } -}; - -/** - * find callback and return result (parse tree). - * - */ -exports.callbackHashResult = function(hash, result) { - try { - callbackMap[hash](result, hash); - } catch (x) { - console.debug('error in jsChecker', x, 'hash:', hash); - // return tree as false. - console.debug("Error with", x); - if (typeof callbackMap[hash] == 'function') { - callbackMap[hash](false, hash); - } else { - console.debug('callbackHashResult Error', x); - } - } - // remove callback after it's been called. - removeHashCallback(hash); -}; - -var JsChecker = function() { - this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - this.nonTrivialChecker = null; - this.freeToken = false; - this.nontrivialness = false; - this.parseTree = null; - this.relationChecker = null; - this.jsCode = null; - this.resultReady = null; - this.notification = null; - this.walkTreeCancelled = false; - this.shortText = null; - this.hash = null; - this.queue = null; // will contain the nodes of the script. -}; - -/** - * searchJs - * - * Takes in some javascript code (as string). - * Uses Narcissus parser to build an abstract syntax tree. - * Checks for trivialness. - * - */ -JsChecker.prototype.searchJs = function(jsCode, resultReady, url) { - var that = this; - var bugfix = require('html_script_finder/bug_fix').narcissusBugFixLibreJS; - this.url = url; - this.resultReady = resultReady; - this.jsCode = jsCode; - this.shortText = jsCode.replace(bugfix, '').substring(0,100); - this.notification = require("ui/notification") - .createNotification(this.shortText).notification; - - var verbatimCode = this.jsCode.replace(bugfix, ''); - this.hash = scriptsCached.getHash(verbatimCode); - var isCached = scriptsCached.isCached(verbatimCode, this.hash); - if (isCached) { - console.debug("We have it cached indeed!"); - // there is an existing entry for this exact copy - // of script text. - console.debug('this script result is cached', this.hash, isCached.result.type); - console.debug("Return right away"); - // we are not generating a parse tree. - this.parseTree = {}; - // fake the result is from parse tree. - this.parseTree.freeTrivialCheck = isCached.result; - - this.relationChecker = isCached.relationChecker; - // leave without doing parsing/analysis part. - this.resultReady(); - this.removeNotification(); - return; - } - - try { - // no cache, continue. - this.relationChecker = relationChecker.relationChecker(); - this.freeToken = types.emptyTypeObj(); - this.nontrivialness = types.emptyTypeObj(); - - // use this.hash to keep track of comments made by the nontrivial checker code - // about why/how the code is found to be nontrivial. - this.nonTrivialChecker = nonTrivialModule.nonTrivialChecker(this.hash); - - // register callback and hash. So that result - // can be passed. - setHashCallback(this.hash, this.handleTree.bind(this), this.notification); - - // parse using ChromeWorker. - narcissusWorker.parse(this.jsCode, this.hash); - } catch (x) { - console.debug('error', x); - this.handleTree(false, x); - this.removeNotification(); - } -}; - -JsChecker.prototype.handleTree = function(tree, errorMessage) { - var that = this; - - if (tree == false || tree == undefined) { - // error parsing tree. Just return nonfree nontrivial. - this.parseTree = {}; - this.parseTree.freeTrivialCheck = types.nontrivialWithComment( - 'error parsing: ' + errorMessage); - - // cache result with hash of script for future checks. - scriptsCached.addEntry(this.jsCode, this.parseTree.freeTrivialCheck, - this.relationChecker, true, this.url); - this.resultReady(); - } else { - try { - // no need to keep parseTree in property - this.parseTree = {}; //tree; - console.debug(tree); - this.walkTree(tree); - } catch (x) { - console.debug(x, x.lineNumber, x.fileName); - } - } -}; - -/** - * getCheckerResult - * - * Callback to Assign result from walkTree to property. - * reset parse tree. create cache entry. - * - */ -JsChecker.prototype.getCheckerResult = function(result) { - // done with parse tree. Get rid of it. - this.parseTree = {}; - this.removeNotification(); - - this.parseTree.nonTrivialChecker = this.nonTrivialChecker; - - // actual result stored here. hack since we used parseTree before. - this.parseTree.freeTrivialCheck = result; - - // cache result with hash of script for future checks. - scriptsCached.addEntry(this.jsCode, this.parseTree.freeTrivialCheck, - this.relationChecker, true, this.url); - - this.resultReady(); -}; - -/** - * trivialCheck - * - * Runs nodes through a series of conditional statements - * to find out whether it is trivial or not. - * - * @param {object} n. The current node being studied. - * @param {string} t. The type of node being studied - * (initializer, functionbody, try block, ...) - * - */ -JsChecker.prototype.trivialCheck = function(n) { - return this.nonTrivialChecker.checkNontrivial(n); -}; - -/** - * freeCheck - * - * Check if comments above current node could be a free licence. - * If it is, then the script will be flagged as free. - * - * @param {object} n. The current node being studied. - * (initializer, functionbody, try block, ...) - * - */ -JsChecker.prototype.freeCheck = function(n, ntype) { - var check = freeChecker.freeCheck.checkNodeFreeLicense(n, this.queue); - return check; -}; - -/** - * walkTree - * - * An iterative functionwalking the parse tree generated by - * Narcissus. - * - * @param {object} node. The original node. - * - */ -JsChecker.prototype.walkTree = function(node) { - var queue = [node]; - var i, - len, - n, counter = 0, - result, - processQueue, - that = this; - - this.queue = queue; // set as property. - - // set top node as visited. - node.visited = true; - - /** - * functionwalking the tree for a given - * amount of time, before calling itself again. - */ - processQueue = function() { - var nodeResult, end; - - // record start time of functionexecution. - var start = Date.now(); - - if (that.walkTreeCancelled) { - // tree walking already completed. - return; - } - - while (queue.length) { - n = queue.shift(); - n.counter = counter++; - console.debug("Under review", n.type); - if (n.children != undefined) { - // fetch all the children. - len = n.children.length; - for (i = 0; i < len; i++) { - if (n.children[i] != undefined && - n.children[i].visited == undefined) { - // figure out siblings. - if (i > 0) { - n.children[i].previous = n.children[i-1]; - } - - if (i < len) { - n.children[i].next = n.children[i+1]; - } - // set parent property. - n.children[i].parent = n; - n.children[i].visited = true; - queue.push(n.children[i]); - } - } - } - - if (n.type != undefined) { - // fetch all properties that may have nodes. - for (var item in n) { - if (item != 'tokenizer' && - item != 'children' && - item != 'length' && - n[item] != null && - typeof n[item] === 'object' && - n[item].type != undefined && - n[item].visited == undefined) { - n[item].visited = true; - // set parent property - n[item].parent = n; - queue.push(n[item]); - } - } - } - - that.checkNode(n); - - if (that.freeToken.type === checkTypes.FREE || - that.freeToken.type === checkTypes.FREE_SINGLE_ITEM) { - // nothing more to look for. We are done. - that.walkTreeComplete(that.freeToken); - return; - } - else if (that.nontrivialness.type === checkTypes.NONTRIVIAL) { - // nontrivial - // we are done. - that.walkTreeComplete(that.nontrivialness); - return; - } - // call processQueue again if needed. - end = Date.now(); - - if (queue.length) { - // there are more nodes in the queue. - - if ((end - start) > 30) { - - // been running more than 20ms, pause - // for 10 ms before calling processQueue - // again. - timer.setTimeout(processQueue, 8); - return; - } - } else { - // we are done. - that.removeNotification(); - that.walkTreeComplete(); - return; - } - } - }; - - if (node.type === token.SCRIPT) { - // this is the global scope. - node.global = true; - node.parent = null; - - this.relationChecker.storeGlobalDeclarations(node); - - queue.push(node); - processQueue(); - } -}; - -/** - * set walk tree cancelled bool as true. - * the walk tree method won't run after the variable - * is set to true. - */ -JsChecker.prototype.cancelWalkTree = function() { - // prevent any further work on node codes. - this.walkTreeCancelled = true; -}; - -/** - * walkTreeComplete - * - * Trigger when the walkTree has been completed or - * when it has been cut short. - * - */ -JsChecker.prototype.walkTreeComplete = function(result) { - var that = this; - this.removeNotification(); - - if (this.walkTreeCancelled) { - // we already triggered complete. - return; - } - - // we set the token to cancel further processing. - this.cancelWalkTree(); - - if (result != undefined) { - // walkTree was returned faster, use it instead. - this.getCheckerResult(result); - - // we are done. - return; - } - - // if all code was fully analyzed. - if (this.nontrivialness.type === checkTypes.NONTRIVIAL) { - this.getCheckerResult(this.nontrivialness); - } else if (this.freeToken.type === checkTypes.FREE) { - // this is free and may or may not define functions, we don't care. - this.getCheckerResult(this.freeToken); - } else if (this.nontrivialness.type === - checkTypes.TRIVIAL_DEFINES_FUNCTION) { - // trivial scripts should become nontrivial if an external script. - // it may or may not be trivial if inline. - this.getCheckerResult(this.nontrivialness); - } else { - // found no nontrivial constructs or free license, so it's - // trivial. - - this.getCheckerResult( - types.trivialFuncWithComment("This script is trivial")); - } -}; - - -/** - * checkNode - * - * checks a single node. - * - */ -JsChecker.prototype.checkNode = function(n) { - var sub; - var fc = this.freeCheck(n); - var tc = this.trivialCheck(n); - - var nodeResult; - - // check if identifier may be window property (assumption). - this.relationChecker.checkIdentifierIsWindowProperty(n); - - /*if (fc) { - console.debug("FC is", fc, "type is", fc.type); - }*/ - if (fc && fc.type == checkTypes.FREE) { - // this is free! - // freeToken is persistent across nodes analyzed and valid - // for an entire script. - this.freeToken = types.freeWithComment( - "Script appears to be free under the following license: " + - fc.licenseName); - return; - } - else if (fc && fc.type == checkTypes.FREE_SINGLE_ITEM) { - console.debug("free single item"); - this.freeToken = types.singleFreeWithComment( - "Script appears to be free under the following license: " + - fc.licenseName); - return; - } - - if (tc) { - if (tc.type === checkTypes.NONTRIVIAL) { - // nontrivial_global is deprecated - this.nontrivialness = tc; - return; - } - - else if (tc.type === checkTypes.TRIVIAL_DEFINES_FUNCTION) { - this.nontrivialness = tc; - return; - } - } -}; - -JsChecker.prototype.removeNotification = function() { - if (this.notification && this.notification.close) { - console.debug("removing", this.shortText); - // remove notification early on. - this.notification.close(); - this.notification = null; - } -}; - -// create an instance of JsChecker -exports.jsChecker = function() { - return new JsChecker(); -}; - -exports.removeHashCallback = removeHashCallback; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/license_definitions.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/license_definitions.js deleted file mode 100644 index 36711fd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/license_definitions.js +++ /dev/null @@ -1,196 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -exports.types = { - SHORT: 'short', - LAZY: 'lazy', - FULL: 'full' -}; - -var type = exports.types; - -/** - * List of all the licenses. - * Currently only short substrings are used with regex. - */ -exports.licenses = { - CC0: { - licenseName: 'Creative Commons CC0 1.0 Universal', - canonicalUrl: ['http://creativecommons.org/publicdomain/zero/1.0/legalcode', - 'magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt'], - identifier: 'CC0-1.0', - licenseFragments: [] - }, - - - gplv2: { - licenseName: 'GNU General Public License (GPL) version 2', - canonicalUrl: ['http://www.gnu.org/licenses/gpl-2.0.html', - 'magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt'], - identifier: 'GNU-GPL-2.0', - licenseFragments: [{text: "<THISPROGRAM> 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.", type: type.SHORT}, - {text:"Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the \"GPL\"), or the GNU Lesser General Public License Version 2.1 or later (the \"LGPL\"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of either the GPL or the LGPL, and not to allow others to use your version of this file under the terms of the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the GPL or the LGPL. If you do not delete the provisions above, a recipient may use your version of this file under the terms of any one of the MPL, the GPL or the LGPL.", type: type.SHORT}] - }, - - gplv3: { - licenseName: 'GNU General Public License (GPL) version 3', - canonicalUrl: ['http://www.gnu.org/licenses/gpl-3.0.html', - 'magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt'], - identifier: 'GNU-GPL-3.0', - licenseFragments: [ - {text: "The JavaScript code in this page is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License (GNU GPL) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The code is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. As additional permission under GNU GPL version 3 section 7, you may distribute non-source (e.g., minimized or compacted) forms of that code without the copy of the GNU GPL normally required by section 4, provided you include this license notice and a URL through which recipients can access the Corresponding Source.", type: type.SHORT}, - {text: "<THISPROGRAM> 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.", type: type.SHORT}] - }, - - gnuAllPermissive: { - licenseName: 'GNU All-Permissive License', - licenseFragments: [{text: "Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.", type: type.SHORT}] - }, - - apache_2License: { - licenseName: 'Apache License, Version 2.0', - canonicalUrl: ['http://www.apache.org/licenses/LICENSE-2.0', - 'magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt'], - identifier: 'Apache-2.0', - licenseFragments: [{text: "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0", type: type.SHORT}] - }, - - lgpl21: { - licenseName: 'GNU Lesser General Public License, version 2.1', - canonicalUrl: ['http://www.gnu.org/licenses/lgpl-2.1.html', - 'magnet:?xt=urn:btih:5de60da917303dbfad4f93fb1b985ced5a89eac2&dn=lgpl-2.1.txt'], - identifier: 'GNU-LGPL-2.1', - licenseFragments: [{text: "<THISLIBRARY> is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.", type: type.SHORT}] - }, - - lgplv3: { - licenseName: 'GNU Lesser General Public License, version 3', - canonicalUrl: ['http://www.gnu.org/licenses/lgpl-3.0.html', - 'magnet:?xt=urn:btih:0ef1b8170b3b615170ff270def6427c317705f85&dn=lgpl-3.0.txt'], - identifier: 'GNU-LGPL-3.0', - licenseFragments: [{text: "<THISPROGRAM> is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.", type: type.SHORT}] - }, - - agplv3: { - licenseName: 'GNU AFFERO GENERAL PUBLIC LICENSE version 3', - canonicalUrl: ['http://www.gnu.org/licenses/agpl-3.0.html', - 'magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt'], - identifier: 'GNU-AGPL-3.0', - licenseFragments: [{text: "<THISPROGRAM> is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.", type: type.SHORT}] - }, - - boostSoftware: { - licenseName: 'Boost Software License', - canonicalUrl: ["magnet:?xt=urn:btih:89a97c535628232f2f3888c2b7b8ffd4c078cec0&dn=Boost-1.0.txt"], - licenseFragments: [{text: "Boost Software License <VERSION> <DATE> Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following", type: type.SHORT}] - }, - - bsd3: { - licenseName: "The BSD 3-Clause License", - canonicalUrl: ["magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt"], - licenseFragments: [{text: "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.", type: type.SHORT}] - }, - - bsd2: { - licenseName: "The BSD 2-Clause License", - licenseFragments: [{text: "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", type: type.SHORT}] - }, - - mozillaPublicLicense_2_0: { - licenseName: 'Mozilla Public License Version 2.0', - identifier: 'MPL-2.0', - canonicalUrl: ['http://www.mozilla.org/MPL/2.0', - 'magnet:?xt=urn:btih:3877d6d54b3accd4bc32f8a48bf32ebc0901502a&dn=mpl-2.0.txt'], - licenseFragments: [{text: "This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.", type: type.SHORT }] - }, - - expat: { - licenseName: 'Expat License (sometimes called MIT Licensed)', - identifier: 'Expat', - canonicalUrl: ['http://www.jclark.com/xml/copying.txt', - 'magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt'], - licenseFragments: [{text: "Copyright <YEAR> <NAME> 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.", type: type.SHORT}] - }, - - X11: { - licenseName: 'X11 License', - canonicalUrl: ['magnet:?xt=urn:btih:5305d91886084f776adcf57509a648432709a7c7&dn=x11.txt'], - licenseFragments: [{text: "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.", type: type.SHORT}] - }, - - XFree86: { - licenseName: "XFree86 License", - identifier: 'Modified-BSD', - canonicalUrl: ['http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3', 'http://www.xfree86.org/current/LICENSE4.html', 'magnet:?xt=urn:btih:12f2ec9e8de2a3b0002a33d518d6010cc8ab2ae9&dn=xfree86.txt'], - licenseFragments: [{text: "All rights reserved.\nPermission 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:\n1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution, and in the same place and form as other copyright, license and disclaimer information.\n3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: \"This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors\", in the same place and form as other third-party acknowledgments. Alternately, this acknowledgment may appear in the software itself, in the same form and location as other such third-party acknowledgments.4. Except as contained in this notice, the name of The XFree86 Project, Inc shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The XFree86 Project, Inc.", type: type.SHORT} - ] - }, - - FreeBSD: { - licenseName: "FreeBSD License", - canonicalUrl: ['http://www.freebsd.org/copyright/freebsd-license.html', - 'magnet:?xt=urn:btih:87f119ba0b429ba17a44b4bffcab33165ebdacc0&dn=freebsd.txt'], - licenseFragments: [{text: "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", type: type.SHORT}] - }, - - ISC: { - licenseName: "The ISC License", - canonicalUrl: ['https://www.isc.org/downloads/software-support-policy/isc-license/', - 'magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt'], - licenseFragments: [{text: "Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.", type: type.SHORT}, - {text: "Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.", type: type.SHORT}] - }, - - jQueryTools: { - licenseName: "jQuery Tools", - licenseFragments: [{text: 'NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.', type: type.SHORT}] - }, - - ArtisticLicense2: { - licenseName: "Artistic License 2.0", - canonicalUrl: ["http://www.perlfoundation.org/artistic_license_2_0", - "magnet:?xt=urn:btih:54fd2283f9dbdf29466d2df1a98bf8f65cafe314&dn=artistic-2.0.txt"], - licenseFragments: [] - }, - - PublicDomain: { - licenseName: "Public Domain", - canonicalUrl: ['magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a&dn=public-domain.txt'], - licenseFragments: [] - }, - - CPALv1: { - licenseName: 'Common Public Attribution License Version 1.0 (CPAL)', - canonicalUrl: [ - 'http://opensource.org/licenses/cpal_1.0', - 'magnet:?xt=urn:btih:84143bc45939fc8fa42921d619a95462c2031c5c&dn=cpal-1.0.txt' - ], - identifier: 'CPAL-1.0', - licenseFragments: [ - { - text: 'The contents of this file are subject to the Common Public Attribution License Version 1.0', - type: type.SHORT - }, - { - text: 'The term "External Deployment" means the use, distribution, or communication of the Original Code or Modifications in any way such that the Original Code or Modifications may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Code or Modifications as a distribution under section 3.1 and make Source Code available under Section 3.2.', - type: type.SHORT - } - ] - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/nontrivial_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/nontrivial_checker.js deleted file mode 100644 index 0f7332a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/nontrivial_checker.js +++ /dev/null @@ -1,389 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -const types = require("js_checker/constant_types"); - -// constants from Narcissus for function types. -const DECLARED_FORM = 0, EXPRESSED_FORM = 1, STATEMENT_FORM = 2; - -const token = types.token; - -var checkTypes = types.checkTypes; - -var utils = { - - /** - * nodeContains - * Checks that node contains both a type and a value. - * Shortcut to check for null/undefined. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if matching. - */ - nodeContains: function (n, type, value) { - if (n != undefined) { - return n.type === type && - n.value === value; - } - }, - - - /** - * isType - * Checks that node is of a certain type. - * Shortcut to check for null/undefined. - * - * @param {object} n. The current node being studied. - * @return {boolean}. True if it's the right type. - */ - isType: function (n, type) { - return n != undefined && n.type === type; - }, - - isNotType: function (n, type) { - return n != undefined && n.type !== type; - }, - - - /** - * hasChildren - * - * Checks the token on the left - * and on the right. - * - * @param {object} n. The current node being studied. - * @param {leftType} token constant. The type on the - * left. - * @param {rightType} token constant. The type of child - * on the right - * - */ - hasChildren: function (n, leftType, rightType) { - if (types == undefined) { - return false; - } - return this.isType(n.children[0], leftType) && - this.isType(n.children[1], rightType); - }, - - - /** - * findScriptTag - * - * This method should probably be replaced with DOM testing - * as regex is rather insufficiant, and this wouldn't cover - * tricky constructs as shown in http://ha.ckers.org/xss.html. - */ - findScriptTag: function (n) { - return n.value != undefined && - /<script[^>]*?>/i.test(n.value); - } - -}; - -var nonTrivialChecker = { - - definesFunction: false, - hash: null, - /** - * definesFunctionFound - * - * Returns true if it finds a node of type FUNCTION - * that isn't a callback or an IIFE. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - */ - definesFunctionFound: function (n) { - var isFunction = false; - if (n.type === token.FUNCTION && - n.body != undefined) { - - if (n.functionForm !== token.DECLARED_FORM && - ((n.parent.type === token.LIST && - n.parent.parent.type === token.CALL) || - n.parent.type === token.CALL) && - n.name == undefined) { - // this is a callback or an immediately - // invoked function expression "IIFE". - isFunction = false; - } else { - // this is a regular function declaration or - // function expression assigned to a variable. - //console.log("THIS DEFINES FUNCTION"); - isFunction = true; - } - - } - - // look for Function constructor. - if (n.type === token.IDENTIFIER && - n.value === 'Function' && - (n.parent.type === token.NEW_WITH_ARGS || - n.parent.type === token.CALL)) { - // this is a Function constructor. - //console.log("THIS DEFINES FUNCTION"); - isFunction = true; - } - - return isFunction; - }, - - - /** - * invokesEval - * - * Returns true (nontrivial) if it finds any use of - * the eval function. For simplicity, we assume any - * use of an identifier "eval" is the eval function. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - */ - invokesEval: function (n) { - return (n.type === token.CALL && - utils.nodeContains(n.children[0], token.IDENTIFIER, 'eval') || - n.type === token.IDENTIFIER && n.value === 'eval'); - }, - - /** - * evalIdentifier - * - * Returns true (nontrivial) if it finds any use of - * the eval function. For simplicity, we assume any - * use of an identifier "eval" is the eval function. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - */ - evalIdentifier: function (n) { - return n.type === token.IDENTIFIER && - n.value === 'eval'; - }, - - - /** - * invokesMethodBracketSuffix - * - * Finds a method being invoked using the bracket suffix notation - * rather than the dot notation. It is difficult without keeping track of - * variable values to check for what method is actually being called. - * So we're just flagging any use of this construct as nontrivial. - * e.g., should catch: xhr[a+b]('GET', 'http://www.example.com'); - * Should not catch other uses such as: myArray[num]; - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - */ - invokesMethodBracketSuffix: function (n) { - return n.type === token.CALL && utils.isType(n.children[0], token.INDEX); - }, - - - /** - * createsXhrObject - * - * Creates an xhr object. - * Since all "new XMLHttpRequest", "XMLHttpRequest()", - * and "new window.XMLHttpRequest" instantiate the xhr object, - * we assume (without further proof) that any use - * of the identifier "XMLHttpRequest" and "ActiveXObject" - * is an xhr object. - * Constructs like window[a+b]() are already caught by the - * bracket suffix check. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - */ - createsXhrObject: function (n) { - return (n.type === token.IDENTIFIER) && - (n.value === 'XMLHttpRequest' || - n.value === 'ActiveXObject'); - }, - - - /** - * invokesXhrOpen - * - * Here we assume the call of an open method must be an xhr request - * (and not some other object) by checking the number of arguments. - * In most cases this method won't be used since createsXhrObject - * will already have caught the xhr. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - * - */ - invokesXhrOpen: function (n) { - return n.type === token.CALL && - utils.hasChildren(n, token.DOT, token.LIST) && - utils.isType(n.children[0].children[0], token.IDENTIFIER) && - utils.nodeContains(n.children[0].children[1], token.IDENTIFIER, 'open') && - n.children[1].children.length > 1; - }, - - - /** - * createsScriptElement - * - * Checks for document.createElement() that create a script. In the case - * it creates an element from a variable, we assume it's a script. In the - * future we might want to check for the value of that string variable - * (e.g., if a variable is assigned 'script', raise a flag) - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - * - * - */ - createsScriptElement: function (n) { - return n.type === token.CALL && - utils.hasChildren(n, token.DOT, token.LIST) && - utils.isType(n.children[0].children[0], token.IDENTIFIER) && - utils.nodeContains(n.children[0].children[1], token.IDENTIFIER, 'createElement') && - (utils.nodeContains(n.children[1].children[0], token.STRING, 'script') || - utils.isType(n.children[1].children[0], token.IDENTIFIER)); - }, - - - /** - * writesScriptAsHtmlString - * - * catches myObj.write('<script></script>'); - * or any myObj.write(myStringVariable); - * or concatenation such as: - * myObj.write('<scri' + stringVariable); - * or 'something' + 'somethingelse'. - * - * To check for javascript here we might want to look at the list - * from ha.ckers.org/xss.html for the future. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - * - */ - writesScriptAsHtmlString: function (n) { - var listArg; - - if (n.type === token.CALL && - utils.hasChildren(n, token.DOT, token.LIST) && - utils.isType(n.children[0].children[0], token.IDENTIFIER) && - utils.nodeContains(n.children[0].children[1], token.IDENTIFIER, 'write')) { - - if (utils.isNotType(n.children[1].children[0], token.STRING)) { - // return true if any operation or concatenation. - // We are cautious (as it could - // embed a script) and flag this as nontrivial. - - return true; - } - return utils.findScriptTag(n.children[1].children[0]); - } else { - return false; - } - }, - - /** - * nontrivial anytime we see an identifier as innerHTML - */ - innerHTMLIdentifier: function (n) { - if ((n.type === token.IDENTIFIER || - n.type === token.STRING) && - n.value === 'innerHTML') { - return true; - } - }, - - - /** - * checkNontrivial - * - * Contains all the conditionals that try to identify, - * step by step, all code that could be flagged as - * nontrivial. - * - * @param {object} n. The current node being studied. - * @return {boolean} . True if found. - * - */ - checkNontrivial: function (n, t) { - - if (n.type === token.IDENTIFIER && this.evalIdentifier(n)) { - //console.log("NONTRIVIAL: eval has been found in code"); - return types.nontrivialWithComment("NONTRIVIAL: eval has been found in code"); - } - - if (this.innerHTMLIdentifier(n)) { - //console.log("NONTRIVIAL: innerHTML identifier"); - return types.nontrivialWithComment("NONTRIVIAL: innerHTML identifier"); - } - - // the node is an identifier - if (n.type === token.IDENTIFIER && this.createsXhrObject(n)) { - //console.log('NONTRIVIAL: Creates an xhr object'); - return types.nontrivialWithComment('NONTRIVIAL: Creates an xhr object'); - } - - // this is a method/function call - if (n.type === token.CALL) { - - if (this.invokesEval(n)) { - //console.log("NONTRIVIAL: eval has been found in code"); - return types.nontrivialWithComment("NONTRIVIAL: eval has been found in code"); - } - - if (this.invokesMethodBracketSuffix(n)) { - //console.log('NONTRIVIAL: square bracket suffix method call detected'); - return types.nontrivialWithComment("NONTRIVIAL: eval has been found in code"); - } - - if (this.invokesXhrOpen(n)) { - //console.log('NONTRIVIAL: an open method similar to xhr.open is used'); - return types.nontrivialWithComment('NONTRIVIAL: square bracket suffix method call detected'); - } - - if (this.createsScriptElement(n)) { - //console.log('NONTRIVIAL: creates script element dynamically.'); - return types.nontrivialWithComment('NONTRIVIAL: an open method similar to xhr.open is used'); - } - - if (this.writesScriptAsHtmlString(n)) { - //console.log('NONTRIVIAL: writes script as html dynamically.'); - return types.nontrivialWithComment('NONTRIVIAL: creates script element dynamically.'); - } - } - - // The node is a function definition. - // Most common occurence. - if (this.definesFunctionFound(n)) { - return types.trivialFuncWithComment("Script is trivial but defines one or more functions"); - } - - // found nothing else, so trivial. - return types.trivialWithComment("Script is trivial"); - - } -}; - -exports.nonTrivialChecker = function () { - - var checker = Object.create(nonTrivialChecker); - - return checker; -};
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/pattern_utils.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/pattern_utils.js deleted file mode 100644 index 10874fc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/pattern_utils.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -exports.patternUtils = { - /** - * removeNonalpha - * - * Remove all nonalphanumeric values, except for - * < and >, since they are what we use for tokens. - * - */ - removeNonalpha: function (str) { - var regex = /[^a-z0-9<>@]+/gi; - return str.replace(regex, ''); - }, - removeWhitespace: function (str) { - return str.replace(/[ \t\r\n]+/gmi,""); - }, - replaceTokens: function (str) { - var regex = /<.*?>/gi; - return str.replace(regex, '.*?'); - } -};
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_checker.js deleted file mode 100644 index b5dad1b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_checker.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var privacyThreatJs = require('js_checker/privacy_threat_definitions.js'); -var patternUtils = require('js_checker/pattern_utils').patternUtils; - -exports.privacyCheck = { - - checkScriptPrivacyThreat: function (currentScript) { - var list = privacyThreatJs.js, - i, - jsRegexp, - match, - max, - check; - - currentScript = patternUtils.removeWhitespace(currentScript); - - for (var item in list) { - max = list[item].length; - - for (i = 0; i < max; i++) { - if (list[item][i].test(currentScript)) { - return true; - } - } - - } - } - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_threat_definitions.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_threat_definitions.js deleted file mode 100644 index ea6d279..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_threat_definitions.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -exports.js = { - /** - * googleAnalytics - * Tracking code for Google Analytics. - * It corresponds to: - * var _gaq = _gaq || []; - * _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); - * _gaq.push(['_trackPageview']); - * - * (function() { - * var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - * ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - * var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - * })(); - * - */ - googleAnalytics: [/var_gaq=_gaq\|\|\[\];_gaq\.push\(\['_setAccount','UA[0-9\-]*?'\]\);(_gaq.push\(\['_setDomainName','[a-z\.]*?'\]\);)?_gaq\.push\(\['_trackPageview'\]\);\(function\(\){varga=document\.createElement\('script'\);ga\.type='text\/javascript\';ga\.async=true;ga\.src=\(\'https:\'==document\.location\.protocol\?'https:\/\/ssl':'http:\/\/www'\)\+'\.google\-analytics\.com\/ga\.js';vars=document\.getElementsByTagName\('script'\)\[0\];s\.parentNode\.insertBefore\(ga,s\);}\)\(\);/ig, - /vargaJsHost\=\(\(\"https\:\"\=\=document\.location\.protocol\)\?\"https\:\/\/ssl\.\"\:\"http\:\/\/www\.\"\)\;document\.write\(unescape\(\"\%3Cscriptsrc\=\'\"\+gaJsHost\+\"google\-analytics\.com\/ga\.js\'type\=\'text\/javascript\'\%3E\%3C\/script\%3E\"\)\)\;/ig, - /try{varpageTracker\=\_gat\.\_getTracker\(\"UA[0-9\-]*?\"\)\;pageTracker\.\_trackPageview\(\)\;}catch\(err\){}/ig] -};
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/relation_checker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/relation_checker.js deleted file mode 100644 index 1904812..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/relation_checker.js +++ /dev/null @@ -1,289 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -/** - * relation_checker.js - * - * Finds out if two scripts are related to each other. - * - */ -const types = require("js_checker/constant_types"); - -const token = types.token; - -// all predefined window properties (methods and variables). -const windowPropertiesHash = { - "addEventListener": 1, "alert": 1, "applicationCache": 1, - "Array": 1, "ArrayBuffer": 1, "atob": 1, "back": 1, "blur": 1, - "Boolean": 1, "btoa": 1, "captureEvents": 1, "CharacterData": 1, - "clearInterval": 1, "clearTimeout": 1, "close": 1, "closed": 1, - "Components": 1, "confirm": 1, "console": 1, "constructor": 1, - "content": 1, "controllers": 1, "crypto": 1, - "CSSStyleDeclaration": 1, "Date": 1, "decodeURI": 1, - "decodeURIComponent": 1, "defaultStatus": 1, - "disableExternalCapture": 1, "dispatchEvent": 1, "Document": 1, - "document": 1, "DocumentType": 1, "dump": 1, "Element": 1, - "enableExternalCapture": 1, "encodeURI": 1, "encodeURIComponent": 1, - "Error": 1, "escape": 1, "eval": 1, "EvalError": 1, "Event": 1, - "find": 1, "Float32Array": 1, "Float64Array": 1, "focus": 1, - "forward": 1, "frameElement": 1, "frames": 1, "fullScreen": 1, - "Function": 1, "Generator": 1, "getComputedStyle": 1, - "getInterface": 1, "getSelection": 1, "globalStorage": 1, - "history": 1, "home": 1, "HTMLBodyElement": 1, "HTMLCollection": 1, - "HTMLDivElement": 1, "HTMLDocument": 1, "HTMLElement": 1, - "HTMLHeadElement": 1, "HTMLHeadingElement": 1, "HTMLHtmlElement": 1, - "HTMLStyleElement": 1, "HTMLUnknownElement": 1, "Infinity": 1, - "innerHeight": 1, "innerWidth": 1, "InstallTrigger": 1, - "Int16Array": 1, "Int32Array": 1, "Int8Array": 1, "InternalError": 1, - "isFinite": 1, "isNaN": 1, "isXMLName": 1, "Iterator": 1, - "JSON": 1, "length": 1, "localStorage": 1, "Location": 1, - "location": 1, "locationbar": 1, "matchMedia": 1, "Math": 1, - "menubar": 1, "moveBy": 1, "moveTo": 1, "mozAnimationStartTime": 1, - "mozIndexedDB": 1, "mozInnerScreenX": 1, "mozInnerScreenY": 1, - "mozPaintCount": 1, "mozRequestAnimationFrame": 1, "name": 1, - "Namespace": 1, "NaN": 1, "navigator": 1, "netscape": 1, - "Node": 1, "NodeList": 1, "Number": 1, "Object": 1, "open": 1, - "openDialog": 1, "opener": 1, "outerHeight": 1, "outerWidth": 1, - "pageXOffset": 1, "pageYOffset": 1, "parent": 1, "parseFloat": 1, - "parseInt": 1, "performance": 1, "personalbar": 1, "pkcs11": 1, - "postMessage": 1, "print": 1, "prompt": 1, "QName": 1, - "RangeError": 1, "ReferenceError": 1, "RegExp": 1, - "releaseEvents": 1, "removeEventListener": 1, "resizeBy": 1, - "resizeTo": 1, "routeEvent": 1, "screen": 1, "screenX": 1, - "screenY": 1, "scroll": 1, "scrollbars": 1, "scrollBy": 1, - "scrollByLines": 1, "scrollByPages": 1, "scrollMaxX": 1, - "scrollMaxY": 1, "scrollTo": 1, "scrollX": 1, "scrollY": 1, - "self": 1, "sessionStorage": 1, "setInterval": 1, "setResizable": 1, - "setTimeout": 1, "showModalDialog": 1, "sizeToContent": 1, - "status": 1, "statusbar": 1, "stop": 1, "StopIteration": 1, - "StorageList": 1, "String": 1, "SyntaxError": 1, "Text": 1, - "toolbar": 1, "top": 1, "TypeError": 1, "Uint16Array": 1, - "Uint32Array": 1, "Uint8Array": 1, "Uint8ClampedArray": 1, - "undefined": 1, "unescape": 1, "uneval": 1, "updateCommands": 1, - "URIError": 1, "URL": 1, "WeakMap": 1, "Window": 1, "window": 1, - "XML": 1, "XMLList": 1, "XPCNativeWrapper": 1}; - -// all predefined document properties. -const documentPropertiesHash = {'activeElement': 1, 'addBinding': 1, - 'addEventListener': 1, 'adoptNode': 1, 'alinkColor': 1, 'anchors': 1, - 'appendChild': 1, 'applets': 1, 'ATTRIBUTE_NODE': 1, 'attributes': 1, - 'baseURI': 1, 'bgColor': 1, 'body': 1, 'captureEvents': 1, - 'CDATA_SECTION_NODE': 1, 'characterSet': 1, 'childNodes': 1, 'clear': - 1, 'cloneNode': 1, 'close': 1, 'COMMENT_NODE': 1, - 'compareDocumentPosition': 1, 'compatMode': 1, 'contentType': 1, - 'cookie': 1, 'createAttribute': 1, 'createAttributeNS': 1, - 'createCDATASection': 1, 'createComment': 1, 'createDocumentFragment': - 1, 'createElement': 1, 'createElementNS': 1, 'createEvent': 1, - 'createExpression': 1, 'createNodeIterator': 1, 'createNSResolver': 1, - 'createProcessingInstruction': 1, 'createRange': 1, 'createTextNode': - 1, 'createTreeWalker': 1, 'currentScript': 1, 'defaultView': 1, - 'designMode': 1, 'dir': 1, 'dispatchEvent': 1, 'doctype': 1, - 'DOCUMENT_FRAGMENT_NODE': 1, 'DOCUMENT_NODE': 1, - 'DOCUMENT_POSITION_CONTAINED_BY': 1, 'DOCUMENT_POSITION_CONTAINS': 1, - 'DOCUMENT_POSITION_DISCONNECTED': 1, 'DOCUMENT_POSITION_FOLLOWING': 1, - 'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC': 1, - 'DOCUMENT_POSITION_PRECEDING': 1, 'DOCUMENT_TYPE_NODE': 1, - 'documentElement': 1, 'documentURI': 1, 'domain': 1, 'ELEMENT_NODE': - 1, 'elementFromPoint': 1, 'embeds': 1, 'enableStyleSheetsForSet': 1, - 'ENTITY_NODE': 1, 'ENTITY_REFERENCE_NODE': 1, 'evaluate': 1, - 'execCommand': 1, 'execCommandShowHelp': 1, 'fgColor': 1, - 'firstChild': 1, 'forms': 1, 'getAnonymousElementByAttribute': 1, - 'getAnonymousNodes': 1, 'getBindingParent': 1, 'getElementById': 1, - 'getElementsByClassName': 1, 'getElementsByName': 1, - 'getElementsByTagName': 1, 'getElementsByTagNameNS': 1, - 'getSelection': 1, 'getUserData': 1, 'hasAttributes': 1, - 'hasChildNodes': 1, 'hasFocus': 1, 'head': 1, 'images': 1, - 'implementation': 1, 'importNode': 1, 'inputEncoding': 1, - 'insertBefore': 1, 'isDefaultNamespace': 1, 'isEqualNode': 1, - 'isSameNode': 1, 'isSupported': 1, 'lastChild': 1, 'lastModified': 1, - 'lastStyleSheetSet': 1, 'linkColor': 1, 'links': 1, - 'loadBindingDocument': 1, 'localName': 1, 'location': 1, - 'lookupNamespaceURI': 1, 'lookupPrefix': 1, 'mozSetImageElement': 1, - 'mozSyntheticDocument': 1, 'namespaceURI': 1, 'nextSibling': 1, - 'nodeName': 1, 'nodeType': 1, 'nodeValue': 1, 'normalize': 1, - 'NOTATION_NODE': 1, 'open': 1, 'ownerDocument': 1, 'parentNode': 1, - 'plugins': 1, 'preferredStyleSheetSet': 1, 'prefix': 1, - 'previousSibling': 1, 'PROCESSING_INSTRUCTION_NODE': 1, - 'queryCommandEnabled': 1, 'queryCommandIndeterm': 1, - 'queryCommandState': 1, 'queryCommandSupported': 1, - 'queryCommandText': 1, 'queryCommandValue': 1, 'querySelector': 1, - 'querySelectorAll': 1, 'readyState': 1, 'referrer': 1, - 'releaseCapture': 1, 'releaseEvents': 1, 'removeBinding': 1, - 'removeChild': 1, 'removeEventListener': 1, 'replaceChild': 1, - 'routeEvent': 1, 'selectedStyleSheetSet': 1, 'setUserData': 1, - 'styleSheets': 1, 'styleSheetSets': 1, 'TEXT_NODE': 1, 'textContent': - 1, 'title': 1, 'URL': 1, 'vlinkColor': 1, 'write': 1, 'writeln': 1, - 'xmlEncoding': 1, 'xmlStandalone': 1, 'xmlVersion': 1}; - -var relationChecker = { - - // identifies scripts across modules. - scriptId: null, - - // stores all left-side identifier in 'assign' types. - assignments: null, - - // stores var declarations in global scope. - variableDeclarations: null, - - // stores top declarations in global scope. - functionDeclarations: null, - - nonWindowProperties: null, - - init: function (scriptId) { - this.scriptId = scriptId; - this.assignments = []; - this.variableDeclarations = {}; - this.functionDeclarations = {}; - this.nonWindowProperties = {}; - }, - - isWindowProperty: function (identifier) { - return (identifier in windowPropertiesHash) ? true : false; - }, - - isDocumentProperty: function (identifier) { - return (identifier in documentPropertiesHash) ? true : false; - }, - - storeNodeVars: function (n) { - if (n.varDecls != undefined) { - var i = 0, le = n.varDecls.length; - for (; i < le; i++) { - this.variableDeclarations[n.varDecls[i].value] = 1; - } - } - }, - - storeNodeFunctions: function (n) { - if (n.funDecls != undefined) { - var i = 0, le = n.funDecls.length; - for (; i < le; i++) { - this.functionDeclarations[n.funDecls[i].name] = 1; - } - } - }, - storeGlobalDeclarations: function (topNode) { - this.storeNodeVars(topNode); - this.storeNodeFunctions(topNode); - }, - storeNodeGlobalDeclarations: function (n) { - if (n.global === true) { - this.storeNodeVars(n); - this.storeNodeFunctions(n); - } - }, - - storeNodeAssignments: function (n) { - if (n.type === token.ASSIGN && - n.children != undefined && - n.children[0].type === token.IDENTIFIER) { - this.assignments.push(n.children[0].value); - } - }, - - // checks the parent script is in global scope. - isInGlobalScope: function (n) { - var currentNode = n; - - while (currentNode != undefined) { - if (currentNode.type === token.SCRIPT && - currentNode.global === true) { - return true; - } else if (currentNode.type === token.SCRIPT) { - return false; - } - currentNode = currentNode.parent; - } - }, - - // looks for an identifier being declared as either a - // variable or a function within the scope. Currently, - // we don't care about assignments. - lookForIdentifierInAllScopes: function (n, val) { - - var currentNode = n, i, le, vars, funcs; - while (currentNode != undefined) { - if (currentNode.varDecls != undefined) { - vars = currentNode.varDecls; - le = vars.length; - for (i = 0; i < le; i++) { - if (vars[i].value === val) { - console.debug('FOUND declaration for', val); - return true; - } - } - } - if (currentNode.funDecls != undefined) { - funcs = currentNode.funDecls; - le = funcs.length; - for (i = 0; i < le; i++) { - if (funcs[i].name === val) { - console.debug('FOUND function declaration for', val); - return true; - } - } - } - currentNode = currentNode.parent; - } - console.debug('did not find declaration or assignment for', val); - }, - - // Heuristic method for window properties. - // this doesn't prove they are window properties, but - // it allows to make a good guess. These variables could have - // been assigned to something else... - checkIdentifierIsWindowProperty: function (n) { - - if (n.type === token.IDENTIFIER && - (n.parent.type === token.CALL || - (n.parent.type === token.DOT && - n.previous != undefined && - (n.previous.type === token.THIS || - (n.previous.type === token.IDENTIFIER && - n.previous.value === 'window')))) && - n.value in windowPropertiesHash) { - - this.lookForIdentifierInAllScopes(n, n.value); - - } - - else if (n.type === token.IDENTIFIER && - n.parent != undefined && - n.parent.type === token.DOT && - n.previous != undefined && - n.previous.type === token.THIS && - this.isInGlobalScope(n)) { - console.debug(n.type, 'use of this in the global scope, seems ok.', n.value); - } - else if (n.type === token.IDENTIFIER) { - // not found. - console.debug(n.type, 'probably not a window prop', n.value); - this.nonWindowProperties[n.value] = 1; - } - } - -}; - -exports.relationChecker = function (scriptId) { - var obj = Object.create(relationChecker); - obj.init(scriptId); - return obj; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js deleted file mode 100644 index 3038eae..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js +++ /dev/null @@ -1,212 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// Uncomment the following to start debugging, or do it from about:config. -// var name = "extensions.jid1-KtlZuoiikVfFew@jetpack.sdk.console.logLevel"; -// require("sdk/preferences/service").set(name, "all"); - -const jsAnalyzer = require("js_checker/js_checker"); - -var { ToggleButton } = require('sdk/ui/button/toggle'); -const panel = require("sdk/panel"); - -const pageWorker = require("sdk/page-worker"); - -const data = require("sdk/self").data; -const httpObserver = require("http_observer/http_request_observer"); - -const { Cc, Ci } = require("chrome"); -const { getMostRecentBrowserWindow } = require('sdk/window/utils'); -const jetpackID = require("sdk/self").id; - -const tabs = require("sdk/tabs"); -//const prefs = require("preferences/preferences"); -const simpleStorage = require("sdk/simple-storage"); -const addonManage = require("addon_management/install_uninstall"); -var removedScripts = require("script_entries/removed_scripts").removedScripts; -var acceptedScripts = require("script_entries/accepted_scripts").acceptedScripts; -const dryRunScripts = require("script_entries/dryrun_scripts").dryRunScripts; - -const types = require("js_checker/constant_types"); - -// manage preference whitelist. -const prefChange = require("addon_management/prefchange"); -// set whitelist at startup. -prefChange.init(); - -var allowedRef = require("http_observer/allowed_referrers").allowedReferrers; - -var urlHandler = require("url_handler/url_handler"); - -var widgetIsOn = false; - -const librejsStorage = require("settings/storage").librejsStorage; -// read storage file. -var cachedResult = librejsStorage.init(); -librejsStorage.generateCacheFromDB(); - - -var uiInfo = require("ui/ui_info"); -var scriptPanel = require("ui/script_panel.js"); -const removeHashCallback = require("js_checker/js_checker").removeHashCallback; -var panelContent = function () { - - let panel = this; - var message, externalEntries, - externalScripts, urlTabIndex, tabData; - - tabs.activeTab.attach({ - contentScriptFile: [data.url('third_party/jquery-src.js'), - data.url('script_detector/script_detector.js')], - contentScriptWhen: 'ready', - - onMessage: function (respData) { - var url = urlHandler.removeFragment(tabs.activeTab.url); - scriptsData = {'removed': removedScripts.getScripts(url), - 'accepted': acceptedScripts.getScripts(url), - 'dryRun': dryRunScripts.getScripts(url)}; - panel.postMessage({'pageURL': url, - 'urlData': scriptsData, - 'isAllowed': allowedRef.urlInAllowedReferrers(url)}); - } - - }); - -}; - -// page mod was here. - -exports.main = function(options, callbacks) { - if (options.loadReason === 'enable' || - options.loadReason === 'install') { - addonManage.onLoad(); - } -}; - -var mainPanel = panel.Panel({ - contentURL: data.url('display_panel/content/display-panel.html'), - width: 800, - height: 500, - contentScriptFile: [ - data.url('third_party/jquery-src.js'), - data.url('display_panel/main_panel.js') - ], - onShow: panelContent, - onHide: removePanelContent -}); - -var toggleButton = ToggleButton({ - id: 'librejs-toggle-switch', - label: 'LibreJS', - icon: { - '16': './widget/images/librejs.png', - '32': './widget/images/librejs.png', - '64': './widget/images/librejs.png' - }, - contentScriptFile: [data.url('widget/widget.js')], - contentScriptWhen: 'end', - panel: mainPanel, - onChange: handleChange -}); - -var getWidgetElem = function () { - let { document } = getMostRecentBrowserWindow(); - var name = "widget:" + jetpackID + '-librejs-toggle-switch'; - var widgetElem = document.getElementById(name); - return widgetElem; -}; - -function handleChange(state) { - if (state.checked) { - mainPanel.show({ - position: toggleButton - }); - } -} - -function removePanelContent() { - toggleButton.state('window', { checked: false }); -} - -mainPanel.port.on('complainButtonClicked', function () { - mainPanel.hide(); -}); - -mainPanel.port.on('allowAllClicked', function (url) { - url = urlHandler.removeFragment(url); - allowedRef.addPage(url); - tabs.activeTab.reload(); -}); - -mainPanel.port.on('disallowAllClicked', function (url) { - console.debug('url is', url); - url = urlHandler.removeFragment(url); - console.debug('before clear, url is in allowedRef', allowedRef.urlInAllowedReferrers(url)); - allowedRef.clearSinglePageEntry(url); - console.debug('after clear, url is in allowedRef', allowedRef.urlInAllowedReferrers(url)); - mainPanel.hide(); - tabs.activeTab.reload(); -}); - -mainPanel.port.on('openInTab', function (text) { - var str = generateDataURI(text); - tabs.open(str); -}); - -var generateDataURI = function (encodedText) { - return "data:text/html;charset=UTF-8;base64," + encodedText; -}; - -exports.onUnload = addonManage.onUnload; -exports.onLoad = addonManage.onLoad; - -// move to sub-module later -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; -mainPanel.port.on('whitelistByHash', function (hash, url, name, reason) { - console.debug("hash is", hash); - url = urlHandler.removeFragment(url); - /* var cached_result = scriptsCached.isCached(hash); - console.log("cached_result is", cached_result); - if (cached_results) { - reason = cached_result['reason']; - }*/ - scriptsCached.addEntryByHash(hash, types.whitelisted(reason), {}, true, url); -}); - -mainPanel.port.on('removeFromWhitelistByHash', function (hash) { - scriptsCached.removeEntryByHash(hash); - removeHashCallback(hash); -}); -const settings_tab = require("settings/settings_tab"); -var menuitem = require("menuitems").Menuitem({ - id: 'librejs_settings', - menuid: "menu_ToolsPopup", - label: "LibreJS", - onCommand: function() { - settings_tab.settingsManager.open(); - }, - insertbefore: "menu_pageInfo" -}); - -mainPanel.port.on('openSesame', function () { - // open the settings tab. - settings_tab.settingsManager.open(); -}); - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/narcissus_parser/narcissus_worker.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/narcissus_parser/narcissus_worker.js deleted file mode 100644 index 5e28dbb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/narcissus_parser/narcissus_worker.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var data = require("sdk/self").data; -var {Cu} = require("chrome"); - -var {ChromeWorker} = Cu.import("resource://gre/modules/Services.jsm", null); - - -var worker = new ChromeWorker(data.url("chrome_worker/narcissus_parser/narcissus_parse.js")); - -worker.onmessage = function (e) { - - var jsChecker = require("js_checker/js_checker"); - - try { - - jsChecker.callbackHashResult(e.data.hash, e.data.tree); - - } catch (x) { - - console.debug('error on message', x); - jsChecker.callbackHashResult(e.data.hash, false); - - } - jsChecker = null; -}; - -exports.parse = function (scriptText, hash) { - - try { - // dont display errors for main version. - worker.onerror = function (e) { - console.debug('error', e.lineno, 'in', e.filename, 'e', e.message, 'full message', e); - worker.postMessage(JSON.stringify({'hash': hash})); - }; - - var obj = {'code': scriptText, 'hash': hash}; - worker.postMessage(JSON.stringify(obj)); - - } catch (x) { - console.debug('error in lib/narcissus_worker.js', x, x.lineNumber); - } - -}; - -exports.stopWorker = function () { - console.debug('stopping worker'); - worker.postMessage('stop'); -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/accepted_scripts.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/accepted_scripts.js deleted file mode 100644 index 1a8ac9a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/accepted_scripts.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var allScripts = require('script_entries/all_scripts').allScripts; - -var AcceptedScripts = function() { - this.scripts = {}; - this.truncateJsData = allScripts.truncateJsData; - this.getScripts = allScripts.getScripts; - this.isFound = allScripts.isFound; - this.returnWhenFound = allScripts.returnWhenFound; - this.getOrInitScripts = allScripts.getOrInitScripts; - this.setHash = allScripts.setHash; -}; - -AcceptedScripts.prototype.clearScripts = function (url) { - this.scripts[url] = []; -}; - -/** - * addAScript - * adds a single script to the scripts array. - * @param {string} url - the url of the page where it is loaded. - * @param {object} scriptObj - Additional data regarding this script, - * including: inline: boolean, - * contents: string, - * removalReason: string. - */ -AcceptedScripts.prototype.addAScript = function (url, scriptObj) { - var exists; - - if (this.scripts[url] === undefined) { - this.clearScripts(url); - } - - // check if content is actually js code. - if (scriptObj.inline === true) { - this.setHash(scriptObj); - this.truncateJsData(scriptObj); - } - exists = this.isFound(url, scriptObj); - if (!exists) { - this.scripts[url].push(scriptObj); - return true; - } else { - return false; - } -}; - -exports.acceptedScripts = new AcceptedScripts(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/all_scripts.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/all_scripts.js deleted file mode 100644 index c08b4ac..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/all_scripts.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var crypto = require('script_entries/crypto'); - -var AllScripts = function() { - this.scripts = {}; -}; - -AllScripts.prototype.truncateJsData = function (scriptObj) { - if (scriptObj.contents === undefined) { - console.debug('this is an inline script', scriptObj.value); - console.debug('this is an src', scriptObj.url); - } - if (scriptObj.contents.length > 1000) { - scriptObj.contents = scriptObj.contents.substring(0, 1000); - scriptObj.contents += '…'; - } -}; - -AllScripts.prototype.setHash = function (scriptObj) { - scriptObj.hash = crypto.sha1Encrypt(scriptObj.contents); - return scriptObj.hash; -}; - -AllScripts.prototype.getScripts = function (url) { - if (!this.scripts[url]) { - return false; - } else { - return this.scripts[url]; - } -}; - -AllScripts.prototype.reverseArray = function (url) { - this.scripts[url].reverse(); -}; - -AllScripts.prototype.getOrInitScripts = function (url) { - if (this.scripts[url] === undefined) { - this.scripts[url] = []; - } - return this.scripts[url]; -}; - -AllScripts.prototype.returnWhenFound = function(url, data) { - var pageScripts = this.getOrInitScripts(url), - i = 0, - le = pageScripts.length; - - // check that entry doesn't exist. - if (data.inline === false) { - for (; i < le; i++) { - if (pageScripts[i].contents === data.url) { - return pageScripts[i]; - } - } - } else if (data.inline === true) { - for (; i < le; i++) { - if (pageScripts[i].hash === crypto.sha1Encrypt(data.contents)) { - return pageScripts[i]; - } - } - } - - return false; -}; - -AllScripts.prototype.isFound = function(url, data) { - var pageScripts = this.getOrInitScripts(url), - i = 0, - le = pageScripts.length; - - // check that entry doesn't exist. - if (data.inline === false) { - for (; i < le; i++) { - if (pageScripts[i].url === data.url) { - return true; - } - } - } else if (data.inline === true) { - for (; i < le; i++) { - if (pageScripts[i].hash === crypto.sha1Encrypt(data.contents)) { - return true; - } - } - } - - return false; -}; - -exports.allScripts = new AllScripts(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/crypto.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/crypto.js deleted file mode 100644 index e8844b1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/crypto.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var {Cc, Ci, Cu, Cm, Cr} = require("chrome"); - -var CryptoString = function() { - this.cryptoHash = Cc["@mozilla.org/security/hash;1"] - .createInstance(Ci.nsICryptoHash); - this.converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]. - createInstance(Ci.nsIScriptableUnicodeConverter); - this.hashAlgorithm = null; -}; - -CryptoString.prototype.init = function(hashAlgorithm, charset) { - this.converter.charset = charset; - this.hashAlgorithm = hashAlgorithm; - this.cryptoHash.init(this.cryptoHash[this.hashAlgorithm]); - -}; - -CryptoString.prototype.encryptString = function(str) { - var result = {}; - var data = this.converter.convertToByteArray(str, result); - this.cryptoHash.update(data, data.length); - var hash = this.cryptoHash.finish(false); - return [this.toHexString(hash.charCodeAt(i)) for (i in hash)].join(""); -}; - -CryptoString.prototype.toHexString = function(charCode) { - return ("0" + charCode.toString(16)).slice(-2); -}; - -var cryptoString = new CryptoString(); - -exports.sha1Encrypt = function(str) { - cryptoString.init('SHA1', 'UTF-8'); - return cryptoString.encryptString(str); -}; - -exports.sha256Encrypt = function(str) { - cryptoString.init('SHA256', 'UTF-8'); - return cryptoString.encryptString(str); -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/dryrun_scripts.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/dryrun_scripts.js deleted file mode 100644 index d32263b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/dryrun_scripts.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var allScripts = require('script_entries/all_scripts').allScripts; -const urlHandler = require('url_handler/url_handler'); - -exports.dryRunScripts = { - scripts: {}, - - truncateJsData: allScripts.truncateJsData, - - getScripts: allScripts.getScripts, - - isFound: allScripts.isFound, - - returnWhenFound: allScripts.returnWhenFound, - - getOrInitScripts: allScripts.getOrInitScripts, - - reverseArray: allScripts.reverseArray, - - setHash: allScripts.setHash, - - clearScripts: function (url) { - this.scripts[url] = []; - }, - - /** - * addAScript - * adds a single script to the scripts array. - * @param {string} url - the url of the page where it is loaded. - * @param {object} scriptObj - Additional data regarding this script, - * including: inline: boolean, - * contents: string, - * removalReason: string. - */ - addAScript: function (url, scriptObj, absoluteUrl) { - var exists; - - if (this.scripts[url] === undefined) { - this.clearScripts(url); - } - if (scriptObj.inline === true) { - this.setHash(scriptObj); - this.truncateJsData(scriptObj); - } else if (absoluteUrl !== undefined && - scriptObj.inline === false) { - scriptObj.contents = urlHandler.resolve(absoluteUrl, scriptObj.contents); - } - exists = this.isFound(url, scriptObj); - - if (!exists) { - this.scripts[url].push(scriptObj); - return true; - } else { - return false; - } - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/free_libraries.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/free_libraries.js deleted file mode 100644 index 5aff728..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/free_libraries.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// THIS MODULE IS DEPRECATED IN FAVOR OF THE NEW WHITELISTING MODULE (LibreJS 6.0) - -var relationChecker = require("js_checker/relation_checker").relationChecker; -var checkTypes = require("js_checker/constant_types").checkTypes; -var scriptsCached = require("./scripts_cache").scriptsCached; - - -// find the json database path. -var dbContents = require("sdk/self").data.load("script_libraries/script-libraries.json"); - -const AUTHOR_REASON = "this script has been tagged as free software by LibreJS authors"; - -var freeLibraries = JSON.parse(dbContents); /* a database of the free libraries recognized by default */ - -/* - * - * List of free libraries and their SHA256 hash. - * This is used to recognize the most common free libraries. - * - */ - -var init = function () { - - // relationChecker, which roughly checks if variables are window - // variables or not, is useless in this case. Use the same - // object for all entries. - var rc = relationChecker(); - var library, hash; - var freeObj = { "type": 4, "reason": AUTHOR_REASON}; - console.debug("Building init"); - for (hash in freeLibraries) { - library = freeLibraries[hash]; - - // assign empty relationChecker object. - library.relationChecker = rc; - - // make them free and nontrivial. - library.result = freeObj; - - scriptsCached.addObjectEntry(hash, library); - } -}; - -//init(); - -exports.init = init; -exports.AUTHOR_REASON = AUTHOR_REASON; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/removed_scripts.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/removed_scripts.js deleted file mode 100644 index 8f65c4d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/removed_scripts.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var allScripts = require('script_entries/all_scripts').allScripts; -const urlHandler = require('url_handler/url_handler'); - -var RemovedScripts = function() { - this.scripts = {}; - this.truncateJsData = allScripts.truncateJsData; - this.getScripts = allScripts.getScripts; - this.isFound = allScripts.isFound; - this.returnWhenFound = allScripts.returnWhenFound; - this.getOrInitScripts = allScripts.getOrInitScripts; - this.reverseArray = allScripts.reverseArray; - this.setHash = allScripts.setHash; -}; - -RemovedScripts.prototype.clearScripts = function (url) { - this.scripts[url] = []; -}; - -/** - * addAScript - * adds a single script to the scripts array. - * @param {string} url - the url of the page where it is loaded. - * @param {object} scriptObj - Additional data regarding this script, - * including: inline: boolean, - * contents: string, - * removalReason: string. - */ -RemovedScripts.prototype.addAScript = function (url, scriptObj, absoluteUrl) { - var exists; - - if (this.scripts[url] === undefined) { - this.clearScripts(url); - } - if (scriptObj.inline === true) { - this.setHash(scriptObj); - this.truncateJsData(scriptObj); - } else if (absoluteUrl !== undefined && - scriptObj.inline === false) { - scriptObj.contents = urlHandler.resolve(absoluteUrl, scriptObj.contents); - } - exists = this.isFound(url, scriptObj); - - if (!exists) { - this.scripts[url].push(scriptObj); - return true; - } else { - return false; - } -}; - -exports.removedScripts = new RemovedScripts(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/scripts_cache.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/scripts_cache.js deleted file mode 100644 index 5bc5c8a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/scripts_cache.js +++ /dev/null @@ -1,182 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -var relationCheckerObj = require("js_checker/relation_checker").relationChecker; - -var crypto = require('script_entries/crypto'); -//const librejsStorage = require("settings/storage").librejsStorage; -const checkTypes = require("js_checker/constant_types").checkTypes; - -// cachedResults contains objects with result/relationChecker for -// scripts entries indexed by SHA1sum -var cachedResults = {}; - -var ScriptsCached = function() {}; - -ScriptsCached.prototype.getHash = function(scriptText) { - require('ui/notification').createNotification(scriptText.substring(0,100)); - - return crypto.sha1Encrypt(scriptText); -}; - -/** - * resetCache - * Resets the full cache and re-initialize - * the free libraries list. - */ -ScriptsCached.prototype.resetCache = function () { - cachedResults = {}; - free_libraries.init(); -}; - -/** - * - * addEntry - * - * Adds a script entry to the cache by providing the results - * and the actual script text. - * - */ -ScriptsCached.prototype.addEntry = function( - scriptText, result, relationChecker, allowTrivial, url) { - console.debug("result addEntry is", JSON.stringify(result)); - cachedResults[this.getHash(scriptText)] = { - 'result': result, - 'relationChecker': relationCheckerObj(), - 'allowTrivial': allowTrivial, - 'url': url - }; -}; - -/** - * - * addEntry - * - * Adds a script entry to the cache by providing the results - * using the script's hash. - * - */ -ScriptsCached.prototype.addEntryByHash = function( - hash, result, relationChecker, allowTrivial, url) { - cachedResults[hash] = { - 'result': result, - 'relationChecker': relationCheckerObj(), - 'allowTrivial': allowTrivial, - 'url': url || '' - }; -}; - -/** - * removeEntryByHash - * - * Remove an entry from the cache using hash key. - */ -ScriptsCached.prototype.removeEntryByHash = function(hash) { - delete cachedResults[hash]; -}; - -/** - * addEntryIfNotCached - * - * Checks first if entry is cached before attempting to cache result. - */ -ScriptsCached.prototype.addEntryIfNotCached = function( - scriptText, result, relationChecker, allowTrivial, url) { - // save a bit of computing by getting hash once. - var hash = this.getHash(scriptText); - console.debug('hash is then', hash); - if (!this.isCached(scriptText, hash)) { - cachedResults[hash] = { - 'result': result, - 'relationChecker': relationCheckerObj(), - 'allowTrivial': allowTrivial, - 'url': url || '' - }; - } - return hash; -}; - -/** - * - * addObjectEntry - * - * Adds a script entry by providing an object. - * Used to provide free library hashes from free_libraries.js - * - */ -ScriptsCached.prototype.addObjectEntry = function(hash, script) { - cachedResults[hash] = script; -}; - -ScriptsCached.prototype.isCached = function(scriptText, hash) { - var scriptHash; - console.debug("Is CACHED start?"); - try { - if (typeof hash === 'string') { - scriptHash = hash; - } else { - scriptHash = this.getHash(scriptText); - } - if (typeof scriptHash === 'string') { - let cachedResult = cachedResults[scriptHash]; - if (cachedResult) { - // exact copy of file has already been cached. - console.debug('scriptHash is', cachedResult); - if (cachedResult.relationChecker == "[rl]") { - cachedResult.relationChecker = {}; //relationCheckerObj(); - } - console.debug("Is Cached ENd TRUE"); - return cachedResult; - } - } - return false; - } catch (e) { - console.debug("an error", scriptHash, e, e.linenumber, e.filename); - } -}; - -/** - * Writes allowed scripts to the cache. - * nonfree/nontrivial scripts are not added to the cache. - */ -ScriptsCached.prototype.getCacheForWriting = function() { - var formattedResults = {}; - for (let item in cachedResults) { - let type = cachedResults[item].result.type; - if (type != checkTypes.NONTRIVIAL && - type != checkTypes.TRIVIAL_DEFINES_FUNCTION) { - formattedResults[item] = cachedResults[item]; - } - } - return formattedResults; -}; - -/** - * Import data from database into cachedResults. - * Calling this function replaces the current cache if it exists. - */ -ScriptsCached.prototype.bulkImportCache = function(data) { - cachedResults = data; - console.debug("Imported data. Number of keys ISSS ", Object.keys(cachedResults).length); - console.debug("It looks like ", JSON.stringify(cachedResults)); -}; - -// import free_libraries to populate the cache hash map. -//var free_libraries = require("script_entries/free_libraries"); -exports.scriptsCached = new ScriptsCached(); diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/settings_tab.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/settings_tab.js deleted file mode 100644 index c99deb5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/settings_tab.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -const addonTab = require("addon-tab"); -const data = require("sdk/self").data; -const storage = require("settings/storage").librejsStorage; -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; - -exports.settingsManager = settingsManager; - - - -let settingsManager = { - settings_tab: { - url: data.url("settings/index.html"), - tabStyle: { - 'background-color': '#898168', - 'background-image': 'none', // important to overwrite bckg when tab is active. - 'font-weight': 'normal', - 'font-size': '1.1em', - 'color': '#444' - }, - onReady: function (tab) { - console.debug("populating form"); - var that = this; - let cache_data = scriptsCached.getCacheForWriting(); - let worker = tab.attach({contentScriptFile: [data.url('settings/js/pagescript-listener.js'), - data.url('settings/js/pagescript-emitter.js')]}); - worker.port.emit("populate-form", cache_data); - worker.port.on("rules-form-delete", function (hash) { - try { - scriptsCached.removeEntryByHash(hash); - } catch (e) { - console.log(e, e.lineNumber, e.filename); - } - //worker.port.emit("populate-form", scriptsCached.getCacheForWriting()); - }); - worker.port.on("rules-form-delete-all", function () { - console.log("delete all triggered."); - scriptsCached.resetCache(); - }); - }, - onActivate: function (tab) { - // just reload the form. - console.log("Tab is activated again"); - var that = this; - let cache_data = scriptsCached.getCacheForWriting(); - let worker = tab.attach({contentScriptFile: [data.url('settings/js/pagescript-listener.js'), - data.url('settings/js/pagescript-emitter.js')]}); - worker.port.emit("populate-form", cache_data); - - } - }, - - - init: function () { - // do some first time magic. - settings.onLoad(function (data) { - - }); - }, - open: function () { - console.debug("settings tab data url is", this.settings_tab.url); - addonTab.open(this.settings_tab); - } -}; - -exports.settingsManager = settingsManager; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/storage.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/storage.js deleted file mode 100644 index f77bd13..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/storage.js +++ /dev/null @@ -1,164 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ -/*jshint esnext: true */ - -const { Cc, Ci, Cu, components } = require("chrome"); - -var { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm"); -var { FileUtils } = Cu.import("resource://gre/modules/FileUtils.jsm"); -var relationChecker = require("js_checker/relation_checker").relationChecker; -var rc = relationChecker(); // a dummy object for legacy module. -const AUTHOR_REASON = require("script_entries/free_libraries").AUTHOR_REASON; -var relationChecker = require("js_checker/relation_checker").relationChecker; - -const scriptsCached = require("script_entries/scripts_cache").scriptsCached; - -let librejsStorage = { - - file: null, - filename: 'librejs-whitelist.json', - data: [], - - onLoad: function (callback) { - // will read the json file. - this.init(); - this.read(callback); - }, - - - init: function () { - // get the "librejs-whitelist.json" file in the profile directory - this.file = FileUtils.getFile("ProfD", [this.filename]); - }, - read: function (callback) { - // Content type hint is useful on mobile platforms where the filesystem - // would otherwise try to determine the content type. - var channel = NetUtil.newChannel(this.file); - var that = this; - channel.contentType = "application/json"; - try { - NetUtil.asyncFetch(channel, function(inputStream, status) { - - if (!components.isSuccessCode(status)) { - require("script_entries/free_libraries").init(); - that.initialWrite(); - } - - var raw_data = NetUtil.readInputStreamToString(inputStream, inputStream.available()); - // expand json file back to original contents. - var re = new RegExp("[freelib]".replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'); - raw_data = raw_data.replace(re, AUTHOR_REASON); - console.debug("raw_data is ", raw_data); - // The file data is contained within inputStream. - // You can read it into a string with - // get string into json also - that.data = JSON.parse(raw_data); - - callback(that.data); - }); - } catch (e) { - that.initialWrite(); - } - }, - - initialWrite: function (callback) { - console.debug("About to write free libraries"); - // our file is not populated with default contents. - // use free_libraries.js to populate. - require("script_entries/free_libraries").init(); - this.writeCacheToDB(callback); - }, - /** - * writes the contents of scriptsCached to the persistent - * JSON file. - */ - writeCacheToDB: function (callback) { - console.debug("writing to db"); - data = scriptsCached.getCacheForWriting(); - json = JSON.stringify(data); - - // make json file smaller. - var re = new RegExp(AUTHOR_REASON.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'); - json = json.replace(re, "[freelib]"); - - var rc = JSON.stringify(relationChecker()); - re = new RegExp(rc.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'); - json = json.replace(re, "\"[rl]\""); - console.debug("this.data is now", this.data); - this.write(callback, json); - }, - generateCacheFromDB: function (callback) { - if (callback === undefined) { - callback = function () { - // nothing to do. - }; - } - this.read(function (data) { - scriptsCached.bulkImportCache(data); - }); - }, - write: function (onDataWritten, json) { - - this.init(); - var str; - if (json === undefined) { - str = JSON.stringify(this.data); - } else { - // we are passing json already formatted. - str = json; - } - var ostream = FileUtils.openSafeFileOutputStream(this.file); - var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); - converter.charset = "UTF-8"; - var istream = converter.convertToInputStream(str); - // The last argument (the callback) is optional. - NetUtil.asyncCopy(istream, ostream, function(status) { - if (!components.isSuccessCode(status)) { - // Handle error! - return; - } - if (!onDataWritten) { - console.debug("onDataWritten is not defined"); - onDataWritten = function () { - console.debug("onDataWritten dummy callback triggered"); - }; - } - // Data has been written to the file. - onDataWritten(); - }); - }, - - /** - * getEntry -- Returns a storage entry if it is present. - */ - getEntry: function (hash) { - var entry = this.data[hash]; - if (entry) { - if (entry.result == "[freelib]") { - entry.result = { "type": 4, "reason": "this script has been tagged as free software by LibreJS authors" }; - } - entry.relationChecker = rc; - return entry; - } - return false; - } -}; - -exports.librejsStorage = librejsStorage; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/notification.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/notification.js deleted file mode 100644 index aeb279a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/notification.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -// this module is used to display a notification when LibreJS -// is running to inform the user it is indeed busy working. -const timer = require("sdk/timers"); -const self = require("sdk/self"); -const isDisplayNotifications = require("addon_management/prefchange").isDisplayNotifications; - -exports.createCriticalNotification = function (text) { - if (text === undefined) { - text = ""; - } - var self = require('sdk/self'); - var randomnumber = Math.floor(Math.random()*11); - var notif = require("notification-box").NotificationBox({ - 'value': 'librejs-critical-notification-js-web-labels', - 'label': text, - 'priority': 'CRITICAL_LOW', - 'image': self.data.url("assets/images/torchy2.png"), - }); - return notif; -}; - -var fakeNotification = { - 'close': function () { - return; - } -}; - -exports.createNotification = function (jsValue) { - if (!isDisplayNotifications()) { - return fakeNotification; - } - if (jsValue === undefined) { - jsValue = ""; - } - var self = require('sdk/self'); - var randomnumber = Math.floor(Math.random()*11); - var notif = require("notification-box").NotificationBox({ - 'value': 'librejs-message', - 'label': 'LibreJS is analyzing: ' + jsValue + " ...", - 'priority': 'INFO_LOW', - 'image': self.data.url("assets/images/torchy2.png"), - /*'buttons': [{'label': "Fine", - 'onClick': function () { }}]*/ - }); - timer.setTimeout(function () { - // ensure notifications are ALWAYS removed at some point. - console.debug("removing after 2 seconds"); - try { - var n = notif.notificationbox - .getNotificationWithValue('librejs-message'); - n.close(); - } catch(x) { - // do nothing - } - }, 2000); - return notif; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/script_panel.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/script_panel.js deleted file mode 100644 index 85c22a4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/script_panel.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -var urlHandler = require("url_handler/url_handler"); - -/** - * addScriptsToPanelList - * - * Looks for scripts that are either valid or flagged with libreJS - * - */ -exports.addScriptsToPanelList = function (url, respData) { - - var panelRemovedScripts = []; - var panelAcceptedScripts = []; - var panelDryRunScripts = []; - - // use url. remove fragment. - url = urlHandler.removeFragment(url); - var contents, i, reason; - - for (i = 0; i < respData.value.blocked.length; i++) { - // if external script only. - pathToUrl(respData.value.blocked[i], url); - panelRemovedScripts.push(respData.value.blocked[i]); - } - - for (i = 0; i < respData.value.accepted.length; i++) { - - // if external script only. - pathToUrl(respData.value.accepted[i], url); - panelAcceptedScripts.push(respData.value.accepted[i]); - } - for (i = 0; i < respData.value.dryRun.length; i++) { - // if external script only. - pathToUrl(respData.value.dryRun[i], url); - panelDryRunScripts.push(respData.value.dryRun[i]); - } - - return {'removed': panelRemovedScripts, - 'accepted': panelAcceptedScripts, - 'dryRun': panelDryRunScripts}; -}; - - -/** - * pathToUrl - * - * convert a relative path to a url. - * - */ -var pathToUrl = function (scriptEntry, url) { - if (scriptEntry.inline === false) { - scriptEntry.url = urlHandler.resolve(url, scriptEntry.url); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js deleted file mode 100644 index 5e0c2a8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js +++ /dev/null @@ -1,232 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - - - -// page mod executing content script at every page load. - -var data = require("sdk/self").data; -var pageMod = require("sdk/page-mod"); - -var urlHandler = require("url_handler/url_handler"); - -var pageWorker = require("sdk/page-worker"); - -var tabs = require("sdk/tabs"); -var isComplaintTab = require("addon_management/prefchange").isComplaintTab; - -// contain list of recently found contact links or email addresses. -var contactList = {}; - -// constants. Also available in lib/ui_info.js -const CERTAIN_EMAIL_ADDRESS_FOUND = 'certainEmailAddressFound'; -const UNCERTAIN_EMAIL_ADDRESS_FOUND = 'uncertainEmailAddresFound'; - -// Looking for contact links -const CERTAIN_LINK_FOUND = 'certainLinkFound'; -const PROBABLE_LINK_FOUND = 'probableLinkFound'; -const UNCERTAIN_LINK_FOUND = 'uncertainLinkFound'; -const LINK_NOT_FOUND = 'contactLinkNotFound'; - -// Looking for identi.ca and twitter accounts. -const TWITTER_LINK_FOUND = 'twitterLinkFound'; -const IDENTICA_LINK_FOUND = 'identicaLinkFound'; - -// phone number and address -const PHONE_NUMBER_FOUND = 'phoneNumberFound'; -const SNAIL_ADDRESS_FOUND = 'snailAddressFound'; - -/** - * main pageMod. - * Find blocked script in all pages being opened. - * Launch the scripts that search for a complaint contact. - * - */ - -pageMod.PageMod({ - - include: ['file://*','*', 'data:*', 'about:*'], - - contentScriptWhen: 'end', - - contentScriptFile: [ - data.url('complain/contact_regex.js'), - data.url('complain/link_types.js'), - data.url('third_party/jquery-src.js'), - data.url('third_party/jquery.easing.1.3.js'), - data.url('complain/contact_finder.js'), - data.url('complain/pagemod_finder.js'), - data.url('script_detector/script_detector.js') - ], - - onAttach: function onAttach(worker) { - - if (worker.tab !== undefined && isComplaintTab()) { - - // this is a tab. - if (!foundInContactList(worker.url)) { - // the hostname doesn't appear in the object literal. - // run script fetching/complaint feature if applicable. - tabProcess(worker); - } else { - worker.postMessage(foundInContactList(worker.url)); - } - } - - } -}); - -/** - * foundInContactList - * - * Provides link if contact link is found for given url, or else - * false. - */ -var foundInContactList = function (url) { - - var hostname = urlHandler.getHostname(url); - - if (contactList[hostname] !== undefined) { - - return contactList[hostname]; - - } else { - - return false; - - } - -}; - -/** - * tabProcess - * Find blocked/accepted scripts, prepare - * display panel and complaint panel, ... - * - */ -var tabProcess = function (worker) { - - var visitedUrl = {}; - - // webmaster email is better than a webpage. - worker.emailFound = false; - var modUrl = '', - searchUrl = ''; - - modUrl = worker.url; - - console.debug('pagemod triggered'); - - // send local path to complain button graphic. - worker.postMessage({'event': 'assets-uri', 'value': data.url('assets/')}); - worker.postMessage({'event': 'page-url', 'value': modUrl}); - - worker.on('message', function (respData) { - - // console.debug('worker is receiving a message', respData.event); - - var pw; - - worker.on('detach', function () { - console.debug('detaching worker'); - if (pw) { - pw.destroy(); - - } - }); - if (respData.contact !== undefined) { - // pass the message to the complaint display panel. - worker.postMessage(respData); - } - - else if (respData.event === 'complaintSearch') { - - console.debug('complaintSearch triggered'); - console.debug('worker tab url', worker.tab.url); - if (!(respData.urlSearch.linkValue in visitedUrl)) { - - visitedUrl[respData.urlSearch.linkValue] = 1; - - respData.urlSearch.linkValue = urlHandler.addFragment(respData.urlSearch.linkValue, 'librejs=true'); - pw = searchSecondLevelPage(this, respData.urlSearch.linkValue, this.url); - - } - // currently not needed. - /*else { - console.debug(respData.urlSearch.linkValue, 'already visited'); - }*/ - } - - - }); - -}; - -var searchSecondLevelPage = function( - worker, urlToSearch, originalUrl) { - return; - var originalWorker = worker; - - console.debug('url to search is', urlToSearch); - - console.debug(urlToSearch, 'and', originalUrl); - - if (urlHandler.haveSameHostname(urlToSearch, originalUrl)) { - return pageWorker.Page({ - contentURL: urlToSearch, - contentScriptFile: [ - data.url('complain/contact_regex.js'), - data.url('complain/link_types.js'), - data.url('third_party/jquery-src.js'), - data.url('third_party/jquery.easing.1.3.js'), - data.url('complain/contact_finder.js'), - data.url('complain/worker_finder.js') - ], - contentScriptWhen: "end", - onMessage: function (respData) { - console.debug(JSON.stringify(respData)); - console.debug(originalWorker.url); - originalWorker.postMessage(respData); - - if (respData.event === 'destroy') { - try { - console.debug('destroying worker', this.contentURL); - this.destroy(); - } catch (e) { - console.debug('in worker', e); - } - } - } - }); - } -}; - - - - -exports.testModule = { - - 'contactList': contactList, - - 'foundInContactList': foundInContactList, - - 'tabProcess': tabProcess - -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_punycode.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_punycode.js deleted file mode 100644 index 64d8c61..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_punycode.js +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright (C) 2011 by Ben Noordhuis <info@bnoordhuis.nl> -// -// 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. - -exports.encode = encode; -exports.decode = decode; - -var TMIN = 1; -var TMAX = 26; -var BASE = 36; -var SKEW = 38; -var DAMP = 700; // initial bias scaler -var INITIAL_N = 128; -var INITIAL_BIAS = 72; -var MAX_INTEGER = Math.pow(2, 53); - -function adapt_bias(delta, n_points, is_first) { - // scale back, then increase delta - delta /= is_first ? DAMP : 2; - delta += ~~(delta / n_points); - - var s = (BASE - TMIN); - var t = ~~((s * TMAX) / 2); // threshold=455 - - for (var k = 0; delta > t; k += BASE) { - delta = ~~(delta / s); - } - - var a = (BASE - TMIN + 1) * delta; - var b = (delta + SKEW); - - return k + ~~(a / b); -} - -function next_smallest_codepoint(codepoints, n) { - var m = 0x110000; // unicode upper bound + 1 - - for (var i = 0, len = codepoints.length; i < len; ++i) { - var c = codepoints[i]; - if (c >= n && c < m) { - m = c; - } - } - - // sanity check - should not happen - if (m >= 0x110000) { - throw new Error('Next smallest code point not found.'); - } - - return m; -} - -function encode_digit(d) { - return d + (d < 26 ? 97 : 22); -} - -function decode_digit(d) { - if (d >= 48 && d <= 57) { - return d - 22; // 0..9 - } - if (d >= 65 && d <= 90) { - return d - 65; // A..Z - } - if (d >= 97 && d <= 122) { - return d - 97; // a..z - } - throw new Error('Illegal digit #' + d); -} - -function threshold(k, bias) { - if (k <= bias + TMIN) { - return TMIN; - } - if (k >= bias + TMAX) { - return TMAX; - } - return k - bias; -} - -function encode_int(bias, delta) { - var result = []; - - for (var k = BASE, q = delta;; k += BASE) { - var t = threshold(k, bias); - if (q < t) { - result.push(encode_digit(q)); - break; - } - else { - result.push(encode_digit(t + ((q - t) % (BASE - t)))); - q = ~~((q - t) / (BASE - t)); - } - } - - return result; -} - -function encode(input) { - if (typeof input != 'string') { - throw new Error('Argument must be a string.'); - } - - input = input.split('').map(function(c) { - return c.charCodeAt(0); - }); - - var output = []; - var non_basic = []; - - for (var i = 0, len = input.length; i < len; ++i) { - var c = input[i]; - if (c < 128) { - output.push(c); - } - else { - non_basic.push(c); - } - } - - var b, h; - b = h = output.length; - - if (b) { - output.push(45); // delimiter '-' - } - - var n = INITIAL_N; - var bias = INITIAL_BIAS; - var delta = 0; - - for (var len = input.length; h < len; ++n, ++delta) { - var m = next_smallest_codepoint(non_basic, n); - delta += (m - n) * (h + 1); - n = m; - - for (var i = 0; i < len; ++i) { - var c = input[i]; - if (c < n) { - if (++delta == MAX_INTEGER) { - throw new Error('Delta overflow.'); - } - } - else if (c == n) { - // TODO append in-place? - // i.e. -> output.push.apply(output, encode_int(bias, delta)); - output = output.concat(encode_int(bias, delta)); - bias = adapt_bias(delta, h + 1, b == h); - delta = 0; - h++; - } - } - } - - return String.fromCharCode.apply(String, output); -} - -function decode(input) { - if (typeof input != 'string') { - throw new Error('Argument must be a string.'); - } - - // find basic code points/delta separator - var b = 1 + input.lastIndexOf('-'); - - input = input.split('').map(function(c) { - return c.charCodeAt(0); - }); - - // start with a copy of the basic code points - var output = input.slice(0, b ? (b - 1) : 0); - - var n = INITIAL_N; - var bias = INITIAL_BIAS; - - for (var i = 0, len = input.length; b < len; ++i) { - var org_i = i; - - for (var k = BASE, w = 1;; k += BASE) { - var d = decode_digit(input[b++]); - - // TODO overflow check - i += d * w; - - var t = threshold(k, bias); - if (d < t) { - break; - } - - // TODO overflow check - w *= BASE - t; - } - - var x = 1 + output.length; - bias = adapt_bias(i - org_i, x, org_i == 0); - // TODO overflow check - n += ~~(i / x); - i %= x; - - output.splice(i, 0, n); - } - - return String.fromCharCode.apply(String, output); -} diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_querystring.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_querystring.js deleted file mode 100644 index 3314061..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_querystring.js +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// Query String Utilities - -var QueryString = exports; -//var urlDecode = process.binding('http_parser').urlDecode; - - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - - -function charCode(c) { - return c.charCodeAt(0); -} - - -// a safe fast alternative to decodeURIComponent -QueryString.unescapeBuffer = function(s, decodeSpaces) { - var out = new Buffer(s.length); - var state = 'CHAR'; // states: CHAR, HEX0, HEX1 - var n, m, hexchar; - - for (var inIndex = 0, outIndex = 0; inIndex <= s.length; inIndex++) { - var c = s.charCodeAt(inIndex); - switch (state) { - case 'CHAR': - switch (c) { - case charCode('%'): - n = 0; - m = 0; - state = 'HEX0'; - break; - case charCode('+'): - if (decodeSpaces) c = charCode(' '); - // pass thru - default: - out[outIndex++] = c; - break; - } - break; - - case 'HEX0': - state = 'HEX1'; - hexchar = c; - if (charCode('0') <= c && c <= charCode('9')) { - n = c - charCode('0'); - } else if (charCode('a') <= c && c <= charCode('f')) { - n = c - charCode('a') + 10; - } else if (charCode('A') <= c && c <= charCode('F')) { - n = c - charCode('A') + 10; - } else { - out[outIndex++] = charCode('%'); - out[outIndex++] = c; - state = 'CHAR'; - break; - } - break; - - case 'HEX1': - state = 'CHAR'; - if (charCode('0') <= c && c <= charCode('9')) { - m = c - charCode('0'); - } else if (charCode('a') <= c && c <= charCode('f')) { - m = c - charCode('a') + 10; - } else if (charCode('A') <= c && c <= charCode('F')) { - m = c - charCode('A') + 10; - } else { - out[outIndex++] = charCode('%'); - out[outIndex++] = hexchar; - out[outIndex++] = c; - break; - } - out[outIndex++] = 16 * n + m; - break; - } - } - - // TODO support returning arbitrary buffers. - - return out.slice(0, outIndex - 1); -}; - - -QueryString.unescape = function(s, decodeSpaces) { - return QueryString.unescapeBuffer(s, decodeSpaces).toString(); -}; - - -QueryString.escape = function(str) { - return encodeURIComponent(str); -}; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - - -QueryString.stringify = QueryString.encode = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - obj = (obj === null) ? undefined : obj; - - switch (typeof obj) { - case 'object': - return Object.keys(obj).map(function(k) { - if (Array.isArray(obj[k])) { - return obj[k].map(function(v) { - return QueryString.escape(stringifyPrimitive(k)) + - eq + - QueryString.escape(stringifyPrimitive(v)); - }).join(sep); - } else { - return QueryString.escape(stringifyPrimitive(k)) + - eq + - QueryString.escape(stringifyPrimitive(obj[k])); - } - }).join(sep); - - default: - if (!name) return ''; - return QueryString.escape(stringifyPrimitive(name)) + eq + - QueryString.escape(stringifyPrimitive(obj)); - } -}; - -// Parse a key=val string. -QueryString.parse = QueryString.decode = function(qs, sep, eq) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - qs.split(sep).forEach(function(kvp) { - var x = kvp.split(eq); - var k = QueryString.unescape(x[0], true); - var v = QueryString.unescape(x.slice(1).join(eq), true); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (!Array.isArray(obj[k])) { - obj[k] = [obj[k], v]; - } else { - obj[k].push(v); - } - }); - - return obj; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_url.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_url.js deleted file mode 100644 index 6b4940f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_url.js +++ /dev/null @@ -1,611 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var punycode = require('url_handler/node_punycode'); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]+$/, - // RFC 2396: characters reserved for delimiting URLs. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '~', '[', ']', '`'].concat(delims), - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''], - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'] - .concat(unwise).concat(autoEscape), - nonAuthChars = ['/', '@', '?', '#'].concat(delims), - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z_-]{0,62}$/, - hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z_-]{0,62})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always have a path component. - pathedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('url_handler/node_querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && typeof(url) === 'object' && url.href) return url; - - if (typeof url !== 'string') { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var out = {}, - rest = url; - out.href = ""; - // cut off any delimiters. - // This is to support parse stuff like "<http://foo.com>" - for (var i = 0, l = rest.length; i < l; i++) { - if (delims.indexOf(rest.charAt(i)) === -1) break; - } - if (i !== 0) rest = rest.substr(i); - - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - out.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - out.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // don't enforce full RFC correctness, just be unstupid about it. - - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the first @ sign, unless some non-auth character - // comes *before* the @-sign. - // URLs are obnoxious. - var atSign = rest.indexOf('@'); - if (atSign !== -1) { - // there *may be* an auth - var hasAuth = true; - for (var i = 0, l = nonAuthChars.length; i < l; i++) { - var index = rest.indexOf(nonAuthChars[i]); - if (index !== -1 && index < atSign) { - // not a valid auth. Something like http://foo.com/bar@baz/ - hasAuth = false; - break; - } - } - if (hasAuth) { - // pluck off the auth portion. - out.auth = rest.substr(0, atSign); - rest = rest.substr(atSign + 1); - } - } - - var firstNonHost = -1; - for (var i = 0, l = nonHostChars.length; i < l; i++) { - var index = rest.indexOf(nonHostChars[i]); - if (index !== -1 && - (firstNonHost < 0 || index < firstNonHost)) firstNonHost = index; - } - - if (firstNonHost !== -1) { - out.host = rest.substr(0, firstNonHost); - rest = rest.substr(firstNonHost); - } else { - out.host = rest; - rest = ''; - } - - // pull out port. - var p = parseHost(out.host); - var keys = Object.keys(p); - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - out[key] = p[key]; - } - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - out.hostname = out.hostname || ''; - - // validate a little. - if (out.hostname.length > hostnameMaxLen) { - out.hostname = ''; - } else { - var hostparts = out.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - out.hostname = validParts.join('.'); - break; - } - } - } - } - - // hostnames are always lower case. - out.hostname = out.hostname.toLowerCase(); - - // IDNA Support: Returns a puny coded representation of "domain". - // It only converts the part of the domain name that - // has non ASCII characters. I.e. it dosent matter if - // you call it with a domain that already is in ASCII. - var domainArray = out.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - out.hostname = newOut.join('.'); - - out.host = (out.hostname || '') + - ((out.port) ? ':' + out.port : ''); - out.href += out.host; - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - - // Now make sure that delims never appear in a url. - var chop = rest.length; - for (var i = 0, l = delims.length; i < l; i++) { - var c = rest.indexOf(delims[i]); - if (c !== -1) { - chop = Math.min(c, chop); - } - } - rest = rest.substr(0, chop); - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - out.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - out.search = rest.substr(qm); - out.query = rest.substr(qm + 1); - if (parseQueryString) { - out.query = querystring.parse(out.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - out.search = ''; - out.query = {}; - } - if (rest) out.pathname = rest; - if (slashedProtocol[proto] && - out.hostname && !out.pathname) { - out.pathname = '/'; - } - - //to support http.request - if (out.pathname || out.search) { - out.path = (out.pathname ? out.pathname : '') + - (out.search ? out.search : ''); - } - - // finally, reconstruct the href based on what has been validated. - out.href = urlFormat(out); - return out; -} - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (typeof(obj) === 'string') obj = urlParse(obj); - - var auth = obj.auth || ''; - if (auth) { - auth = auth.split('@').join('%40'); - for (var i = 0, l = nonAuthChars.length; i < l; i++) { - var nAC = nonAuthChars[i]; - auth = auth.split(nAC).join(encodeURIComponent(nAC)); - } - auth += '@'; - } - - var protocol = obj.protocol || '', - host = (obj.host !== undefined) ? auth + obj.host : - obj.hostname !== undefined ? ( - auth + obj.hostname + - (obj.port ? ':' + obj.port : '') - ) : - false, - pathname = obj.pathname || '', - query = obj.query && - ((typeof obj.query === 'object' && - Object.keys(obj.query).length) ? - querystring.stringify(obj.query) : - '') || '', - search = obj.search || (query && ('?' + query)) || '', - hash = obj.hash || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (obj.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - return protocol + host + pathname + search + hash; -} - -function urlResolve(source, relative) { - return urlFormat(urlResolveObject(source, relative)); -} - -function urlResolveObject(source, relative) { - if (!source) return relative; - - source = urlParse(urlFormat(source), false, true); - relative = urlParse(urlFormat(relative), false, true); - - // hash is always overridden, no matter what. - source.hash = relative.hash; - - if (relative.href === '') { - source.href = urlFormat(source); - return source; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - relative.protocol = source.protocol; - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[relative.protocol] && - relative.hostname && !relative.pathname) { - relative.path = relative.pathname = '/'; - } - relative.href = urlFormat(relative); - return relative; - } - - if (relative.protocol && relative.protocol !== source.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - relative.href = urlFormat(relative); - return relative; - } - source.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - relative.pathname = relPath.join('/'); - } - source.pathname = relative.pathname; - source.search = relative.search; - source.query = relative.query; - source.host = relative.host || ''; - source.auth = relative.auth; - source.hostname = relative.hostname || relative.host; - source.port = relative.port; - //to support http.request - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.slashes = source.slashes || relative.slashes; - source.href = urlFormat(source); - return source; - } - - var isSourceAbs = (source.pathname && source.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host !== undefined || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (source.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = source.pathname && source.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = source.protocol && - !slashedProtocol[source.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // source.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - - delete source.hostname; - delete source.port; - if (source.host) { - if (srcPath[0] === '') srcPath[0] = source.host; - else srcPath.unshift(source.host); - } - delete source.host; - if (relative.protocol) { - delete relative.hostname; - delete relative.port; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - delete relative.host; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - source.host = (relative.host || relative.host === '') ? - relative.host : source.host; - source.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : source.hostname; - source.search = relative.search; - source.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - source.search = relative.search; - source.query = relative.query; - } else if ('search' in relative) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - source.hostname = source.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = source.host && source.host.indexOf('@') > 0 ? - source.host.split('@') : false; - if (authInHost) { - source.auth = authInHost.shift(); - source.host = source.hostname = authInHost.shift(); - } - } - source.search = relative.search; - source.query = relative.query; - //to support http.request - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.href = urlFormat(source); - return source; - } - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - delete source.pathname; - //to support http.request - if (!source.search) { - source.path = '/' + source.search; - } else { - delete source.path; - } - source.href = urlFormat(source); - return source; - } - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (source.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - source.hostname = source.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = source.host && source.host.indexOf('@') > 0 ? - source.host.split('@') : false; - if (authInHost) { - source.auth = authInHost.shift(); - source.host = source.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (source.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - source.pathname = srcPath.join('/'); - //to support request.http - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.auth = relative.auth || source.auth; - source.slashes = source.slashes || relative.slashes; - source.href = urlFormat(source); - return source; -} - -function parseHost(host) { - var out = {}; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - out.port = port.substr(1); - host = host.substr(0, host.length - port.length); - } - if (host) out.hostname = host; - return out; -}
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/url_handler.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/url_handler.js deleted file mode 100644 index 41ec82e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/url_handler.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. - * * - * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -/** - * url_handler - * A module using the url tool from Node.js to perform operations on - * urls at various spots (tabs, caching, ...) in the add-on. - * - */ - -// node.js url module. Makes it easier to resole -// urls in that datauri loaded dom -var nodeJsUrl = require("url_handler/node_url"); - -var urlUtils = { - - getFragment: function (url) { - var parse = nodeJsUrl.parse(url); - if (parse.hash !== undefined) { - return(parse.hash); - } - }, - - removeFragment: function (url) { - var parse = nodeJsUrl.parse(url); - if (parse.hash !== undefined) { - // Amazon track package bug fix. - // when url has query string and fragment - // the add-on wouldn't remove cache entry - // properly. - delete parse.hash; - } - return nodeJsUrl.format(parse); - }, - - addFragment: function (url, query) { - var parse = nodeJsUrl.parse(url); - - // replace hash if it exists. - parse.hash = '#' + query; - - return nodeJsUrl.format(parse); - }, - - addQuery: function (url, query) { - var parse = nodeJsUrl.parse(url); - console.debug('my parse search', parse.search); - if (parse.search === undefined) { - parse.search = '?' + query; - } else { - parse.search = parse.search + '&' + query; - console.debug('parse search is now' + parse.search); - } - return nodeJsUrl.format(parse); - }, - - getHostname: function (url) { - return nodeJsUrl.parse(url).hostname; - }, - - /** - * remove www from hostname. - */ - removeWWW: function (str) { - if (str !== undefined) { - return str.replace("www.", "", 'i'); - } - return ""; - }, - - /** - * - * haveSameHostname - * Compare that two urls have the same hostname. - * - */ - haveSameHostname: function (url1, url2) { - - try { - - var host1 = this.removeWWW(this.getHostname(url1)).toLowerCase(); - var host2 = this.removeWWW(this.getHostname(url2)).toLowerCase(); - return host1 === host2; - - } catch (x) { - - console.debug('error with url_handler', x, x.fileName, x.lineNumber); - - } - } -}; - -exports.parse = nodeJsUrl.parse; -exports.resolve = nodeJsUrl.resolve; -exports.resolveObject = nodeJsUrl.resolveObject; -exports.format = nodeJsUrl.format; -exports.removeFragment = urlUtils.removeFragment; -exports.addQuery = urlUtils.addQuery; -exports.getFragment = urlUtils.getFragment; -exports.addFragment = urlUtils.addFragment; -exports.getHostname = urlUtils.getHostname; -exports.haveSameHostname = urlUtils.haveSameHostname; -exports.removeWWW = urlUtils.removeWWW; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/menuitems/lib/menuitems.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/menuitems/lib/menuitems.js deleted file mode 100644 index 075d690..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/menuitems/lib/menuitems.js +++ /dev/null @@ -1,195 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const windowUtils = require("sdk/deprecated/window-utils"); -const { Class } = require("sdk/core/heritage"); -const { validateOptions } = require("sdk/deprecated/api-utils"); -const { on, emit, once, off } = require("sdk/event/core"); -const { isBrowser } = require("sdk/window/utils"); -const { EventTarget } = require('sdk/event/target'); -const { unload } = require("unload+"); - -const menuitemNS = require("sdk/core/namespace").ns(); -const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; - -function MenuitemOptions(options) { - return validateOptions(options, { - id: { is: ['string'] }, - menuid: { is: ['undefined', 'string'] }, - insertbefore: { is: ['undefined', 'string', 'object'] }, - label: { is: ["string"] }, - disabled: { is: ["undefined", "boolean"], map: function(v) !!v}, - accesskey: { is: ["undefined", "string"] }, - key: { is: ["undefined", "string"] }, - checked: { is: ['undefined', 'boolean'] }, - className: { is: ["undefined", "string"] }, - onCommand: { is: ['undefined', 'function'] } - }); -} - -let Menuitem = Class({ - extends: EventTarget, - initialize: function(options) { - options = menuitemNS(this).options = MenuitemOptions(options); - EventTarget.prototype.initialize.call(this, options); - - menuitemNS(this).destroyed = false; - menuitemNS(this).unloaders = []; - menuitemNS(this).menuitems = addMenuitems(this, options).menuitems; - }, - get id() menuitemNS(this).options.id, - get label() menuitemNS(this).options.label, - set label(val) updateProperty(this, 'label', val), - get checked() menuitemNS(this).options.checked, - set checked(val) updateProperty(this, 'checked', !!val), - get disabled() menuitemNS(this).options.disabled, - set disabled(val) updateProperty(this, 'disabled', !!val), - get key() menuitemNS(this).options.key, - set key(val) updateProperty(this, 'key', val), - clone: function (overwrites) { - let opts = Object.clone(menuitemNS(this).options); - for (let key in overwrites) { - opts[key] = ovrewrites[key]; - } - return Menuitem(opts); - }, - get menuid() menuitemNS(this).options.menuid, - set menuid(val) { - let options = menuitemNS(this).options; - options.menuid = val; - - forEachMI(function(menuitem, i, $) { - updateMenuitemParent(menuitem, options, $); - }); - }, - destroy: function() { - if (!menuitemNS(this).destroyed) { - menuitemNS(this).destroyed = true; - menuitemNS(this).unloaders.forEach(function(u) u()); - menuitemNS(this).unloaders = null; - menuitemNS(this).menuitems = null; - } - return true; - } -}); - -function addMenuitems(self, options) { - let menuitems = []; - - // setup window tracker - windowUtils.WindowTracker({ - onTrack: function (window) { - if (!isBrowser(window) || menuitemNS(self).destroyed) return; - - // add the new menuitem to a menu - var menuitem = updateMenuitemAttributes( - window.document.createElementNS(NS_XUL, "menuitem"), options); - var menuitems_i = menuitems.push(menuitem) - 1; - - // add the menutiem to the ui - updateMenuitemParent(menuitem, options, function(id) window.document.getElementById(id)); - - menuitem.addEventListener("command", function() { - if (!self.disabled) - emit(self, 'command'); - }, true); - - // add unloader - let unloader = function unloader() { - menuitem.parentNode && menuitem.parentNode.removeChild(menuitem); - menuitems[menuitems_i] = null; - }; - menuitemNS(self).unloaders.push(function() { - remover(); - unloader(); - }); - let remover = unload(unloader, window); - } - }); - return {menuitems: menuitems}; -} - -function updateMenuitemParent(menuitem, options, $) { - // add the menutiem to the ui - if (Array.isArray(options.menuid)) { - let ids = options.menuid; - for (var len = ids.length, i = 0; i < len; i++) { - if (tryParent($(ids[i]), menuitem, options.insertbefore)) - return true; - } - } - else { - return tryParent($(options.menuid), menuitem, options.insertbefore); - } - return false; -} - -function updateMenuitemAttributes(menuitem, options) { - menuitem.setAttribute("id", options.id); - menuitem.setAttribute("label", options.label); - - if (options.accesskey) - menuitem.setAttribute("accesskey", options.accesskey); - - if (options.key) - menuitem.setAttribute("key", options.key); - - menuitem.setAttribute("disabled", !!options.disabled); - - if (options.image) { - menuitem.classList.add("menuitem-iconic"); - menuitem.style.listStyleImage = "url('" + options.image + "')"; - } - - if (options.checked) - menuitem.setAttribute('checked', options.checked); - - if (options.className) - options.className.split(/\s+/).forEach(function(name) menuitem.classList.add(name)); - - return menuitem; -} - -function updateProperty(menuitem, key, val) { - menuitemNS(menuitem).options[key] = val; - - forEachMI(function(menuitem) { - menuitem.setAttribute(key, val); - }, menuitem); - return val; -} - -function forEachMI(callback, menuitem) { - menuitemNS(menuitem).menuitems.forEach(function(mi, i) { - if (!mi) return; - callback(mi, i, function(id) mi.ownerDocument.getElementById(id)); - }); -} - -function tryParent(parent, menuitem, before) { - if (parent) parent.insertBefore(menuitem, insertBefore(parent, before)); - return !!parent; -} - -function insertBefore(parent, insertBefore) { - if (typeof insertBefore == "number") { - switch (insertBefore) { - case MenuitemExport.FIRST_CHILD: - return parent.firstChild; - } - return null; - } - else if (typeof insertBefore == "string") { - return parent.querySelector("#" + insertBefore); - } - return insertBefore; -} - -function MenuitemExport(options) { - return Menuitem(options); -} -MenuitemExport.FIRST_CHILD = 1; - -exports.Menuitem = MenuitemExport; diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/notification-box/lib/notification-box.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/notification-box/lib/notification-box.js deleted file mode 100644 index 94b26cd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/notification-box/lib/notification-box.js +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyrights Loic J. Duros 2012 - * lduros@member.fsf.org - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -const { Cc, Ci } = require("chrome"); -const { getMostRecentBrowserWindow } = require('sdk/window/utils'); -/* I haven't found this sort of validation functions in the SDK, -except for the deprecated api-utils module. */ -let isString = function (str) { - return typeof(str) == 'string' || str instanceof String; -}; - -let isArray = function (obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -exports.NotificationBox = function (options) { - options = options || {}; - let mainWindow = getWindow(); - let nb = mainWindow.gBrowser.getNotificationBox(); - let notification, priority, label, image, value, buttons = []; - - if (options.value && isString(options.value)) { - notification = nb.getNotificationWithValue(options.value); - value = options.value; - } - else { - notification = nb.getNotificationWithValue(''); - value = ''; - } - - // Add label or create empty notification. - if (options.label && isString(options.label)) - label = options.label; - else - label = ""; - - // Set priority of the notification (from info low, to critical - // block. - if (options.priority && options.priority in PRIORITY) - priority = nb[PRIORITY[options.priority]]; - else - priority = nb[PRIORITY.INFO_LOW]; - - // Set a custom icon for the notification or use the regular info - // icon. - if (options.image && isString(options.image)) - image = options.image; - else - image = 'chrome://browser/skin/Info.png'; - - // Add buttons. - if (isArray(options.buttons)) { - for (let i = 0, length = options.buttons.length; i < length; i++) { - buttons.push(NotificationButton(options.buttons[i])); - } - } - else if (typeof(options.buttons) === 'object') { - // If it's not an array of buttons, then it should be a single button. - buttons.push(NotificationButton(options.buttons)); - } - else { - buttons = null; - } - - // add new notification to notificationbox. - nb.appendNotification(label, value, - image, - priority, buttons); - - return {'notificationbox': nb, 'notification': notification}; -}; - - - -var NotificationButton = function (options) { - - options = options || {}; - let accessKey, onClick, label, popup; - - if (options.accessKey) - accessKey = options.accessKey; - else - accessKey = ''; - - if (options.onClick) - onClick = options.onClick; - else - onClick = function () {}; - - if (options.label) - label = options.label; - else - label = ""; - - // no popup for now... maybe we can use a panel later. - popup = null; - - return {label: label, - accessKey: accessKey, - callback: onClick, - popup: popup}; - -}; - -const PRIORITY = { - 'INFO_LOW': 'PRIORITY_INFO_LOW', - 'INFO_MEDIUM': 'PRIORITY_INFO_MEDIUM', - 'INFO_HIGH': 'PRIORITY_INFO_HIGH', - 'WARNING_LOW': 'PRIORITY_WARNING_LOW', - 'WARNING_MEDIUM': 'PRIORITY_WARNING_MEDIUM', - 'WARNING_HIGH': 'PRIORITY_WARNING_HIGH', - 'CRITICAL_LOW': 'PRIORITY_CRITICAL_LOW', - 'CRITICAL_MEDIUM': 'PRIORITY_CRITICAL_MEDIUM', - 'CRITICAL_HIGH': 'PRIORITY_CRITICAL_HIGH', - 'CRITICAL_BLOCK': 'PRIORITY_CRITICAL_BLOCK' -}; - -let getWindow = function () { - return getMostRecentBrowserWindow(); -}; - -exports.PRIORITY = PRIORITY; - diff --git a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/vold-utils/lib/unload+.js b/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/vold-utils/lib/unload+.js deleted file mode 100644 index 285fd46..0000000 --- a/helpers/DATA/firefox/gnu/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/vold-utils/lib/unload+.js +++ /dev/null @@ -1,80 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const { Class } = require("sdk/core/heritage"); -const unloadNS = require("sdk/core/namespace").ns(); - -var Unloader = exports.Unloader = Class({ - initialize: function Unloader() { - let unloaders = unloadNS(this).unloaders = []; - - let unloadersUnlaod = unloadNS(this).unloadersUnlaod = function() { - unloaders.slice().forEach(function(u) u()); - unloaders.length = 0; - } - - require("sdk/system/unload").when(unloadersUnlaod); - }, - unload: function unload(callback, container) { - // Calling with no arguments runs all the unloader callbacks - if (callback == null) { - unloadNS(this).unloadersUnlaod(); - return null; - } - - var remover = removeUnloader.bind(null, unloader, unloadNS(this).unloaders); - - // The callback is bound to the lifetime of the container if we have one - if (container != null) { - // Remove the unloader when the container unloads - container.addEventListener("unload", remover, false); - - // Wrap the callback to additionally remove the unload listener - let origCallback = callback; - callback = function() { - container.removeEventListener("unload", remover, false); - origCallback(); - } - } - - // Wrap the callback in a function that ignores failures - function unloader() { - try { - callback(); - } - catch(e) { - console.error(e); - } - } - unloadNS(this).unloaders.push(unloader); - - // Provide a way to remove the unloader - return remover; - } -}); - -function removeUnloader(unloader, unloaders) { - let index = unloaders.indexOf(unloader); - if (index != -1) - unloaders.splice(index, 1); -} - -/** - * Save callbacks to run when unloading. Optionally scope the callback to a - * container, e.g., window. Provide a way to run all the callbacks. - * - * @usage unload(): Run all callbacks and release them. - * - * @usage unload(callback): Add a callback to run on unload. - * @param [function] callback: 0-parameter function to call on unload. - * @return [function]: A 0-parameter function that undoes adding the callback. - * - * @usage unload(callback, container) Add a scoped callback to run on unload. - * @param [function] callback: 0-parameter function to call on unload. - * @param [node] container: Remove the callback when this container unloads. - * @return [function]: A 0-parameter function that undoes adding the callback. - */ -const gUnload = Unloader(); -exports.unload = gUnload.unload.bind(gUnload); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/bootstrap.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/bootstrap.js deleted file mode 100644 index 09530b9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/bootstrap.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This file is part of the Adblock Plus build tools, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cr = Components.results; -const Cu = Components.utils; - -let {Services, atob, btoa, File, TextDecoder, TextEncoder} = Cu.import("resource://gre/modules/Services.jsm", null); -let XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest"); - -let addonData = null; - -function startup(params, reason) -{ - addonData = params; - Services.obs.addObserver(RequireObserver, "adblockplus-require", true); - onShutdown.add(function() Services.obs.removeObserver(RequireObserver, "adblockplus-require")); - - require("main"); -} - -function shutdown(params, reason) -{ - let windowNames = ["abp:subscriptionSelection", "abp:composer", "abp:filters"]; - for (let i = 0; i < windowNames.length; i++) - { - let enumerator = Services.wm.getEnumerator(windowNames[i]); - while (enumerator.hasMoreElements()) - { - let window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow); - window.setTimeout("window.close()", 0); // Closing immediately might not work due to modal windows - try - { - window.close(); - } catch(e) {} - } - } - onShutdown.done = true; - for (let i = shutdownHandlers.length - 1; i >= 0; i --) - { - try - { - shutdownHandlers[i](); - } - catch (e) - { - Cu.reportError(e); - } - } - shutdownHandlers = null; - - // Make sure to release our ties to the modules even if the sandbox cannot be - // released for some reason. - for (let key in require.scopes) - { - let scope = require.scopes[key]; - let list = Object.keys(scope); - for (let i = 0; i < list.length; i++) - scope[list[i]] = null; - } - require.scopes = null; - addonData = null; -} - -function install(params, reason) {} - -function uninstall(params, reason) -{ - const ADDON_UNINSTALL = 6; // https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions#Reason_constants - if (reason == ADDON_UNINSTALL) - { - // Users often uninstall/reinstall extension to "fix" issues. Clear current - // version number on uninstall to rerun first-run actions in this scenario. - Services.prefs.clearUserPref("extensions.adblockplus.currentVersion"); - } -} -let shutdownHandlers = []; -let onShutdown = -{ - done: false, - add: function(handler) - { - if (shutdownHandlers.indexOf(handler) < 0) - shutdownHandlers.push(handler); - }, - remove: function(handler) - { - let index = shutdownHandlers.indexOf(handler); - if (index >= 0) - shutdownHandlers.splice(index, 1); - } -}; - -function require(module) -{ - let scopes = require.scopes; - if (!(module in scopes)) - { - if (module == "info") - { - let applications = {"{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "fennec", "toolkit@mozilla.org": "toolkit", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "firefox", "dlm@emusic.com": "emusic", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "fennec2", "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}": "conkeror", "{aa5ca914-c309-495d-91cf-3141bbb04115}": "midbrowser", "songbird@songbirdnest.com": "songbird", "prism@developer.mozilla.org": "prism", "{3550f703-e582-4d05-9a08-453d09bdfdc6}": "thunderbird"}; - let appInfo = Services.appinfo; - - scopes[module] = {}; - scopes[module].exports = - { - addonID: addonData.id, - addonVersion: addonData.version, - addonRoot: addonData.resourceURI.spec, - addonName: "adblockplus", - application: (appInfo.ID in applications ? applications[appInfo.ID] : "other"), - applicationVersion: appInfo.version, - platform: "gecko", - platformVersion: appInfo.platformVersion - }; - } - else - { - let url = addonData.resourceURI.spec + "lib/" + module + ".js"; - scopes[module] = { - Cc: Cc, - Ci: Ci, - Cr: Cr, - Cu: Cu, - atob: atob, - btoa: btoa, - File: File, - require: require, - - onShutdown: onShutdown, - - XMLHttpRequest: XMLHttpRequest, - - exports: {}}; - Services.scriptloader.loadSubScript(url, scopes[module]); - } - } - return scopes[module].exports; -} -require.scopes = {__proto__: null}; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -let RequireObserver = -{ - observe: function(subject, topic, data) - { - if (topic == "adblockplus-require") - { - subject.wrappedJSObject.exports = require(data); - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) -};
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome.manifest b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome.manifest deleted file mode 100644 index 9778eda..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome.manifest +++ /dev/null @@ -1,58 +0,0 @@ -content adblockplus chrome/content/ -skin adblockplus classic/1.0 chrome/skin/ -locale adblockplus en-US chrome/locale/en-US/ -locale adblockplus ar chrome/locale/ar/ -locale adblockplus bg chrome/locale/bg/ -locale adblockplus ca chrome/locale/ca/ -locale adblockplus cs chrome/locale/cs/ -locale adblockplus da chrome/locale/da/ -locale adblockplus de chrome/locale/de/ -locale adblockplus dsb chrome/locale/dsb/ -locale adblockplus el chrome/locale/el/ -locale adblockplus en-GB chrome/locale/en-GB/ -locale adblockplus eo chrome/locale/eo/ -locale adblockplus es-AR chrome/locale/es-AR/ -locale adblockplus es-ES chrome/locale/es-ES/ -locale adblockplus es-MX chrome/locale/es-MX/ -locale adblockplus et chrome/locale/et/ -locale adblockplus eu chrome/locale/eu/ -locale adblockplus fa chrome/locale/fa/ -locale adblockplus fi chrome/locale/fi/ -locale adblockplus fr chrome/locale/fr/ -locale adblockplus fy-NL chrome/locale/fy-NL/ -locale adblockplus gl chrome/locale/gl/ -locale adblockplus he chrome/locale/he/ -locale adblockplus hr chrome/locale/hr/ -locale adblockplus hsb chrome/locale/hsb/ -locale adblockplus hu chrome/locale/hu/ -locale adblockplus hy-AM chrome/locale/hy-AM/ -locale adblockplus id chrome/locale/id/ -locale adblockplus is chrome/locale/is/ -locale adblockplus it chrome/locale/it/ -locale adblockplus ja chrome/locale/ja/ -locale adblockplus kk chrome/locale/kk/ -locale adblockplus ko chrome/locale/ko/ -locale adblockplus lt chrome/locale/lt/ -locale adblockplus lv chrome/locale/lv/ -locale adblockplus ms chrome/locale/ms/ -locale adblockplus nb-NO chrome/locale/nb-NO/ -locale adblockplus nl chrome/locale/nl/ -locale adblockplus pl chrome/locale/pl/ -locale adblockplus pt-BR chrome/locale/pt-BR/ -locale adblockplus pt-PT chrome/locale/pt-PT/ -locale adblockplus ro chrome/locale/ro/ -locale adblockplus ru chrome/locale/ru/ -locale adblockplus sk chrome/locale/sk/ -locale adblockplus sl chrome/locale/sl/ -locale adblockplus sq chrome/locale/sq/ -locale adblockplus sr chrome/locale/sr/ -locale adblockplus sv-SE chrome/locale/sv-SE/ -locale adblockplus th chrome/locale/th/ -locale adblockplus tr chrome/locale/tr/ -locale adblockplus uk chrome/locale/uk/ -locale adblockplus vi chrome/locale/vi/ -locale adblockplus zh-CN chrome/locale/zh-CN/ -locale adblockplus zh-TW chrome/locale/zh-TW/ - -# fennec settings -override chrome://adblockplus/content/ui/settings.xul chrome://adblockplus/content/ui/fennecSettings.xul application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/errors.html b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/errors.html deleted file mode 100644 index 5c18929..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/errors.html +++ /dev/null @@ -1,111 +0,0 @@ -<!DOCTYPE html> - -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Adblock Plus Errors</title> - <style type="text/css"> - .warning, .error - { - border: 1px dashed black; - margin: 5px; - padding: 2px; - white-space: pre-wrap; - } - - .error - { - background-color: #fff0f0; - } - - .warning - { - background-color: #ffffe0; - } - - button - { - float: right; - } - </style> -</head> -<body> - <button onclick="window.location.reload();">Refresh</button> - <button onclick="clearErrors();">Clear errors</button> - - <script type="application/x-javascript;version=1.7"> - let id = null; - try { - let {addonVersion, addonID} = require("info"); - - let text = "You are running Adblock Plus " + addonVersion; - text += "."; - document.write("<p>" + text + "</p>"); - - id = addonID.replace(/[\{\}]/g, ""); - } catch (e) {} - - // See https://bugzilla.mozilla.org/show_bug.cgi?id=664695 - starting with - // Gecko 19 this function returns the result, before that it wrote to a - // parameter. - let outparam = {}; - let messages = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService) - .getMessageArray(outparam, {}); - messages = messages || outparam.value || []; - messages = messages.filter(function(message) - { - return (message instanceof Components.interfaces.nsIScriptError && - !/^https?:/i.test(message.sourceName) && - (/adblock/i.test(message.errorMessage) || /adblock/i.test(message.sourceName) || - id && (message.errorMessage.indexOf(id) >= 0 || message.sourceName && message.sourceName.indexOf(id) >= 0))); - }); - - if (messages.length) - { - document.write("<p>Errors related to Adblock Plus:</p>"); - - for each (let message in messages) - { - let type = (message.flags & Components.interfaces.nsIScriptError.warningFlag ? "warning" : "error"); - let html = "<b>" + (type == "warning" ? "Warning:" : "Error:") + "</b><br>"; - html += encodeHTML(message.errorMessage) + "<br><br>"; - if (message.sourceLine) - html += "Source line: " + encodeHTML(message.sourceLine) + "<br>"; - if (message.sourceName) - html += "Location: " + encodeHTML(message.sourceName) + " line " + message.lineNumber + "<br>"; - html = html.replace(/(<br>)+$/, ""); - document.write("<div class='" + type + "'>" + - html + - "</div>"); - } - } - else - { - document.write("<p>No errors found.</p>"); - } - - function require(module) - { - let {Services} = Components.utils.import("resource://gre/modules/Services.jsm"); - let result = {}; - result.wrappedJSObject = result; - Services.obs.notifyObservers(result, "adblockplus-require", module); - return result.exports; - } - - function encodeHTML(string) - { - return string.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); - } - - function clearErrors() - { - Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService) - .reset(); - window.location.reload(); - } - </script> -</body> -</html> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/objtabs.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/objtabs.css deleted file mode 100644 index ce3a830..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/objtabs.css +++ /dev/null @@ -1,82 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.w3.org/1999/xhtml"); - -.%%CLASSVISIBLETOP%%, .%%CLASSVISIBLEBOTTOM%%, .%%CLASSHIDDEN%% -{ - position: fixed !important; - display: block !important; - - width: auto !important; - height: auto !important; - right: auto !important; - bottom: auto !important; - z-index: 65535 !important; - float: left !important; - border-color: black !important; - border-style: solid !important; - background: white !important; - color: black !important; - cursor: pointer !important; - white-space: nowrap !important; - font-family: Arial,Helvetica,Sans-Serif !important; - font-size: 10px !important; - font-style: normal !important; - font-variant: normal !important; - font-weight: normal !important; - letter-spacing: normal !important; - line-height: normal !important; - text-align: center !important; - text-decoration: none !important; - text-indent: 0px !important; - text-transform: none !important; - direction: ltr !important; - padding: 0px 5px !important; - -moz-binding: none !important; - -moz-user-focus: none !important; - -moz-user-input: none !important; - -moz-user-select: none !important; -} - -.%%CLASSVISIBLETOP%%, .%%CLASSHIDDEN%% -{ - border-width: 1px 1px 0px 1px !important; - border-top-left-radius: 10px !important; - border-top-right-radius: 10px !important; - border-bottom-left-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} - -.%%CLASSVISIBLEBOTTOM%% -{ - border-width: 0px 1px 1px 1px !important; - border-top-left-radius: 0px !important; - border-top-right-radius: 0px !important; - border-bottom-left-radius: 10px !important; - border-bottom-right-radius: 10px !important; -} - -.%%CLASSVISIBLETOP%%, .%%CLASSVISIBLEBOTTOM%% -{ - visibility: visible !important; -} - -.%%CLASSHIDDEN%% -{ - visibility: hidden !important; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.js deleted file mode 100644 index f7b8087..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.js +++ /dev/null @@ -1,412 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -let nodes = null; -let item = null; -let advancedMode = false; - -function init() -{ - [nodes, item] = window.arguments; - - E("filterType").value = (!item.filter || item.filter.disabled || item.filter instanceof WhitelistFilter ? "filterlist" : "whitelist"); - E("customPattern").value = item.location; - - let insertionPoint = E("customPatternBox"); - let addSuggestion = function(address) - { - // Always drop protocol and www. from the suggestion - address = address.replace(/^[\w\-]+:\/+(?:www\.)?/, ""); - - let suggestion = document.createElement("radio"); - suggestion.setAttribute("value", address); - suggestion.setAttribute("label", address); - suggestion.setAttribute("crop", "center"); - suggestion.setAttribute("class", "suggestion"); - insertionPoint.parentNode.insertBefore(suggestion, insertionPoint); - - return address; - } - - let ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); - try - { - let suggestions = [""]; - - let url = ioService.newURI(item.location, null, null) - .QueryInterface(Ci.nsIURL); - let suffix = (url.query ? "?*" : ""); - url.query = ""; - url.ref = ""; - suggestions[1] = addSuggestion(url.spec + suffix); - - let parentURL = ioService.newURI(url.fileName == "" ? ".." : ".", null, url); - if (!parentURL.equals(url)) - suggestions[2] = addSuggestion(parentURL.spec + "*"); - else - suggestions[2] = suggestions[1]; - - let rootURL = ioService.newURI("/", null, url); - if (!rootURL.equals(parentURL) && !rootURL.equals(url)) - suggestions[3] = addSuggestion(rootURL.spec + "*"); - else - suggestions[3] = suggestions[2]; - - try - { - suggestions[4] = addSuggestion(url.host.replace(/^www\./, "") + "^"); - - // Prefer example.com^ to example.com/* - let undesired = suggestions[4].replace(/\^$/, "/*"); - for (let i = 0; i < suggestions.length - 1; i++) - if (suggestions[i] == undesired) - suggestions[i] = suggestions[4]; - - for (let child = insertionPoint.parentNode.firstChild; child; child = child.nextSibling) - { - if (child.localName == "radio" && child.getAttribute("value") == undesired) - { - child.parentNode.removeChild(child); - break; - } - } - } - catch (e) - { - suggestions[4] = suggestions[3]; - } - - try - { - let effectiveTLD = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService); - let host = url.host; - let baseDomain = effectiveTLD.getBaseDomainFromHost(host); - if (baseDomain != host.replace(/^www\./, "")) - suggestions[5] = addSuggestion(baseDomain + "^"); - else - suggestions[5] = suggestions[4]; - } - catch (e) - { - suggestions[5] = suggestions[4]; - } - - E("patternGroup").value = (Prefs.composer_default in suggestions ? suggestions[Prefs.composer_default] : suggestions[1]); - } - catch (e) - { - // IOService returned nsIURI - not much we can do with it - addSuggestion(item.location); - E("patternGroup").value = ""; - } - if (Prefs.composer_default == 0) - E("customPattern").focus(); - else - E("patternGroup").focus(); - - let types = []; - for (let type in Policy.localizedDescr) - { - types.push(parseInt(type)); - } - types.sort(function(a, b) { - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; - }); - - let docDomain = item.docDomain; - let thirdParty = item.thirdParty; - - if (docDomain) - docDomain = docDomain.replace(/^www\./i, "").replace(/\.+$/, ""); - if (docDomain) - E("domainRestriction").value = docDomain; - - E("thirdParty").hidden = !thirdParty; - E("firstParty").hidden = thirdParty; - - let typeGroup = E("typeGroup"); - let defaultTypes = RegExpFilter.prototype.contentType & ~RegExpFilter.typeMap.DOCUMENT; - let isDefaultType = (RegExpFilter.typeMap[item.typeDescr] & defaultTypes) != 0; - for each (let type in types) - { - if (type == Policy.type.ELEMHIDE) - continue; - - let typeNode = document.createElement("checkbox"); - typeNode.setAttribute("value", Policy.typeDescr[type].toLowerCase().replace(/\_/g, "-")); - typeNode.setAttribute("label", Policy.localizedDescr[type].toLowerCase()); - - let typeMask = RegExpFilter.typeMap[Policy.typeDescr[type]]; - typeNode._defaultType = (typeMask & defaultTypes) != 0; - if ((isDefaultType && typeNode._defaultType) || (!isDefaultType && item.type == type)) - typeNode.setAttribute("checked", "true"); - - if (item.type == type) - typeNode.setAttribute("disabled", "true"); - typeNode.addEventListener("command", function() checkboxUpdated(this), false); - typeGroup.appendChild(typeNode); - } - - let collapseDefault = E("collapseDefault"); - collapseDefault.label = collapseDefault.getAttribute(Prefs.fastcollapse ? "label_no" : "label_yes"); - E("collapse").value = ""; - E("collapse").setAttribute("label", collapseDefault.label); - - let warning = E("disabledWarning"); - generateLinkText(warning); - warning.hidden = Prefs.enabled; - - updatePatternSelection(); -} - -function checkboxUpdated(checkbox) -{ - checkbox._lastChange = Date.now(); - updateFilter(); -} - -function updateFilter() -{ - let filter = ""; - - let type = E("filterType").value - if (type == "whitelist") - filter += "@@"; - - let pattern = E("patternGroup").value; - if (pattern == "") - pattern = E("customPattern").value; - - if (E("anchorStart").checked) - filter += E("anchorStart").flexibleAnchor ? "||" : "|"; - - filter += pattern; - - if (E("anchorEnd").checked) - filter += "|"; - - if (advancedMode) - { - let options = []; - - if (E("domainRestrictionEnabled").checked) - { - let domainRestriction = E("domainRestriction").value.replace(/[,\s]/g, "").replace(/\.+$/, ""); - if (domainRestriction) - options.push([E("domainRestrictionEnabled")._lastChange || 0, "domain=" + domainRestriction]); - } - - if (E("firstParty").checked) - options.push([E("firstParty")._lastChange || 0, "~third-party"]); - if (E("thirdParty").checked) - options.push([E("thirdParty")._lastChange || 0, "third-party"]); - - if (E("matchCase").checked) - options.push([E("matchCase")._lastChange || 0, "match-case"]); - - let collapse = E("collapse"); - disableElement(collapse, type == "whitelist", "value", ""); - if (collapse.value != "") - options.push([collapse._lastChange, collapse.value]); - - let enabledTypes = []; - let disabledTypes = []; - let forceEnabledTypes = []; - for (let typeNode = E("typeGroup").firstChild; typeNode; typeNode = typeNode.nextSibling) - { - let value = typeNode.getAttribute("value"); - if (value == "document") - disableElement(typeNode, type != "whitelist", "checked", false); - - if (!typeNode._defaultType) - { - if (typeNode.getAttribute("checked") == "true") - forceEnabledTypes.push([typeNode._lastChange || 0, value]); - } - else if (typeNode.getAttribute("checked") == "true") - enabledTypes.push([typeNode._lastChange || 0, value]); - else - disabledTypes.push([typeNode._lastChange || 0, "~" + value]); - } - if (!forceEnabledTypes.length && disabledTypes.length < enabledTypes.length) - options.push.apply(options, disabledTypes); - else - options.push.apply(options, enabledTypes); - options.push.apply(options, forceEnabledTypes); - - if (options.length) - { - options.sort(function(a, b) a[0] - b[0]); - filter += "$" + options.map(function(o) o[1]).join(","); - } - } - else - { - let defaultTypes = RegExpFilter.prototype.contentType & ~RegExpFilter.typeMap.DOCUMENT; - let isDefaultType = (RegExpFilter.typeMap[item.typeDescr] & defaultTypes) != 0; - if (!isDefaultType) - filter += "$" + item.typeDescr.toLowerCase().replace(/\_/g, "-"); - } - - filter = Filter.normalize(filter); - E("regexpWarning").hidden = !Filter.regexpRegExp.test(filter); - - let isSlow = false; - let compiledFilter = Filter.fromText(filter); - if (E("regexpWarning").hidden) - { - if (compiledFilter instanceof RegExpFilter && defaultMatcher.isSlowFilter(compiledFilter)) - isSlow = true; - } - E("shortpatternWarning").hidden = !isSlow; - - E("matchWarning").hidden = compiledFilter instanceof RegExpFilter && compiledFilter.matches(item.location, item.typeDescr, item.docDomain, item.thirdParty); - - E("filter").value = filter; -} - -function generateLinkText(element, replacement) -{ - let template = element.getAttribute("textTemplate"); - if (typeof replacement != "undefined") - template = template.replace(/\?1\?/g, replacement) - - let [, beforeLink, linkText, afterLink] = /(.*)\[link\](.*)\[\/link\](.*)/.exec(template) || [null, "", template, ""]; - while (element.firstChild && element.firstChild.nodeType != Node.ELEMENT_NODE) - element.removeChild(element.firstChild); - while (element.lastChild && element.lastChild.nodeType != Node.ELEMENT_NODE) - element.removeChild(element.lastChild); - if (!element.firstChild) - return; - - element.firstChild.textContent = linkText; - element.insertBefore(document.createTextNode(beforeLink), element.firstChild); - element.appendChild(document.createTextNode(afterLink)); -} - -function updatePatternSelection() -{ - let pattern = E("patternGroup").value; - if (pattern == "") - { - pattern = E("customPattern").value; - } - else - { - E("anchorStart").checked = true; - E("anchorEnd").checked = false; - } - - function testFilter(/**String*/ filter) /**Boolean*/ - { - return RegExpFilter.fromText(filter + "$" + item.typeDescr).matches(item.location, item.typeDescr, item.docDomain, item.thirdParty); - } - - let anchorStartCheckbox = E("anchorStart"); - if (!/^\*/.test(pattern) && testFilter("||" + pattern)) - { - disableElement(anchorStartCheckbox, false, "checked", false); - [anchorStartCheckbox.label, anchorStartCheckbox.accessKey] = Utils.splitLabel(anchorStartCheckbox.getAttribute("labelFlexible")); - anchorStartCheckbox.flexibleAnchor = true; - } - else - { - disableElement(anchorStartCheckbox, /^\*/.test(pattern) || !testFilter("|" + pattern), "checked", false); - [anchorStartCheckbox.label, anchorStartCheckbox.accessKey] = Utils.splitLabel(anchorStartCheckbox.getAttribute("labelRegular")); - anchorStartCheckbox.flexibleAnchor = false; - } - disableElement(E("anchorEnd"), /[\*\^]$/.test(pattern) || !testFilter(pattern + "|"), "checked", false); - - updateFilter(); - setAdvancedMode(document.documentElement.getAttribute("advancedMode") == "true"); -} - -function updateCustomPattern() -{ - E("patternGroup").value = ""; - updatePatternSelection(); -} - -function addFilter() { - let filter = Filter.fromText(document.getElementById("filter").value); - filter.disabled = false; - - FilterStorage.addFilter(filter); - - if (nodes) - Policy.refilterNodes(nodes, item); - - return true; -} - -function setAdvancedMode(mode) { - advancedMode = mode; - - var dialog = document.documentElement; - dialog.setAttribute("advancedMode", advancedMode); - - var button = dialog.getButton("disclosure"); - button.setAttribute("label", dialog.getAttribute(advancedMode ? "buttonlabeldisclosure_off" : "buttonlabeldisclosure_on")); - - updateFilter(); -} - -function disableElement(element, disable, valueProperty, disabledValue) { - if ((element.getAttribute("disabled") == "true") == disable) - return; - - if (disable) - { - element.setAttribute("disabled", "true"); - element._abpStoredValue = element[valueProperty]; - element[valueProperty] = disabledValue; - } - else - { - element.removeAttribute("disabled"); - if ("_abpStoredValue" in element) - element[valueProperty] = element._abpStoredValue; - delete element._abpStoredValue; - } -} - -function openPreferences() -{ - UI.openFiltersDialog(Filter.fromText(E("filter").value)); -} - -function doEnable() { - Prefs.enabled = true; - E("disabledWarning").hidden = true; -} - -/** - * Selects or unselects all type checkboxes except those - * that are disabled. - */ -function selectAllTypes(/**Boolean*/ select) -{ - for (let typeNode = E("typeGroup").firstChild; typeNode; typeNode = typeNode.nextSibling) - if (typeNode.getAttribute("disabled") != "true") - typeNode.checked = select; - updateFilter(); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.xul deleted file mode 100644 index 8931e16..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/composer.xul +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<!DOCTYPE overlay SYSTEM "chrome://adblockplus/locale/composer.dtd"> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://adblockplus/skin/composer.css" type="text/css"?> - -<dialog id="abp-composer" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - title="&dialog.title;" - onload="init()" - ondialogaccept="return addFilter()" - ondialogdisclosure="setAdvancedMode(!advancedMode)" - buttons="accept,cancel,disclosure" - width="800px" - height="400px" - persist="screenX screenY width height sizemode advancedMode" - advancedMode="false" - buttonlabelaccept="&accept.label;" - buttonlabeldisclosure="&advanced.label;" - buttonlabeldisclosure_on="&advanced.label;" - buttonlabeldisclosure_off="&basic.label;" - windowtype="abp:composer"> - - <script type="application/x-javascript;version=1.7" src="utils.js"/> - <script type="application/x-javascript;version=1.7" src="composer.js"/> - - <popupset> - <tooltip id="domainRestrictionHelp" label="&domainRestriction.help;"/> - </popupset> - - <description id="disabledWarning" hidden="true" textTemplate="&disabled.warning;"> - <label class="text-link" onclick="doEnable()"/> - </description> - - <hbox id="filterBox" align="center"> - <label control="filter" value="&filter.label;"/> - <textbox id="filter" flex="1" tabindex="-1" readonly="true"/> - <button id="preferences" label="&preferences.label;" oncommand="openPreferences()"/> - </hbox> - - <radiogroup orient="horizontal" id="filterType" oncommand="updateFilter()"> - <radio label="&type.filter.label;" value="filterlist" flex="1"/> - <radio label="&type.whitelist.label;" value="whitelist" flex="1"/> - </radiogroup> - - <hbox flex="1"> - <groupbox id="pattern" flex="1"> - <caption label="&pattern.label;"/> - <radiogroup id="patternGroup" flex="1" oncommand="updatePatternSelection()" style="overflow: auto;"> - <description id="patternExplanation">&pattern.explanation;</description> - <description id="regexpWarning" hidden="true">®exp.warning;</description> - <description id="shortpatternWarning" hidden="true">&shortpattern.warning;</description> - <description id="matchWarning" hidden="true">&match.warning;</description> - <hbox id="customPatternBox"> - <radio id="customPatternRadio" label="&custom.pattern.label;" value="" control="customPattern"/> - <textbox id="customPattern" flex="1" oninput="updateCustomPattern()"/> - </hbox> - </radiogroup> - <hbox id="anchorGroup" pack="start" align="baseline"> - <label value="&anchors.label;"/> - <description flex="1" style="margin: 0; padding: 0;"> - <checkbox id="anchorStart" labelRegular="&anchor.start.label;" - labelFlexible="&anchor.start.flexible.label;" - oncommand="updateFilter()"/> - <checkbox id="anchorEnd" label="&anchor.end.label;" oncommand="updateFilter()"/> - </description> - </hbox> - </groupbox> - <groupbox id="options"> - <caption label="&options.label;"/> - <checkbox id="firstParty" label="&firstParty.label;" oncommand="checkboxUpdated(this);"/> - <checkbox id="thirdParty" label="&thirdParty.label;" oncommand="checkboxUpdated(this);"/> - <checkbox id="matchCase" label="&matchCase.label;" oncommand="checkboxUpdated(this);"/> - <hbox align="baseline"> - <checkbox id="domainRestrictionEnabled" label="&domainRestriction.label;" oncommand="checkboxUpdated(this);"/> - <description class="help" value="?" tooltip="domainRestrictionHelp"/> - </hbox> - <textbox id="domainRestriction" oninput="updateFilter()"/> - - <label id="typeGroupLabel" value="&types.label;"/> - <hbox> - <label id="selectAllTypes" class="text-link" value="&selectAllTypes.label;" onclick="selectAllTypes(true)"/> - <spacer flex="1"/> - <label id="unselectAllTypes" class="text-link" value="&unselectAllTypes.label;" onclick="selectAllTypes(false)"/> - </hbox> - <vbox flex="1" id="typeGroup"/> - - <vbox> - <label control="collapse" value="&collapse.label;"/> - <menulist id="collapse" oncommand="updateFilter()"> - <menupopup> - <menuitem id="collapseDefault" value="" label_yes="&collapse.default.yes.label;" label_no="&collapse.default.no.label;" selected="true"/> - <menuitem label="&collapse.yes.label;" value="collapse"/> - <menuitem label="&collapse.no.label;" value="~collapse"/> - </menupopup> - </menulist> - </vbox> - </groupbox> - </hbox> -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/fennecSettings.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/fennecSettings.xul deleted file mode 100644 index 9063ba3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/fennecSettings.xul +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<!DOCTYPE vbox [ -<!ENTITY % overlayDTD SYSTEM "chrome://adblockplus/locale/overlay.dtd"> -%overlayDTD; -<!ENTITY % filtersDTD SYSTEM "chrome://adblockplus/locale/filters.dtd"> -%filtersDTD; -]> - -<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <setting pref="extensions.adblockplus.enabled" type="bool" inverted="true" title="&disable.label;"/> - <setting type="control" title="&subscriptions.tab.label;"> - <menulist id="adblockplus-subscription-list"/> - </setting> - <setting id="adblockplus-acceptableAds" type="bool" title="&acceptableAds2.label;" - oncommand="/**See bug 762015*/ if (event.type == 'oncommand') {event = document.createEvent('Events'); event.initEvent('command', false, false); this.dispatchEvent(event);}"/> - <setting pref="extensions.adblockplus.fastcollapse" type="bool" title="&hideplaceholders.label;" - inverted="true"/> - <setting id="adblockplus-sync" type="bool" title="&sync.label;" - oncommand="/**See bug 762015*/ if (event.type == 'oncommand') {event = document.createEvent('Events'); event.initEvent('command', false, false); this.dispatchEvent(event);}"/> -</vbox> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-backup.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-backup.js deleted file mode 100644 index 3ef38c6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-backup.js +++ /dev/null @@ -1,348 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/FileUtils.jsm"); - -/** - * Implementation of backup and restore functionality. - * @class - */ -var Backup = -{ - /** - * Template for menu items to be displayed in the Restore menu (for automated - * backups). - * @type Element - */ - restoreTemplate: null, - - /** - * Element after which restore items should be inserted. - * @type Element - */ - restoreInsertionPoint: null, - - /** - * Regular expression to recognize checksum comments. - */ - CHECKSUM_REGEXP: /^!\s*checksum[\s\-:]+([\w\+\/]+)/i, - - /** - * Regular expression to recognize group title comments. - */ - GROUPTITLE_REGEXP: /^!\s*\[(.*)\]((?:\/\w+)*)\s*$/, - - - /** - * Initializes backup UI. - */ - init: function() - { - this.restoreTemplate = E("restoreBackupTemplate"); - this.restoreInsertionPoint = this.restoreTemplate.previousSibling; - this.restoreTemplate.parentNode.removeChild(this.restoreTemplate); - this.restoreTemplate.removeAttribute("id"); - this.restoreTemplate.removeAttribute("hidden"); - }, - - /** - * Gets the default download dir, as used by the browser itself. - */ - getDefaultDir: function() /**nsIFile*/ - { - try - { - return Utils.prefService.getComplexValue("browser.download.lastDir", Ci.nsILocalFile); - } - catch (e) - { - // No default download location. Default to desktop. - return FileUtils.getDir("Desk", [], false); - } - }, - - /** - * Saves new default download dir after the user chose a different directory to - * save his files to. - */ - saveDefaultDir: function(/**nsIFile*/ dir) - { - try - { - Utils.prefService.setComplexValue("browser.download.lastDir", Ci.nsILocalFile, dir); - } catch(e) {}; - }, - - /** - * Called when the Restore menu is being opened, fills in "Automated backup" - * entries. - */ - fillRestorePopup: function() - { - while (this.restoreInsertionPoint.nextSibling && !this.restoreInsertionPoint.nextSibling.id) - this.restoreInsertionPoint.parentNode.removeChild(this.restoreInsertionPoint.nextSibling); - - let files = FilterStorage.getBackupFiles().reverse(); - for (let i = 0; i < files.length; i++) - { - let file = files[i]; - let item = this.restoreTemplate.cloneNode(true); - let label = item.getAttribute("label"); - label = label.replace(/\?1\?/, Utils.formatTime(file.lastModifiedTime)); - item.setAttribute("label", label); - item.addEventListener("command", function() - { - Backup.restoreAllData(file); - }, false); - this.restoreInsertionPoint.parentNode.insertBefore(item, this.restoreInsertionPoint.nextSibling); - } - }, - - /** - * Lets the user choose a file to restore filters from. - */ - restoreFromFile: function() - { - let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - picker.init(window, E("backupButton").getAttribute("_restoreDialogTitle"), picker.modeOpen); - picker.defaultExtension = ".ini"; - picker.appendFilter(E("backupButton").getAttribute("_fileFilterComplete"), "*.ini"); - picker.appendFilter(E("backupButton").getAttribute("_fileFilterCustom"), "*.txt"); - - if (picker.show() != picker.returnCancel) - { - this.saveDefaultDir(picker.file.parent); - if (picker.filterIndex == 0) - this.restoreAllData(picker.file); - else - this.restoreCustomFilters(picker.file); - } - }, - - /** - * Restores patterns.ini from a file. - */ - restoreAllData: function(/**nsIFile*/ file) - { - let stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); - stream.init(file, FileUtils.MODE_RDONLY, FileUtils.PERMS_FILE, 0); - stream.QueryInterface(Ci.nsILineInputStream); - - let lines = []; - let line = {value: null}; - if (stream.readLine(line)) - lines.push(line.value); - if (stream.readLine(line)) - lines.push(line.value); - stream.close(); - - let match; - if (lines.length < 2 || lines[0] != "# Adblock Plus preferences" || !(match = /version=(\d+)/.exec(lines[1]))) - { - Utils.alert(window, E("backupButton").getAttribute("_restoreError"), E("backupButton").getAttribute("_restoreDialogTitle")); - return; - } - - let warning = E("backupButton").getAttribute("_restoreCompleteWarning"); - let minVersion = parseInt(match[1], 10); - if (minVersion > FilterStorage.formatVersion) - warning += "\n\n" + E("backupButton").getAttribute("_restoreVersionWarning"); - - if (!Utils.confirm(window, warning, E("backupButton").getAttribute("_restoreDialogTitle"))) - return; - - FilterStorage.loadFromDisk(file); - }, - - /** - * Restores custom filters from a file. - */ - restoreCustomFilters: function(/**nsIFile*/ file) - { - IO.readFromFile(file, { - seenHeader: false, - subscription: null, - process: function(line) - { - if (!this.seenHeader) - { - // This should be a header - this.seenHeader = true; - let match = /\[Adblock(?:\s*Plus\s*([\d\.]+)?)?\]/i.exec(line); - if (match) - { - let warning = E("backupButton").getAttribute("_restoreCustomWarning"); - let minVersion = match[1]; - if (minVersion && Utils.versionComparator.compare(minVersion, Utils.addonVersion) > 0) - warning += "\n\n" + E("backupButton").getAttribute("_restoreVersionWarning"); - - if (Utils.confirm(window, warning, E("backupButton").getAttribute("_restoreDialogTitle"))) - { - let subscriptions = FilterStorage.subscriptions.filter(function(s) s instanceof SpecialSubscription); - for (let i = 0; i < subscriptions.length; i++) - FilterStorage.removeSubscription(subscriptions[i]); - - return; - } - else - throw Cr.NS_BASE_STREAM_WOULD_BLOCK; - } - else - throw new Error("Invalid file"); - } - else if (line === null) - { - // End of file - if (this.subscription) - FilterStorage.addSubscription(this.subscription); - E("tabs").selectedIndex = 1; - } - else if (Backup.CHECKSUM_REGEXP.test(line)) - { - // Ignore checksums - } - else if (Backup.GROUPTITLE_REGEXP.test(line)) - { - // New group start - if (this.subscription) - FilterStorage.addSubscription(this.subscription); - - let [, title, options] = Backup.GROUPTITLE_REGEXP.exec(line); - this.subscription = SpecialSubscription.create(title); - - let defaults = []; - if (options) - options = options.split("/"); - for (let j = 0; j < options.length; j++) - if (options[j] in SpecialSubscription.defaultsMap) - defaults.push(options[j]); - if (defaults.length) - this.subscription.defaults = defaults; - } - else - { - // Regular filter - line = Filter.normalize(line); - if (line) - { - if (!this.subscription) - this.subscription = SpecialSubscription.create(Utils.getString("newGroup_title")); - this.subscription.filters.push(Filter.fromText(line)); - } - } - } - }, function(e) - { - if (e && e.result != Cr.NS_BASE_STREAM_WOULD_BLOCK) - { - Cu.reportError(e); - Utils.alert(window, E("backupButton").getAttribute("_restoreError"), E("backupButton").getAttribute("_restoreDialogTitle")); - } - }); - }, - - /** - * Lets the user choose a file to backup filters to. - */ - backupToFile: function() - { - let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - picker.init(window, E("backupButton").getAttribute("_backupDialogTitle"), picker.modeSave); - picker.defaultExtension = ".ini"; - picker.appendFilter(E("backupButton").getAttribute("_fileFilterComplete"), "*.ini"); - picker.appendFilter(E("backupButton").getAttribute("_fileFilterCustom"), "*.txt"); - - if (picker.show() != picker.returnCancel) - { - this.saveDefaultDir(picker.file.parent); - if (picker.filterIndex == 0) - this.backupAllData(picker.file); - else - this.backupCustomFilters(picker.file); - } - }, - - /** - * Writes all patterns.ini data to a file. - */ - backupAllData: function(/**nsIFile*/ file) - { - FilterStorage.saveToDisk(file); - }, - - /** - * Writes user's custom filters to a file. - */ - backupCustomFilters: function(/**nsIFile*/ file) - { - let subscriptions = FilterStorage.subscriptions.filter(function(s) s instanceof SpecialSubscription); - let minVersion = "2.0" - let list = []; - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - let typeAddition = ""; - if (subscription.defaults) - typeAddition = "/" + subscription.defaults.join("/"); - list.push("! [" + subscription.title + "]" + typeAddition); - for (let j = 0; j < subscription.filters.length; j++) - { - let filter = subscription.filters[j]; - // Skip checksums - if (filter instanceof CommentFilter && this.CHECKSUM_REGEXP.test(filter.text)) - continue; - // Skip group headers - if (filter instanceof CommentFilter && this.GROUPTITLE_REGEXP.test(filter.text)) - continue; - list.push(filter.text); - - if (filter instanceof ElemHideException && Services.vc.compare(minVersion, "2.1") < 0) - minVersion = "2.1"; - } - } - list.unshift("[Adblock Plus " + minVersion + "]"); - - // Insert checksum. Have to add an empty line to the end of the list to - // account for the trailing newline in the file. - list.push(""); - let checksum = Utils.generateChecksum(list); - list.pop(); - if (checksum) - list.splice(1, 0, "! Checksum: " + checksum); - - function generator() - { - for (let i = 0; i < list.length; i++) - yield list[i]; - } - - IO.writeToFile(file, generator(), function(e) - { - if (e) - { - Cu.reportError(e); - Utils.alert(window, E("backupButton").getAttribute("_backupError"), E("backupButton").getAttribute("_backupDialogTitle")); - } - }); - } -}; - -window.addEventListener("load", function() -{ - Backup.init(); -}, false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filteractions.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filteractions.js deleted file mode 100644 index 5512fda..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filteractions.js +++ /dev/null @@ -1,561 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Implementation of the various actions performed on the filters. - * @class - */ -var FilterActions = -{ - /** - * Initializes filter actions. - */ - init: function() - { - let me = this; - this.treeElement.parentNode.addEventListener("keypress", function(event) - { - me.keyPress(event); - }, true); - this.treeElement.view = FilterView; - - // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=777832, don't - // allow the tree to receive keypress/keydown events triggered by cursor - // keys pressed in the editor, it will call preventDefault() on them. - let propagationStopper = function(event) - { - if (event.keyCode >= event.DOM_VK_PAGE_UP && event.keyCode <= event.DOM_VK_DOWN) - event.stopPropagation(); - }; - - this.treeElement.inputField.addEventListener("keypress", propagationStopper, false); - this.treeElement.inputField.addEventListener("keydown", propagationStopper, false); - - // Create a copy of the view menu - function fixId(node, newId) - { - if (node.nodeType == node.ELEMENT_NODE) - { - if (node.hasAttribute("id")) - node.setAttribute("id", node.getAttribute("id").replace(/\d+$/, newId)); - - for (let i = 0, len = node.childNodes.length; i < len; i++) - fixId(node.childNodes[i], newId); - } - return node; - } - E("viewMenu").appendChild(fixId(E("filters-view-menu1").cloneNode(true), "2")); - }, - - /** - * <tree> element containing the filters. - * @type XULElement - */ - get treeElement() E("filtersTree"), - - /** - * Tests whether the tree is currently visible. - */ - get visible() - { - return !this.treeElement.parentNode.collapsed; - }, - - /** - * Tests whether the tree is currently focused. - * @type Boolean - */ - get focused() - { - let focused = document.commandDispatcher.focusedElement; - while (focused) - { - if ("treeBoxObject" in focused && focused.treeBoxObject == FilterView.boxObject) - return true; - focused = focused.parentNode; - } - return false; - }, - - /** - * Updates visible filter commands whenever the selected subscription changes. - */ - updateCommands: function() - { - E("filters-add-command").setAttribute("disabled", !FilterView.editable); - }, - - /** - * Called whenever filter actions menu is opened, initializes menu items. - */ - fillActionsPopup: function() - { - let editable = FilterView.editable; - let items = FilterView.selectedItems.filter(function(i) !i.filter.dummy); - items.sort(function(entry1, entry2) entry1.index - entry2.index); - let activeItems = items.filter(function(i) i.filter instanceof ActiveFilter); - - E("filters-edit-command").setAttribute("disabled", !editable || !items.length); - E("filters-delete-command").setAttribute("disabled", !editable || !items.length); - E("filters-resetHitCounts-command").setAttribute("disabled", !activeItems.length); - E("filters-moveUp-command").setAttribute("disabled", !editable || FilterView.isSorted() || !items.length || items[0].index == 0); - E("filters-moveDown-command").setAttribute("disabled", !editable || FilterView.isSorted() || !items.length || items[items.length - 1].index == FilterView.rowCount - 1); - E("filters-copy-command").setAttribute("disabled", !items.length); - E("filters-cut-command").setAttribute("disabled", !editable || !items.length); - E("filters-paste-command").setAttribute("disabled", !editable || !Utils.clipboard.hasDataMatchingFlavors(["text/unicode"], 1, Utils.clipboard.kGlobalClipboard)); - }, - - /** - * Changes sort current order for the tree. Sorts by filter column if the list is unsorted. - * @param {String} order either "ascending" or "descending" - */ - setSortOrder: function(sortOrder) - { - let col = (FilterView.sortColumn ? FilterView.sortColumn.id : "col-filter"); - FilterView.sortBy(col, sortOrder); - }, - - /** - * Toggles the visibility of a tree column. - */ - toggleColumn: function(/**String*/ id) - { - let col = E(id); - col.setAttribute("hidden", col.hidden ? "false" : "true"); - }, - - /** - * Enables or disables all filters in the current selection. - */ - selectionToggleDisabled: function() - { - if (this.treeElement.editingColumn) - return; - - let items = FilterView.selectedItems.filter(function(i) i.filter instanceof ActiveFilter); - if (items.length) - { - FilterView.boxObject.beginUpdateBatch(); - let newValue = !items[0].filter.disabled; - for (let i = 0; i < items.length; i++) - items[i].filter.disabled = newValue; - FilterView.boxObject.endUpdateBatch(); - } - }, - - /** - * Selects all entries in the list. - */ - selectAll: function() - { - if (this.treeElement.editingColumn) - return; - - FilterView.selection.selectAll(); - this.treeElement.focus(); - }, - - /** - * Starts editing the current filter. - */ - startEditing: function() - { - if (this.treeElement.editingColumn) - return; - - this.treeElement.startEditing(FilterView.selection.currentIndex, FilterView.boxObject.columns.getNamedColumn("col-filter")); - }, - - /** - * Starts editing a new filter at the current position. - */ - insertFilter: function() - { - if (!FilterView.editable || this.treeElement.editingColumn) - return; - - FilterView.insertEditDummy(); - this.startEditing(); - - let tree = this.treeElement; - let listener = function(event) - { - if (event.attrName == "editing" && tree.editingRow < 0) - { - tree.removeEventListener("DOMAttrModified", listener, false); - FilterView.removeEditDummy(); - } - } - tree.addEventListener("DOMAttrModified", listener, false); - }, - - /** - * Deletes items from the list. - */ - deleteItems: function(/**Array*/ items) - { - let oldIndex = FilterView.selection.currentIndex; - items.sort(function(entry1, entry2) entry2.index - entry1.index); - - for (let i = 0; i < items.length; i++) - FilterStorage.removeFilter(items[i].filter, FilterView._subscription, items[i].index); - - FilterView.selectRow(oldIndex); - }, - - /** - * Deletes selected filters. - */ - deleteSelected: function() - { - if (!FilterView.editable || this.treeElement.editingColumn) - return; - - let items = FilterView.selectedItems; - if (items.length == 0 || (items.length >= 2 && !Utils.confirm(window, this.treeElement.getAttribute("_removewarning")))) - return; - - this.deleteItems(items) - }, - - /** - * Resets hit counts of the selected filters. - */ - resetHitCounts: function() - { - if (this.treeElement.editingColumn) - return; - - let items = FilterView.selectedItems.filter(function(i) i.filter instanceof ActiveFilter); - if (items.length) - FilterStorage.resetHitCounts(items.map(function(i) i.filter)); - }, - - /** - * Moves items to a different position in the list. - * @param {Array} items - * @param {Integer} offset negative offsets move the items up, positive down - */ - _moveItems: function(/**Array*/ items, /**Integer*/ offset) - { - if (!items.length) - return; - - if (offset < 0) - { - items.sort(function(entry1, entry2) entry1.index - entry2.index); - let position = items[0].index + offset; - if (position < 0) - return; - - for (let i = 0; i < items.length; i++) - FilterStorage.moveFilter(items[i].filter, FilterView._subscription, items[i].index, position++); - FilterView.selection.rangedSelect(position - items.length, position - 1, false); - } - else if (offset > 0) - { - items.sort(function(entry1, entry2) entry2.index - entry1.index); - let position = items[0].index + offset; - if (position >= FilterView.rowCount) - return; - - for (let i = 0; i < items.length; i++) - FilterStorage.moveFilter(items[i].filter, FilterView._subscription, items[i].index, position--); - FilterView.selection.rangedSelect(position + 1, position + items.length, false); - } - }, - - /** - * Moves selected filters one line up. - */ - moveUp: function() - { - if (!FilterView.editable || FilterView.isEmpty || FilterView.isSorted() || this.treeElement.editingColumn) - return; - - this._moveItems(FilterView.selectedItems, -1); - }, - - /** - * Moves selected filters one line down. - */ - moveDown: function() - { - if (!FilterView.editable || FilterView.isEmpty || FilterView.isSorted() || this.treeElement.editingColumn) - return; - - this._moveItems(FilterView.selectedItems, 1); - }, - - /** - * Fills the context menu of the filters columns. - */ - fillColumnPopup: function(/**Element*/ element) - { - let suffix = element.id.match(/\d+$/)[0] || "1"; - - E("filters-view-filter" + suffix).setAttribute("checked", !E("col-filter").hidden); - E("filters-view-slow" + suffix).setAttribute("checked", !E("col-slow").hidden); - E("filters-view-enabled" + suffix).setAttribute("checked", !E("col-enabled").hidden); - E("filters-view-hitcount" + suffix).setAttribute("checked", !E("col-hitcount").hidden); - E("filters-view-lasthit" + suffix).setAttribute("checked", !E("col-lasthit").hidden); - - let sortColumn = FilterView.sortColumn; - let sortColumnID = (sortColumn ? sortColumn.id : null); - let sortDir = (sortColumn ? sortColumn.getAttribute("sortDirection") : "natural"); - E("filters-sort-none" + suffix).setAttribute("checked", sortColumn == null); - E("filters-sort-filter" + suffix).setAttribute("checked", sortColumnID == "col-filter"); - E("filters-sort-enabled" + suffix).setAttribute("checked", sortColumnID == "col-enabled"); - E("filters-sort-hitcount" + suffix).setAttribute("checked", sortColumnID == "col-hitcount"); - E("filters-sort-lasthit" + suffix).setAttribute("checked", sortColumnID == "col-lasthit"); - E("filters-sort-asc" + suffix).setAttribute("checked", sortDir == "ascending"); - E("filters-sort-desc" + suffix).setAttribute("checked", sortDir == "descending"); - }, - - /** - * Fills tooltip with the item data. - */ - fillTooltip: function(event) - { - let item = FilterView.getItemAt(event.clientX, event.clientY); - if (!item || item.filter.dummy) - { - event.preventDefault(); - return; - } - - function setMultilineContent(box, text) - { - while (box.firstChild) - box.removeChild(box.firstChild); - - for (var i = 0; i < text.length; i += 80) - { - var description = document.createElement("description"); - description.setAttribute("value", text.substr(i, 80)); - box.appendChild(description); - } - } - - setMultilineContent(E("tooltip-filter"), item.filter.text); - - E("tooltip-hitcount-row").hidden = !(item.filter instanceof ActiveFilter); - E("tooltip-lasthit-row").hidden = !(item.filter instanceof ActiveFilter) || !item.filter.lastHit; - if (item.filter instanceof ActiveFilter) - { - E("tooltip-hitcount").setAttribute("value", item.filter.hitCount) - E("tooltip-lasthit").setAttribute("value", Utils.formatTime(item.filter.lastHit)) - } - - E("tooltip-additional").hidden = false; - if (item.filter instanceof InvalidFilter && item.filter.reason) - E("tooltip-additional").textContent = item.filter.reason; - else if (item.filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(item.filter)) - E("tooltip-additional").textContent = Utils.getString("filter_regexp_tooltip"); - else - E("tooltip-additional").hidden = true; - }, - - /** - * Called whenever a key is pressed on the list. - */ - keyPress: function(/**Event*/ event) - { - if (event.target != E("filtersTree")) - return; - - let modifiers = 0; - if (event.altKey) - modifiers |= SubscriptionActions._altMask; - if (event.ctrlKey) - modifiers |= SubscriptionActions._ctrlMask; - if (event.metaKey) - modifiers |= SubscriptionActions._metaMask; - - if (event.charCode == " ".charCodeAt(0) && modifiers == 0 && !E("col-enabled").hidden) - this.selectionToggleDisabled(); - else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_UP && modifiers == SubscriptionActions._accelMask) - { - E("filters-moveUp-command").doCommand(); - event.preventDefault(); - event.stopPropagation(); - } - else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_DOWN && modifiers == SubscriptionActions._accelMask) - { - E("filters-moveDown-command").doCommand(); - event.preventDefault(); - event.stopPropagation(); - } - }, - - /** - * Copies selected items to clipboard and optionally removes them from the - * list after that. - */ - copySelected: function(/**Boolean*/ keep) - { - let items = FilterView.selectedItems; - if (!items.length) - return; - - items.sort(function(entry1, entry2) entry1.index - entry2.index); - let text = items.map(function(i) i.filter.text).join(IO.lineBreak); - Utils.clipboardHelper.copyString(text); - - if (!keep && FilterView.editable && !this.treeElement.editingColumn) - this.deleteItems(items); - }, - - /** - * Pastes text from clipboard as filters at the current position. - */ - paste: function() - { - if (!FilterView.editable || this.treeElement.editingColumn) - return; - - let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable); - transferable.addDataFlavor("text/unicode"); - - let data; - try - { - data = {}; - Utils.clipboard.getData(transferable, Utils.clipboard.kGlobalClipboard); - transferable.getTransferData("text/unicode", data, {}); - data = data.value.QueryInterface(Ci.nsISupportsString).data; - } - catch (e) { - return; - } - - let item = FilterView.currentItem; - let position = (item ? item.index : FilterView.data.length); - - let lines = data.replace(/\r/g, "").split("\n"); - for (let i = 0; i < lines.length; i++) - { - let line = Filter.normalize(lines[i]); - if (line) - { - let filter = Filter.fromText(line); - FilterStorage.addFilter(filter, FilterView._subscription, position++); - } - } - }, - - dragItems: null, - - /** - * Called whenever the user starts a drag operation. - */ - startDrag: function(/**Event*/ event) - { - let items = FilterView.selectedItems; - if (!items.length) - return; - - items.sort(function(entry1, entry2) entry1.index - entry2.index); - event.dataTransfer.setData("text/plain", items.map(function(i) i.filter.text).join(IO.lineBreak)); - this.dragItems = items; - event.stopPropagation(); - }, - - /** - * Called to check whether moving the items to the given position is possible. - */ - canDrop: function(/**Integer*/ newPosition, /**nsIDOMDataTransfer*/ dataTransfer) - { - if (!FilterView.editable || this.treeElement.editingColumn) - return false; - - // If we aren't dragging items then maybe we got filters as plain text - if (!this.dragItems) - return dataTransfer && dataTransfer.getData("text/plain"); - - if (FilterView.isEmpty || FilterView.isSorted()) - return false; - - if (newPosition < this.dragItems[0].index) - return true; - else if (newPosition > this.dragItems[this.dragItems.length - 1].index + 1) - return true; - else - return false; - }, - - /** - * Called when the user decides to drop the items. - */ - drop: function(/**Integer*/ newPosition, /**nsIDOMDataTransfer*/ dataTransfer) - { - if (!FilterView.editable || this.treeElement.editingColumn) - return; - - if (!this.dragItems) - { - // We got filters as plain text, insert them into the list - let data = (dataTransfer ? dataTransfer.getData("text/plain") : null); - if (data) - { - let lines = data.replace(/\r/g, "").split("\n"); - for (let i = 0; i < lines.length; i++) - { - let line = Filter.normalize(lines[i]); - if (line) - { - let filter = Filter.fromText(line); - FilterStorage.addFilter(filter, FilterView._subscription, newPosition++); - } - } - } - return; - } - - if (FilterView.isEmpty || FilterView.isSorted()) - return; - - if (newPosition < this.dragItems[0].index) - this._moveItems(this.dragItems, newPosition - this.dragItems[0].index); - else if (newPosition > this.dragItems[this.dragItems.length - 1].index + 1) - this._moveItems(this.dragItems, newPosition - this.dragItems[this.dragItems.length - 1].index - 1); - }, - - /** - * Called whenever the a drag operation finishes. - */ - endDrag: function(/**Event*/ event) - { - this.dragItems = null; - }, - - /** - * Called if filters have been dragged into a subscription and need to be removed. - */ - removeDraggedFilters: function() - { - if (!this.dragItems) - return; - - this.deleteItems(this.dragItems); - } -}; - -window.addEventListener("load", function() -{ - FilterActions.init(); -}, false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filterview.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filterview.js deleted file mode 100644 index dcee183..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-filterview.js +++ /dev/null @@ -1,849 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -/** - * nsITreeView implementation to display filters of a particular filter - * subscription. - * @class - */ -var FilterView = -{ - /** - * Initialization function. - */ - init: function() - { - // "Manually" remove access key for col-slow tooltip, Utils.splitAllLabels() - // won't do it. - let slowColumn = document.getElementById("col-slow"); - if (slowColumn) - { - for (let attr of ["display", "tooltiptext"]) - { - let value = slowColumn.getAttribute(attr); - if (!value) - continue; - let [label, accessKey] = Utils.splitLabel(value); - if (label != value) - slowColumn.setAttribute(attr, label); - } - } - - if (this.sortProcs) - return; - - function compareText(/**Filter*/ filter1, /**Filter*/ filter2) - { - if (filter1.text < filter2.text) - return -1; - else if (filter1.text > filter2.text) - return 1; - else - return 0; - } - function compareSlow(/**Filter*/ filter1, /**Filter*/ filter2) - { - let isSlow1 = filter1 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter1); - let isSlow2 = filter2 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter2); - return isSlow1 - isSlow2; - } - function compareEnabled(/**Filter*/ filter1, /**Filter*/ filter2) - { - let hasEnabled1 = (filter1 instanceof ActiveFilter ? 1 : 0); - let hasEnabled2 = (filter2 instanceof ActiveFilter ? 1 : 0); - if (hasEnabled1 != hasEnabled2) - return hasEnabled1 - hasEnabled2; - else if (hasEnabled1) - return (filter2.disabled - filter1.disabled); - else - return 0; - } - function compareHitCount(/**Filter*/ filter1, /**Filter*/ filter2) - { - let hasHitCount1 = (filter1 instanceof ActiveFilter ? 1 : 0); - let hasHitCount2 = (filter2 instanceof ActiveFilter ? 1 : 0); - if (hasHitCount1 != hasHitCount2) - return hasHitCount1 - hasHitCount2; - else if (hasHitCount1) - return filter1.hitCount - filter2.hitCount; - else - return 0; - } - function compareLastHit(/**Filter*/ filter1, /**Filter*/ filter2) - { - let hasLastHit1 = (filter1 instanceof ActiveFilter ? 1 : 0); - let hasLastHit2 = (filter2 instanceof ActiveFilter ? 1 : 0); - if (hasLastHit1 != hasLastHit2) - return hasLastHit1 - hasLastHit2; - else if (hasLastHit1) - return filter1.lastHit - filter2.lastHit; - else - return 0; - } - - /** - * Creates a sort function from a primary and a secondary comparison function. - * @param {Function} cmpFunc comparison function to be called first - * @param {Function} fallbackFunc (optional) comparison function to be called if primary function returns 0 - * @param {Boolean} desc if true, the result of the primary function (not the secondary function) will be reversed - sorting in descending order - * @result {Function} comparison function to be used - */ - function createSortFunction(cmpFunc, fallbackFunc, desc) - { - let factor = (desc ? -1 : 1); - - return function(entry1, entry2) - { - // Comment replacements not bound to a filter always go last - let isLast1 = ("origFilter" in entry1 && entry1.filter == null); - let isLast2 = ("origFilter" in entry2 && entry2.filter == null); - if (isLast1) - return (isLast2 ? 0 : 1) - else if (isLast2) - return -1; - - let ret = cmpFunc(entry1.filter, entry2.filter); - if (ret == 0 && fallbackFunc) - return fallbackFunc(entry1.filter, entry2.filter); - else - return factor * ret; - } - } - - this.sortProcs = { - filter: createSortFunction(compareText, null, false), - filterDesc: createSortFunction(compareText, null, true), - slow: createSortFunction(compareSlow, compareText, true), - slowDesc: createSortFunction(compareSlow, compareText, false), - enabled: createSortFunction(compareEnabled, compareText, false), - enabledDesc: createSortFunction(compareEnabled, compareText, true), - hitcount: createSortFunction(compareHitCount, compareText, false), - hitcountDesc: createSortFunction(compareHitCount, compareText, true), - lasthit: createSortFunction(compareLastHit, compareText, false), - lasthitDesc: createSortFunction(compareLastHit, compareText, true) - }; - - let me = this; - let proxy = function() - { - return me._onChange.apply(me, arguments); - }; - FilterNotifier.addListener(proxy); - window.addEventListener("unload", function() - { - FilterNotifier.removeListener(proxy); - }, false); - }, - - /** - * Filter change processing. - * @see FilterNotifier.addListener() - */ - _onChange: function(action, item, param1, param2, param3) - { - switch (action) - { - case "subscription.updated": - { - if (item == this._subscription) - this.refresh(true); - break; - } - case "filter.disabled": - case "filter.hitCount": - case "filter.lastHit": - { - this.updateFilter(item); - break; - } - case "filter.added": - { - let subscription = param1; - let position = param2; - if (subscription == this._subscription) - this.addFilterAt(position, item); - break; - } - case "filter.removed": - { - let subscription = param1; - let position = param2; - if (subscription == this._subscription) - this.removeFilterAt(position); - break; - } - case "filter.moved": - { - let subscription = param1; - let oldPosition = param2; - let newPosition = param3; - if (subscription == this._subscription) - this.moveFilterAt(oldPosition, newPosition); - break; - } - } - }, - - /** - * Box object of the tree that this view is attached to. - * @type nsITreeBoxObject - */ - boxObject: null, - - /** - * Map of used cell properties to the corresponding nsIAtom representations. - */ - atoms: null, - - /** - * "Filter" to be displayed if no filter group is selected. - */ - noGroupDummy: null, - - /** - * "Filter" to be displayed if the selected group is empty. - */ - noFiltersDummy: null, - - /** - * "Filter" to be displayed for a new filter being edited. - */ - editDummy: null, - - /** - * Displayed list of filters, might be sorted. - * @type Filter[] - */ - data: [], - - /** - * <tree> element that the view is attached to. - * @type XULElement - */ - get treeElement() this.boxObject ? this.boxObject.treeBody.parentNode : null, - - /** - * Checks whether the list is currently empty (regardless of dummy entries). - * @type Boolean - */ - get isEmpty() - { - return !this._subscription || !this._subscription.filters.length; - }, - - /** - * Checks whether the filters in the view can be changed. - * @type Boolean - */ - get editable() - { - return (FilterView._subscription instanceof SpecialSubscription); - }, - - /** - * Returns current item of the list. - * @type Object - */ - get currentItem() - { - let index = this.selection.currentIndex; - if (index >= 0 && index < this.data.length) - return this.data[index]; - return null; - }, - - /** - * Returns items that are currently selected in the list. - * @type Object[] - */ - get selectedItems() - { - let items = [] - for (let i = 0; i < this.selection.getRangeCount(); i++) - { - let min = {}; - let max = {}; - this.selection.getRangeAt(i, min, max); - for (let j = min.value; j <= max.value; j++) - if (j >= 0 && j < this.data.length) - items.push(this.data[j]); - } - return items; - }, - - getItemAt: function(x, y) - { - let row = this.boxObject.getRowAt(x, y); - if (row >= 0 && row < this.data.length) - return this.data[row]; - else - return null; - }, - - _subscription: 0, - - /** - * Filter subscription being displayed. - * @type Subscription - */ - get subscription() this._subscription, - set subscription(value) - { - if (value == this._subscription) - return; - - // Make sure the editor is done before we update the list. - if (this.treeElement) - this.treeElement.stopEditing(true); - - this._subscription = value; - this.refresh(true); - }, - - /** - * Will be true if updates are outstanding because the list was hidden. - */ - _dirty: false, - - /** - * Updates internal view data after a change. - * @param {Boolean} force if false, a refresh will only happen if previous - * changes were suppressed because the list was hidden - */ - refresh: function(force) - { - if (FilterActions.visible) - { - if (!force && !this._dirty) - return; - this._dirty = false; - this.updateData(); - this.selectRow(0); - } - else - this._dirty = true; - }, - - /** - * Map of comparison functions by column ID or column ID + "Desc" for - * descending sort order. - * @const - */ - sortProcs: null, - - /** - * Column that the list is currently sorted on. - * @type Element - */ - sortColumn: null, - - /** - * Sorting function currently in use. - * @type Function - */ - sortProc: null, - - /** - * Resorts the list. - * @param {String} col ID of the column to sort on. If null, the natural order is restored. - * @param {String} direction "ascending" or "descending", if null the sort order is toggled. - */ - sortBy: function(col, direction) - { - let newSortColumn = null; - if (col) - { - newSortColumn = this.boxObject.columns.getNamedColumn(col).element; - if (!direction) - { - if (this.sortColumn == newSortColumn) - direction = (newSortColumn.getAttribute("sortDirection") == "ascending" ? "descending" : "ascending"); - else - direction = "ascending"; - } - } - - if (this.sortColumn && this.sortColumn != newSortColumn) - this.sortColumn.removeAttribute("sortDirection"); - - this.sortColumn = newSortColumn; - if (this.sortColumn) - { - this.sortColumn.setAttribute("sortDirection", direction); - this.sortProc = this.sortProcs[col.replace(/^col-/, "") + (direction == "descending" ? "Desc" : "")]; - } - else - this.sortProc = null; - - if (this.data.length > 1) - { - this.updateData(); - this.boxObject.invalidate(); - } - }, - - /** - * Inserts dummy entry into the list if necessary. - */ - addDummyRow: function() - { - if (this.boxObject && this.data.length == 0) - { - if (this._subscription) - this.data.splice(0, 0, this.noFiltersDummy); - else - this.data.splice(0, 0, this.noGroupDummy); - this.boxObject.rowCountChanged(0, 1); - } - }, - - /** - * Removes dummy entry from the list if present. - */ - removeDummyRow: function() - { - if (this.boxObject && this.isEmpty && this.data.length) - { - this.data.splice(0, 1); - this.boxObject.rowCountChanged(0, -1); - } - }, - - /** - * Inserts dummy row when a new filter is being edited. - */ - insertEditDummy: function() - { - FilterView.removeDummyRow(); - let position = this.selection.currentIndex; - if (position >= this.data.length) - position = this.data.length - 1; - if (position < 0) - position = 0; - - this.editDummy.index = (position < this.data.length ? this.data[position].index : this.data.length); - this.editDummy.position = position; - this.data.splice(position, 0, this.editDummy); - this.boxObject.rowCountChanged(position, 1); - this.selectRow(position); - }, - - /** - * Removes dummy row once the edit is finished. - */ - removeEditDummy: function() - { - let position = this.editDummy.position; - if (typeof position != "undefined" && position < this.data.length && this.data[position] == this.editDummy) - { - this.data.splice(position, 1); - this.boxObject.rowCountChanged(position, -1); - FilterView.addDummyRow(); - - this.selectRow(position); - } - }, - - /** - * Selects a row in the tree and makes sure it is visible. - */ - selectRow: function(row) - { - if (this.selection) - { - row = Math.min(Math.max(row, 0), this.data.length - 1); - this.selection.select(row); - this.boxObject.ensureRowIsVisible(row); - } - }, - - /** - * Finds a particular filter in the list and selects it. - */ - selectFilter: function(/**Filter*/ filter) - { - let index = -1; - for (let i = 0; i < this.data.length; i++) - { - if (this.data[i].filter == filter) - { - index = i; - break; - } - } - if (index >= 0) - { - this.selectRow(index); - this.treeElement.focus(); - } - }, - - /** - * Updates value of data property on sorting or filter subscription changes. - */ - updateData: function() - { - let oldCount = this.rowCount; - if (this._subscription && this._subscription.filters.length) - { - this.data = this._subscription.filters.map(function(f, i) ({index: i, filter: f})); - if (this.sortProc) - { - // Hide comments in the list, they should be sorted like the filter following them - let followingFilter = null; - for (let i = this.data.length - 1; i >= 0; i--) - { - if (this.data[i].filter instanceof CommentFilter) - { - this.data[i].origFilter = this.data[i].filter; - this.data[i].filter = followingFilter; - } - else - followingFilter = this.data[i].filter; - } - - this.data.sort(this.sortProc); - - // Restore comments - for (let i = 0; i < this.data.length; i++) - { - if ("origFilter" in this.data[i]) - { - this.data[i].filter = this.data[i].origFilter; - delete this.data[i].origFilter; - } - } - } - } - else - this.data = []; - - if (this.boxObject) - { - this.boxObject.rowCountChanged(0, -oldCount); - this.boxObject.rowCountChanged(0, this.rowCount); - } - - this.addDummyRow(); - }, - - /** - * Called to update the view when a filter property is changed. - */ - updateFilter: function(/**Filter*/ filter) - { - for (let i = 0; i < this.data.length; i++) - if (this.data[i].filter == filter) - this.boxObject.invalidateRow(i); - }, - - /** - * Called if a filter has been inserted at the specified position. - */ - addFilterAt: function(/**Integer*/ position, /**Filter*/ filter) - { - if (this.data.length == 1 && this.data[0].filter.dummy) - { - this.data.splice(0, 1); - this.boxObject.rowCountChanged(0, -1); - } - - if (this.sortProc) - { - this.updateData(); - for (let i = 0; i < this.data.length; i++) - { - if (this.data[i].index == position) - { - position = i; - break; - } - } - } - else - { - for (let i = 0; i < this.data.length; i++) - if (this.data[i].index >= position) - this.data[i].index++; - this.data.splice(position, 0, {index: position, filter: filter}); - } - this.boxObject.rowCountChanged(position, 1); - this.selectRow(position); - }, - - /** - * Called if a filter has been removed at the specified position. - */ - removeFilterAt: function(/**Integer*/ position) - { - for (let i = 0; i < this.data.length; i++) - { - if (this.data[i].index == position) - { - this.data.splice(i, 1); - this.boxObject.rowCountChanged(i, -1); - i--; - } - else if (this.data[i].index > position) - this.data[i].index--; - } - this.addDummyRow(); - }, - - /** - * Called if a filter has been moved within the list. - */ - moveFilterAt: function(/**Integer*/ oldPosition, /**Integer*/ newPosition) - { - let dir = (oldPosition < newPosition ? 1 : -1); - for (let i = 0; i < this.data.length; i++) - { - if (this.data[i].index == oldPosition) - this.data[i].index = newPosition; - else if (dir * this.data[i].index > dir * oldPosition && dir * this.data[i].index <= dir * newPosition) - this.data[i].index -= dir; - } - - if (!this.sortProc) - { - let item = this.data[oldPosition]; - this.data.splice(oldPosition, 1); - this.data.splice(newPosition, 0, item); - this.boxObject.invalidateRange(Math.min(oldPosition, newPosition), Math.max(oldPosition, newPosition)); - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsITreeView]), - - setTree: function(boxObject) - { - this.init(); - this.boxObject = boxObject; - - if (this.boxObject) - { - this.noGroupDummy = {index: 0, filter: {text: this.boxObject.treeBody.getAttribute("noGroupText"), dummy: true}}; - this.noFiltersDummy = {index: 0, filter: {text: this.boxObject.treeBody.getAttribute("noFiltersText"), dummy: true}}; - this.editDummy = {filter: {text: ""}}; - - let atomService = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService); - let stringAtoms = ["col-filter", "col-enabled", "col-hitcount", "col-lasthit", "type-comment", "type-filterlist", "type-whitelist", "type-elemhide", "type-elemhideexception", "type-invalid"]; - let boolAtoms = ["selected", "dummy", "slow", "disabled"]; - - this.atoms = {}; - for each (let atom in stringAtoms) - this.atoms[atom] = atomService.getAtom(atom); - for each (let atom in boolAtoms) - { - this.atoms[atom + "-true"] = atomService.getAtom(atom + "-true"); - this.atoms[atom + "-false"] = atomService.getAtom(atom + "-false"); - } - - let columns = this.boxObject.columns; - for (let i = 0; i < columns.length; i++) - if (columns[i].element.hasAttribute("sortDirection")) - this.sortBy(columns[i].id, columns[i].element.getAttribute("sortDirection")); - - this.refresh(true); - } - }, - - selection: null, - - get rowCount() this.data.length, - - getCellText: function(row, col) - { - if (row < 0 || row >= this.data.length) - return null; - - col = col.id; - if (col != "col-filter" && col != "col-slow" && col != "col-hitcount" && col != "col-lasthit") - return null; - - let filter = this.data[row].filter; - if (col == "col-filter") - return filter.text; - else if (col == "col-slow") - return (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter) ? "!" : null); - else if (filter instanceof ActiveFilter) - { - if (col == "col-hitcount") - return filter.hitCount; - else if (col == "col-lasthit") - return (filter.lastHit ? Utils.formatTime(filter.lastHit) : null); - } - - return null; - }, - - generateProperties: function(list, properties) - { - if (properties) - { - // Gecko 21 and below: we have an nsISupportsArray parameter, add atoms - // to that. - for (let i = 0; i < list.length; i++) - if (list[i] in this.atoms) - properties.AppendElement(this.atoms[list[i]]); - return null; - } - else - { - // Gecko 22+: no parameter, just return a string - return list.join(" "); - } - }, - - getColumnProperties: function(col, properties) - { - return this.generateProperties(["col-" + col.id], properties); - }, - - getRowProperties: function(row, properties) - { - if (row < 0 || row >= this.data.length) - return ""; - - let list = []; - let filter = this.data[row].filter; - list.push("selected-" + this.selection.isSelected(row)); - list.push("slow-" + (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter))); - if (filter instanceof ActiveFilter) - list.push("disabled-" + filter.disabled); - list.push("dummy-" + ("dummy" in filter)); - - if (filter instanceof CommentFilter) - list.push("type-comment"); - else if (filter instanceof BlockingFilter) - list.push("type-filterlist"); - else if (filter instanceof WhitelistFilter) - list.push("type-whitelist"); - else if (filter instanceof ElemHideFilter) - list.push("type-elemhide"); - else if (filter instanceof ElemHideException) - list.push("type-elemhideexception"); - else if (filter instanceof InvalidFilter) - list.push("type-invalid"); - - return this.generateProperties(list, properties); - }, - - getCellProperties: function(row, col, properties) - { - return this.getRowProperties(row, properties) + " " + this.getColumnProperties(col, properties); - }, - - cycleHeader: function(col) - { - let oldDirection = col.element.getAttribute("sortDirection"); - if (oldDirection == "ascending") - this.sortBy(col.id, "descending"); - else if (oldDirection == "descending") - this.sortBy(null, null); - else - this.sortBy(col.id, "ascending"); - }, - - isSorted: function() - { - return (this.sortProc != null); - }, - - canDrop: function(row, orientation, dataTransfer) - { - if (orientation == Ci.nsITreeView.DROP_ON || row < 0 || row >= this.data.length || !this.editable) - return false; - - let item = this.data[row]; - let position = (orientation == Ci.nsITreeView.DROP_BEFORE ? item.index : item.index + 1); - return FilterActions.canDrop(position, dataTransfer); - }, - - drop: function(row, orientation, dataTransfer) - { - if (orientation == Ci.nsITreeView.DROP_ON || row < 0 || row >= this.data.length || !this.editable) - return; - - let item = this.data[row]; - let position = (orientation == Ci.nsITreeView.DROP_BEFORE ? item.index : item.index + 1); - FilterActions.drop(position, dataTransfer); - }, - - isEditable: function(row, col) - { - if (row < 0 || row >= this.data.length || !this.editable) - return false; - - let filter = this.data[row].filter; - if (col.id == "col-filter") - return !("dummy" in filter); - else - return false; - }, - - setCellText: function(row, col, value) - { - if (row < 0 || row >= this.data.length || col.id != "col-filter") - return; - - let oldFilter = this.data[row].filter; - let position = this.data[row].index; - value = Filter.normalize(value); - if (!value || value == oldFilter.text) - return; - - // Make sure we don't get called recursively (see https://adblockplus.org/forum/viewtopic.php?t=9003) - this.treeElement.stopEditing(); - - let newFilter = Filter.fromText(value); - if (this.data[row] == this.editDummy) - this.removeEditDummy(); - else - FilterStorage.removeFilter(oldFilter, this._subscription, position); - FilterStorage.addFilter(newFilter, this._subscription, position); - }, - - cycleCell: function(row, col) - { - if (row < 0 || row >= this.data.length || col.id != "col-enabled") - return; - - let filter = this.data[row].filter; - if (filter instanceof ActiveFilter) - filter.disabled = !filter.disabled; - }, - - isContainer: function(row) false, - isContainerOpen: function(row) false, - isContainerEmpty: function(row) true, - getLevel: function(row) 0, - getParentIndex: function(row) -1, - hasNextSibling: function(row, afterRow) false, - toggleOpenState: function(row) {}, - getProgressMode: function() null, - getImageSrc: function() null, - isSeparator: function() false, - performAction: function() {}, - performActionOnRow: function() {}, - performActionOnCell: function() {}, - getCellValue: function() null, - setCellValue: function() {}, - selectionChanged: function() {}, -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-search.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-search.js deleted file mode 100644 index 4e817ac..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-search.js +++ /dev/null @@ -1,269 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Implementation of the filter search functionality. - * @class - */ -var FilterSearch = -{ - /** - * Initializes findbar widget. - */ - init: function() - { - let findbar = E("findbar"); - findbar.browser = FilterSearch.fakeBrowser; - - findbar.addEventListener("keypress", function(event) - { - // Work-around for bug 490047 - if (event.keyCode == KeyEvent.DOM_VK_RETURN) - event.preventDefault(); - }, false); - - // Hack to prevent "highlight all" from getting enabled - findbar.toggleHighlight = function() {}; - }, - - /** - * Performs a text search. - * @param {String} text text to be searched - * @param {Integer} direction search direction: -1 (backwards), 0 (forwards - * starting with current), 1 (forwards starting with next) - * @param {Boolean} caseSensitive if true, a case-sensitive search is performed - * @result {Integer} one of the nsITypeAheadFind constants - */ - search: function(text, direction, caseSensitive) - { - function normalizeString(string) caseSensitive ? string : string.toLowerCase(); - - function findText(text, direction, startIndex) - { - let list = E("filtersTree"); - let col = list.columns.getNamedColumn("col-filter"); - let count = list.view.rowCount; - for (let i = startIndex + direction; i >= 0 && i < count; i += (direction || 1)) - { - let filter = normalizeString(list.view.getCellText(i, col)); - if (filter.indexOf(text) >= 0) - { - FilterView.selectRow(i); - return true; - } - } - return false; - } - - text = normalizeString(text); - - // First try to find the entry in the current list - if (findText(text, direction, E("filtersTree").currentIndex)) - return Ci.nsITypeAheadFind.FIND_FOUND; - - // Now go through the other subscriptions - let result = Ci.nsITypeAheadFind.FIND_FOUND; - let subscriptions = FilterStorage.subscriptions.slice(); - subscriptions.sort(function(s1, s2) (s1 instanceof SpecialSubscription) - (s2 instanceof SpecialSubscription)); - let current = subscriptions.indexOf(FilterView.subscription); - direction = direction || 1; - for (let i = current + direction; ; i+= direction) - { - if (i < 0) - { - i = subscriptions.length - 1; - result = Ci.nsITypeAheadFind.FIND_WRAPPED; - } - else if (i >= subscriptions.length) - { - i = 0; - result = Ci.nsITypeAheadFind.FIND_WRAPPED; - } - if (i == current) - break; - - let subscription = subscriptions[i]; - for (let j = 0; j < subscription.filters.length; j++) - { - let filter = normalizeString(subscription.filters[j].text); - if (filter.indexOf(text) >= 0) - { - let list = E(subscription instanceof SpecialSubscription ? "groups" : "subscriptions"); - let node = Templater.getNodeForData(list, "subscription", subscription); - if (!node) - break; - - // Select subscription in its list and restore focus after that - let oldFocus = document.commandDispatcher.focusedElement; - E("tabs").selectedIndex = (subscription instanceof SpecialSubscription ? 1 : 0); - list.ensureElementIsVisible(node); - list.selectItem(node); - if (oldFocus) - { - oldFocus.focus(); - Utils.runAsync(oldFocus.focus, oldFocus); - } - - Utils.runAsync(findText, null, text, direction, direction == 1 ? -1 : subscription.filters.length); - return result; - } - } - } - - return Ci.nsITypeAheadFind.FIND_NOTFOUND; - } -}; - -/** - * Fake browser implementation to make findbar widget happy - searches in - * the filter list. - */ -FilterSearch.fakeBrowser = -{ - finder: - { - _resultListeners: [], - searchString: null, - caseSensitive: false, - lastResult: null, - - _notifyResultListeners: function(result, findBackwards) - { - this.lastResult = result; - for each (let listener in this._resultListeners) - listener.onFindResult(result, findBackwards); - }, - - fastFind: function(searchString, linksOnly, drawOutline) - { - this.searchString = searchString; - let result = FilterSearch.search(this.searchString, 0, - this.caseSensitive); - this._notifyResultListeners(result, false); - }, - - findAgain: function(findBackwards, linksOnly, drawOutline) - { - let result = FilterSearch.search(this.searchString, - findBackwards ? -1 : 1, - this.caseSensitive); - this._notifyResultListeners(result, findBackwards); - }, - - addResultListener: function(listener) - { - if (this._resultListeners.indexOf(listener) === -1) - this._resultListeners.push(listener); - }, - - removeResultListener: function(listener) - { - let index = this._resultListeners.indexOf(listener); - if (index !== -1) - this._resultListeners.splice(index, 1); - }, - - // Irrelevant for us - highlight: function(highlight, word) {}, - enableSelection: function() {}, - removeSelection: function() {}, - focusContent: function() {}, - keyPress: function() {} - }, - - get _lastSearchString() - { - return this.finder.searchString; - }, - - // This was used before Firefox 27 instead of the "finder" property. - fastFind: - { - get searchString() - { - return FilterSearch.fakeBrowser.finder.searchString; - }, - - set searchString(searchString) - { - FilterSearch.fakeBrowser.finder.searchString = searchString; - }, - - foundLink: null, - foundEditable: null, - - get caseSensitive() - { - return FilterSearch.fakeBrowser.finder.caseSensitive; - }, - - set caseSensitive(caseSensitive) - { - FilterSearch.fakeBrowser.finder.caseSensitive = caseSensitive; - }, - - get currentWindow() FilterSearch.fakeBrowser.contentWindow, - - find: function(searchString, linksOnly) - { - FilterSearch.fakeBrowser.finder.fastFind(searchString, linksOnly); - return FilterSearch.fakeBrowser.finder.lastResult; - }, - - findAgain: function(findBackwards, linksOnly) - { - FilterSearch.fakeBrowser.finder.findAgain(findBackwards, linksOnly); - return FilterSearch.fakeBrowser.finder.lastResult; - }, - - // Irrelevant for us - init: function() {}, - setDocShell: function() {}, - setSelectionModeAndRepaint: function() {}, - collapseSelection: function() {} - }, - currentURI: Utils.makeURI("http://example.com/"), - contentWindow: - { - focus: function() - { - E("filtersTree").focus(); - }, - scrollByLines: function(num) - { - E("filtersTree").boxObject.scrollByLines(num); - }, - scrollByPages: function(num) - { - E("filtersTree").boxObject.scrollByPages(num); - }, - }, - - addEventListener: function(event, handler, capture) - { - E("filtersTree").addEventListener(event, handler, capture); - }, - removeEventListener: function(event, handler, capture) - { - E("filtersTree").addEventListener(event, handler, capture); - }, -}; - -window.addEventListener("load", function() -{ - FilterSearch.init(); -}, false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionactions.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionactions.js deleted file mode 100644 index 222a4a6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionactions.js +++ /dev/null @@ -1,606 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Implemetation of the various actions that can be performed on subscriptions. - * @class - */ -var SubscriptionActions = -{ - /** - * Returns the subscription list currently having focus if any. - * @type Element - */ - get focusedList() - { - return E("tabs").selectedPanel.getElementsByTagName("richlistbox")[0]; - }, - - /** - * Returns the currently selected and focused subscription item if any. - * @type Element - */ - get selectedItem() - { - let list = this.focusedList; - return (list ? list.selectedItem : null); - }, - - /** - * Finds the subscription for a particular filter, selects it and selects the - * filter. - */ - selectFilter: function(/**Filter*/ filter) - { - let node = null; - let tabIndex = -1; - let subscriptions = filter.subscriptions.slice(); - subscriptions.sort(function(s1, s2) s1.disabled - s2.disabled); - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - let list = E(subscription instanceof SpecialSubscription ? "groups" : "subscriptions"); - tabIndex = (subscription instanceof SpecialSubscription ? 1 : 0); - node = Templater.getNodeForData(list, "subscription", subscription); - if (node) - break; - } - if (node) - { - E("tabs").selectedIndex = tabIndex; - Utils.runAsync(function() - { - node.parentNode.ensureElementIsVisible(node); - node.parentNode.selectItem(node); - if (!FilterActions.visible) - E("subscription-showHideFilters-command").doCommand(); - Utils.runAsync(FilterView.selectFilter, FilterView, filter); - }); - } - }, - - /** - * Updates subscription commands whenever the selected subscription changes. - * Note: this method might be called with a wrong "this" value. - */ - updateCommands: function() - { - let node = SubscriptionActions.selectedItem; - let data = Templater.getDataForNode(node); - let subscription = (data ? data.subscription : null) - E("subscription-editTitle-command").setAttribute("disabled", !subscription || - subscription.fixedTitle); - E("subscription-update-command").setAttribute("disabled", !subscription || - !(subscription instanceof DownloadableSubscription) || - Synchronizer.isExecuting(subscription.url)); - E("subscription-moveUp-command").setAttribute("disabled", !subscription || - !node || !node.previousSibling || !!node.previousSibling.id); - E("subscription-moveDown-command").setAttribute("disabled", !subscription || - !node || !node.nextSibling || !!node.nextSibling.id); - }, - - /** - * Starts title editing for the selected subscription. - */ - editTitle: function() - { - let node = this.selectedItem; - if (node) - TitleEditor.start(node); - }, - - /** - * Triggers re-download of a filter subscription. - */ - updateFilters: function(/**Node*/ node) - { - let data = Templater.getDataForNode(node || this.selectedItem); - if (data && data.subscription instanceof DownloadableSubscription) - Synchronizer.execute(data.subscription, true); - }, - - /** - * Triggers re-download of all filter subscriptions. - */ - updateAllFilters: function() - { - for (let i = 0; i < FilterStorage.subscriptions.length; i++) - { - let subscription = FilterStorage.subscriptions[i]; - if (subscription instanceof DownloadableSubscription) - Synchronizer.execute(subscription, true); - } - }, - - /** - * Sets Subscription.disabled field to a new value. - */ - setDisabled: function(/**Element*/ node, /**Boolean*/ value) - { - let data = Templater.getDataForNode(node || this.selectedItem); - if (data) - data.subscription.disabled = value; - }, - - /** - * Enables all disabled filters in a subscription. - */ - enableFilters: function(/**Element*/ node) - { - let data = Templater.getDataForNode(node); - if (!data) - return; - - let filters = data.subscription.filters; - for (let i = 0, l = filters.length; i < l; i++) - if (filters[i] instanceof ActiveFilter && filters[i].disabled) - filters[i].disabled = false; - }, - - /** - * Removes a filter subscription from the list (after a warning). - */ - remove: function(/**Node*/ node) - { - let data = Templater.getDataForNode(node || this.selectedItem); - if (data && Utils.confirm(window, Utils.getString(data.subscription instanceof SpecialSubscription ? "remove_group_warning" : "remove_subscription_warning"))) - FilterStorage.removeSubscription(data.subscription); - }, - - /** - * Adds a new filter group and allows the user to change its title. - */ - addGroup: function() - { - let subscription = SpecialSubscription.create(); - FilterStorage.addSubscription(subscription); - - let list = E("groups"); - let node = Templater.getNodeForData(list, "subscription", subscription); - if (node) - { - list.focus(); - list.ensureElementIsVisible(node); - list.selectedItem = node; - this.editTitle(); - } - }, - - /** - * Moves a filter subscription one line up. - */ - moveUp: function(/**Node*/ node) - { - node = Templater.getDataNode(node || this.selectedItem); - let data = Templater.getDataForNode(node); - if (!data) - return; - - let previousData = Templater.getDataForNode(node.previousSibling); - if (!previousData) - return; - - FilterStorage.moveSubscription(data.subscription, previousData.subscription); - }, - - /** - * Moves a filter subscription one line down. - */ - moveDown: function(/**Node*/ node) - { - node = Templater.getDataNode(node || this.selectedItem); - let data = Templater.getDataForNode(node); - if (!data) - return; - - let nextNode = node.nextSibling; - if (!Templater.getDataForNode(nextNode)) - return; - - let nextData = Templater.getDataForNode(nextNode.nextSibling); - FilterStorage.moveSubscription(data.subscription, nextData ? nextData.subscription : null); - }, - - /** - * Opens the context menu for a subscription node. - */ - openMenu: function(/**Event*/ event, /**Node*/ node) - { - node.getElementsByClassName("actionMenu")[0].openPopupAtScreen(event.screenX, event.screenY, true); - }, - - _altMask: 2, - _ctrlMask: 4, - _metaMask: 8, - get _accelMask() - { - let result = this._ctrlMask; - try { - let accelKey = Utils.prefService.getIntPref("ui.key.accelKey"); - if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META) - result = this._metaMask; - else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT) - result = this._altMask; - } catch(e) {} - this.__defineGetter__("_accelMask", function() result); - return result; - }, - - /** - * Called when a key is pressed on the subscription list. - */ - keyPress: function(/**Event*/ event) - { - let modifiers = 0; - if (event.altKey) - modifiers |= this._altMask; - if (event.ctrlKey) - modifiers |= this._ctrlMask; - if (event.metaKey) - modifiers |= this._metaMask; - - if (event.charCode == " ".charCodeAt(0) && modifiers == 0) - { - // Ignore if Space is pressed on a button - for (let node = event.target; node; node = node.parentNode) - if (node.localName == "button") - return; - - let data = Templater.getDataForNode(this.selectedItem); - if (data) - data.subscription.disabled = !data.subscription.disabled; - } - else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_UP && modifiers == this._accelMask) - { - E("subscription-moveUp-command").doCommand(); - event.preventDefault(); - event.stopPropagation(); - } - else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_DOWN && modifiers == this._accelMask) - { - E("subscription-moveDown-command").doCommand(); - event.preventDefault(); - event.stopPropagation(); - } - }, - - /** - * Subscription currently being dragged if any. - * @type Subscription - */ - dragSubscription: null, - - /** - * Called when a subscription entry is dragged. - */ - startDrag: function(/**Event*/ event, /**Node*/ node) - { - let data = Templater.getDataForNode(node); - if (!data) - return; - - event.dataTransfer.addElement(node); - event.dataTransfer.setData("text/x-moz-url", data.subscription.url); - event.dataTransfer.setData("text/plain", data.subscription.title); - this.dragSubscription = data.subscription; - event.stopPropagation(); - }, - - /** - * Called when something is dragged over a subscription entry or subscriptions list. - */ - dragOver: function(/**Event*/ event) - { - // Don't allow dragging onto a scroll bar - for (let node = event.originalTarget; node; node = node.parentNode) - if (node.localName == "scrollbar") - return; - - // Don't allow dragging onto element's borders - let target = event.originalTarget; - while (target && target.localName != "richlistitem") - target = target.parentNode; - if (!target) - target = event.originalTarget; - - let styles = window.getComputedStyle(target, null); - let rect = target.getBoundingClientRect(); - if (event.clientX < rect.left + parseInt(styles.borderLeftWidth, 10) || - event.clientY < rect.top + parseInt(styles.borderTopWidth, 10) || - event.clientX > rect.right - parseInt(styles.borderRightWidth, 10) - 1 || - event.clientY > rect.bottom - parseInt(styles.borderBottomWidth, 10) - 1) - { - return; - } - - // If not dragging a subscription check whether we can accept plain text - if (!this.dragSubscription) - { - let data = Templater.getDataForNode(event.target); - if (!data || !(data.subscription instanceof SpecialSubscription) || !event.dataTransfer.getData("text/plain")) - return; - } - - event.preventDefault(); - event.stopPropagation(); - }, - - /** - * Called when something is dropped on a subscription entry or subscriptions list. - */ - drop: function(/**Event*/ event, /**Node*/ node) - { - if (!this.dragSubscription) - { - // Not dragging a subscription, maybe this is plain text that we can add as filters? - let data = Templater.getDataForNode(node); - if (data && data.subscription instanceof SpecialSubscription) - { - let lines = event.dataTransfer.getData("text/plain").replace(/\r/g, "").split("\n"); - for (let i = 0; i < lines.length; i++) - { - let line = Filter.normalize(lines[i]); - if (line) - { - let filter = Filter.fromText(line); - FilterStorage.addFilter(filter, data.subscription); - } - } - FilterActions.removeDraggedFilters(); - event.stopPropagation(); - } - return; - } - - // When dragging down we need to insert after the drop node, otherwise before it. - node = Templater.getDataNode(node); - if (node) - { - let dragNode = Templater.getNodeForData(node.parentNode, "subscription", this.dragSubscription); - if (node.compareDocumentPosition(dragNode) & node.DOCUMENT_POSITION_PRECEDING) - node = node.nextSibling; - } - - let data = Templater.getDataForNode(node); - FilterStorage.moveSubscription(this.dragSubscription, data ? data.subscription : null); - event.stopPropagation(); - }, - - /** - * Called when the drag operation for a subscription is finished. - */ - endDrag: function() - { - this.dragSubscription = null; - } -}; - -/** - * Subscription title editing functionality. - * @class - */ -var TitleEditor = -{ - /** - * List item corresponding with the currently edited subscription if any. - * @type Node - */ - subscriptionEdited: null, - - /** - * Starts editing of a subscription title. - * @param {Node} node subscription list entry or a child node - * @param {Boolean} [checkSelection] if true the editor will not start if the - * item was selected in the preceding mousedown event - */ - start: function(node, checkSelection) - { - if (this.subscriptionEdited) - this.end(true); - - let subscriptionNode = Templater.getDataNode(node); - if (!subscriptionNode || (checkSelection && !subscriptionNode._wasSelected)) - return; - - let subscription = Templater.getDataForNode(subscriptionNode).subscription; - if (!subscription || subscription.fixedTitle) - return; - - subscriptionNode.getElementsByClassName("titleBox")[0].selectedIndex = 1; - let editor = subscriptionNode.getElementsByClassName("titleEditor")[0]; - editor.value = subscription.title; - editor.setSelectionRange(0, editor.value.length); - this.subscriptionEdited = subscriptionNode; - editor.focus(); - }, - - /** - * Stops editing of a subscription title. - * @param {Boolean} save if true the entered value will be saved, otherwise dismissed - */ - end: function(save) - { - if (!this.subscriptionEdited) - return; - - let subscriptionNode = this.subscriptionEdited; - this.subscriptionEdited = null; - - let newTitle = null; - if (save) - { - newTitle = subscriptionNode.getElementsByClassName("titleEditor")[0].value; - newTitle = newTitle.replace(/^\s+/, "").replace(/\s+$/, ""); - } - - let subscription = Templater.getDataForNode(subscriptionNode).subscription - if (newTitle && newTitle != subscription.title) - subscription.title = newTitle; - else - { - subscriptionNode.getElementsByClassName("titleBox")[0].selectedIndex = 0; - subscriptionNode.parentNode.focus(); - } - }, - - /** - * Processes keypress events on the subscription title editor field. - */ - keyPress: function(/**Event*/ event) - { - // Prevent any key presses from triggering outside actions - event.stopPropagation(); - - if (event.keyCode == event.DOM_VK_RETURN || event.keyCode == event.DOM_VK_ENTER) - { - event.preventDefault(); - this.end(true); - } - else if (event.keyCode == event.DOM_VK_CANCEL || event.keyCode == event.DOM_VK_ESCAPE) - { - event.preventDefault(); - this.end(false); - } - } -}; - -/** - * Methods called when choosing and adding a new filter subscription. - * @class - */ -var SelectSubscription = -{ - /** - * Starts selection of a filter subscription to add. - */ - start: function(/**Event*/ event) - { - let panel = E("selectSubscriptionPanel"); - let list = E("selectSubscription"); - let template = E("selectSubscriptionTemplate"); - let parent = list.menupopup; - - if (panel.state == "open") - { - list.focus(); - return; - } - - // Remove existing entries if any - while (parent.lastChild) - parent.removeChild(parent.lastChild); - - // Load data - let request = new XMLHttpRequest(); - request.open("GET", "subscriptions.xml"); - request.onload = function() - { - // Avoid race condition if two downloads are started in parallel - if (panel.state == "open") - return; - - // Add subscription entries to the list - let subscriptions = request.responseXML.getElementsByTagName("subscription"); - let listedSubscriptions = []; - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - let url = subscription.getAttribute("url"); - if (!url || url in FilterStorage.knownSubscriptions) - continue; - - let localePrefix = Utils.checkLocalePrefixMatch(subscription.getAttribute("prefixes")); - let node = Templater.process(template, { - __proto__: null, - node: subscription, - localePrefix: localePrefix - }); - parent.appendChild(node); - listedSubscriptions.push(subscription); - } - let selectedNode = Utils.chooseFilterSubscription(listedSubscriptions); - list.selectedItem = Templater.getNodeForData(parent, "node", selectedNode) || parent.firstChild; - - // Show panel and focus list - let position = (Utils.versionComparator.compare(Utils.platformVersion, "2.0") < 0 ? "after_end" : "bottomcenter topleft"); - panel.openPopup(E("selectSubscriptionButton"), position, 0, 0, false, false, event); - Utils.runAsync(list.focus, list); - }; - request.send(); - }, - - /** - * Adds filter subscription that is selected. - */ - add: function() - { - E("selectSubscriptionPanel").hidePopup(); - - let data = Templater.getDataForNode(E("selectSubscription").selectedItem); - if (!data) - return; - - let subscription = Subscription.fromURL(data.node.getAttribute("url")); - if (!subscription) - return; - - FilterStorage.addSubscription(subscription); - subscription.disabled = false; - subscription.title = data.node.getAttribute("title"); - subscription.homepage = data.node.getAttribute("homepage"); - - // Make sure the subscription is visible and selected - let list = E("subscriptions"); - let node = Templater.getNodeForData(list, "subscription", subscription); - if (node) - { - list.ensureElementIsVisible(node); - list.selectedItem = node; - list.focus(); - } - - // Trigger download if necessary - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - }, - - /** - * Called if the user chooses to view the complete subscriptions list. - */ - chooseOther: function() - { - E("selectSubscriptionPanel").hidePopup(); - window.openDialog("subscriptionSelection.xul", "_blank", "chrome,centerscreen,modal,resizable,dialog=no", null, null); - }, - - /** - * Called for keys pressed on the subscription selection panel. - */ - keyPress: function(/**Event*/ event) - { - // Buttons and text links handle Enter key themselves - if (event.target.localName == "button" || event.target.localName == "label") - return; - - if (event.keyCode == event.DOM_VK_RETURN || event.keyCode == event.DOM_VK_ENTER) - { - // This shouldn't accept our dialog, only the panel - event.preventDefault(); - E("selectSubscriptionAccept").doCommand(); - } - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionview.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionview.js deleted file mode 100644 index a1673e4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters-subscriptionview.js +++ /dev/null @@ -1,330 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Fills a list of filter groups and keeps it updated. - * @param {Element} list richlistbox element to be filled - * @param {Node} template template to use for the groups - * @param {Function} filter filter to decide which lists should be included - * @param {Function} listener function to be called on changes - * @constructor - */ -function ListManager(list, template, filter, listener) -{ - this._list = list; - this._template = template; - this._filter = filter; - this._listener = listener || function(){}; - - this._deck = this._list.parentNode; - - this._list.listManager = this; - this.reload(); - - let me = this; - let proxy = function() - { - return me._onChange.apply(me, arguments); - }; - FilterNotifier.addListener(proxy); - window.addEventListener("unload", function() - { - FilterNotifier.removeListener(proxy); - }, false); -} -ListManager.prototype = -{ - /** - * List element being managed. - * @type Element - */ - _list: null, - /** - * Template used for the groups. - * @type Node - */ - _template: null, - /** - * Filter function to decide which subscriptions should be included. - * @type Function - */ - _filter: null, - /** - * Function to be called whenever list contents change. - * @type Function - */ - _listener: null, - /** - * Deck switching between list display and "no entries" message. - * @type Element - */ - _deck: null, - - /** - * Completely rebuilds the list. - */ - reload: function() - { - // Remove existing entries if any - while (this._list.firstChild) - this._list.removeChild(this._list.firstChild); - - // Now add all subscriptions - let subscriptions = FilterStorage.subscriptions.filter(this._filter, this); - if (subscriptions.length) - { - for each (let subscription in subscriptions) - this.addSubscription(subscription, null); - - // Make sure first list item is selected after list initialization - Utils.runAsync(function() - { - this._list.selectItem(this._list.getItemAtIndex(this._list.getIndexOfFirstVisibleRow())); - }, this); - } - - this._deck.selectedIndex = (subscriptions.length ? 1 : 0); - this._listener(); - }, - - /** - * Adds a filter subscription to the list. - */ - addSubscription: function(/**Subscription*/ subscription, /**Node*/ insertBefore) /**Node*/ - { - let disabledFilters = 0; - for (let i = 0, l = subscription.filters.length; i < l; i++) - if (subscription.filters[i] instanceof ActiveFilter && subscription.filters[i].disabled) - disabledFilters++; - - let node = Templater.process(this._template, { - __proto__: null, - subscription: subscription, - isExternal: subscription instanceof ExternalSubscription, - downloading: Synchronizer.isExecuting(subscription.url), - disabledFilters: disabledFilters - }); - if (insertBefore) - this._list.insertBefore(node, insertBefore); - else - this._list.appendChild(node); - return node; - }, - - /** - * Map indicating subscriptions that need their "disabledFilters" property to - * be updated by next updateDisabled() call. - * @type Object - */ - _scheduledUpdateDisabled: null, - - /** - * Updates subscriptions that had some of their filters enabled/disabled. - */ - updateDisabled: function() - { - let list = this._scheduledUpdateDisabled; - this._scheduledUpdateDisabled = null; - for (let url in list) - { - let subscription = Subscription.fromURL(url); - let subscriptionNode = Templater.getNodeForData(this._list, "subscription", subscription); - if (subscriptionNode) - { - let data = Templater.getDataForNode(subscriptionNode); - let disabledFilters = 0; - for (let i = 0, l = subscription.filters.length; i < l; i++) - if (subscription.filters[i] instanceof ActiveFilter && subscription.filters[i].disabled) - disabledFilters++; - - if (disabledFilters != data.disabledFilters) - { - data.disabledFilters = disabledFilters; - Templater.update(this._template, subscriptionNode); - - if (!document.commandDispatcher.focusedElement) - this._list.focus(); - } - } - } - }, - - /** - * Subscriptions change processing. - * @see FilterNotifier.addListener() - */ - _onChange: function(action, item, param1, param2) - { - if ((action == "subscription.added" || action == "subscription.removed") && item.url == Prefs.subscriptions_exceptionsurl) - E("acceptableAds").checked = FilterStorage.subscriptions.some(function(s) s.url == Prefs.subscriptions_exceptionsurl); - - if (action == "filter.disabled") - { - if (this._scheduledUpdateDisabled == null) - { - this._scheduledUpdateDisabled = {__proto__: null}; - Utils.runAsync(this.updateDisabled, this); - } - for (let i = 0; i < item.subscriptions.length; i++) - this._scheduledUpdateDisabled[item.subscriptions[i].url] = true; - return; - } - - if (action != "load" && !this._filter(item)) - return; - - switch (action) - { - case "load": - { - this.reload(); - break; - } - case "subscription.added": - { - let index = FilterStorage.subscriptions.indexOf(item); - if (index >= 0) - { - let insertBefore = null; - for (index++; index < FilterStorage.subscriptions.length && !insertBefore; index++) - insertBefore = Templater.getNodeForData(this._list, "subscription", FilterStorage.subscriptions[index]); - this.addSubscription(item, insertBefore); - this._deck.selectedIndex = 1; - this._listener(); - } - break; - } - case "subscription.removed": - { - let node = Templater.getNodeForData(this._list, "subscription", item); - if (node) - { - let newSelection = node.nextSibling || node.previousSibling; - node.parentNode.removeChild(node); - if (!this._list.firstChild) - { - this._deck.selectedIndex = 0; - this._list.selectedIndex = -1; - } - else if (newSelection) - { - this._list.ensureElementIsVisible(newSelection); - this._list.selectedItem = newSelection; - } - this._listener(); - } - break - } - case "subscription.moved": - { - let node = Templater.getNodeForData(this._list, "subscription", item); - if (node) - { - node.parentNode.removeChild(node); - let insertBefore = null; - let index = FilterStorage.subscriptions.indexOf(item); - if (index >= 0) - for (index++; index < FilterStorage.subscriptions.length && !insertBefore; index++) - insertBefore = Templater.getNodeForData(this._list, "subscription", FilterStorage.subscriptions[index]); - this._list.insertBefore(node, insertBefore); - this._list.ensureElementIsVisible(node); - this._listener(); - } - break; - } - case "subscription.title": - case "subscription.disabled": - case "subscription.homepage": - case "subscription.lastDownload": - case "subscription.downloadStatus": - { - let subscriptionNode = Templater.getNodeForData(this._list, "subscription", item); - if (subscriptionNode) - { - Templater.getDataForNode(subscriptionNode).downloading = Synchronizer.isExecuting(item.url); - Templater.update(this._template, subscriptionNode); - - if (!document.commandDispatcher.focusedElement) - this._list.focus(); - this._listener(); - } - break; - } - case "subscription.fixedTitle": - { - SubscriptionActions.updateCommands(); - break; - } - case "subscription.updated": - { - if (this._scheduledUpdateDisabled == null) - { - this._scheduledUpdateDisabled = {__proto__: null}; - Utils.runAsync(this.updateDisabled, this); - } - this._scheduledUpdateDisabled[item.url] = true; - break; - } - } - } -}; - -/** - * Attaches list managers to the lists. - */ -ListManager.init = function() -{ - new ListManager(E("subscriptions"), - E("subscriptionTemplate"), - function(s) s instanceof RegularSubscription && !(ListManager.acceptableAdsCheckbox && s.url == Prefs.subscriptions_exceptionsurl), - SubscriptionActions.updateCommands); - new ListManager(E("groups"), - E("groupTemplate"), - function(s) s instanceof SpecialSubscription, - SubscriptionActions.updateCommands); - E("acceptableAds").checked = FilterStorage.subscriptions.some(function(s) s.url == Prefs.subscriptions_exceptionsurl); - E("acceptableAds").parentNode.hidden = !ListManager.acceptableAdsCheckbox; -}; - -/** - * Defines whether the "acceptable ads" subscription needs special treatment. - * @type Boolean - */ -ListManager.acceptableAdsCheckbox = Prefs.subscriptions_exceptionscheckbox; - -/** - * Adds or removes filter subscription allowing acceptable ads. - */ -ListManager.allowAcceptableAds = function(/**Boolean*/ allow) -{ - let subscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl); - if (!subscription) - return; - - subscription.disabled = false; - subscription.title = "Allow non-intrusive advertising"; - if (allow) - { - FilterStorage.addSubscription(subscription); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - } - else - FilterStorage.removeSubscription(subscription); -}; - -window.addEventListener("load", ListManager.init, false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.js deleted file mode 100644 index 8830fdb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.js +++ /dev/null @@ -1,226 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Initialization function, called when the window is loaded. - */ -function init() -{ - if (window.arguments && window.arguments.length) - { - let filter = window.arguments[0].wrappedJSObject; - if (filter instanceof Filter) - Utils.runAsync(SubscriptionActions.selectFilter, SubscriptionActions, filter); - } -} - -/** - * Called whenever the currently selected tab changes. - */ -function onTabChange(/**Element*/ tabbox) -{ - updateSelectedSubscription(); - - Utils.runAsync(function() - { - let panel = tabbox.selectedPanel; - if (panel) - panel.getElementsByClassName("initialFocus")[0].focus(); - SubscriptionActions.updateCommands(); - }); -} - -/** - * Called whenever the selected subscription changes. - */ -function onSelectionChange(/**Element*/ list) -{ - SubscriptionActions.updateCommands(); - updateSelectedSubscription(); - list.focus(); - - // Take elements of the previously selected item out of the tab order - if ("previousSelection" in list && list.previousSelection) - { - let elements = list.previousSelection.getElementsByClassName("tabable"); - for (let i = 0; i < elements.length; i++) - elements[i].setAttribute("tabindex", "-1"); - } - // Put elements of the selected item into tab order - if (list.selectedItem) - { - let elements = list.selectedItem.getElementsByClassName("tabable"); - for (let i = 0; i < elements.length; i++) - elements[i].removeAttribute("tabindex"); - } - list.previousSelection = list.selectedItem; -} - -/** - * Called when splitter state changes to make sure it is persisted properly. - */ -function onSplitterStateChange(/**Element*/ splitter) -{ - let state = splitter.getAttribute("state"); - if (!state) - { - splitter.setAttribute("state", "open"); - document.persist(splitter.id, "state"); - } -} - -/** - * Updates filter list when selected subscription changes. - */ -function updateSelectedSubscription() -{ - let panel = E("tabs").selectedPanel; - if (!panel) - return; - - let list = panel.getElementsByTagName("richlistbox")[0]; - if (!list) - return; - - let data = Templater.getDataForNode(list.selectedItem); - FilterView.subscription = (data ? data.subscription : null); - FilterActions.updateCommands(); -} - -/** - * Template processing functions. - * @class - */ -var Templater = -{ - /** - * Processes a template node using given data object. - */ - process: function(/**Node*/ template, /**Object*/ data) /**Node*/ - { - // Use a sandbox to resolve attributes (for convenience, not security) - let sandbox = Cu.Sandbox(window); - for (let key in data) - sandbox[key] = data[key]; - sandbox.formatTime = Utils.formatTime; - - // Clone template but remove id/hidden attributes from it - let result = template.cloneNode(true); - result.removeAttribute("id"); - result.removeAttribute("hidden"); - result._data = data; - - // Resolve any attributes of the for attr="{obj.foo}" - let conditionals = []; - let nodeIterator = document.createNodeIterator(result, NodeFilter.SHOW_ELEMENT, null, false); - for (let node = nodeIterator.nextNode(); node; node = nodeIterator.nextNode()) - { - if (node.localName == "if") - conditionals.push(node); - for (let i = 0; i < node.attributes.length; i++) - { - let attribute = node.attributes[i]; - let len = attribute.value.length; - if (len >= 2 && attribute.value[0] == "{" && attribute.value[len - 1] == "}") - { - let value = Cu.evalInSandbox(attribute.value.substr(1, len - 2), sandbox); - if (attribute.name == "condition") - value = value ? "true" : "false"; - attribute.value = value; - } - } - } - - // Process <if> tags - remove if condition is false, replace by their children - // if it is true - for each (let node in conditionals) - { - let fragment = document.createDocumentFragment(); - let condition = node.getAttribute("condition"); - if (condition == "false") - condition = false; - for (let i = 0; i < node.childNodes.length; i++) - { - let child = node.childNodes[i]; - if (child.localName == "elif" || child.localName == "else") - { - if (condition) - break; - condition = (child.localName == "elif" ? child.getAttribute("condition") : true); - if (condition == "false") - condition = false; - } - else if (condition) - fragment.appendChild(node.childNodes[i--]); - } - node.parentNode.replaceChild(fragment, node); - } - - return result; - }, - - /** - * Updates first child of a processed template if the underlying data changed. - */ - update: function(/**Node*/ template, /**Node*/ node) - { - if (!("_data" in node)) - return; - let newChild = Templater.process(template.firstChild, node._data); - delete newChild._data; - node.replaceChild(newChild, node.firstChild); - }, - - /** - * Walks up the parent chain for a node until the node corresponding with a - * template is found. - */ - getDataNode: function(/**Node*/ node) /**Node*/ - { - while (node) - { - if ("_data" in node) - return node; - node = node.parentNode; - } - return null; - }, - - /** - * Returns the data used to generate the node from a template. - */ - getDataForNode: function(/**Node*/ node) /**Object*/ - { - node = Templater.getDataNode(node); - if (node) - return node._data; - else - return null; - }, - - /** - * Returns a node that has been generated from a template using a particular - * data object. - */ - getNodeForData: function(/**Node*/ parent, /**String*/ property, /**Object*/ data) /**Node*/ - { - for (let child = parent.firstChild; child; child = child.nextSibling) - if ("_data" in child && property in child._data && child._data[property] == data) - return child; - return null; - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.xul deleted file mode 100644 index ce65659..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/filters.xul +++ /dev/null @@ -1,400 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://adblockplus/skin/filters.css" type="text/css"?> - -<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/filters.dtd"> - -<dialog - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - title="&dialog.title;" - id="abpFiltersWindow" - onload="init()" - buttons="accept" - width="950" - height="450" - persist="screenX screenY width height sizemode" - windowtype="abp:filters"> - -<script type="application/x-javascript;version=1.7" src="utils.js"/> -<script type="application/x-javascript;version=1.7" src="filters.js"/> -<script type="application/x-javascript;version=1.7" src="filters-subscriptionview.js"/> -<script type="application/x-javascript;version=1.7" src="filters-subscriptionactions.js"/> -<script type="application/x-javascript;version=1.7" src="filters-filterview.js"/> -<script type="application/x-javascript;version=1.7" src="filters-filteractions.js"/> -<script type="application/x-javascript;version=1.7" src="filters-backup.js"/> -<script type="application/x-javascript;version=1.7" src="filters-search.js"/> - -<keyset id="filtersKeyset"> - <key id="subscription-update-key" key="T" modifiers="accel" command="subscription-update-command"/> - <key id="subscription-update-all-key" key="T" modifiers="accel,shift" command="subscription-update-all-command"/> - <key id="edit-key" keycode="VK_F2" oncommand="E(FilterActions.focused ? 'filters-edit-command' : 'subscription-editTitle-command').doCommand();"/> - <key id="delete-key" keycode="VK_DELETE" oncommand="E(FilterActions.focused ? 'filters-delete-command' : 'subscription-delete-command').doCommand();"/> - <key id="subscription-showHideFilters-key" key="R" modifiers="accel" command="subscription-showHideFilters-command"/> - <key id="moveUp-key" keycode="VK_UP" modifiers="accel"/> - <key id="moveDown-key" keycode="VK_DOWN" modifiers="accel"/> - <key id="filters-add-key" keycode="VK_INSERT" oncommand="E('filters-add-command').doCommand();"/> - <key id="filters-selectAll-key" key="A" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-selectAll-command').doCommand();"/> - <key id="filters-copy-key" key="C" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-copy-command').doCommand();"/> - <key id="filters-cut-key" key="X" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-cut-command').doCommand();"/> - <key id="filters-paste-key" key="V" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-paste-command').doCommand();"/> - <key id="backup-key" key="E" modifiers="accel" oncommand="E('backup').doCommand();"/> - <key id="restore-key" key="I" modifiers="accel" oncommand="E('restoreOwnBackup').doCommand();"/> - <key id="find-key" key="F" modifiers="accel" oncommand="if (FilterActions.visible) E('find-command').doCommand();"/> - <key id="find-again-key" key="G" modifiers="accel" oncommand="if (FilterActions.visible) E('find-again-command').doCommand();"/> - <key id="find-previous-key" key="G" modifiers="accel,shift" oncommand="if (FilterActions.visible) E('find-previous-command').doCommand();"/> - <key id="find-again-key2" keycode="VK_F3" oncommand="if (FilterActions.visible) E('find-again-command').doCommand();"/> - <key id="find-previous-key2" keycode="VK_F3" modifiers="shift" oncommand="if (FilterActions.visible) E('find-previous-command').doCommand();"/> -</keyset> - -<commandset id="filtersCommandset"> - <command id="subscription-update-command" oncommand="SubscriptionActions.updateFilters();"/> - <command id="subscription-update-all-command" oncommand="SubscriptionActions.updateAllFilters();"/> - <command id="subscription-editTitle-command" oncommand="SubscriptionActions.editTitle();"/> - <command id="subscription-delete-command" oncommand="SubscriptionActions.remove();"/> - <command id="subscription-showHideFilters-command" oncommand="E('filtersGrippy').doCommand();"/> - <command id="subscription-moveUp-command" oncommand="SubscriptionActions.moveUp();"/> - <command id="subscription-moveDown-command" oncommand="SubscriptionActions.moveDown();"/> - <command id="subscription-add-command" oncommand="SelectSubscription.start(event);"/> - <command id="subscription-addSelected-command" oncommand="SelectSubscription.add();"/> - <command id="subscription-addOther-command" oncommand="SelectSubscription.chooseOther();"/> - <command id="group-add-command" oncommand="SubscriptionActions.addGroup();"/> - <command id="filters-selectAll-command" oncommand="FilterActions.selectAll();"/> - <command id="filters-edit-command" oncommand="FilterActions.startEditing();"/> - <command id="filters-add-command" oncommand="FilterActions.insertFilter();"/> - <command id="filters-delete-command" oncommand="FilterActions.deleteSelected();"/> - <command id="filters-resetHitCounts-command" oncommand="FilterActions.resetHitCounts();"/> - <command id="filters-moveUp-command" oncommand="FilterActions.moveUp();"/> - <command id="filters-moveDown-command" oncommand="FilterActions.moveDown();"/> - <command id="filters-copy-command" oncommand="FilterActions.copySelected(true);"/> - <command id="filters-cut-command" oncommand="FilterActions.copySelected(false);"/> - <command id="filters-paste-command" oncommand="FilterActions.paste();"/> - <command id="find-command" oncommand="E('findbar').startFind(E('findbar').FIND_NORMAL)"/> - <command id="find-again-command" oncommand="E('findbar').onFindAgainCommand(false)"/> - <command id="find-previous-command" oncommand="E('findbar').onFindAgainCommand(true)"/> -</commandset> - -<popupset id="filtersPopupset"> - <menupopup id="filters-view-menu1" onpopupshowing="FilterActions.fillColumnPopup(this);"> - <menuitem id="filters-view-filter1" label="&filter.column;" type="checkbox" disabled="true"/> - <menuitem id="filters-view-slow1" label="&slow.column;" type="checkbox" oncommand="FilterActions.toggleColumn('col-slow')"/> - <menuitem id="filters-view-enabled1" label="&enabled.column;" type="checkbox" oncommand="FilterActions.toggleColumn('col-enabled')"/> - <menuitem id="filters-view-hitcount1" label="&hitcount.column;" type="checkbox" oncommand="FilterActions.toggleColumn('col-hitcount')"/> - <menuitem id="filters-view-lasthit1" label="&lasthit.column;" type="checkbox" oncommand="FilterActions.toggleColumn('col-lasthit')"/> - <menuseparator/> - <menu id="filters-sort-menu1" label="&sort.label;"> - <menupopup id="filters-sort-popup1"> - <menuitem id="filters-sort-none1" label="&sort.none.label;" type="radio" name="sortColumn" oncommand="FilterView.sortBy(null)"/> - <menuitem id="filters-sort-filter1" label="&filter.column;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-filter')"/> - <menuitem id="filters-sort-slow1" label="&slow.column;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-slow')"/> - <menuitem id="filters-sort-enabled1" label="&enabled.column;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-enabled')"/> - <menuitem id="filters-sort-hitcount1" label="&hitcount.column;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-hitcount')"/> - <menuitem id="filters-sort-lasthit1" label="&lasthit.column;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-lasthit')"/> - <menuseparator/> - <menuitem id="filters-sort-asc1" label="&sort.ascending.label;" type="radio" name="sortOrder" oncommand="FilterActions.setSortOrder('ascending')"/> - <menuitem id="filters-sort-desc1" label="&sort.descending.label;" type="radio" name="sortOrder" oncommand="FilterActions.setSortOrder('descending')"/> - </menupopup> - </menu> - </menupopup> - <tooltip id="filtersTooltip" onpopupshowing="FilterActions.fillTooltip(event);"> - <grid> - <columns> - <column/> - <column flex="1"/> - </columns> - <rows> - <row id="tooltip-filter-row" align="top"> - <label class="tooltipLabel" value="&filter.column;"/> - <vbox id="tooltip-filter"/> - </row> - <row id="tooltip-hitcount-row"> - <label class="tooltipLabel" value="&hitcount.column;"/> - <description id="tooltip-hitcount"/> - </row> - <row id="tooltip-lasthit-row"> - <label class="tooltipLabel" value="&lasthit.column;"/> - <description id="tooltip-lasthit"/> - </row> - </rows> - </grid> - - <description id="tooltip-additional"/> - </tooltip> -</popupset> - -<hbox id="content" flex="1"> - <tabbox id="tabs" flex="1" persist="selectedIndex"> - <tabs onselect="onTabChange(this.parentNode);"> - <tab label="&subscriptions.tab.label;"/> - <tab label="&filters.tab.label;"/> - </tabs> - <tabpanels flex="1"> - <tabpanel id="subscriptionsTab" orient="vertical" flex="1"> - <hbox pack="end"> - <button id="selectSubscriptionButton" label="&addSubscription.label;…" command="subscription-add-command"/> - </hbox> - - <panel id="selectSubscriptionPanel" type="arrow" position="bottomcenter topleft" - orient="vertical" onkeypress="SelectSubscription.keyPress(event);"> - <menuitem id="selectSubscriptionTemplate" hidden="true" - class="{localePrefix ? 'localeMatch' : ''}" - label="{node.getAttribute('title')}" - value="{node.getAttribute('url')}"> - <label class="selectSubscriptionItem" value="{node.getAttribute('title') + ' (' + node.getAttribute('specialization') + ')'}"/> - </menuitem> - <menulist id="selectSubscription"> - <menupopup/> - </menulist> - <hbox align="baseline"> - <label class="text-link" value="&addSubscriptionOther.label;" onclick="E('subscription-addOther-command').doCommand();"/> - <spacer flex="1"/> - <button id="selectSubscriptionAccept" default="true" label="&addSubscriptionAdd.label;" command="subscription-addSelected-command"/> - <spacer flex="1"/> - <button label="&addSubscriptionCancel.label;" oncommand="E('selectSubscriptionPanel').hidePopup();"/> - </hbox> - </panel> - - <richlistitem id="subscriptionTemplate" class="subscription" hidden="true" orient="vertical" - onmousedown="this._wasSelected = (this.parentNode.selectedItem == this);" - ondragstart="SubscriptionActions.startDrag(event, this);" - ondragend="SubscriptionActions.endDrag();" - ondragover="SubscriptionActions.dragOver(event);" - ondrop="SubscriptionActions.drop(event, this);" - oncontextmenu="SubscriptionActions.openMenu(event, this);"> - <vbox class="{subscription.disabled ? 'disabled' : ''}"> - <hbox align="center"> - <checkbox label="&subscription.enabled.label;" class="enabledCheckbox tabable" tabindex="-1" - checked="{subscription.disabled ? 'false' : 'true'}" oncommand="SubscriptionActions.setDisabled(this, !this.checked);"/> - - <vbox flex="1"> - <hbox align="center"> - <deck class="titleBox" flex="1" selectedIndex="0" onselect="event.stopPropagation();"> - <description ondblclick="if (event.button == 0) TitleEditor.start(this, true);"> - <description class="title" value="{subscription.title}" flex="1" crop="end"/> - (<if condition="{isExternal}"> - <description value="&subscription.external.label;"/> - <else/> - <if condition="{subscription.homepage}"> - <description class="link" value="&subscription.homepage.label;" - _url="{subscription.homepage}" tooltiptext="{subscription.homepage}" - onclick="if (event.button == 0) { event.stopPropagation();UI.loadInBrowser(this.getAttribute('_url')); }"/>,  - </if> - <description class="link" value="&subscription.source.label;" - _url="{subscription.url}" tooltiptext="{subscription.url}" - onclick="if (event.button == 0) { event.stopPropagation();UI.loadInBrowser(this.getAttribute('_url')); }"/> - </if>) - </description> - <textbox oncontextmenu="event.stopPropagation();" class="titleEditor" onkeypress="TitleEditor.keyPress(event);" onblur="TitleEditor.end(true);"/> - </deck> - </hbox> - <hbox align="center"> - <description flex="1" class="status"> - <description value="&subscription.lastDownload.label;"/>  - <if condition="{downloading}"> - <description value="&subscription.lastDownload.inProgress;"/> - <elif condition="{!subscription.lastDownload}"/> - <description value="&subscription.lastDownload.unknown;"/> - <else/> - <description value="{formatTime(subscription.lastDownload * 1000)}"/> - <if condition="{subscription.downloadStatus}"> - <description> -  (<if condition="{subscription.downloadStatus == 'synchronize_invalid_url'}"> - <description value="&subscription.lastDownload.invalidURL;"/> - <elif condition="{subscription.downloadStatus == 'synchronize_connection_error'}"/> - <description value="&subscription.lastDownload.connectionError;"/> - <elif condition="{subscription.downloadStatus == 'synchronize_invalid_data'}"/> - <description value="&subscription.lastDownload.invalidData;"/> - <elif condition="{subscription.downloadStatus == 'synchronize_checksum_mismatch'}"/> - <description value="&subscription.lastDownload.checksumMismatch;"/> - <else/> <!-- synchronize_ok --> - <description value="&subscription.lastDownload.success;"/> - </if>) - </description> - </if> - </if> - </description> - </hbox> - </vbox> - - <button class="actionButton tabable" type="menu" label="&subscription.actions.label;" tabindex="-1"> - <menupopup class="actionMenu"> - <menuitem label="&subscription.editTitle.label;" key="edit-key" command="subscription-editTitle-command"/> - <menuitem label="&subscription.update.label;" key="subscription-update-key" command="subscription-update-command"/> - <menuitem label="&subscription.showHideFilters.label;" key="subscription-showHideFilters-key" command="subscription-showHideFilters-command"/> - <menuitem label="&subscription.delete.label;…" key="delete-key" command="subscription-delete-command"/> - <menuseparator/> - <menuitem label="&subscription.moveUp.label;" key="moveUp-key" command="subscription-moveUp-command"/> - <menuitem label="&subscription.moveDown.label;" key="moveDown-key" command="subscription-moveDown-command"/> - </menupopup> - </button> - </hbox> - - <description class="warning" hidden="{!subscription.upgradeRequired}">&subscription.minVersion.warning;</description> - <description class="warning" hidden="{!disabledFilters}"> - &subscription.disabledFilters.warning; - <description class="link" value="&subscription.disabledFilters.enable;" onclick="SubscriptionActions.enableFilters(this);"/> - </description> - </vbox> - </richlistitem> - - <deck id="noSubscriptionsDeck" flex="1"> - <description flex="1">&noSubscriptions.text;</description> - <richlistbox id="subscriptions" class="initialFocus" flex="1" - onselect="onSelectionChange(this);" - ondragover="SubscriptionActions.dragOver(event);" - ondrop="SubscriptionActions.drop(event, null);" - onkeypress="SubscriptionActions.keyPress(event);"> - </richlistbox> - </deck> - - <!--description> - <checkbox id="acceptableAds" label="&acceptableAds2.label;" oncommand="ListManager.allowAcceptableAds(this.checked);"/> - <label class="text-link" value="&viewList.label;" onclick="UI.loadInBrowser(Prefs.subscriptions_exceptionsurl);"/> - <label class="text-link" value="&readMore.label;" onclick="UI.loadDocLink('acceptable_ads');"/> - </description--> - </tabpanel> - <tabpanel id="filtersTab" orient="vertical" flex="1"> - <hbox pack="end"> - <button id="addGroupButton" label="&addGroup.label;" command="group-add-command"/> - </hbox> - - <richlistitem id="groupTemplate" class="subscription" hidden="true" orient="vertical" - onmousedown="this._wasSelected = (this.parentNode.selectedItem == this);" - ondragstart="SubscriptionActions.startDrag(event, this);" - ondragend="SubscriptionActions.endDrag();" - ondragover="SubscriptionActions.dragOver(event);" - ondrop="SubscriptionActions.drop(event, this);" - oncontextmenu="SubscriptionActions.openMenu(event, this);"> - <hbox class="{subscription.disabled ? 'disabled' : ''}" align="center"> - <checkbox label="&subscription.enabled.label;" class="enabledCheckbox tabable" tabindex="-1" - checked="{subscription.disabled ? 'false' : 'true'}" oncommand="SubscriptionActions.setDisabled(this, !this.checked);"/> - <hbox align="center" flex="1"> - <deck class="titleBox" flex="1" selectedIndex="0" onselect="event.stopPropagation();"> - <description class="title" value="{subscription.title}" crop="end" ondblclick="if (event.button == 0) TitleEditor.start(this, true);"/> - <textbox oncontextmenu="event.stopPropagation();" class="titleEditor" onkeypress="TitleEditor.keyPress(event);" onblur="TitleEditor.end(true);"/> - </deck> - </hbox> - <button class="actionButton tabable" type="menu" label="&subscription.actions.label;" tabindex="-1"> - <menupopup class="actionMenu"> - <menuitem label="&subscription.editTitle.label;" key="edit-key" command="subscription-editTitle-command"/> - <menuitem label="&subscription.showHideFilters.label;" key="subscription-showHideFilters-key" command="subscription-showHideFilters-command"/> - <menuitem label="&subscription.delete.label;…" key="delete-key" command="subscription-delete-command"/> - <menuseparator/> - <menuitem label="&subscription.moveUp.label;" key="moveUp-key" command="subscription-moveUp-command"/> - <menuitem label="&subscription.moveDown.label;" key="moveDown-key" command="subscription-moveDown-command"/> - </menupopup> - </button> - </hbox> - </richlistitem> - - <deck id="noFiltersDeck" flex="1"> - <description flex="1">&noFilters.text;</description> - <richlistbox id="groups" class="initialFocus" flex="1" - onselect="onSelectionChange(this);" - ondragover="SubscriptionActions.dragOver(event);" - ondrop="SubscriptionActions.drop(event, null);" - onkeypress="SubscriptionActions.keyPress(event);"> - </richlistbox> - </deck> - </tabpanel> - </tabpanels> - </tabbox> - - <splitter id="filtersSplitter" persist="state" orient="horizontal" collapse="after" state="collapsed" oncommand="FilterView.refresh();onSplitterStateChange(this);"> - <grippy id="filtersGrippy"/> - </splitter> - - <vbox id="filtersContainer" persist="width height" width="500"> - <hbox pack="end"> - <button id="findButton" label="&find.label;" command="find-command"/> - <button id="filterActionButton" type="menu" label="&filter.actions.label;"> - <menupopup id="filterActionMenu" onpopupshowing="FilterActions.fillActionsPopup();"> - <menuitem label="&filter.edit.label;" key="edit-key" command="filters-edit-command"/> - <menuitem label="&filter.cut.label;" key="filters-cut-key" command="filters-cut-command"/> - <menuitem label="&filter.copy.label;" key="filters-copy-key" command="filters-copy-command"/> - <menuitem label="&filter.paste.label;" key="filters-paste-key" command="filters-paste-command"/> - <menuitem label="&filter.delete.label;" key="delete-key" command="filters-delete-command"/> - <menuseparator/> - <menuitem label="&filter.selectAll.label;" key="filters-selectAll-key" command="filters-selectAll-command"/> - <menuitem label="&filter.resetHitCounts.label;" command="filters-resetHitCounts-command"/> - <menuseparator/> - <menuitem label="&filter.moveUp.label;" key="moveUp-key" command="filters-moveUp-command"/> - <menuitem label="&filter.moveDown.label;" key="moveDown-key" command="filters-moveDown-command"/> - <menuseparator/> - <menu id="viewMenu" label="&viewMenu.label;"/> - </menupopup> - </button> - <button id="addFilterButton" label="&addFilter.label;" command="filters-add-command"/> - </hbox> - <tree id="filtersTree" - flex="1" - editable="true" - seltype="multiple" - enableColumnDrag="true" - hidecolumnpicker="true" - _removewarning="&filters.remove.warning;"> - <treecols context="filters-view-menu1"> - <treecol id="col-enabled" label="&enabled.column;" cycler="true" flex="0" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="col-filter" label="&filter.column;" flex="10" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="col-slow" label="!" display="&slow.column;" tooltiptext="&slow.column;" flex="0" width="16" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="col-hitcount" label="&hitcount.column;" flex="0" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="col-lasthit" label="&lasthit.column;" hidden="true" flex="4" persist="width ordinal sortDirection hidden"/> - </treecols> - - <treechildren id="filtersTreeChildren" - oncontextmenu="E('filterActionMenu').openPopupAtScreen(event.screenX, event.screenY, true);" - tooltip="filtersTooltip" - noGroupText="&noGroupSelected.text;" - noFiltersText="&noFiltersInGroup.text;" - ondragstart="FilterActions.startDrag(event);" - ondragend="FilterActions.endDrag(event);"/> - </tree> - </vbox> -</hbox> - -<findbar id="findbar"/> - -<hbox id="buttons"> - <button id="backupButton" type="menu" - label="&backupButton.label;" - _backupDialogTitle="&backup.label;" _restoreDialogTitle="&restore.own.label;" - _fileFilterComplete="&backup.complete.title;" _fileFilterCustom="&backup.custom.title;" - _backupError="&backup.error;" _restoreError="&restore.error;" - _restoreCompleteWarning="&restore.complete.warning;" _restoreCustomWarning="&restore.custom.warning;" - _restoreVersionWarning="&restore.minVersion.warning;" - oncommand="if (event.target == this) Utils.runAsync(function() this.open = true, this);"> - <menupopup onpopupshowing="Backup.fillRestorePopup();"> - <menuitem id="backup" key="backup-key" label="&backup.label;…" oncommand="Backup.backupToFile();"/> - <menuseparator/> - <menuitem id="restoreBackupTemplate" label="&restore.default.label;" hidden="true"/> - <menuitem id="restoreOwnBackup" key="restore-key" label="&restore.own.label;…" oncommand="Backup.restoreFromFile();"/> - </menupopup> - </button> - - <spacer flex="1"/> - - <button id="close" dlgtype="accept" label="&close.label;"/> -</hbox> - -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.html b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.html deleted file mode 100644 index 36f5cf7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE html> -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<html> - <head> - <title class="i18n_firstRun_title"></title> - <meta charset="utf-8"> - <link type="text/css" href="/skin/firstRun.css" rel="stylesheet"/> - <script type="text/javascript" src="utils.js"></script> - <script type="text/javascript" src="i18n.js"></script> - <script type="text/javascript" src="firstRun.js"></script> - </head> - <body> - - - <header> - <div id="logo"></div> - <h1 id="title-main" class="i18n_firstRun_title"></h1> - </header> - - <section id="legacySafariWarning" class="i18n_firstRun_legacySafariWarning warning" hidden="true"></section> - <section id="filterlistsReinitializedWarning" class="i18n_firstRun_filterlistsReinitializedWarning warning" hidden="true"></section> - <section id="dataCorruptionWarning" class="i18n_firstRun_dataCorruptionWarning warning" hidden="true"></section> - - <section id="acceptable-ads"> - <h2 class="i18n_firstRun_acceptableAdsHeadline"></h2> - <p id="acceptableAdsExplanation" class="i18n_firstRun_acceptableAdsExplanation"></p> - </section> - - - <section id="share"> - <h2 id="share-headline" class="i18n_firstRun_share_headline"></h2> - - <div id="donate-block"> - <a id="donate" class="i18n_firstRun_donate" target="_blank"></a> - <span id="donate-label" class="i18n_firstRun_donate_label"></span> - </div> - - <div id="share-block"> - <div id="share-general" class="share-buttons"> - <a id="share-facebook" href="https://www.facebook.com/adblockplus" target="_blank" data-script="https://facebook.com/plugins/like.php?"> - </a> - <a id="share-twitter" href="https://twitter.com/adblockplus" target="_blank" data-script="https://platform.twitter.com/widgets.js"> - </a> - <a id="share-gplus" href="https://www.google.com/+AdblockPlus" target="_blank" data-script="https://apis.google.com/js/plusone.js"> - </a> - </div> - - <!-- Chinese social networks --> - <div id="share-chinese" class="share-buttons"> - <a id="share-renren" href="http://www.renren.com/601651969" target="_blank"> - </a> - <a id="share-weibo" href="http://e.weibo.com/adblockplus/" target="_blank"> - </a> - </div> - <span class="i18n_firstRun_share"></span> - </div> - </section> - - - <section id="can-do-more"> - <h2 class="i18n_firstRun_features"></h2> - - <div id="can-do-more-content"> - <ul id="features"> - <li id="feature-malware" class="feature"> - <div class="feature-image feature-malware-image"></div> - <div class="feature-description"> - <div class="feature-description-textblock"> - <h3 class="i18n_firstRun_feature_malware feature-title"></h3> - <span class="i18n_firstRun_feature_malware_description"></span> - </div> - <div id="toggle-malware" class="toggle"> - <div class="i18n_firstRun_toggle_on toggle-on"></div> - <div class="toggle-blob"></div> - <div class="i18n_firstRun_toggle_off toggle-off"></div> - </div> - </div> - - </li> - <li id="feature-social" class="feature"> - <div class="feature-image feature-social-image"></div> - <div class="feature-description"> - <div class="feature-description-textblock"> - <h3 class="i18n_firstRun_feature_social feature-title"></h3> - <span class="i18n_firstRun_feature_social_description"></span> - </div> - <div id="toggle-social" class="toggle"> - <div class="i18n_firstRun_toggle_on toggle-on"></div> - <div class="toggle-blob"></div> - <div class="i18n_firstRun_toggle_off toggle-off"></div> - </div> - </div> - </li> - - <li id="feature-tracking" class="feature"> - <div class="feature-image feature-tracking-image"></div> - <div class="feature-description"> - <div class="feature-description-textblock"> - <h3 class="i18n_firstRun_feature_tracking feature-title"></h3> - <span class="i18n_firstRun_feature_tracking_description"></span> - </div> - <div id="toggle-tracking" class="toggle"> - <div class="i18n_firstRun_toggle_on toggle-on"></div> - <div class="toggle-blob"></div> - <div class="i18n_firstRun_toggle_off toggle-off"></div> - </div> - </div> - </li> - - </ul> - - </div> - </section> - - - <footer> - <a id="contributors" class="i18n_firstRun_contributor_credits"></a> - </footer> - - - <div id="glass-pane"> - <iframe id="share-popup" scrolling="no"></iframe> - </div> - </body> -</html>
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js deleted file mode 100644 index be2caa6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js +++ /dev/null @@ -1,253 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -"use strict"; - -(function() -{ - // Load subscriptions for features - var featureSubscriptions = [ - { - feature: "malware", - homepage: "http://malwaredomains.com/", - title: "Malware Domains", - url: "https://easylist-downloads.adblockplus.org/malwaredomains_full.txt" - }, - { - feature: "social", - homepage: "https://www.fanboy.co.nz/", - title: "Fanboy's Social Blocking List", - url: "https://easylist-downloads.adblockplus.org/fanboy-social.txt" - }, - { - feature: "tracking", - homepage: "https://easylist.adblockplus.org/", - title: "EasyPrivacy", - url: "https://easylist-downloads.adblockplus.org/easyprivacy.txt" - } - ]; - - function onDOMLoaded() - { - var locale = require("utils").Utils.appLocale; - document.documentElement.setAttribute("lang", locale); - - // Set up URLs - var donateLink = E("donate"); - donateLink.href = Utils.getDocLink("donate"); - - var contributors = E("contributors"); - contributors.href = Utils.getDocLink("contributors"); - - setLinks("acceptableAdsExplanation", Utils.getDocLink("acceptable_ads_criteria"), openFilters); - setLinks("share-headline", Utils.getDocLink("contribute")); - - if (typeof backgroundPage != "undefined") - { - // Show warning if data corruption was detected - if (backgroundPage.seenDataCorruption) - { - E("dataCorruptionWarning").removeAttribute("hidden"); - setLinks("dataCorruptionWarning", Utils.getDocLink("knownIssuesChrome_filterstorage")); - } - - // Show warning if filterlists settings were reinitialized - if (backgroundPage.filterlistsReinitialized) - { - E("filterlistsReinitializedWarning").removeAttribute("hidden"); - setLinks("filterlistsReinitializedWarning", openFilters); - } - } - - // Show warning if Safari version isn't supported - var info = require("info"); - if (info.platform == "safari" && ( - Services.vc.compare(info.platformVersion, "6.0") < 0 || // beforeload breaks websites in Safari 5 - Services.vc.compare(info.platformVersion, "6.1") == 0 || // extensions are broken in 6.1 and 7.0 - Services.vc.compare(info.platformVersion, "7.0") == 0 - )) - E("legacySafariWarning").removeAttribute("hidden"); - - // Set up feature buttons linked to subscriptions - featureSubscriptions.forEach(setToggleSubscriptionButton); - var filterListener = function(action) - { - if (/^subscription\.(added|removed|disabled)$/.test(action)) - { - for (var i = 0; i < featureSubscriptions.length; i++) - { - var featureSubscription = featureSubscriptions[i]; - updateToggleButton(featureSubscription.feature, isSubscriptionEnabled(featureSubscription)); - } - } - } - FilterNotifier.addListener(filterListener); - window.addEventListener("unload", function(event) - { - FilterNotifier.removeListener(filterListener); - }, false); - - initSocialLinks(); - } - - function isSubscriptionEnabled(featureSubscription) - { - return featureSubscription.url in FilterStorage.knownSubscriptions - && !Subscription.fromURL(featureSubscription.url).disabled; - } - - function setToggleSubscriptionButton(featureSubscription) - { - var feature = featureSubscription.feature; - - var element = E("toggle-" + feature); - updateToggleButton(feature, isSubscriptionEnabled(featureSubscription)); - element.addEventListener("click", function(event) - { - var subscription = Subscription.fromURL(featureSubscription.url); - if (isSubscriptionEnabled(featureSubscription)) - FilterStorage.removeSubscription(subscription); - else - { - subscription.disabled = false; - subscription.title = featureSubscription.title; - subscription.homepage = featureSubscription.homepage; - FilterStorage.addSubscription(subscription); - if (!subscription.lastDownload) - Synchronizer.execute(subscription); - } - }, false); - } - - function openSharePopup(url) - { - var iframe = E("share-popup"); - var glassPane = E("glass-pane"); - var popupMessageReceived = false; - - var popupMessageListener = function(event) - { - var originFilter = Filter.fromText("||adblockplus.org^"); - if (!originFilter.matches(event.origin, "OTHER", null, null)) - return; - - var width = event.data.width; - var height = event.data.height; - iframe.width = width; - iframe.height = height; - iframe.style.marginTop = -height/2 + "px"; - iframe.style.marginLeft = -width/2 + "px"; - popupMessageReceived = true; - window.removeEventListener("message", popupMessageListener); - }; - // Firefox requires last parameter to be true to be triggered by unprivileged pages - window.addEventListener("message", popupMessageListener, false, true); - - var popupLoadListener = function() - { - if (popupMessageReceived) - { - iframe.className = "visible"; - - var popupCloseListener = function() - { - iframe.className = glassPane.className = ""; - document.removeEventListener("click", popupCloseListener); - }; - document.addEventListener("click", popupCloseListener, false); - } - else - { - glassPane.className = ""; - window.removeEventListener("message", popupMessageListener); - } - - iframe.removeEventListener("load", popupLoadListener); - }; - iframe.addEventListener("load", popupLoadListener, false); - - iframe.src = url; - glassPane.className = "visible"; - } - - function initSocialLinks() - { - var networks = ["twitter", "facebook", "gplus"]; - networks.forEach(function(network) - { - var link = E("share-" + network); - link.addEventListener("click", onSocialLinkClick, false); - }); - } - - function onSocialLinkClick(event) - { - // Don't open the share page if the sharing script would be blocked - var filter = defaultMatcher.matchesAny(event.target.getAttribute("data-script"), "SCRIPT", "adblockplus.org", true); - if (!(filter instanceof BlockingFilter)) - { - event.preventDefault(); - openSharePopup(Utils.getDocLink(event.target.id)); - } - } - - function setLinks(id) - { - var element = E(id); - if (!element) - { - return; - } - - var links = element.getElementsByTagName("a"); - - for (var i = 0; i < links.length; i++) - { - if (typeof arguments[i + 1] == "string") - { - links[i].href = arguments[i + 1]; - links[i].setAttribute("target", "_blank"); - } - else if (typeof arguments[i + 1] == "function") - { - links[i].href = "javascript:void(0);"; - links[i].addEventListener("click", arguments[i + 1], false); - } - } - } - - function openFilters() - { - if (typeof UI != "undefined") - UI.openFiltersDialog(); - else - { - backgroundPage.openOptions(); - } - } - - function updateToggleButton(feature, isEnabled) - { - var button = E("toggle-" + feature); - if (isEnabled) - button.classList.remove("off"); - else - button.classList.add("off"); - } - - document.addEventListener("DOMContentLoaded", onDOMLoaded, false); -})(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/flasher.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/flasher.js deleted file mode 100644 index ddb4131..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/flasher.js +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Draws a blinking border for a list of matching nodes. - */ - -var flasher = { - nodes: null, - count: 0, - timer: null, - - flash: function(nodes) - { - this.stop(); - if (nodes) - nodes = nodes.filter(function(node) node.nodeType == Node.ELEMENT_NODE); - if (!nodes || !nodes.length) - return; - - if (Prefs.flash_scrolltoitem && nodes[0].ownerDocument) - { - // Ensure that at least one node is visible when flashing - let wnd = nodes[0].ownerDocument.defaultView; - try - { - let topWnd = Utils.getChromeWindow(wnd); - let {getBrowser} = require("appSupport"); - let browser = (getBrowser ? getBrowser(topWnd) : null); - if (browser) - browser.markupDocumentViewer.scrollToNode(nodes[0]); - } - catch(e) - { - Cu.reportError(e); - } - } - - this.nodes = nodes; - this.count = 0; - - this.doFlash(); - }, - - doFlash: function() { - if (this.count >= 12) { - this.stop(); - return; - } - - if (this.count % 2) - this.switchOff(); - else - this.switchOn(); - - this.count++; - - this.timer = window.setTimeout(function() {flasher.doFlash()}, 300); - }, - - stop: function() { - if (this.timer) { - window.clearTimeout(this.timer); - this.timer = null; - } - - if (this.nodes) { - this.switchOff(); - this.nodes = null; - } - }, - - setOutline: function(outline, offset) - { - for (var i = 0; i < this.nodes.length; i++) - { - if ("style" in this.nodes[i]) - { - this.nodes[i].style.outline = outline; - this.nodes[i].style.outlineOffset = offset; - } - } - }, - - switchOn: function() - { - this.setOutline("#CC0000 dotted 2px", "-2px"); - }, - - switchOff: function() - { - this.setOutline("", ""); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js deleted file mode 100644 index 8366268..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js +++ /dev/null @@ -1,150 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -var i18n; - -if (typeof ext != "undefined") - i18n = ext.i18n; -else if (typeof chrome != "undefined") - // TODO: This check only exist for backwards compatibility, while the Safari - // port isn't merged into the adblockpluschrome repo. So this branch should - // be removed when the Safari port was merged. - i18n = chrome.i18n; -else -{ - // Using Firefox' approach on i18n instead - - // Randomize URI to work around bug 719376 - var pageName = location.pathname.replace(/.*\//, '').replace(/\..*?$/, ''); - var stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/" + pageName + - ".properties?" + Math.random()); - - function getI18nMessage(key) - { - return { - "message": stringBundle.GetStringFromName(key) - }; - } - - i18n = (function() - { - function getText(message, args) - { - var text = message.message; - var placeholders = message.placeholders; - - if (!args || !placeholders) - return text; - - for (var key in placeholders) - { - var content = placeholders[key].content; - if (!content) - continue; - - var index = parseInt(content.slice(1), 10); - if (isNaN(index)) - continue; - - var replacement = args[index - 1]; - if (typeof replacement === "undefined") - continue; - - text = text.split("$" + key + "$").join(replacement); - } - return text; - } - - return { - getMessage: function(key, args) - { - try{ - var message = getI18nMessage(key); - return getText(message, args); - } - catch(e) - { - Cu.reportError(e); - return "Missing translation: " + key; - } - } - }; - })(); -} - -// Inserts i18n strings into matching elements. Any inner HTML already in the element is -// parsed as JSON and used as parameters to substitute into placeholders in the i18n -// message. -i18n.setElementText = function(element, stringName, arguments) -{ - function processString(str, element) - { - var match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); - if (match) - { - processString(match[1], element); - - var e = document.createElement(match[2]); - processString(match[3], e); - element.appendChild(e); - - processString(match[4], element); - } - else - element.appendChild(document.createTextNode(str)); - } - - while (element.lastChild) - element.removeChild(element.lastChild); - processString(i18n.getMessage(stringName, arguments), element); -} - -// Loads i18n strings -function loadI18nStrings() -{ - var nodes = document.querySelectorAll("[class^='i18n_']"); - for(var i = 0; i < nodes.length; i++) - { - var node = nodes[i]; - var arguments = JSON.parse("[" + node.textContent + "]"); - if (arguments.length == 0) - arguments = null; - - var className = node.className; - if (className instanceof SVGAnimatedString) - className = className.animVal; - var stringName = className.split(/\s/)[0].substring(5); - - i18n.setElementText(node, stringName, arguments); - } -} - -// Provides a more readable string of the current date and time -function i18n_timeDateStrings(when) -{ - var d = new Date(when); - var timeString = d.toLocaleTimeString(); - - var now = new Date(); - if (d.toDateString() == now.toDateString()) - return [timeString]; - else - return [timeString, d.toLocaleDateString()]; -} - -// Fill in the strings as soon as possible -window.addEventListener("DOMContentLoaded", loadI18nStrings, true); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/overlay.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/overlay.xul deleted file mode 100644 index 90b5b9f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/overlay.xul +++ /dev/null @@ -1,134 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<!DOCTYPE overlay [ - <!ENTITY % overlayDTD SYSTEM "chrome://adblockplus/locale/overlay.dtd"> - %overlayDTD; - <!ENTITY % subscriptionsDTD SYSTEM "chrome://adblockplus/locale/subscriptionSelection.dtd"> - %subscriptionsDTD; -]> - -<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - imagecontextlabel="&context.image.label;…" objectcontextlabel="&context.object.label;…" - mediacontextlabel="&context.media.label;…" subdocumentcontextlabel="&context.frame.label;…" - whitelistcontextlabel="&context.removeWhitelist.label;" - objtabtext="&objecttab.title;…" objtabtooltip="&objecttab.tooltip;" - subscriptionDialogTitle="&dialog.title;" - subscriptionDialogMessage="&title.label; ?1? &location.label; ?2?"> - <popupset id="abp-popupset"> - <!-- Icon's tooltip --> - <tooltip id="abp-tooltip" orient="vertical"> - <description id="abp-tooltip-action" hidden="true"/> - <label id="abp-tooltip-status-label" value="&status.tooltip;"/> - <description id="abp-tooltip-status"/> - <label id="abp-tooltip-blocked-label" value="&blocked.tooltip;" hidden="true"/> - <description id="abp-tooltip-blocked" hidden="true"/> - <label id="abp-tooltip-filters-label" value="&filters.tooltip;" hidden="true"/> - <vbox id="abp-tooltip-filters" hidden="true"/> - <description id="abp-tooltip-more-filters" value="…" hidden="true"/> - </tooltip> - </popupset> - - <!-- Icon's context menu --> - <menupopup id="abp-status-popup" context=""> - <!--menuitem id="abp-status-sendReport" label="&sendReport.label;…" key="abp-key-sendReport" command="abp-command-sendReport"/--> - <menuitem id="abp-status-openbottombar" label="&opensidebar.label;" key="abp-key-sidebar" command="abp-command-sidebar"/> - <menuitem id="abp-status-closebottombar" label="&closesidebar.label;" key="abp-key-sidebar" command="abp-command-sidebar"/> - <menuitem id="abp-status-filters" label="&filters.label;…" key="abp-key-filters" command="abp-command-filters"/> - <menuseparator id="abp-status-whitelist-sep"/> - <menuitem id="abp-status-whitelistsite" labeltempl="&whitelist.site.label;" type="checkbox" command="abp-command-togglesitewhitelist"/> - <menuitem id="abp-status-whitelistpage" label="&whitelist.page.label;" type="checkbox" command="abp-command-togglepagewhitelist"/> - <menuitem id="abp-status-disabled" label="&disable.label;" type="checkbox" key="abp-key-enable" command="abp-command-enable"/> - <menuseparator/> - <menu id="abp-status-options" label="&options.label;"> - <menupopup id="abp-status-options-popup"> - <menuitem id="abp-status-frameobjects" label="&objecttabs.label;" type="checkbox" command="abp-command-toggleobjtabs"/> - <menuitem id="abp-status-slowcollapse" label="&hideplaceholders.label;" type="checkbox" command="abp-command-togglecollapse"/> - <menuitem id="abp-status-savestats" label="&counthits.label;" type="checkbox" command="abp-command-togglesavestats"/> - <menuitem id="abp-status-sync" label="&sync.label;" type="checkbox" command="abp-command-togglesync"/> - <menuseparator id="abp-status-iconSettingsSeparator"/> - <menuitem id="abp-status-showintoolbar" label="&showintoolbar.label;" type="checkbox" command="abp-command-toggleshowintoolbar"/> - <menuitem id="abp-status-showinstatusbar" label="&showinstatusbar.label;" type="checkbox" command="abp-command-toggleshowinstatusbar"/> - </menupopup> - </menu> - - <hbox class="abp-contributebutton" id="abp-status-contributebutton" pack="center" align="center"> - <!-- noautoclose attribute tells Australis menu that it shouldn't close when - these are clicked, see https://bugzilla.mozilla.org/show_bug.cgi?id=940693 --> - <button class="abp-contributebutton-btn" label="&contribute.label;" command="abp-command-contribute" flex="1" noautoclose="true"/> - <toolbarbutton class="abp-contributebutton-close" command="abp-command-contribute-hide" noautoclose="true"/> - </hbox> - </menupopup> - - <keyset id="abp-keyset"/> - - <!-- Dummy oncommand attributes are work-arounds for bug 371900 --> - <commandset id="abp-commandset"> - <command id="abp-command-sendReport" oncommand="//"/> - <command id="abp-command-filters" oncommand="//"/> - <command id="abp-command-settings" oncommand="//"/> - <command id="abp-command-sidebar" oncommand="//"/> - <command id="abp-command-togglesitewhitelist"/> - <command id="abp-command-togglepagewhitelist"/> - <command id="abp-command-toggleobjtabs"/> - <command id="abp-command-togglecollapse"/> - <command id="abp-command-togglesavestats"/> - <command id="abp-command-togglesync"/> - <command id="abp-command-toggleshowintoolbar"/> - <command id="abp-command-toggleshowinstatusbar"/> - <command id="abp-command-enable" oncommand="//"/> - <command id="abp-command-contribute"/> - <command id="abp-command-contribute-hide"/> - </commandset> - - <statusbarpanel id="abp-status" class="statusbarpanel-iconic" - tooltip="abp-tooltip"/> - - <toolbarbutton id="abp-toolbarbutton" class="toolbarbutton-1" label="&toolbarbutton.label;" - tooltip="abp-tooltip"/> - - <!-- Tools menu --> - <menu id="abp-menuitem" label="&toolbarbutton.label;"/> - - <!-- Bottom bar --> - <hbox id="abp-bottombar-container"> - <splitter id="abp-bottombar-splitter"/> - <vbox id="abp-bottombar"> - <toolbox id="abp-bottombar-header"> - <toolbar id="abp-bottombar-toolbar" align="center" grippyhidden="true" fullscreentoolbar="true"> - <label id="abp-bottombar-title" control="abp-bottombar-browser" value="&sidebar.title;" flex="1" crop="end"/> - <toolbarbutton id="abp-bottombar-close" command="abp-command-sidebar" tooltiptext="&closesidebar.label;"/> - </toolbar> - </toolbox> - <iframe id="abp-bottombar-browser" src="chrome://adblockplus/content/ui/sidebar.xul" flex="1"/> - </vbox> - </hbox> - - <!-- Notification panel --> - <panel id="abp-notification" type="arrow" orient="vertical" - xmlns:html="http://www.w3.org/1999/xhtml"> - <label id="abp-notification-title" class="header"/> - <html:p id="abp-notification-message"/> - <hbox id="abp-notification-question"> - <button id="abp-notification-yes" label="¬ification.button.yes;"/> - <button id="abp-notification-no" label="¬ification.button.no;"/> - <toolbarbutton id="abp-notification-close" label="¬ification.button.close;"></toolbarbutton> - </hbox> - </panel> -</overlay> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.js deleted file mode 100644 index 659acdd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -(function() -{ - let progressBar, canvas, headers, isRTL; - - function onLoad() - { - window.removeEventListener("load", onLoad, false); - - // Init global variables - progressBar = document.getElementById("progressBar"); - canvas = document.getElementById("progressBarCanvas"); - - headers = Array.prototype.slice.call(progressBar.getElementsByTagName("label")); - for (let i = 0; i < headers.length; i++) - canvas.parentNode.appendChild(headers[i]); - - // Expose properties - progressBar.__defineGetter__("activeItem", getActiveItem); - progressBar.__defineSetter__("activeItem", setActiveItem); - progressBar.__defineGetter__("activeItemComplete", getActiveItemComplete); - progressBar.__defineSetter__("activeItemComplete", setActiveItemComplete); - - isRTL = (window.getComputedStyle(document.documentElement).direction == "rtl"); - - // Run actual drawing delayed, once the sizes are fixed - window.setTimeout(init, 0); - }; - window.addEventListener("load", onLoad, false); - - function init() - { - const gapWidth = 5; - const arrowheadWidth = 5; - - let width = canvas.width = canvas.offsetWidth; - let height = canvas.height = canvas.offsetHeight; - - let context = canvas.getContext("2d"); - context.fillStyle = window.getComputedStyle(progressBar, "").color; - context.strokeStyle = window.getComputedStyle(progressBar, "").color; - context.lineWidth = 1; - if (isRTL) - { - context.translate(width, 0); - context.scale(-1, 1); - } - - let panelCount = headers.length; - let panelWidth = (width - gapWidth * (panelCount - 1) - 1) / panelCount; - for (let i = 0; i < panelCount; i++) - { - context.save(); - context.translate(Math.round(i * (panelWidth + gapWidth)) + 0.5, 0.5); - context.beginPath(); - if (i) - context.moveTo(-arrowheadWidth, 0); - else - context.moveTo(0, 0); - context.lineTo(panelWidth - arrowheadWidth, 0); - context.lineTo(panelWidth, (height - 1) / 2); - context.lineTo(panelWidth - arrowheadWidth, height - 1); - if (i) - { - context.lineTo(-arrowheadWidth, height - 1); - context.lineTo(0, (height - 1) / 2); - context.lineTo(-arrowheadWidth, 0); - } - else - { - context.lineTo(0, height - 1); - context.lineTo(0, 0); - } - - context.stroke(); - context.restore(); - - let childLeft = Math.round(i * (panelWidth + gapWidth) + 1); - let childWidth = panelWidth - arrowheadWidth - 2; - let child = headers[i]; - child.style.MozMarginStart = childLeft + "px"; - child.style.MozMarginEnd = (width - childLeft - childWidth) + "px"; - child.style.width = childWidth + "px"; - } - - // Resize after initialization should be ignored - canvas.parentNode.removeAttribute("flex"); - } - - function getActiveItem() - { - for (let i = 0; i < headers.length; i++) - { - let header = headers[i]; - if (header.classList.contains("active")) - return header; - } - return null; - } - - function setActiveItem(val) - { - let complete = true; - for (let i = 0; i < headers.length; i++) - { - let header = headers[i]; - if (header == val) - complete = false; - - if (!complete && header.value[0] == "âś”") - header.value = header.value.replace(/^âś”\s*/, ""); - else if (complete && header.value[0] != "âś”") - header.value = "âś” " + header.value; - - if (header == val) - header.classList.add("active"); - else - header.classList.remove("active"); - } - } - - function getActiveItemComplete() - { - let activeItem = this.activeItem; - if (!activeItem) - return false; - else - return activeItem.value[0] == "âś”"; - } - - function setActiveItemComplete(val) - { - let activeItem = this.activeItem; - if (!activeItem) - return; - - if (!val && activeItem.value[0] == "âś”") - activeItem.value = activeItem.value.replace(/^âś”\s*/, ""); - else if (val && activeItem.value[0] != "âś”") - activeItem.value = "âś” " + activeItem.value; - } -})(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.xul deleted file mode 100644 index d940e61..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/progressBar.xul +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<overlay id="progressBarOverlay" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <script type="application/x-javascript;version=1.7" src="progressBar.js"/> - - <hbox id="progressBar" pack="center"> - <stack flex="1"> - <canvas xmlns="http://www.w3.org/1999/xhtml" id="progressBarCanvas" width="1" height="1"/> - </stack> - </hbox> -</overlay> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.js deleted file mode 100644 index 3ccc0e6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.js +++ /dev/null @@ -1,1571 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -// -// Report data template, more data will be added during data collection -// - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/FileUtils.jsm"); - -const MILLISECONDS_IN_SECOND = 1000; -const SECONDS_IN_MINUTE = 60; -const SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE; -const SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR; - -let contentWindow = window.arguments[0]; -let windowURI = (window.arguments[1] instanceof Ci.nsIURI ? window.arguments[1] : null); - -let reportData = new DOMParser().parseFromString("<report></report>", "text/xml"); - -// Some helper functions to work with the report data -function reportElement(tag) -{ - for (let child = reportData.documentElement.firstChild; child; child = child.nextSibling) - if (child.nodeType == Node.ELEMENT_NODE && child.tagName == tag) - return child; - let element = reportData.createElement(tag); - reportData.documentElement.appendChild(element); - return element; -} -function removeReportElement(tag) -{ - for (let child = reportData.documentElement.firstChild; child; child = child.nextSibling) - if (child.nodeType == Node.ELEMENT_NODE && child.tagName == tag) - child.parentNode.removeChild(child); -} -function appendElement(parent, tag, attributes, body) -{ - let element = parent.ownerDocument.createElement(tag); - if (typeof attributes == "object" && attributes !== null) - for (let attribute in attributes) - if (attributes.hasOwnProperty(attribute)) - element.setAttribute(attribute, attributes[attribute]); - if (typeof body != "undefined" && body !== null) - element.textContent = body; - parent.appendChild(element); - return element; -} -function serializeReportData() -{ - let result = new XMLSerializer().serializeToString(reportData); - - // Insert line breaks before each new tag - result = result.replace(/(<[^\/]([^"<>]*|"[^"]*")*>)/g, "\n$1"); - result = result.replace(/^\n+/, ""); - return result; -} - -let (element = reportElement("adblock-plus")) -{ - let {addonVersion} = require("info"); - element.setAttribute("version", addonVersion); - element.setAttribute("locale", Utils.appLocale); -}; -let (element = reportElement("application")) -{ - element.setAttribute("name", Services.appinfo.name); - element.setAttribute("vendor", Services.appinfo.vendor); - element.setAttribute("version", Services.appinfo.version); - element.setAttribute("userAgent", window.navigator.userAgent); -}; -let (element = reportElement("platform")) -{ - element.setAttribute("name", "Gecko"); - element.setAttribute("version", Services.appinfo.platformVersion); - element.setAttribute("build", Services.appinfo.platformBuildID); -}; -let (element = reportElement("options")) -{ - appendElement(element, "option", {id: "enabled"}, Prefs.enabled); - appendElement(element, "option", {id: "objecttabs"}, Prefs.frameobjects); - appendElement(element, "option", {id: "collapse"}, !Prefs.fastcollapse); - appendElement(element, "option", {id: "privateBrowsing"}, PrivateBrowsing.enabledForWindow(contentWindow) || PrivateBrowsing.enabled); - appendElement(element, "option", {id: "subscriptionsAutoUpdate"}, Prefs.subscriptions_autoupdate); - appendElement(element, "option", {id: "javascript"}, Services.prefs.getBoolPref("javascript.enabled")); - appendElement(element, "option", {id: "cookieBehavior"}, Services.prefs.getIntPref("network.cookie.cookieBehavior")); -}; - -// -// Data collectors -// - -let reportsListDataSource = -{ - list: [], - - collectData: function(wnd, windowURI, callback) - { - let data = Prefs.recentReports; - if (data && "length" in data) - { - for (let i = 0; i < data.length; i++) - { - let entry = data[i]; - if (typeof entry.reportURL == "string" && entry.reportURL && - typeof entry.time == "number" && Date.now() - entry.time < 30*24*60*60*1000) - { - let newEntry = {site: null, reportURL: entry.reportURL, time: entry.time}; - if (typeof entry.site == "string" && entry.site) - newEntry.site = entry.site; - this.list.push(newEntry); - } - } - } - - if (this.list.length > 10) - this.list.splice(10); - - E("recentReports").hidden = !this.list.length; - if (this.list.length) - { - let rows = E("recentReportsRows") - for (let i = 0; i < this.list.length; i++) - { - let entry = this.list[i]; - let row = document.createElement("row"); - - let link = document.createElement("description"); - link.setAttribute("class", "text-link"); - link.setAttribute("url", entry.reportURL); - link.textContent = entry.reportURL.replace(/^.*\/(?=[^\/])/, ""); - row.appendChild(link); - - let site = document.createElement("description"); - if (entry.site) - site.textContent = entry.site; - row.appendChild(site); - - let time = document.createElement("description"); - time.textContent = Utils.formatTime(entry.time); - row.appendChild(time); - - rows.appendChild(row); - } - } - - callback(); - }, - - addReport: function(site, reportURL) - { - this.list.unshift({site: site, reportURL: reportURL, time: Date.now()}); - Prefs.recentReports = this.list; - }, - - clear: function() - { - this.list = []; - Prefs.recentReports = this.list; - E("recentReports").hidden = true; - }, - - handleClick: function(event) - { - if (event.button != 0 || !event.target || !event.target.hasAttribute("url")) - return; - - UI.loadInBrowser(event.target.getAttribute("url")); - } -}; - -let requestsDataSource = -{ - requests: reportElement("requests"), - origRequests: [], - requestNotifier: null, - callback: null, - nodeByKey: {__proto__: null}, - - collectData: function(wnd, windowURI, callback) - { - this.callback = callback; - this.requestNotifier = new RequestNotifier(wnd, this.onRequestFound, this); - }, - - onRequestFound: function(frame, node, entry, scanComplete) - { - if (entry) - { - let key = entry.location + " " + entry.typeDescr + " " + entry.docDomain; - let requestXML; - if (key in this.nodeByKey) - { - requestXML = this.nodeByKey[key]; - requestXML.setAttribute("count", parseInt(requestXML.getAttribute("count"), 10) + 1); - } - else - { - requestXML = this.nodeByKey[key] = appendElement(this.requests, "request", { - location: censorURL(entry.location), - type: entry.typeDescr, - docDomain: entry.docDomain, - thirdParty: entry.thirdParty, - count: 1 - }); - } - - // Location is meaningless for element hiding hits - if (entry.filter && entry.filter instanceof ElemHideBase) - requestXML.removeAttribute("location"); - - if (entry.filter) - requestXML.setAttribute("filter", entry.filter.text); - - if (node instanceof Element) - { - requestXML.setAttribute("node", (node.namespaceURI ? node.namespaceURI + "#" : "") + node.localName); - - try - { - requestXML.setAttribute("size", node.offsetWidth + "x" + node.offsetHeight); - } catch(e) {} - } - this.origRequests.push(entry); - } - - if (scanComplete) - { - this.requestNotifier.shutdown(); - this.requestNotifier = null; - this.callback(); - } - } -}; - -let filtersDataSource = -{ - origFilters: [], - - collectData: function(wnd, windowURI, callback) - { - let wndStats = RequestNotifier.getWindowStatistics(wnd); - if (wndStats) - { - let filters = reportElement("filters"); - for (let f in wndStats.filters) - { - let filter = Filter.fromText(f) - let hitCount = wndStats.filters[f]; - appendElement(filters, "filter", { - text: filter.text, - subscriptions: filter.subscriptions.filter(subscriptionsDataSource.subscriptionFilter).map(function(s) s.url).join(" "), - hitCount: hitCount - }); - this.origFilters.push(filter); - } - } - callback(); - } -}; - -let subscriptionsDataSource = -{ - subscriptionFilter: function(s) - { - if (s.disabled || !(s instanceof RegularSubscription)) - return false; - if (s instanceof DownloadableSubscription && !/^(http|https|ftp):/i.test(s.url)) - return false; - return true; - }, - - collectData: function(wnd, windowURI, callback) - { - let subscriptions = reportElement("subscriptions"); - let now = Math.round(Date.now() / 1000); - for (let i = 0; i < FilterStorage.subscriptions.length; i++) - { - let subscription = FilterStorage.subscriptions[i]; - if (!this.subscriptionFilter(subscription)) - continue; - - let subscriptionXML = appendElement(subscriptions, "subscription", { - id: subscription.url, - disabledFilters: subscription.filters.filter(function(filter) filter instanceof ActiveFilter && filter.disabled).length - }); - if (subscription.version) - subscriptionXML.setAttribute("version", subscription.version); - if (subscription.lastDownload) - subscriptionXML.setAttribute("lastDownloadAttempt", subscription.lastDownload - now); - if (subscription instanceof DownloadableSubscription) - { - if (subscription.lastSuccess) - subscriptionXML.setAttribute("lastDownloadSuccess", subscription.lastSuccess - now); - if (subscription.softExpiration) - subscriptionXML.setAttribute("softExpiration", subscription.softExpiration - now); - if (subscription.expires) - subscriptionXML.setAttribute("hardExpiration", subscription.expires - now); - subscriptionXML.setAttribute("downloadStatus", subscription.downloadStatus); - } - } - callback(); - } -}; - -let screenshotDataSource = -{ - imageOffset: 10, - - // Fields used for color reduction - _mapping: [0x00, 0x55, 0xAA, 0xFF], - _i: null, - _max: null, - _pixelData: null, - _callback: null, - - // Fields used for user interaction - _enabled: true, - _canvas: null, - _context: null, - _selectionType: "mark", - _currentData: null, - _undoQueue: [], - - collectData: function(wnd, windowURI, callback) - { - this._callback = callback; - this._canvas = E("screenshotCanvas"); - this._canvas.width = this._canvas.offsetWidth; - - // Do not resize canvas any more (no idea why Gecko requires both to be set) - this._canvas.parentNode.style.MozBoxAlign = "center"; - this._canvas.parentNode.align = "center"; - - this._context = this._canvas.getContext("2d"); - let wndWidth = wnd.document.documentElement.scrollWidth; - let wndHeight = wnd.document.documentElement.scrollHeight; - - // Copy scaled screenshot of the webpage. We scale the webpage by width - // but leave 10px on each side for easier selecting. - - // Gecko doesn't like sizes more than 64k, restrict to 30k to be on the safe side. - // Also, make sure height is at most five times the width to keep image size down. - let copyWidth = Math.min(wndWidth, 30000); - let copyHeight = Math.min(wndHeight, 30000, copyWidth * 5); - let copyX = Math.max(Math.min(wnd.scrollX - copyWidth / 2, wndWidth - copyWidth), 0); - let copyY = Math.max(Math.min(wnd.scrollY - copyHeight / 2, wndHeight - copyHeight), 0); - - let scalingFactor = (this._canvas.width - this.imageOffset * 2) / copyWidth; - this._canvas.height = copyHeight * scalingFactor + this.imageOffset * 2; - - this._context.save(); - this._context.translate(this.imageOffset, this.imageOffset); - this._context.scale(scalingFactor, scalingFactor); - this._context.drawWindow(wnd, copyX, copyY, copyWidth, copyHeight, "rgb(255,255,255)"); - this._context.restore(); - - // Init canvas settings - this._context.fillStyle = "rgb(0, 0, 0)"; - this._context.strokeStyle = "rgba(255, 0, 0, 0.7)"; - this._context.lineWidth = 3; - this._context.lineJoin = "round"; - - // Reduce colors asynchronously - this._pixelData = this._context.getImageData(this.imageOffset, this.imageOffset, - this._canvas.width - this.imageOffset * 2, - this._canvas.height - this.imageOffset * 2); - this._max = this._pixelData.width * this._pixelData.height * 4; - this._i = 0; - Utils.runAsync(this.run.bind(this)); - }, - - run: function() - { - // Process only 5000 bytes at a time to prevent browser hangs - let endIndex = Math.min(this._i + 5000, this._max); - let i = this._i; - for (; i < endIndex; i++) - this._pixelData.data[i] = this._mapping[this._pixelData.data[i] >> 6]; - - if (i >= this._max) - { - // Save data back and we are done - this._context.putImageData(this._pixelData, this.imageOffset, this.imageOffset); - this._callback(); - } - else - { - this._i = i; - Utils.runAsync(this.run.bind(this)); - } - }, - - get enabled() this._enabled, - set enabled(enabled) - { - if (this._enabled == enabled) - return; - - this._enabled = enabled; - this._canvas.style.opacity = this._enabled ? "" : "0.3" - E("screenshotMarkButton").disabled = !this._enabled; - E("screenshotRemoveButton").disabled = !this._enabled; - E("screenshotUndoButton").disabled = !this._enabled || !this._undoQueue.length; - }, - - get selectionType() this._selectionType, - set selectionType(type) - { - if (this._selectionType == type) - return; - - // Abort selection already in progress - this.abortSelection(); - - this._selectionType = type; - }, - - exportData: function() - { - removeReportElement("screenshot"); - if (this.enabled) - { - appendElement(reportData.documentElement, "screenshot", { - edited: (this._undoQueue.length ? 'true' : 'false') - }, this._canvas.toDataURL()); - } - }, - - abortSelection: function() - { - if (this._currentData && this._currentData.data) - { - this._context.putImageData(this._currentData.data, - Math.min(this._currentData.anchorX, this._currentData.currentX), - Math.min(this._currentData.anchorY, this._currentData.currentY)); - } - document.removeEventListener("keypress", this.handleKeyPress, true); - this._currentData = null; - }, - - handleKeyPress: function(event) - { - if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_ESCAPE) - { - event.stopPropagation(); - event.preventDefault(); - screenshotDataSource.abortSelection(); - } - }, - - startSelection: function(event) - { - if (event.button == 2) - this.abortSelection(); // Right mouse button aborts selection - - if (event.button != 0 || !this.enabled) - return; - - // Abort selection already in progress - this.abortSelection(); - - let boxObject = document.getBoxObjectFor(this._canvas); - let [x, y] = [event.screenX - boxObject.screenX, event.screenY - boxObject.screenY]; - this._currentData = { - data: null, - anchorX: x, - anchorY: y, - currentX: -1, - currentY: -1 - }; - this.updateSelection(event); - - document.addEventListener("keypress", this.handleKeyPress, true); - }, - - updateSelection: function(event) - { - if (event.button != 0 || !this._currentData) - return; - - let boxObject = document.getBoxObjectFor(this._canvas); - let [x, y] = [event.screenX - boxObject.screenX, event.screenY - boxObject.screenY]; - if (this._currentData.currentX == x && this._currentData.currentY == y) - return; - - if (this._currentData.data) - { - this._context.putImageData(this._currentData.data, - Math.min(this._currentData.anchorX, this._currentData.currentX), - Math.min(this._currentData.anchorY, this._currentData.currentY)); - } - - this._currentData.currentX = x; - this._currentData.currentY = y; - - let left = Math.min(this._currentData.anchorX, this._currentData.currentX); - let right = Math.max(this._currentData.anchorX, this._currentData.currentX); - let top = Math.min(this._currentData.anchorY, this._currentData.currentY); - let bottom = Math.max(this._currentData.anchorY, this._currentData.currentY); - - let minDiff = (this._selectionType == "mark" ? 3 : 1); - if (right - left >= minDiff && bottom - top >= minDiff) - this._currentData.data = this._context.getImageData(left, top, right - left, bottom - top); - else - this._currentData.data = null; - - if (this._selectionType == "mark") - { - // all coordinates need to be moved 1.5px inwards to get the desired result - left += 1.5; - right -= 1.5; - top += 1.5; - bottom -= 1.5; - if (left < right && top < bottom) - this._context.strokeRect(left, top, right - left, bottom - top); - } - else if (this._selectionType == "remove") - this._context.fillRect(left, top, right - left, bottom - top); - }, - - stopSelection: function(event) - { - if (event.button != 0 || !this._currentData) - return; - - if (this._currentData.data) - { - this._undoQueue.push(this._currentData); - E("screenshotUndoButton").disabled = false; - } - - this._currentData = null; - document.removeEventListener("keypress", this.handleKeyPress, true); - }, - - undo: function() - { - let op = this._undoQueue.pop(); - if (!op) - return; - - this._context.putImageData(op.data, - Math.min(op.anchorX, op.currentX), - Math.min(op.anchorY, op.currentY)); - - if (!this._undoQueue.length) - E("screenshotUndoButton").disabled = true; - } -}; - -let framesDataSource = -{ - site: null, - - collectData: function(wnd, windowURI, callback) - { - try - { - this.site = windowURI.host; - if (this.site) - document.title += " (" + this.site + ")"; - } - catch (e) - { - // Expected exception - not all URL schemes have a host name - } - - let window = reportElement("window"); - window.setAttribute("url", censorURL(windowURI ? windowURI.spec : wnd.location.href)); - if (wnd.opener && wnd.opener.location.href) - window.setAttribute("opener", censorURL(wnd.opener.location.href)); - if (wnd.document.referrer) - window.setAttribute("referrer", censorURL(wnd.document.referrer)); - this.scanFrames(wnd, window); - - callback(); - }, - - scanFrames: function(wnd, xmlList) - { - try - { - for (let i = 0; i < wnd.frames.length; i++) - { - let frame = wnd.frames[i]; - let frameXML = appendElement(xmlList, "frame", { - url: censorURL(frame.location.href) - }); - this.scanFrames(frame, frameXML); - } - } - catch (e) - { - // Don't break if something goes wrong - Cu.reportError(e); - } - } -}; - -let errorsDataSource = -{ - collectData: function(wnd, windowURI, callback) - { - let {addonID} = require("info"); - addonID = addonID.replace(/[\{\}]/g, ""); - - // See https://bugzilla.mozilla.org/show_bug.cgi?id=664695 - starting with - // Gecko 19 this function returns the result, before that it wrote to a - // parameter. - let outparam = {}; - let messages = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService).getMessageArray(outparam, {}); - messages = messages || outparam.value || []; - messages = messages.filter(function(message) - { - return (message instanceof Ci.nsIScriptError && - !/^https?:/i.test(message.sourceName) && - (/adblock/i.test(message.errorMessage) || /adblock/i.test(message.sourceName) || - message.errorMessage.indexOf(addonID) >= 0 || message.sourceName && message.sourceName.indexOf(addonID) >= 0)); - }); - if (messages.length > 10) // Only the last 10 messages - messages = messages.slice(messages.length - 10, messages.length); - - // Censor app and profile paths in error messages - let censored = {__proto__: null}; - let pathList = [["ProfD", "%PROFILE%"], ["GreD", "%GRE%"], ["CurProcD", "%APP%"]]; - for (let i = 0; i < pathList.length; i++) - { - let [pathID, placeholder] = pathList[i]; - try - { - let file = FileUtils.getDir(pathID, [], false); - censored[file.path.replace(/[\\\/]+$/, '')] = placeholder; - let uri = Utils.ioService.newFileURI(file); - censored[uri.spec.replace(/[\\\/]+$/, '')] = placeholder; - } catch(e) {} - } - - let errors = reportElement("errors"); - for (let i = 0; i < messages.length; i++) - { - let message = messages[i]; - - let text = message.errorMessage; - for (let path in censored) - text = text.replace(path, censored[path], "gi"); - if (text.length > 256) - text = text.substr(0, 256) + "..."; - - let file = message.sourceName; - for (let path in censored) - file = file.replace(path, censored[path], "gi"); - if (file.length > 256) - file = file.substr(0, 256) + "..."; - - let sourceLine = message.sourceLine; - if (sourceLine.length > 256) - sourceLine = sourceLine.substr(0, 256) + "..."; - - appendElement(errors, "error", { - type: message.flags & Ci.nsIScriptError.warningFlag ? "warning" : "error", - text: text, - file: file, - line: message.lineNumber, - column: message.columnNumber, - sourceLine: sourceLine - }); - } - - callback(); - } -}; - -let extensionsDataSource = -{ - data: reportData.createElement("extensions"), - - collectData: function(wnd, windowURI, callback) - { - try - { - let AddonManager = Cu.import("resource://gre/modules/AddonManager.jsm", null).AddonManager; - AddonManager.getAddonsByTypes(["extension", "plugin"], function(items) - { - for (let i = 0; i < items.length; i++) - { - let item = items[i]; - if (!item.isActive) - continue; - appendElement(this.data, "extension", { - id: item.id, - name: item.name, - type: item.type, - version: item.version - }); - } - callback(); - }.bind(this)); - } - catch (e) - { - // No add-on manager, what's going on? Skip this step. - callback(); - } - }, - - exportData: function(doExport) - { - if (doExport) - reportData.documentElement.appendChild(this.data); - else if (this.data.parentNode) - this.data.parentNode.removeChild(this.data); - } -}; - -let subscriptionUpdateDataSource = -{ - contentWnd: null, - type: null, - outdated: null, - needUpdate: null, - - collectData: function(wnd, windowURI, callback) - { - this.contentWnd = wnd; - let now = Date.now() / MILLISECONDS_IN_SECOND; - let outdatedThreshold = now - 14 * SECONDS_IN_DAY; - let needUpdateThreshold = now - 1 * SECONDS_IN_HOUR; - - this.outdated = []; - this.needUpdate = []; - - let subscriptions = FilterStorage.subscriptions.filter(issuesDataSource.subscriptionFilter); - for (let i = 0; i < subscriptions.length; i++) - { - let lastSuccess = subscriptions[i].lastSuccess; - if (lastSuccess < outdatedThreshold) - this.outdated.push(subscriptions[i]); - if (lastSuccess < needUpdateThreshold) - this.needUpdate.push(subscriptions[i]); - } - - callback(); - }, - - updatePage: function(type) - { - this.type = type; - E("updateInProgress").hidden = (type != "false positive" || this.needUpdate.length == 0); - E("outdatedSubscriptions").hidden = !E("updateInProgress").hidden || this.outdated.length == 0; - if (!E("outdatedSubscriptions").hidden) - { - let template = E("outdatedSubscriptionTemplate"); - let list = E("outdatedSubscriptionsList"); - while (list.lastChild) - list.removeChild(list.lastChild); - - for (let i = 0; i < this.outdated.length; i++) - { - let subscription = this.outdated[i]; - let entry = template.cloneNode(true); - entry.removeAttribute("id"); - entry.removeAttribute("hidden"); - entry.setAttribute("_url", subscription.url); - entry.setAttribute("tooltiptext", subscription.url); - entry.textContent = subscription.title; - list.appendChild(entry); - } - } - return !E("updateInProgress").hidden || !E("outdatedSubscriptions").hidden; - }, - - showPage: function() - { - document.documentElement.canAdvance = false; - - if (!E("updateInProgress").hidden) - { - document.documentElement.canRewind = false; - - for (let i = 0; i < this.needUpdate.length; i++) - Synchronizer.execute(this.needUpdate[i], true); - - let listener = function(action) - { - if (!/^subscription\./.test(action)) - return; - - for (let i = 0; i < this.needUpdate.length; i++) - if (Synchronizer.isExecuting(this.needUpdate[i].url)) - return; - - FilterNotifier.removeListener(listener); - E("updateInProgress").hidden = "true"; - - let filtersRemoved = false; - let requests = requestsDataSource.origRequests; - for (let i = 0; i < requests.length; i++) - if (requests[i].filter && !requests[i].filter.subscriptions.filter(function(s) !s.disabled).length) - filtersRemoved = true; - - if (filtersRemoved) - { - // Force the user to reload the page - E("updateFixedIssue").hidden = false; - document.documentElement.canAdvance = true; - - let nextButton = document.documentElement.getButton("next"); - [nextButton.label, nextButton.accessKey] = Utils.splitLabel(E("updatePage").getAttribute("reloadButtonLabel")); - document.documentElement.addEventListener("wizardnext", function(event) - { - event.preventDefault(); - event.stopPropagation(); - window.close(); - this.contentWnd.location.reload(); - }.bind(this), true); - } - else - { - this.collectData(null, null, function() {}); - this.needUpdate = []; - if (this.outdated.length) - { - document.documentElement.canRewind = true; - - this.updatePage(this.type); - this.showPage(); - } - else - { - // No more issues, make sure to remove this page from history and - // advance to the next page. - document.documentElement.canRewind = true; - document.documentElement.canAdvance = true; - - let next = document.documentElement.currentPage.next; - document.documentElement.rewind(); - document.documentElement.currentPage.next = next; - - document.documentElement.advance(); - } - } - }.bind(this); - - FilterNotifier.addListener(listener); - window.addEventListener("unload", function() - { - FilterNotifier.removeListener(listener); - }); - } - }, - - updateOutdated: function() - { - for (let i = 0; i < this.outdated.length; i++) - Synchronizer.execute(this.outdated[i], true); - } -} - -let issuesDataSource = -{ - contentWnd: null, - isEnabled: Prefs.enabled, - whitelistFilter: null, - disabledFilters: [], - disabledSubscriptions: [], - ownFilters: [], - numSubscriptions: 0, - numAppliedFilters: Infinity, - - subscriptionFilter: function(s) - { - if (s instanceof DownloadableSubscription) - return subscriptionsDataSource.subscriptionFilter(s); - else - return false; - }, - - collectData: function(wnd, windowURI, callback) - { - this.contentWnd = wnd; - this.whitelistFilter = Policy.isWindowWhitelisted(wnd); - - if (!this.whitelistFilter && this.isEnabled) - { - // Find disabled filters in active subscriptions matching any of the requests - let disabledMatcher = new CombinedMatcher(); - for each (let subscription in FilterStorage.subscriptions) - { - if (subscription.disabled) - continue; - - for each (let filter in subscription.filters) - if (filter instanceof BlockingFilter && filter.disabled) - disabledMatcher.add(filter); - } - - let seenFilters = {__proto__: null}; - for each (let request in requestsDataSource.origRequests) - { - if (request.filter) - continue; - - let filter = disabledMatcher.matchesAny(request.location, request.typeDescr, request.docDomain, request.thirdParty); - if (filter && !(filter.text in seenFilters)) - { - this.disabledFilters.push(filter); - seenFilters[filter.text] = true; - } - } - - // Find disabled subscriptions with filters matching any of the requests - let seenSubscriptions = {__proto__: null}; - for each (let subscription in FilterStorage.subscriptions) - { - if (!subscription.disabled) - continue; - - disabledMatcher.clear(); - for each (let filter in subscription.filters) - if (filter instanceof BlockingFilter) - disabledMatcher.add(filter); - - for each (let request in requestsDataSource.origRequests) - { - if (request.filter) - continue; - - let filter = disabledMatcher.matchesAny(request.location, request.typeDescr, request.docDomain, request.thirdParty); - if (filter && !(subscription.url in seenSubscriptions)) - { - this.disabledSubscriptions.push(subscription); - seenSubscriptions[subscription.text] = true; - break; - } - } - } - - this.numSubscriptions = FilterStorage.subscriptions.filter(this.subscriptionFilter).length; - this.numAppliedFilters = 0; - for each (let filter in filtersDataSource.origFilters) - { - if (filter instanceof WhitelistFilter) - continue; - - this.numAppliedFilters++; - if (filter.subscriptions.some(function(subscription) subscription instanceof SpecialSubscription)) - this.ownFilters.push(filter); - } - } - - callback(); - }, - - updateIssues: function(type) - { - if (type == "other") - { - E("typeSelectorPage").next = "typeWarning"; - return; - } - - E("issuesWhitelistBox").hidden = !this.whitelistFilter; - E("issuesDisabledBox").hidden = this.isEnabled; - E("issuesNoFiltersBox").hidden = (type != "false positive" || this.numAppliedFilters > 0); - E("issuesNoSubscriptionsBox").hidden = (type != "false negative" || this.numAppliedFilters > 0 || this.numSubscriptions > 0); - E("issuesSubscriptionCountBox").hidden = (this.numSubscriptions < 5); - - let ownFiltersBox = E("issuesOwnFilters"); - if (this.ownFilters.length && !ownFiltersBox.firstChild) - { - let template = E("issuesOwnFiltersTemplate"); - for each (let filter in this.ownFilters) - { - let element = template.cloneNode(true); - element.removeAttribute("id"); - element.removeAttribute("hidden"); - element.firstChild.setAttribute("value", filter.text); - element.firstChild.setAttribute("tooltiptext", filter.text); - element.abpFilter = filter; - ownFiltersBox.appendChild(element); - } - } - E("issuesOwnFiltersBox").hidden = (type != "false positive" || this.ownFilters.length == 0); - - let disabledSubscriptionsBox = E("issuesDisabledSubscriptions"); - if (this.disabledSubscriptions.length && !disabledSubscriptionsBox.firstChild) - { - let template = E("issuesDisabledSubscriptionsTemplate"); - for each (let subscription in this.disabledSubscriptions) - { - let element = template.cloneNode(true); - element.removeAttribute("id"); - element.removeAttribute("hidden"); - element.firstChild.setAttribute("value", subscription.title); - element.setAttribute("tooltiptext", subscription instanceof DownloadableSubscription ? subscription.url : subscription.title); - element.abpSubscription = subscription; - disabledSubscriptionsBox.appendChild(element); - } - } - E("issuesDisabledSubscriptionsBox").hidden = (type != "false negative" || this.disabledSubscriptions.length == 0); - - let disabledFiltersBox = E("issuesDisabledFilters"); - if (this.disabledFilters.length && !disabledFiltersBox.firstChild) - { - let template = E("issuesDisabledFiltersTemplate"); - for each (let filter in this.disabledFilters) - { - let element = template.cloneNode(true); - element.removeAttribute("id"); - element.removeAttribute("hidden"); - element.firstChild.setAttribute("value", filter.text); - element.setAttribute("tooltiptext", filter.text); - element.abpFilter = filter; - disabledFiltersBox.appendChild(element); - } - } - E("issuesDisabledFiltersBox").hidden = (type != "false negative" || this.disabledFilters.length == 0); - - // Don't allow sending report if the page is whitelisted - we need the data. - // Also disallow reports without matching filters or without subscriptions, - // subscription authors cannot do anything about those. - E("issuesOverride").hidden = !E("issuesWhitelistBox").hidden || - !E("issuesDisabledBox").hidden || - !E("issuesNoFiltersBox").hidden || - !E("issuesNoSubscriptionsBox").hidden || - !E("issuesSubscriptionCountBox").hidden; - - let page = E("typeSelectorPage"); - if (subscriptionUpdateDataSource.updatePage(type)) - { - page.next = "update"; - page = E("updatePage"); - } - - if (E("issuesWhitelistBox").hidden && E("issuesDisabledBox").hidden && - E("issuesNoFiltersBox").hidden && E("issuesNoSubscriptionsBox").hidden && - E("issuesOwnFiltersBox").hidden && E("issuesDisabledFiltersBox").hidden && - E("issuesDisabledSubscriptionsBox").hidden && E("issuesSubscriptionCountBox").hidden) - { - page.next = "screenshot"; - } - else - { - page.next = "issues"; - } - }, - - forceReload: function() - { - // User changed configuration, don't allow sending report now - page needs - // to be reloaded - E("issuesOverride").hidden = true; - E("issuesChangeMessage").hidden = false; - document.documentElement.canRewind = false; - document.documentElement.canAdvance = true; - - let contentWnd = this.contentWnd; - let nextButton = document.documentElement.getButton("next"); - [nextButton.label, nextButton.accessKey] = Utils.splitLabel(E("updatePage").getAttribute("reloadButtonLabel")); - document.documentElement.addEventListener("wizardnext", function(event) - { - event.preventDefault(); - event.stopPropagation(); - window.close(); - contentWnd.location.reload(); - }, true); - }, - - removeWhitelist: function() - { - if (this.whitelistFilter && this.whitelistFilter.subscriptions.length) - this.whitelistFilter.disabled = true; - E("issuesWhitelistBox").hidden = true; - this.forceReload(); - }, - - enable: function() - { - Prefs.enabled = true; - E("issuesDisabledBox").hidden = true; - this.forceReload(); - }, - - addSubscription: function() - { - let result = {}; - openDialog("subscriptionSelection.xul", "_blank", "chrome,centerscreen,modal,resizable,dialog=no", null, result); - if (!("url" in result)) - return; - - let subscriptionResults = [[result.url, result.title]]; - if ("mainSubscriptionURL" in result) - subscriptionResults.push([result.mainSubscriptionURL, result.mainSubscriptionTitle]); - - for each (let [url, title] in subscriptionResults) - { - let subscription = Subscription.fromURL(url); - if (!subscription) - continue; - - FilterStorage.addSubscription(subscription); - - subscription.disabled = false; - subscription.title = title; - - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - } - - E("issuesNoSubscriptionsBox").hidden = true; - this.forceReload(); - }, - - disableFilter: function(node) - { - let filter = node.abpFilter; - if (filter && filter.subscriptions.length) - filter.disabled = true; - - node.parentNode.removeChild(node); - if (!E("issuesOwnFilters").firstChild) - E("issuesOwnFiltersBox").hidden = true; - this.forceReload(); - }, - - enableFilter: function(node) - { - let filter = node.abpFilter; - if (filter && filter.subscriptions.length) - filter.disabled = false; - - node.parentNode.removeChild(node); - if (!E("issuesDisabledFilters").firstChild) - E("issuesDisabledFiltersBox").hidden = true; - this.forceReload(); - }, - - - enableSubscription: function(node) - { - let subscription = node.abpSubscription; - if (subscription) - subscription.disabled = false; - - node.parentNode.removeChild(node); - if (!E("issuesDisabledSubscriptions").firstChild) - E("issuesDisabledSubscriptionsBox").hidden = true; - this.forceReload(); - } -}; - -let dataCollectors = [reportsListDataSource, requestsDataSource, filtersDataSource, subscriptionsDataSource, - screenshotDataSource, framesDataSource, errorsDataSource, extensionsDataSource, - subscriptionUpdateDataSource, issuesDataSource]; - -// -// Wizard logic -// - -function initWizard() -{ - // Make sure no issue type is selected by default - E("typeGroup").selectedItem = null; - document.documentElement.addEventListener("pageshow", updateNextButton, false); - - // Move wizard header - let header = document.getAnonymousElementByAttribute(document.documentElement, "class", "wizard-header"); - if (header) - { - document.getElementById("wizardHeaderLabel").setAttribute("value", document.documentElement.wizardPages[0].getAttribute("label")); - document.documentElement.insertBefore(document.getElementById("wizardHeader"), document.documentElement.firstChild); - document.documentElement.addEventListener("pageshow", function() - { - document.getElementById("wizardHeaderDeck").selectedIndex = (document.documentElement.pageIndex == 0 ? 0 : 1); - }, false); - } - - // Move privacy link - let extraButton = document.documentElement.getButton("extra1"); - extraButton.parentNode.insertBefore(E("privacyLink"), extraButton); -} - -function updateNextButton() -{ - let nextButton = document.documentElement.getButton("next"); - if (!nextButton) - return; - - if (document.documentElement.currentPage.id == "commentPage") - { - if (!("_origLabel" in nextButton)) - { - nextButton._origLabel = nextButton.label; - nextButton._origAccessKey = nextButton.accessKey; - [nextButton.label, nextButton.accessKey] = Utils.splitLabel(document.documentElement.getAttribute("sendbuttonlabel")); - } - } - else - { - if ("_origLabel" in nextButton) - { - nextButton.label = nextButton._origLabel; - nextButton.accessKey = nextButton._origAccessKey; - delete nextButton._origLabel; - delete nextButton._origAccessKey; - } - } -} - -function initDataCollectorPage() -{ - document.documentElement.canAdvance = false; - - let totalSteps = dataCollectors.length; - let initNextDataSource = function() - { - if (!dataCollectors.length) - { - // We are done, continue to next page - document.documentElement.canAdvance = true; - document.documentElement.advance(); - return; - } - - let progress = (totalSteps - dataCollectors.length) / totalSteps * 100; - if (progress > 0) - { - let progressMeter = E("dataCollectorProgress"); - progressMeter.mode = "determined"; - progressMeter.value = progress; - } - - // Continue with the next data source, asynchronously to allow progress meter to update - let dataSource = dataCollectors.shift(); - Utils.runAsync(function() - { - dataSource.collectData(contentWindow, windowURI, initNextDataSource); - }); - }; - - initNextDataSource(); -} - -function initTypeSelectorPage() -{ - E("progressBar").activeItem = E("typeSelectorHeader"); - let header = document.getAnonymousElementByAttribute(document.documentElement, "class", "wizard-header"); - if (header) - header.setAttribute("viewIndex", "1"); - - document.documentElement.canRewind = false; - typeSelectionUpdated(); -} - -function typeSelectionUpdated() -{ - let selection = E("typeGroup").selectedItem; - document.documentElement.canAdvance = (selection != null); - if (selection) - { - if (reportData.documentElement.getAttribute("type") != selection.value) - { - E("screenshotCheckbox").checked = (selection.value != "other"); - E("screenshotCheckbox").doCommand(); - E("extensionsCheckbox").checked = (selection.value == "other"); - E("extensionsCheckbox").doCommand(); - } - reportData.documentElement.setAttribute("type", selection.value); - - issuesDataSource.updateIssues(selection.value); - } -} - -function initIssuesPage() -{ - updateIssuesOverride(); -} - -function updateIssuesOverride() -{ - document.documentElement.canAdvance = E("issuesOverride").checked; -} - -function initTypeWarningPage() -{ - updateTypeWarningOverride(); - - let textElement = E("typeWarningText"); - if ("abpInitialized" in textElement) - return; - - let template = textElement.textContent.replace(/[\r\n\s]+/g, " "); - - let [, beforeLink, linkText, afterLink] = /(.*)\[link\](.*)\[\/link\](.*)/.exec(template) || [null, "", template, ""]; - while (textElement.firstChild && textElement.firstChild.nodeType != Node.ELEMENT_NODE) - textElement.removeChild(textElement.firstChild); - while (textElement.lastChild && textElement.lastChild.nodeType != Node.ELEMENT_NODE) - textElement.removeChild(textElement.lastChild); - - if (textElement.firstChild) - textElement.firstChild.textContent = linkText; - textElement.insertBefore(document.createTextNode(beforeLink), textElement.firstChild); - textElement.appendChild(document.createTextNode(afterLink)); - textElement.abpInitialized = true; -} - -function updateTypeWarningOverride() -{ - document.documentElement.canAdvance = E("typeWarningOverride").checked; -} - -function initScreenshotPage() -{ - document.documentElement.canAdvance = true; - - E("progressBar").activeItem = E("screenshotHeader"); -} - -function initCommentPage() -{ - E("progressBar").activeItem = E("commentPageHeader"); - - updateEmail(); - - screenshotDataSource.exportData(); - updateDataField(); -} - -function showDataField() -{ - E('dataDeck').selectedIndex = 1; - updateDataField(); - E('data').focus(); -} - -let _dataFieldUpdateTimeout = null; - -function _updateDataField() -{ - let dataField = E("data"); - let [selectionStart, selectionEnd] = [dataField.selectionStart, dataField.selectionEnd]; - dataField.value = serializeReportData(); - dataField.setSelectionRange(selectionStart, selectionEnd); -} - -function updateDataField() -{ - // Don't do anything if data field is hidden - if (E('dataDeck').selectedIndex != 1) - return; - - if (_dataFieldUpdateTimeout) - { - window.clearTimeout(_dataFieldUpdateTimeout); - _dataFieldUpdateTimeout = null; - } - - _dataFieldUpdateTimeout = window.setTimeout(_updateDataField, 200); -} - -function updateComment() -{ - removeReportElement("comment"); - - let value = E("comment").value; - appendElement(reportData.documentElement, "comment", null, value.substr(0, 1000)); - E("commentLengthWarning").setAttribute("visible", value.length > 1000); - updateDataField(); -} - -function updateEmail() -{ - removeReportElement("email"); - - let anonymous = E("anonymousCheckbox").checked; - - let value = E("email").value; - - // required for persist to work on textbox, see: https://bugzilla.mozilla.org/show_bug.cgi?id=111486 - E("email").setAttribute("value", value); - - E("email").disabled = anonymous; - E("emailLabel").disabled = anonymous; - E("anonymityWarning").setAttribute("visible", anonymous); - - if (!anonymous) - appendElement(reportData.documentElement, "email", null, value); - - updateDataField(); - - document.documentElement.canAdvance = anonymous || /\S/.test(value); -} - -function updateExtensions(attach) -{ - extensionsDataSource.exportData(attach); - updateDataField(); -} - -function initSendPage() -{ - E("progressBar").activeItem = E("sendPageHeader"); - - E("result").hidden = true; - E("sendReportErrorBox").hidden = true; - E("sendReportMessage").hidden = false; - E("sendReportProgress").hidden = false; - E("sendReportProgress").mode = "undetermined"; - - document.documentElement.canRewind = false; - document.documentElement.getButton("finish").disabled = true; - - let guid = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator).generateUUID().toString().replace(/[\{\}]/g, ""); - let url = Prefs.report_submiturl.replace(/%GUID%/g, guid).replace(/%LANG%/g, Utils.appLocale); - let request = new XMLHttpRequest(); - request.open("POST", url); - request.setRequestHeader("Content-Type", "text/xml"); - request.setRequestHeader("X-Adblock-Plus", "1"); - request.addEventListener("load", reportSent, false); - request.addEventListener("error", reportSent, false); - if ("upload" in request && request.upload) - request.upload.addEventListener("progress", updateReportProgress, false); - request.send(serializeReportData()); -} - -function updateReportProgress(event) -{ - if (!event.lengthComputable) - return; - - let progress = Math.round(event.loaded / event.total * 100); - if (progress > 0) - { - let progressMeter = E("sendReportProgress"); - progressMeter.mode = "determined"; - progressMeter.value = progress; - } -} - -function reportSent(event) -{ - let request = event.target; - let success = false; - let errorMessage = E("sendReportError").getAttribute("defaultError"); - try - { - let status = request.channel.status; - if (Components.isSuccessCode(status)) - { - success = (request.status == 200 || request.status == 0); - errorMessage = request.status + " " + request.statusText; - } - else - { - errorMessage = "0x" + status.toString(16); - - // Try to find the name for the status code - let exception = Cc["@mozilla.org/js/xpc/Exception;1"].createInstance(Ci.nsIXPCException); - exception.initialize(null, status, null, null, null, null); - if (exception.name) - errorMessage = exception.name; - } - } catch (e) {} - - let result = ""; - try - { - result = request.responseText; - } catch (e) {} - - result = result.replace(/%CONFIRMATION%/g, encodeHTML(E("result").getAttribute("confirmationMessage"))); - result = result.replace(/%KNOWNISSUE%/g, encodeHTML(E("result").getAttribute("knownIssueMessage"))); - result = result.replace(/(<html)\b/, '$1 dir="' + window.getComputedStyle(document.documentElement, "").direction + '"'); - - if (!success) - { - let errorElement = E("sendReportError"); - let template = errorElement.getAttribute("textTemplate").replace(/[\r\n\s]+/g, " "); - - let [, beforeLink, linkText, afterLink] = /(.*)\[link\](.*)\[\/link\](.*)/.exec(template) || [null, "", template, ""]; - beforeLink = beforeLink.replace(/\?1\?/g, errorMessage); - afterLink = afterLink.replace(/\?1\?/g, errorMessage); - - while (errorElement.firstChild && errorElement.firstChild.nodeType != Node.ELEMENT_NODE) - errorElement.removeChild(errorElement.firstChild); - while (errorElement.lastChild && errorElement.lastChild.nodeType != Node.ELEMENT_NODE) - errorElement.removeChild(errorElement.lastChild); - - if (errorElement.firstChild) - errorElement.firstChild.textContent = linkText; - errorElement.insertBefore(document.createTextNode(beforeLink), errorElement.firstChild); - errorElement.appendChild(document.createTextNode(afterLink)); - - E("sendReportErrorBox").hidden = false; - } - - E("sendReportProgress").hidden = true; - - let frame = E("result"); - frame.hidden = false; - frame.docShell.allowAuth = false; - frame.docShell.allowJavascript = false; - frame.docShell.allowMetaRedirects = false; - frame.docShell.allowPlugins = false; - frame.docShell.allowSubframes = false; - - frame.setAttribute("src", "data:text/html;charset=utf-8," + encodeURIComponent(result)); - - E("sendReportMessage").hidden = true; - - if (success) - { - try - { - let link = request.responseXML.getElementById("link").getAttribute("href"); - let button = E("copyLink"); - button.setAttribute("url", link); - button.removeAttribute("disabled"); - - if (!PrivateBrowsing.enabledForWindow(contentWindow) && !PrivateBrowsing.enabled) - reportsListDataSource.addReport(framesDataSource.site, link); - } catch (e) {} - E("copyLinkBox").hidden = false; - - document.documentElement.getButton("finish").disabled = false; - document.documentElement.getButton("cancel").disabled = true; - E("progressBar").activeItemComplete = true; - } -} - -function processLinkClick(event) -{ - event.preventDefault(); - - let link = event.target; - while (link && !(link instanceof HTMLAnchorElement)) - link = link.parentNode; - - if (link && (link.protocol == "http:" || link.protocol == "https:")) - UI.loadInBrowser(link.href); -} - -function copyLink(url) -{ - Utils.clipboardHelper.copyString(url); -} - -function censorURL(url) -{ - return url.replace(/([?;&\/#][^?;&\/#]+?=)[^?;&\/#]+/g, "$1*"); -} - -function encodeHTML(str) -{ - return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.xul deleted file mode 100644 index 54e0726..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sendReport.xul +++ /dev/null @@ -1,259 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://global/skin/wizard.css" type="text/css"?> -<?xml-stylesheet href="chrome://adblockplus/skin/sendReport.css" type="text/css"?> - -<?xul-overlay href="progressBar.xul"?> - -<!DOCTYPE dialog [ -<!ENTITY % reporterDTD SYSTEM "chrome://adblockplus/locale/sendReport.dtd"> -%reporterDTD; -<!ENTITY % filtersDTD SYSTEM "chrome://adblockplus/locale/filters.dtd"> -%filtersDTD; -]> - -<wizard - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - title="&wizard.title;" - id="abpSendReportWizard" - onload="initWizard();" - width="800" - height="550" - sendbuttonlabel="&sendButton.label;" - windowtype="abp:sendReport"> - -<script type="application/x-javascript;version=1.7" src="utils.js"/> -<script type="application/x-javascript;version=1.7" src="sendReport.js"/> - -<keyset id="wizardKeys"> - <key id="undoKey" modifiers="accel" key="Z" oncommand="if (document.documentElement.currentPage.id == 'screenshotPage') screenshotDataSource.undo();"/> -</keyset> - -<box hidden="true"> - <vbox id="wizardHeader" class="wizard-header"> - <deck id="wizardHeaderDeck"> - <description id="wizardHeaderLabel" class="wizard-header-label"/> - <hbox id="progressBar"> - <label id="typeSelectorHeader" class="progressLabel" value="&typeSelector.heading;" crop="end"/> - <label id="screenshotHeader" class="progressLabel" value="&screenshot.heading;" crop="end"/> - <label id="commentPageHeader" class="progressLabel" value="&commentPage.heading;" crop="end"/> - <label id="sendPageHeader" class="progressLabel" value="&sendPage.heading;" crop="end"/> - </hbox> - </deck> - </vbox> - - <label id="privacyLink" class="text-link" value="&privacyPolicy.label;" onclick="UI.loadDocLink('reporter_privacy');"/> -</box> - -<wizardpage id="dataCollectorPage" pageid="dataCollector" next="typeSelector" label="&dataCollector.heading;" onpageshow="initDataCollectorPage();"> - <description>&dataCollector.description;</description> - - <progressmeter id="dataCollectorProgress" mode="undetermined"/> -</wizardpage> - -<wizardpage id="typeSelectorPage" pageid="typeSelector" next="screenshot" label="&typeSelector.heading;" onpageshow="initTypeSelectorPage();"> - <description>&typeSelector.description;</description> - - <radiogroup id="typeGroup" oncommand="typeSelectionUpdated();"> - <radio id="typeFalsePositive" value="false positive" label="&typeSelector.falsePositive.label;"/> - <description class="radioDescription">&typeSelector.falsePositive.description;</description> - <radio id="typeFalseNegative" value="false negative" label="&typeSelector.falseNegative.label;"/> - <description class="radioDescription">&typeSelector.falseNegative.description;</description> - <radio id="typeOther" value="other" label="&typeSelector.other.label;"/> - <description class="radioDescription">&typeSelector.other.description;</description> - </radiogroup> - - <deck id="recentReports" currentIndex="0" flex="1"> - <vbox pack="end"> - <label class="text-link" value="&showRecentReports.label;" onclick="E('recentReports').selectedIndex = 1;"/> - </vbox> - <groupbox flex="1"> - <caption label="&recentReports.label;"/> - <grid flex="1" id="recentReportsList"> - <columns> - <column flex="2"/> - <column flex="1"/> - <column/> - </columns> - <rows id="recentReportsRows" onclick="reportsListDataSource.handleClick(event);"/> - </grid> - - <hbox pack="start"> - <button label="&recentReports.clear.label;" oncommand="reportsListDataSource.clear();"/> - </hbox> - </groupbox> - </deck> -</wizardpage> - -<wizardpage id="updatePage" pageid="update" next="screenshot" onpageshow="subscriptionUpdateDataSource.showPage();" reloadButtonLabel="&reloadButton.label;"> - <vbox id="updateInProgress"> - <description>&update.inProgress.description;</description> - <progressmeter mode="undetermined"/> - </vbox> - - <description id="updateFixedIssue" hidden="true">&update.fixed.description;</description> - - <vbox id="outdatedSubscriptions"> - <description>&outdatedSubscriptions.description;</description> - - <description id="outdatedSubscriptionTemplate" class="text-link" onclick="UI.loadInBrowser(this.getAttribute('_url'));"/> - - <vbox id="outdatedSubscriptionsList"/> - - <hbox> - <button label="&update.start.label;" oncommand="subscriptionUpdateDataSource.updateOutdated();window.close();"/> - <button label="&issues.openPreferences.label;" oncommand="UI.openFiltersDialog();window.close();"/> - </hbox> - </vbox> -</wizardpage> - -<wizardpage id="issuesPage" pageid="issues" next="screenshot" onpageshow="initIssuesPage();" reloadButtonLabel="&reloadButton.label;"> - <description>&issues.description;</description> - - <vbox id="issuesBox" flex="1"> - <groupbox id="issuesWhitelistBox" hidden="true"> - <description>&issues.whitelist.description;</description> - <hbox pack="end"> - <button label="&issues.whitelist.remove.label;" oncommand="issuesDataSource.removeWhitelist();"/> - </hbox> - </groupbox> - <groupbox id="issuesDisabledBox" hidden="true"> - <description>&issues.disabled.description;</description> - <hbox pack="end"> - <button label="&issues.disabled.enable.label;" oncommand="issuesDataSource.enable();"/> - </hbox> - </groupbox> - <groupbox id="issuesNoFiltersBox" hidden="true"> - <description>&issues.nofilters.description;</description> - </groupbox> - <groupbox id="issuesNoSubscriptionsBox" hidden="true"> - <description>&issues.nosubscriptions.description;</description> - <hbox pack="end"> - <button label="&issues.nosubscriptions.add.label;" oncommand="issuesDataSource.addSubscription();"/> - </hbox> - </groupbox> - <groupbox id="issuesSubscriptionCountBox" hidden="true"> - <description>&issues.subscriptionCount.description;</description> - <hbox pack="end"> - <button label="&issues.openPreferences.label;" oncommand="UI.openFiltersDialog();window.close();"/> - </hbox> - </groupbox> - <groupbox id="issuesOwnFiltersBox" hidden="true"> - <description>&issues.ownfilters.description;</description> - <hbox id="issuesOwnFiltersTemplate" align="center" hidden="true"> - <description flex="1" crop="end"/> - <button label="&issues.ownfilters.disable.label;" oncommand="issuesDataSource.disableFilter(this.parentNode);"/> - </hbox> - <vbox id="issuesOwnFilters"/> - </groupbox> - <groupbox id="issuesDisabledSubscriptionsBox" hidden="true"> - <description>&issues.disabledgroups.description;</description> - <hbox id="issuesDisabledSubscriptionsTemplate" align="center" hidden="true"> - <description flex="1" crop="end"/> - <button label="&issues.disabledgroups.enable.label;" oncommand="issuesDataSource.enableSubscription(this.parentNode);"/> - </hbox> - <vbox id="issuesDisabledSubscriptions"/> - </groupbox> - <groupbox id="issuesDisabledFiltersBox" hidden="true"> - <description>&issues.disabledfilters.description;</description> - <hbox id="issuesDisabledFiltersTemplate" align="center" hidden="true"> - <description flex="1" crop="end"/> - <button label="&issues.disabledfilters.enable.label;" oncommand="issuesDataSource.enableFilter(this.parentNode);"/> - </hbox> - <vbox id="issuesDisabledFilters"/> - </groupbox> - </vbox> - - <checkbox id="issuesOverride" label="&issues.override.label;" oncommand="updateIssuesOverride();"/> - <description id="issuesChangeMessage" hidden="true">&issues.change.description;</description> -</wizardpage> - -<wizardpage id="typeWarningPage" pageid="typeWarning" next="screenshot" onpageshow="initTypeWarningPage();"> - <description id="typeWarningText"> - &typeWarning.description; - <label id="typeWarningTextLink" class="text-link" onclick="UI.loadDocLink('reporter_other_link');"/> - </description> - - <checkbox id="typeWarningOverride" label="&typeWarning.override.label;" oncommand="updateTypeWarningOverride();"/> -</wizardpage> - -<wizardpage id="screenshotPage" pageid="screenshot" next="comment" label="&screenshot.heading;" onpageshow="initScreenshotPage();"> - <description>&screenshot.description;</description> - - <checkbox id="screenshotCheckbox" checked="true" label="&screenshot.attach.label;" oncommand="screenshotDataSource.enabled = this.checked;"/> - <hbox id="screenshotButtons" pack="end"> - <button id="screenshotMarkButton" type="radio" group="selectionType" oncommand="screenshotDataSource.selectionType = 'mark';" checked="true" label="&screenshot.mark.label;"/> - <button id="screenshotRemoveButton" type="radio" group="selectionType" oncommand="screenshotDataSource.selectionType = 'remove';" label="&screenshot.remove.label;"/> - <button id="screenshotUndoButton" oncommand="screenshotDataSource.undo();" disabled="true" label="&screenshot.undo.label;"/> - </hbox> - <vbox id="screenshotBox" flex="1"> - <canvas xmlns="http://www.w3.org/1999/xhtml" id="screenshotCanvas" onmousedown="screenshotDataSource.startSelection(event);" onmouseup="screenshotDataSource.stopSelection(event);" onmouseout="screenshotDataSource.stopSelection(event);" onmousemove="screenshotDataSource.updateSelection(event);"/> - </vbox> -</wizardpage> - -<wizardpage id="commentPage" pageid="comment" next="send" label="&commentPage.heading;" onpageshow="initCommentPage();"> - <description>&emailComment.label;</description> - <hbox class="topLabel" align="baseline"> - <label id="emailLabel" control="email" value="&email.label;"/> - <textbox id="email" persist="value" flex="1" maxlength="200" oninput="updateEmail();"/> - </hbox> - <checkbox id="anonymousCheckbox" label="&anonymous.label;" oncommand="updateEmail();"/> - <description id="anonymityWarning" visible="false">&anonymity.warning;</description> - - <description class="topLabel">&commentPage.description;</description> - <label class="topLabel" control="comment" value="&comment.label;"/> - <textbox id="comment" multiline="true" flex="1" oninput="updateComment();"/> - <description id="commentLengthWarning" visible="false">&comment.lengthWarning;</description> - - <checkbox id="extensionsCheckbox" label="&attachExtensions.label;" oncommand="updateExtensions(this.checked);"/> - - <deck id="dataDeck" selectedIndex="0" flex="2"> - <vbox pack="start"> - <label class="text-link" value="&showData.label;" onclick="showDataField();"/> - </vbox> - <vbox> - <label control="data" value="&data.label;"/> - <textbox id="data" readonly="true" multiline="true" wrap="off" flex="1"/> - </vbox> - </deck> -</wizardpage> - -<wizardpage id="sendPage" pageid="send" label="&sendPage.heading;" onpageshow="initSendPage();"> - <description id="sendReportMessage">&sendPage.waitMessage;</description> - - <vbox id="sendReportErrorBox" align="end" hidden="true"> - <description id="sendReportError" textTemplate="&sendPage.errorMessage;" defaultError="&subscription.lastDownload.connectionError;"> - <label id="sendReportErrorLinks" class="text-link" onclick="UI.loadDocLink('reporter_connect_issue');"/> - </description> - <button id="sendRetryButton" label="&sendPage.retry.label;" oncommand="initSendPage();"/> - </vbox> - - <progressmeter id="sendReportProgress" mode="undetermined"/> - - <iframe id="result" type="content" flex="1" hidden="true" onclick="processLinkClick(event);" - confirmationMessage="&sendPage.confirmation;" knownIssueMessage="&sendPage.knownIssue;"/> - - <hbox id="copyLinkBox" pack="end" hidden="true"> - <button id="copyLink" disabled="true" label="©Link.label;" oncommand="copyLink(this.getAttribute('url'));"/> - </hbox> -</wizardpage> - -</wizard> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/settings.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/settings.xul deleted file mode 100644 index 4215a38..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/settings.xul +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<!DOCTYPE vbox SYSTEM "chrome://adblockplus/locale/overlay.dtd"> - -<window - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - width="1" - height="1" - onload="window.close();"> <!-- Close window if it gets opened directly for some reason --> - <setting type="control"> - <button id="adblockplus-filters" label="&filters.label;…"/> - </setting> - <setting pref="extensions.adblockplus.enabled" type="bool" inverted="true" title="&disable.label;"/> - <setting pref="extensions.adblockplus.frameobjects" type="bool" title="&objecttabs.label;"/> - <setting pref="extensions.adblockplus.fastcollapse" type="bool" inverted="true" title="&hideplaceholders.label;"/> - <setting id="adblockplus-savestats" type="bool" title="&counthits.label;"/> - <setting id="adblockplus-sync" type="bool" title="&sync.label;"/> - <setting id="adblockplus-showintoolbar" type="bool" title="&showintoolbar.label;"/> - <setting id="adblockplus-showinstatusbar" pref="extensions.adblockplus.showinstatusbar" type="bool" title="&showinstatusbar.label;"/> - <setting id="adblockplus-autoupdate" pref="extensions.adblockplus.subscriptions_autoupdate" type="bool" title="&subscription.update.label;"/> -</window> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.js deleted file mode 100644 index 358aebe..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.js +++ /dev/null @@ -1,1246 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -// Main browser window -var mainWin = parent; - -// The window handler currently in use -var requestNotifier = null; - -var cacheSession = null; -var noFlash = false; - -// Matcher for disabled filters -var disabledMatcher = new CombinedMatcher(); - -// Cached string values -var docDomainThirdParty = null; -var docDomainFirstParty = null; - -function init() { - docDomainThirdParty = document.documentElement.getAttribute("docDomainThirdParty"); - docDomainFirstParty = document.documentElement.getAttribute("docDomainFirstParty"); - - var list = E("list"); - list.view = treeView; - - // Restore previous state - var params = Utils.getParams(); - if (params && params.filter) - { - E("searchField").value = params.filter; - treeView.setFilter(params.filter); - } - if (params && params.focus && E(params.focus)) - E(params.focus).focus(); - else - E("searchField").focus(); - - var selected = null; - if (/sidebarDetached\.xul$/.test(parent.location.href)) - { - mainWin = parent.opener; - mainWin.addEventListener("unload", mainUnload, false); - E("detachButton").hidden = true; - E("reattachButton").hidden = false; - - let mustDetach = parent.arguments[0]; - if (mustDetach) - E("reattachButton").setAttribute("disabled", "true"); - if ("sidebar" in UI.hotkeys) - { - let {KeySelector} = require("keySelector"); - parent.addEventListener("keypress", function(event) - { - if (KeySelector.matchesKey(event, UI.hotkeys.sidebar)) - doClose(); - }, false); - } - - // Set default size/position unless already persisted - let defaults = {screenX: 0, screenY: 0, width: 600, height: 300}; - if (params && params.position) - defaults = params.position; - - let wnd = parent.document.documentElement; - for (let attr in defaults) - if (!wnd.hasAttribute(attr)) - wnd.setAttribute(attr, defaults[attr]); - } - - let {getBrowser, addBrowserLocationListener} = require("appSupport"); - window.__defineGetter__("content", function() {return getBrowser(mainWin).contentWindow;}); - - // Initialize matcher for disabled filters - reloadDisabledFilters(); - FilterNotifier.addListener(reloadDisabledFilters); - Prefs.addListener(onPrefChange); - - // Activate flasher - list.addEventListener("select", onSelectionChange, false); - - // Initialize data - handleLocationChange(); - - // Install a progress listener to catch location changes - if (addBrowserLocationListener) - addBrowserLocationListener(mainWin, handleLocationChange, true); -} - -// To be called for a detached window when the main window has been closed -function mainUnload() { - parent.close(); -} - -// To be called on unload -function cleanUp() { - flasher.stop(); - requestNotifier.shutdown(); - FilterNotifier.removeListener(reloadDisabledFilters); - Prefs.removeListener(onPrefChange); - E("list").view = null; - - let {removeBrowserLocationListener} = require("appSupport"); - if (removeBrowserLocationListener) - removeBrowserLocationListener(mainWin, handleLocationChange); - mainWin.removeEventListener("unload", mainUnload, false); -} - -/** - * Tracks preference changes, calls reloadDisabledFilters whenever Adblock Plus - * is enabled/disabled. - */ -function onPrefChange(name) -{ - if (name == "enabled") - reloadDisabledFilters(); -} - -let reloadDisabledScheduled = false; - -/** - * Updates matcher for disabled filters (global disabledMatcher variable), - * called on each filter change. Execute delayed to prevent multiple subsequent - * invocations. - */ -function reloadDisabledFilters() -{ - if (reloadDisabledScheduled) - return; - - Utils.runAsync(reloadDisabledFiltersInternal); - reloadDisabledScheduled = true; -} - -function reloadDisabledFiltersInternal() -{ - reloadDisabledScheduled = false; - disabledMatcher.clear(); - - if (Prefs.enabled) - { - for each (let subscription in FilterStorage.subscriptions) - { - if (subscription.disabled) - continue; - - for each (let filter in subscription.filters) - if (filter instanceof RegExpFilter && filter.disabled) - disabledMatcher.add(filter); - } - } - - treeView.updateFilters(); -} - -// Called whenever list selection changes - triggers flasher -function onSelectionChange() { - var item = treeView.getSelectedItem(); - if (item) - E("copy-command").removeAttribute("disabled"); - else - E("copy-command").setAttribute("disabled", "true"); - - if (item && window.content) - { - let key = item.location + " " + item.type + " " + item.docDomain; - RequestNotifier.storeSelection(window.content, key); - treeView.itemToSelect = null; - } - - if (!noFlash) - flasher.flash(item ? item.nodes : null); -} - -function handleLocationChange() -{ - if (requestNotifier) - requestNotifier.shutdown(); - - treeView.clearData(); - treeView.itemToSelect = RequestNotifier.getSelection(window.content); - requestNotifier = new RequestNotifier(window.content, function(wnd, node, item, scanComplete) - { - if (item) - treeView.addItem(node, item, scanComplete); - }); -} - -// Fills a box with text splitting it up into multiple lines if necessary -function setMultilineContent(box, text, noRemove) -{ - if (!noRemove) - while (box.firstChild) - box.removeChild(box.firstChild); - - for (var i = 0; i < text.length; i += 80) - { - var description = document.createElement("description"); - description.setAttribute("value", text.substr(i, 80)); - box.appendChild(description); - } -} - -// Fill in tooltip data before showing it -function fillInTooltip(e) { - // Prevent tooltip from overlapping menu - if (E("context").state == "open") - { - e.preventDefault(); - return; - } - - var item; - if (treeView.data && !treeView.data.length) - item = treeView.getDummyTooltip(); - else - item = treeView.getItemAt(e.clientX, e.clientY); - - if (!item) - { - e.preventDefault(); - return; - } - - let filter = ("filter" in item && item.filter ? item.filter : null); - let size = ("tooltip" in item ? null : getItemSize(item)); - let subscriptions = (filter ? filter.subscriptions.filter(function(subscription) { return !subscription.disabled; }) : []); - - E("tooltipDummy").hidden = !("tooltip" in item); - E("tooltipAddressRow").hidden = ("tooltip" in item); - E("tooltipTypeRow").hidden = ("tooltip" in item); - E("tooltipSizeRow").hidden = !size; - E("tooltipDocDomainRow").hidden = ("tooltip" in item || !item.docDomain); - E("tooltipFilterRow").hidden = !filter; - E("tooltipFilterSourceRow").hidden = !subscriptions.length; - - if ("tooltip" in item) - E("tooltipDummy").setAttribute("value", item.tooltip); - else - { - E("tooltipAddress").parentNode.hidden = (item.typeDescr == "ELEMHIDE"); - setMultilineContent(E("tooltipAddress"), item.location); - - var type = item.localizedDescr; - if (filter && filter instanceof WhitelistFilter) - type += " " + E("tooltipType").getAttribute("whitelisted"); - else if (filter && item.typeDescr != "ELEMHIDE") - type += " " + E("tooltipType").getAttribute("filtered"); - E("tooltipType").setAttribute("value", type); - - if (size) - E("tooltipSize").setAttribute("value", size.join(" x ")); - - E("tooltipDocDomain").setAttribute("value", item.docDomain + " " + (item.thirdParty ? docDomainThirdParty : docDomainFirstParty)); - } - - if (filter) - { - let filterField = E("tooltipFilter"); - setMultilineContent(filterField, filter.text); - if (filter.disabled) - { - let disabledText = document.createElement("description"); - disabledText.className = "disabledTextLabel"; - disabledText.textContent = filterField.getAttribute("disabledText"); - filterField.appendChild(disabledText); - } - - if (subscriptions.length) - { - let sourceElement = E("tooltipFilterSource"); - while (sourceElement.firstChild) - sourceElement.removeChild(sourceElement.firstChild); - for (let i = 0; i < subscriptions.length; i++) - setMultilineContent(sourceElement, subscriptions[i].title, true); - } - } - - var showPreview = Prefs.previewimages && !("tooltip" in item); - showPreview = showPreview && item.typeDescr == "IMAGE"; - showPreview = showPreview && (!item.filter || item.filter.disabled || item.filter instanceof WhitelistFilter); - if (showPreview) - { - // Check whether image is in cache (stolen from ImgLikeOpera) - if (!cacheSession) - { - var cacheService = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService); - cacheSession = cacheService.createSession("HTTP", Ci.nsICache.STORE_ANYWHERE, true); - } - - let cacheListener = - { - onCacheEntryAvailable: function(descriptor, accessGranted, status) - { - if (!descriptor) - return; - - descriptor.close(); - // Show preview here since this is asynchronous now - // and we have a valid descriptor - E("tooltipPreview").setAttribute("src", item.location); - E("tooltipPreviewBox").hidden = false; - }, - onCacheEntryDoomed: function(status) - { - } - }; - try - { - cacheSession.asyncOpenCacheEntry(item.location, Ci.nsICache.ACCESS_READ, cacheListener); - } - catch (e) - { - Cu.reportError(e); - } - } - - E("tooltipPreviewBox").hidden = true; -} - -const visual = { - OTHER: true, - IMAGE: true, - SUBDOCUMENT: true -} - -/** - * Updates context menu before it is shown. - */ -function fillInContext(/**Event*/ e) -{ - let item, allItems; - if (treeView.data && !treeView.data.length) - { - item = treeView.getDummyTooltip(); - allItems = [item]; - } - else - { - item = treeView.getItemAt(e.clientX, e.clientY); - allItems = treeView.getAllSelectedItems(); - } - - if (!item || ("tooltip" in item && !("filter" in item))) - return false; - - E("contextDisableFilter").hidden = true; - E("contextEnableFilter").hidden = true; - E("contextDisableOnSite").hidden = true; - if ("filter" in item && item.filter) - { - let filter = item.filter; - let menuItem = E(filter.disabled ? "contextEnableFilter" : "contextDisableFilter"); - menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/\?1\?/, filter.text)); - menuItem.hidden = false; - - if (filter instanceof ActiveFilter && !filter.disabled && filter.subscriptions.length && !filter.subscriptions.some(function(subscription) !(subscription instanceof SpecialSubscription))) - { - let domain = null; - try { - domain = Utils.effectiveTLD.getBaseDomainFromHost(item.docDomain); - } catch (e) {} - - if (domain && !filter.isActiveOnlyOnDomain(domain)) - { - menuItem = E("contextDisableOnSite"); - menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/\?1\?/, domain)); - menuItem.hidden = false; - } - } - } - - E("contextWhitelist").hidden = ("tooltip" in item || !item.filter || item.filter.disabled || item.filter instanceof WhitelistFilter || item.typeDescr == "ELEMHIDE"); - E("contextBlock").hidden = !E("contextWhitelist").hidden; - E("contextBlock").setAttribute("disabled", "filter" in item && item.filter && !item.filter.disabled); - E("contextEditFilter").setAttribute("disabled", !("filter" in item && item.filter)); - E("contextOpen").setAttribute("disabled", "tooltip" in item || item.typeDescr == "ELEMHIDE"); - E("contextFlash").setAttribute("disabled", "tooltip" in item || !(item.typeDescr in visual) || (item.filter && !item.filter.disabled && !(item.filter instanceof WhitelistFilter))); - E("contextCopyFilter").setAttribute("disabled", !allItems.some(function(item) {return "filter" in item && item.filter})); - - return true; -} - -/** - * Resets context menu data once the context menu is closed. - */ -function clearContextMenu(/**Event*/ event) -{ - if (event.eventPhase != event.AT_TARGET) - return; - - { - let menuItem = E("contextDisableOnSite"); - menuItem.item = item; - menuItem.filter = filter; - menuItem.domain = domain; - } -} - -/** - * Processed mouse clicks on the item list. - * @param {Event} event - */ -function handleClick(event) -{ - let item = treeView.getItemAt(event.clientX, event.clientY); - if (event.button == 0 && treeView.getColumnAt(event.clientX, event.clientY) == "state") - { - if (item.filter) - enableFilter(item.filter, item.filter.disabled); - event.preventDefault(); - } - else if (event.button == 1) - { - openInTab(item, event); - event.preventDefault(); - } -} - -/** - * Processes double-clicks on the item list. - * @param {Event} event - */ -function handleDblClick(event) -{ - if (event.button != 0 || treeView.getColumnAt(event.clientX, event.clientY) == "state") - return; - - doBlock(); -} - -/** - * Opens the item in a new tab. - */ -function openInTab(item, /**Event*/ event) -{ - let items = (item ? [item] : treeView.getAllSelectedItems()); - for each (let item in items) - { - if (item && item.typeDescr != "ELEMHIDE") - UI.loadInBrowser(item.location, mainWin, event); - } -} - -function doBlock() { - var item = treeView.getSelectedItem(); - if (!item || item.typeDescr == "ELEMHIDE") - return; - - var filter = null; - if (item.filter && !item.filter.disabled) - filter = item.filter; - - if (filter && filter instanceof WhitelistFilter) - return; - - openDialog("chrome://adblockplus/content/ui/composer.xul", "_blank", "chrome,centerscreen,resizable,dialog=no,dependent", item.nodes, item.orig); -} - -function editFilter() -{ - var item = treeView.getSelectedItem(); - if (treeView.data && !treeView.data.length) - item = treeView.getDummyTooltip(); - - if (!("filter" in item) || !item.filter) - return; - - if (!("location") in item) - item.location = undefined - - UI.openFiltersDialog(item.filter); -} - -function enableFilter(filter, enable) { - filter.disabled = !enable; - - treeView.boxObject.invalidate(); -} - -/** - * Edits the filter to disable it on a particular domain. - */ -function disableOnSite() -{ - let item = treeView.getSelectedItem(); - let filter = item.filter; - if (!(filter instanceof ActiveFilter) || filter.disabled || !filter.subscriptions.length || filter.subscriptions.some(function(subscription) !(subscription instanceof SpecialSubscription))) - return; - - let domain; - try { - domain = Utils.effectiveTLD.getBaseDomainFromHost(item.docDomain).toUpperCase(); - } - catch (e) - { - return; - } - - // Generate text for new filter that excludes current domain - let text = filter.text; - if (filter instanceof RegExpFilter) - { - let match = Filter.optionsRegExp.exec(text); - if (match) - { - let found = false; - let options = match[1].toUpperCase().split(","); - for (let i = 0; i < options.length; i++) - { - let match = /^DOMAIN=(.*)/.exec(options[i]); - if (match) - { - let domains = match[1].split("|").filter(function(d) d != domain && d != "~" + domain && (d.length <= domain.length || d.lastIndexOf("." + domain) != d.length - domain.length - 1)); - domains.push("~" + domain); - options[i] = "DOMAIN=" + domains.join("|"); - found = true; - break; - } - } - if (!found) - options.push("DOMAIN=~" + domain); - - text = text.replace(Filter.optionsRegExp, "$" + options.join(",").toLowerCase()); - } - else - text += "$domain=~" + domain.toLowerCase(); - } - else if (filter instanceof ElemHideBase) - { - let match = /^([^#]+)(#.*)/.exec(text); - if (match) - { - let selector = match[2]; - let domains = match[1].toUpperCase().split(",").filter(function(d) d != domain && (d.length <= domain.length || d != "~" + domain && d.lastIndexOf("." + domain) != d.length - domain.length - 1)); - domains.push("~" + domain); - text = domains.join(",").toLowerCase() + selector; - } - else - text = "~" + domain.toLowerCase() + text; - } - - if (text == filter.text) - return; // Just in case, shouldn't happen - - // Insert new filter before the old one and remove the old one then - let newFilter = Filter.fromText(text); - if (newFilter.disabled && newFilter.subscriptions.length) - newFilter.disabled = false; - else if (!newFilter.subscriptions.length) - { - newFilter.disabled = false; - let subscription = filter.subscriptions.filter(function(s) s instanceof SpecialSubscription)[0]; - if (subscription) - FilterStorage.addFilter(newFilter, subscription, subscription.filters.indexOf(filter)); - } - FilterStorage.removeFilter(filter); - - // Update display - for (let i = 0; i < treeView.allData.length; i++) - if (treeView.allData[i].filter == filter) - treeView.allData[i].filter = null; - treeView.boxObject.invalidate(); -} - -function copyToClipboard() { - var items = treeView.getAllSelectedItems(); - if (!items.length) - return; - - Utils.clipboardHelper.copyString(items.map(function(item) {return item.location}).join(IO.lineBreak)); -} - -function copyFilter() { - var items = treeView.getAllSelectedItems().filter(function(item) {return item.filter}); - if (treeView.data && !treeView.data.length) - items = [treeView.getDummyTooltip()]; - - if (!items.length) - return; - - Utils.clipboardHelper.copyString(items.map(function(item) {return item.filter.text}).join(IO.lineBreak)); -} - -function selectAll() { - treeView.selectAll(); -} - -// Saves sidebar's state before detaching/reattaching -function saveState() { - var focused = document.commandDispatcher.focusedElement; - while (focused && (!focused.id || !("focus" in focused))) - focused = focused.parentNode; - - // Calculate default position for the detached window - var boxObject = document.documentElement.boxObject; - var position = {screenX: boxObject.screenX, screenY: boxObject.screenY, width: boxObject.width, height: boxObject.height}; - - var params = { - filter: treeView.filter, - focus: (focused ? focused.id : null), - position: position - }; - Utils.setParams(params); -} - -// closes the sidebar -function doClose() -{ - mainWin.document.getElementById("abp-command-sidebar").doCommand(); -} - -// detaches/reattaches the sidebar -function detach(doDetach) -{ - saveState(); - - // Store variables locally, global variables will go away when we are closed - let myPrefs = Prefs; - let myMainWin = mainWin; - - // Close sidebar and open detached window - myMainWin.document.getElementById("abp-command-sidebar").doCommand(); - myPrefs.detachsidebar = doDetach; - myMainWin.document.getElementById("abp-command-sidebar").doCommand(); -} - -// Returns items size in the document if available -function getItemSize(item) -{ - if (item.filter && !item.filter.disabled && item.filter instanceof BlockingFilter) - return null; - - for each (let node in item.nodes) - { - if (node instanceof HTMLImageElement && (node.naturalWidth || node.naturalHeight)) - return [node.naturalWidth, node.naturalHeight]; - else if (node instanceof HTMLElement && (node.offsetWidth || node.offsetHeight)) - return [node.offsetWidth, node.offsetHeight]; - } - return null; -} - -// Sort functions for the item list -function sortByAddress(item1, item2) { - if (item1.location < item2.location) - return -1; - else if (item1.location > item2.location) - return 1; - else - return 0; -} - -function sortByAddressDesc(item1, item2) { - return -sortByAddress(item1, item2); -} - -function compareType(item1, item2) { - if (item1.localizedDescr < item2.localizedDescr) - return -1; - else if (item1.localizedDescr > item2.localizedDescr) - return 1; - else - return 0; -} - -function compareFilter(item1, item2) { - var hasFilter1 = (item1.filter ? 1 : 0); - var hasFilter2 = (item2.filter ? 1 : 0); - if (hasFilter1 != hasFilter2) - return hasFilter1 - hasFilter2; - else if (hasFilter1 && item1.filter.text < item2.filter.text) - return -1; - else if (hasFilter1 && item1.filter.text > item2.filter.text) - return 1; - else - return 0; -} - -function compareState(item1, item2) { - var state1 = (!item1.filter ? 0 : (item1.filter.disabled ? 1 : (item1.filter instanceof WhitelistFilter ? 2 : 3))); - var state2 = (!item2.filter ? 0 : (item2.filter.disabled ? 1 : (item2.filter instanceof WhitelistFilter ? 2 : 3))); - return state1 - state2; -} - -function compareSize(item1, item2) { - var size1 = getItemSize(item1); - size1 = size1 ? size1[0] * size1[1] : 0; - - var size2 = getItemSize(item2); - size2 = size2 ? size2[0] * size2[1] : 0; - return size1 - size2; -} - -function compareDocDomain(item1, item2) -{ - if (item1.docDomain < item2.docDomain) - return -1; - else if (item1.docDomain > item2.docDomain) - return 1; - else if (item1.thirdParty && !item2.thirdParty) - return -1; - else if (!item1.thirdParty && item2.thirdParty) - return 1; - else - return 0; -} - -function compareFilterSource(item1, item2) -{ - let subs1 = item1.filter ? item1.filter.subscriptions.map(function(s) s.title).join(", ") : ""; - let subs2 = item2.filter ? item2.filter.subscriptions.map(function(s) s.title).join(", ") : ""; - if (subs1 < subs2) - return -1; - else if (subs1 > subs2) - return 1; - else - return 0; -} - -function createSortWithFallback(cmpFunc, fallbackFunc, desc) { - var factor = (desc ? -1 : 1); - return function(item1, item2) { - var ret = cmpFunc(item1, item2); - if (ret == 0) - return fallbackFunc(item1, item2); - else - return factor * ret; - } -} - -// Item list's tree view object -var treeView = { - // - // nsISupports implementation - // - - QueryInterface: function(uuid) { - if (!uuid.equals(Ci.nsISupports) && - !uuid.equals(Ci.nsITreeView)) - { - throw Cr.NS_ERROR_NO_INTERFACE; - } - - return this; - }, - - // - // nsITreeView implementation - // - - selection: null, - - setTree: function(boxObject) { - if (!boxObject) - return; - this.boxObject = boxObject; - this.itemsDummy = boxObject.treeBody.getAttribute("noitemslabel"); - this.whitelistDummy = boxObject.treeBody.getAttribute("whitelistedlabel"); - var stringAtoms = ["col-address", "col-type", "col-filter", "col-state", "col-size", "col-docDomain", "col-filterSource", "state-regular", "state-filtered", "state-whitelisted", "state-hidden", "state-hiddenexception"]; - var boolAtoms = ["selected", "dummy", "filter-disabled"]; - var atomService = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService); - this.atoms = {}; - for each (let atom in stringAtoms) - this.atoms[atom] = atomService.getAtom(atom); - for each (let atom in boolAtoms) - { - this.atoms[atom + "-true"] = atomService.getAtom(atom + "-true"); - this.atoms[atom + "-false"] = atomService.getAtom(atom + "-false"); - } - - this.itemsDummyTooltip = Utils.getString("no_blocking_suggestions"); - this.whitelistDummyTooltip = Utils.getString("whitelisted_page"); - - // Check current sort direction - var cols = document.getElementsByTagName("treecol"); - var sortDir = null; - for (let i = 0; i < cols.length; i++) { - var col = cols[i]; - var dir = col.getAttribute("sortDirection"); - if (dir && dir != "natural") { - this.sortColumn = col; - sortDir = dir; - } - } - if (!this.sortColumn) - { - let defaultSort = E("list").getAttribute("defaultSort"); - let match = /^(\w+)\s+(ascending|descending)$/.exec(defaultSort); - if (match) - { - this.sortColumn = E(match[1]); - if (this.sortColumn) - { - sortDir = match[2]; - this.sortColumn.setAttribute("sortDirection", sortDir); - } - } - } - - if (sortDir) - { - this.sortProc = this.sortProcs[this.sortColumn.id + (sortDir == "descending" ? "Desc" : "")]; - E("list").setAttribute("defaultSort", " "); - } - - // Make sure to update the dummy row every two seconds - setInterval(function(view) { - if (!view.data || !view.data.length) - view.boxObject.invalidateRow(0); - }, 2000, this); - - // Prevent a reference through closures - boxObject = null; - }, - get rowCount() { - return (this.data && this.data.length ? this.data.length : 1); - }, - getCellText: function(row, col) { - col = col.id; - if (col != "type" && col != "address" && col != "filter" && col != "size" && col != "docDomain" && col != "filterSource") - return ""; - if (this.data && this.data.length) { - if (row >= this.data.length) - return ""; - if (col == "type") - return this.data[row].localizedDescr; - else if (col == "filter") - return (this.data[row].filter ? this.data[row].filter.text : ""); - else if (col == "size") - { - let size = getItemSize(this.data[row]); - return (size ? size.join(" x ") : ""); - } - else if (col == "docDomain") - return this.data[row].docDomain + " " + (this.data[row].thirdParty ? docDomainThirdParty : docDomainFirstParty); - else if (col == "filterSource") - { - if (!this.data[row].filter) - return ""; - - return this.data[row].filter.subscriptions.filter(function(s) !s.disabled).map(function(s) s.title).join(", "); - } - else - return this.data[row].location; - } - else { - // Empty list, show dummy - if (row > 0 || (col != "address" && col != "filter")) - return ""; - if (col == "filter") { - var filter = Policy.isWindowWhitelisted(window.content); - return filter ? filter.text : ""; - } - - return (Policy.isWindowWhitelisted(window.content) ? this.whitelistDummy : this.itemsDummy); - } - }, - - generateProperties: function(list, properties) - { - if (properties) - { - // Gecko 21 and below: we have an nsISupportsArray parameter, add atoms - // to that. - for (let i = 0; i < list.length; i++) - if (list[i] in this.atoms) - properties.AppendElement(this.atoms[list[i]]); - return null; - } - else - { - // Gecko 22+: no parameter, just return a string - return list.join(" "); - } - }, - - getColumnProperties: function(col, properties) - { - return this.generateProperties(["col-" + col.id], properties); - }, - - getRowProperties: function(row, properties) - { - if (row >= this.rowCount) - return ""; - - let list = []; - list.push("selected-" + this.selection.isSelected(row)); - - let state; - if (this.data && this.data.length) { - list.push("dummy-false"); - - let filter = this.data[row].filter; - if (filter) - list.push("filter-disabled-" + filter.disabled); - - state = "state-regular"; - if (filter && !filter.disabled) - { - if (filter instanceof WhitelistFilter) - state = "state-whitelisted"; - else if (filter instanceof BlockingFilter) - state = "state-filtered"; - else if (filter instanceof ElemHideFilter) - state = "state-hidden"; - else if (filter instanceof ElemHideException) - state = "state-hiddenexception"; - } - } - else { - list.push("dummy-true"); - - state = "state-filtered"; - if (this.data && Policy.isWindowWhitelisted(window.content)) - state = "state-whitelisted"; - } - list.push(state); - return this.generateProperties(list, properties); - }, - - getCellProperties: function(row, col, properties) - { - return this.getRowProperties(row, properties) + " " + this.getColumnProperties(col, properties); - }, - - cycleHeader: function(col) { - col = col.id; - - col = E(col); - if (!col) - return; - - var cycle = { - natural: 'ascending', - ascending: 'descending', - descending: 'natural' - }; - - var curDirection = "natural"; - if (this.sortColumn == col) - curDirection = col.getAttribute("sortDirection"); - else if (this.sortColumn) - this.sortColumn.removeAttribute("sortDirection"); - - curDirection = cycle[curDirection]; - - if (curDirection == "natural") - this.sortProc = null; - else - this.sortProc = this.sortProcs[col.id + (curDirection == "descending" ? "Desc" : "")]; - - if (this.data) - this.refilter(); - - col.setAttribute("sortDirection", curDirection); - this.sortColumn = col; - - this.boxObject.invalidate(); - }, - - isSorted: function() { - return this.sortProc; - }, - - isContainer: function() {return false}, - isContainerOpen: function() {return false}, - isContainerEmpty: function() {return false}, - getLevel: function() {return 0}, - getParentIndex: function() {return -1}, - hasNextSibling: function() {return false}, - toggleOpenState: function() {}, - canDrop: function() {return false}, - drop: function() {}, - getCellValue: function() {return null}, - getProgressMode: function() {return null}, - getImageSrc: function() {return null}, - isSeparator: function() {return false}, - isEditable: function() {return false}, - cycleCell: function() {}, - performAction: function() {}, - performActionOnRow: function() {}, - performActionOnCell: function() {}, - selectionChanged: function() {}, - - // - // Custom properties and methods - // - - boxObject: null, - atoms: null, - filter: "", - data: null, - allData: [], - dataMap: {__proto__: null}, - sortColumn: null, - sortProc: null, - resortTimeout: null, - itemsDummy: null, - whitelistDummy: null, - itemsDummyTooltip: null, - whitelistDummyTooltip: null, - itemToSelect: null, - - sortProcs: { - address: sortByAddress, - addressDesc: sortByAddressDesc, - type: createSortWithFallback(compareType, sortByAddress, false), - typeDesc: createSortWithFallback(compareType, sortByAddress, true), - filter: createSortWithFallback(compareFilter, sortByAddress, false), - filterDesc: createSortWithFallback(compareFilter, sortByAddress, true), - state: createSortWithFallback(compareState, sortByAddress, false), - stateDesc: createSortWithFallback(compareState, sortByAddress, true), - size: createSortWithFallback(compareSize, sortByAddress, false), - sizeDesc: createSortWithFallback(compareSize, sortByAddress, true), - docDomain: createSortWithFallback(compareDocDomain, sortByAddress, false), - docDomainDesc: createSortWithFallback(compareDocDomain, sortByAddress, true), - filterSource: createSortWithFallback(compareFilterSource, sortByAddress, false), - filterSourceDesc: createSortWithFallback(compareFilterSource, sortByAddress, true) - }, - clearData: function(data) { - var oldRows = this.rowCount; - this.allData = []; - this.dataMap = {__proto__: null}; - this.refilter(); - - this.boxObject.rowCountChanged(0, -oldRows); - this.boxObject.rowCountChanged(0, this.rowCount); - }, - - addItem: function(/**Node*/ node, /**RequestEntry*/ item, /**Boolean*/ scanComplete) - { - // Merge duplicate entries - let key = item.location + " " + item.type + " " + item.docDomain; - if (key in this.dataMap) - { - // We know this item already - take over the filter if any and be done with it - let existing = this.dataMap[key]; - if (item.filter) - existing.filter = item.filter; - - existing.nodes.push(node); - this.invalidateItem(existing); - return; - } - - // Add new item to the list - // Store original item in orig property - reading out prototype is messed up in Gecko 1.9.2 - item = {__proto__: item, orig: item, nodes: [node]}; - this.allData.push(item); - this.dataMap[key] = item; - - // Show disabled filters if no other filter applies - if (!item.filter) - item.filter = disabledMatcher.matchesAny(item.location, item.typeDescr, item.docDomain, item.thirdParty); - - if (!this.matchesFilter(item)) - return; - - let index = -1; - if (this.sortProc && this.sortColumn && this.sortColumn.id == "size") - { - // Sorting by size requires accessing content document, and that's - // dangerous from a content policy (and we are likely called directly - // from a content policy call). Size data will be inaccurate anyway, - // delay sorting until later. - if (this.resortTimeout) - clearTimeout(this.resortTimeout); - this.resortTimeout = setTimeout(function(me) - { - if (me.sortProc) - me.data.sort(me.sortProc); - me.boxObject.invalidate(); - }, 500, this); - } - else if (this.sortProc) - for (var i = 0; index < 0 && i < this.data.length; i++) - if (this.sortProc(item, this.data[i]) < 0) - index = i; - - if (index >= 0) - this.data.splice(index, 0, item); - else { - this.data.push(item); - index = this.data.length - 1; - } - - if (this.data.length == 1) - this.boxObject.invalidateRow(0); - else - this.boxObject.rowCountChanged(index, 1); - - if (this.itemToSelect == key) - { - this.selection.select(index); - this.boxObject.ensureRowIsVisible(index); - this.itemToSelect = null; - } - else if (!scanComplete && this.selection.currentIndex >= 0) // Keep selected row visible while scanning - this.boxObject.ensureRowIsVisible(this.selection.currentIndex); - }, - - updateFilters: function() - { - for each (let item in this.allData) - { - if (item.filter instanceof RegExpFilter && item.filter.disabled) - delete item.filter; - if (!item.filter) - item.filter = disabledMatcher.matchesAny(item.location, item.typeDescr, item.docDomain, item.thirdParty); - } - this.refilter(); - }, - - /** - * Updates the list after a filter or sorting change. - */ - refilter: function() - { - if (this.resortTimeout) - clearTimeout(this.resortTimeout); - - this.data = this.allData.filter(this.matchesFilter, this); - - if (this.sortProc) - this.data.sort(this.sortProc); - }, - - /** - * Tests whether an item matches current list filter. - * @return {Boolean} true if the item should be shown - */ - matchesFilter: function(item) - { - if (!this.filter) - return true; - - return (item.location.toLowerCase().indexOf(this.filter) >= 0 || - (item.filter && item.filter.text.toLowerCase().indexOf(this.filter) >= 0) || - item.typeDescr.toLowerCase().indexOf(this.filter.replace(/-/g, "_")) >= 0 || - item.localizedDescr.toLowerCase().indexOf(this.filter) >= 0 || - (item.docDomain && item.docDomain.toLowerCase().indexOf(this.filter) >= 0) || - (item.docDomain && item.thirdParty && docDomainThirdParty.toLowerCase().indexOf(this.filter) >= 0) || - (item.docDomain && !item.thirdParty && docDomainFirstParty.toLowerCase().indexOf(this.filter) >= 0)); - }, - - setFilter: function(filter) { - var oldRows = this.rowCount; - - this.filter = filter.toLowerCase(); - this.refilter(); - - var newRows = this.rowCount; - if (oldRows != newRows) - this.boxObject.rowCountChanged(oldRows < newRows ? oldRows : newRows, this.rowCount - oldRows); - this.boxObject.invalidate(); - }, - - selectAll: function() { - this.selection.selectAll(); - }, - - getSelectedItem: function() { - if (!this.data || this.selection.currentIndex < 0 || this.selection.currentIndex >= this.data.length) - return null; - - return this.data[this.selection.currentIndex]; - }, - - getAllSelectedItems: function() { - let result = []; - if (!this.data) - return result; - - let numRanges = this.selection.getRangeCount(); - for (let i = 0; i < numRanges; i++) - { - let min = {}; - let max = {}; - let range = this.selection.getRangeAt(i, min, max); - for (let j = min.value; j <= max.value; j++) - { - if (j >= 0 && j < this.data.length) - result.push(this.data[j]); - } - } - return result; - }, - - getItemAt: function(x, y) - { - if (!this.data) - return null; - - var row = this.boxObject.getRowAt(x, y); - if (row < 0 || row >= this.data.length) - return null; - - return this.data[row]; - }, - - getColumnAt: function(x, y) - { - if (!this.data) - return null; - - let col = {}; - this.boxObject.getCellAt(x, y, {}, col, {}); - return (col.value ? col.value.id : null); - }, - - getDummyTooltip: function() { - if (!this.data || this.data.length) - return null; - - var filter = Policy.isWindowWhitelisted(window.content); - if (filter) - return {tooltip: this.whitelistDummyTooltip, filter: filter}; - else - return {tooltip: this.itemsDummyTooltip}; - }, - - invalidateItem: function(item) - { - let row = this.data.indexOf(item); - if (row >= 0) - this.boxObject.invalidateRow(row); - } -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.xul deleted file mode 100644 index 180b3ec..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebar.xul +++ /dev/null @@ -1,139 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://adblockplus/skin/sidebar.css" type="text/css"?> - -<!DOCTYPE page SYSTEM "chrome://adblockplus/locale/sidebar.dtd"> - -<page - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="abp-sidebar" - onload="init()" - onunload="cleanUp()" - docDomainThirdParty="&docDomain.thirdParty;" - docDomainFirstParty="&docDomain.firstParty;"> - - <script type="application/x-javascript;version=1.7" src="utils.js"/> - <script type="application/x-javascript;version=1.7" src="sidebar.js"/> - <script type="application/x-javascript;version=1.7" src="flasher.js"/> - - <keyset id="sidebarKeys"> - <key id="block-key" keycode="VK_ENTER"/> - <key id="copy-key" modifiers="accel" key="C" command="copy-command"/> - <key id="selectAll-key" modifiers="accel" key="A" command="selectAll-command"/> - </keyset> - - <commandset id="sidebarCommands"> - <command id="copy-command" oncommand="copyToClipboard()" disabled="true"/> - <command id="selectAll-command" oncommand="selectAll()"/> - </commandset> - - <popupset id="sidebarPopups"> - <tooltip id="tooltip" orient="vertical" onpopupshowing="fillInTooltip(event);"> - <description id="tooltipDummy"/> - <hbox id="tooltipPreviewBox" pack="start"> - <image id="tooltipPreview" validate="never"/> - </hbox> - <grid> - <columns> - <column/> - <column flex="1"/> - </columns> - <rows> - <row id="tooltipAddressRow" align="top"> - <label value="&tooltip.address.label;"/> - <vbox id="tooltipAddress"/> - </row> - <row id="tooltipTypeRow"> - <label value="&tooltip.type.label;"/> - <description id="tooltipType" filtered="&tooltip.type.blocked;" whitelisted="&tooltip.type.whitelisted;"/> - </row> - <row id="tooltipSizeRow"> - <label value="&tooltip.size.label;"/> - <description id="tooltipSize"/> - </row> - <row id="tooltipDocDomainRow"> - <label value="&tooltip.docDomain.label;"/> - <description id="tooltipDocDomain"/> - </row> - <row id="tooltipFilterRow" align="top"> - <label value="&tooltip.filter.label;"/> - <vbox id="tooltipFilter" disabledText="&tooltip.filter.disabled;"/> - </row> - <row id="tooltipFilterSourceRow" align="top"> - <label value="&tooltip.filterSource.label;"/> - <vbox id="tooltipFilterSource"/> - </row> - </rows> - </grid> - </tooltip> - - <menupopup id="context" onpopupshowing="return fillInContext(event)"> - <menuitem id="contextBlock" label="&context.block.label;…" oncommand="doBlock()" key="block-key"/> - <menuitem id="contextWhitelist" label="&context.whitelist.label;…" oncommand="doBlock()" key="block-key"/> - <menuitem id="contextEditFilter" label="&context.editfilter.label;…" oncommand="editFilter()"/> - <menuitem id="contextDisableFilter" labeltempl="&context.disablefilter.label;" oncommand="enableFilter(treeView.getSelectedItem().filter, false)"/> - <menuitem id="contextEnableFilter" labeltempl="&context.enablefilter.label;" oncommand="enableFilter(treeView.getSelectedItem().filter, true)"/> - <menuitem id="contextDisableOnSite" labeltempl="&context.disablefilteronsite.label;" oncommand="disableOnSite()"/> - <menuseparator id="contextOpenSep"/> - <menuitem id="contextOpen" label="&context.open.label;" oncommand="openInTab(null, event)"/> - <menuitem id="contextFlash" label="&context.flash.label;" oncommand="onSelectionChange()"/> - <menuitem id="contextCopy" label="&context.copy.label;" command="copy-command" key="copy-key"/> - <menuitem id="contextCopyFilter" label="&context.copyFilter.label;" oncommand="copyFilter()"/> - <menuseparator id="contextSelectSep"/> - <menuitem id="contextSelectAll" label="&context.selectAll.label;" command="selectAll-command" key="selectAll-key"/> - </menupopup> - </popupset> - - <hbox> - <hbox align="center" flex="1"> - <label value="&search.label;" control="searchField"/> - <textbox id="searchField" flex="1" type="search" oncommand="treeView.setFilter(this.value)"/> - </hbox> - <description id="detachButton" value="&detach.label;" onclick="detach(true)"/> - <description id="reattachButton" value="&reattach.label;" onclick="if (this.getAttribute('disabled') != 'true') detach(false)" hidden="true"/> - </hbox> - - <tree id="list" context="context" flex="1" seltype="multiple" enableColumnDrag="true" - defaultSort="state descending" persist="defaultSort" - onkeypress="if (event.keyCode == event.DOM_VK_RETURN || event.keyCode == event.DOM_VK_ENTER) doBlock()"> - <treecols> - <treecol id="address" label="&address.label;" flex="2" crop="center" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="filter" label="&filter.label;" flex="1" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="type" label="&type.label;" width="80" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="state" label="&state.label;" width="16" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="size" label="&size.label;" width="60" hidden="true" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="docDomain" label="&docDomain.label;" width="100" hidden="true" persist="width ordinal sortDirection hidden"/> - <splitter class="tree-splitter"/> - <treecol id="filterSource" label="&filterSource.label;" width="100" hidden="true" persist="width ordinal sortDirection hidden"/> - </treecols> - <treechildren id="treechildren" - tooltip="tooltip" - onclick="handleClick(event)" - ondblclick="handleDblClick(event)" - noitemslabel="&noitems.label;" - whitelistedlabel="&whitelisted.label;"/> - </tree> -</page> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebarDetached.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebarDetached.xul deleted file mode 100644 index b7e117b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/sidebarDetached.xul +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<!DOCTYPE page SYSTEM "chrome://adblockplus/locale/sidebar.dtd"> - -<window - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="abpDetachedSidebar" - title="&detached.title;" - persist="screenX screenY width height sizemode" - onclose="document.getElementById('abp-command-sidebar').doCommand(); return false;"> - - <script type="application/x-javascript"> - // Some people actually switch off browser.frames.enabled and are surprised - // that things stop working... - window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShell) - .allowSubframes = true; - </script> - - <keyset> - <key keycode="VK_ESCAPE" command="command-close"/> - <key modifiers="accel" key="w" command="command-close"/> - </keyset> - - <commandset> - <command id="command-close" oncommand="document.getElementById('sidebarFrame').contentWindow.doClose()"/> - </commandset> - - <iframe src="sidebar.xul" id="sidebarFrame" flex="1"/> -</window> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.js deleted file mode 100644 index 3fdcc18..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.js +++ /dev/null @@ -1,308 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/FileUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let subscriptionListLoading = false; - -function init() -{ - if (window.arguments && window.arguments.length && window.arguments[0]) - { - let source = window.arguments[0]; - setCustomSubscription(source.title, source.url, - source.mainSubscriptionTitle, source.mainSubscriptionURL); - - E("all-subscriptions-container").hidden = true; - E("fromWebText").hidden = false; - } - else - loadSubscriptionList(); -} - -function updateSubscriptionInfo() -{ - let selectedSubscription = E("all-subscriptions").selectedItem; - - E("subscriptionInfo").setAttribute("invisible", !selectedSubscription); - if (selectedSubscription) - { - let url = selectedSubscription.getAttribute("_url"); - let homePage = selectedSubscription.getAttribute("_homepage") - - let viewLink = E("view-list"); - viewLink.setAttribute("_url", url); - viewLink.setAttribute("tooltiptext", url); - - let homePageLink = E("visit-homepage"); - homePageLink.hidden = !homePage; - if (homePage) - { - homePageLink.setAttribute("_url", homePage); - homePageLink.setAttribute("tooltiptext", homePage); - } - } -} - -function reloadSubscriptionList() -{ - subscriptionListLoading = false; - loadSubscriptionList(); -} - -function loadSubscriptionList() -{ - if (subscriptionListLoading) - return; - - E("all-subscriptions-container").selectedIndex = 0; - E("all-subscriptions-loading").hidden = false; - - let request = new XMLHttpRequest(); - let errorHandler = function() - { - E("all-subscriptions-container").selectedIndex = 2; - E("all-subscriptions-loading").hidden = true; - }; - let successHandler = function() - { - if (!request.responseXML || request.responseXML.documentElement.localName != "subscriptions") - { - errorHandler(); - return; - } - - try - { - processSubscriptionList(request.responseXML); - E("all-subscriptions").selectedIndex = 0; - E("all-subscriptions").focus(); - } - catch (e) - { - Cu.reportError(e); - errorHandler(); - } - }; - - request.open("GET", Prefs.subscriptions_listurl); - request.addEventListener("error", errorHandler, false); - request.addEventListener("load", successHandler, false); - request.send(null); - - subscriptionListLoading = true; -} - -function processSubscriptionList(doc) -{ - let list = E("all-subscriptions"); - while (list.firstChild) - list.removeChild(list.firstChild); - - addSubscriptions(list, doc.documentElement, 0, null, null); - E("all-subscriptions-container").selectedIndex = 1; - E("all-subscriptions-loading").hidden = true; -} - -function addSubscriptions(list, parent, level, parentTitle, parentURL) -{ - for (let i = 0; i < parent.childNodes.length; i++) - { - let node = parent.childNodes[i]; - if (node.nodeType != Node.ELEMENT_NODE || node.localName != "subscription") - continue; - - if (node.getAttribute("type") != "ads" || node.getAttribute("deprecated") == "true") - continue; - - let variants = node.getElementsByTagName("variants"); - if (!variants.length || !variants[0].childNodes.length) - continue; - variants = variants[0].childNodes; - - let isFirst = true; - let mainTitle = null; - let mainURL = null; - for (let j = 0; j < variants.length; j++) - { - let variant = variants[j]; - if (variant.nodeType != Node.ELEMENT_NODE || variant.localName != "variant") - continue; - - let item = document.createElement("richlistitem"); - item.setAttribute("_title", variant.getAttribute("title")); - item.setAttribute("_url", variant.getAttribute("url")); - if (parentTitle && parentURL && variant.getAttribute("complete") != "true") - { - item.setAttribute("_supplementForTitle", parentTitle); - item.setAttribute("_supplementForURL", parentURL); - } - item.setAttribute("tooltiptext", variant.getAttribute("url")); - item.setAttribute("_homepage", node.getAttribute("homepage")); - - let title = document.createElement("description"); - if (isFirst) - { - if (Utils.checkLocalePrefixMatch(node.getAttribute("prefixes"))) - title.setAttribute("class", "subscriptionTitle localeMatch"); - else - title.setAttribute("class", "subscriptionTitle"); - title.textContent = node.getAttribute("title") + " (" + node.getAttribute("specialization") + ")"; - mainTitle = variant.getAttribute("title"); - mainURL = variant.getAttribute("url"); - isFirst = false; - } - title.setAttribute("flex", "1"); - title.style.marginLeft = (20 * level) + "px"; - item.appendChild(title); - - let variantTitle = document.createElement("description"); - variantTitle.setAttribute("class", "variant"); - variantTitle.textContent = variant.getAttribute("title"); - variantTitle.setAttribute("crop", "end"); - item.appendChild(variantTitle); - - list.appendChild(item); - } - - let supplements = node.getElementsByTagName("supplements"); - if (supplements.length) - addSubscriptions(list, supplements[0], level + 1, mainTitle, mainURL); - } -} - -function onSelectionChange() -{ - let selectedItem = E("all-subscriptions").selectedItem; - if (!selectedItem) - return; - - setCustomSubscription(selectedItem.getAttribute("_title"), selectedItem.getAttribute("_url"), - selectedItem.getAttribute("_supplementForTitle"), selectedItem.getAttribute("_supplementForURL")); - - updateSubscriptionInfo(); -} - -function setCustomSubscription(title, url, mainSubscriptionTitle, mainSubscriptionURL) -{ - E("title").value = title; - E("location").value = url; - - let messageElement = E("supplementMessage"); - let addMainCheckbox = E("addMainSubscription"); - if (mainSubscriptionURL && !hasSubscription(mainSubscriptionURL)) - { - messageElement.removeAttribute("invisible"); - addMainCheckbox.removeAttribute("invisible"); - - let [, beforeLink, afterLink] = /(.*)\?1\?(.*)/.exec(messageElement.getAttribute("_textTemplate")) || [null, messageElement.getAttribute("_textTemplate"), ""]; - while (messageElement.firstChild) - messageElement.removeChild(messageElement.firstChild); - messageElement.appendChild(document.createTextNode(beforeLink)); - let link = document.createElement("label"); - link.className = "text-link"; - link.setAttribute("tooltiptext", mainSubscriptionURL); - link.addEventListener("click", function() UI.loadInBrowser(mainSubscriptionURL), false); - link.textContent = mainSubscriptionTitle; - messageElement.appendChild(link); - messageElement.appendChild(document.createTextNode(afterLink)); - - addMainCheckbox.value = mainSubscriptionURL; - addMainCheckbox.setAttribute("_mainSubscriptionTitle", mainSubscriptionTitle) - let [label, accesskey] = Utils.splitLabel(addMainCheckbox.getAttribute("_labelTemplate")); - addMainCheckbox.label = label.replace(/\?1\?/g, mainSubscriptionTitle); - addMainCheckbox.accessKey = accesskey; - } - else - { - messageElement.setAttribute("invisible", "true"); - addMainCheckbox.setAttribute("invisible", "true"); - } -} - -function validateURL(url) -{ - if (!url) - return null; - url = url.replace(/^\s+/, "").replace(/\s+$/, ""); - - // Is this a file path? - try { - let file = new FileUtils.File(url); - return Services.io.newFileURI(file).spec; - } catch (e) {} - - // Is this a valid URL? - let uri = Utils.makeURI(url); - if (uri) - return uri.spec; - - return null; -} - -function addSubscription() -{ - let url = E("location").value; - url = validateURL(url); - if (!url) - { - Utils.alert(window, Utils.getString("subscription_invalid_location")); - E("location").focus(); - return false; - } - - let title = E("title").value.replace(/^\s+/, "").replace(/\s+$/, ""); - if (!title) - title = url; - - doAddSubscription(url, title); - - let addMainCheckbox = E("addMainSubscription") - if (addMainCheckbox.getAttribute("invisible") != "true" && addMainCheckbox.checked) - { - let mainSubscriptionTitle = addMainCheckbox.getAttribute("_mainSubscriptionTitle"); - let mainSubscriptionURL = validateURL(addMainCheckbox.value); - if (mainSubscriptionURL) - doAddSubscription(mainSubscriptionURL, mainSubscriptionTitle); - } - - return true; -} - -/** - * Adds a new subscription to the list. - */ -function doAddSubscription(/**String*/ url, /**String*/ title) -{ - let subscription = Subscription.fromURL(url); - if (!subscription) - return; - - FilterStorage.addSubscription(subscription); - - subscription.disabled = false; - subscription.title = title; - - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); -} - -function hasSubscription(url) -{ - return FilterStorage.subscriptions.some(function(subscription) subscription instanceof DownloadableSubscription && subscription.url == url); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.xul b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.xul deleted file mode 100644 index 17f1854..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptionSelection.xul +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of Adblock Plus <http://adblockplus.org/>, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xml-stylesheet href="chrome://adblockplus/skin/subscriptionSelection.css" type="text/css"?> - -<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/subscriptionSelection.dtd"> - -<dialog - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - buttons="accept,cancel" - buttonlabelaccept="&addSubscription.label;" - title="&dialog.title;" - id="abpSubscriptionSelection" - windowtype="abp:subscriptionSelection" - onload="init();" - ondialogaccept="return addSubscription();"> - - <script type="application/x-javascript;version=1.7" src="utils.js"/> - <script type="application/x-javascript;version=1.7" src="subscriptionSelection.js"/> - - <deck id="all-subscriptions-container" selectedIndex="0" flex="1"> - <vbox pack="center"> - <progressmeter id="all-subscriptions-loading" mode="undetermined"/> - </vbox> - <vbox> - <richlistbox id="all-subscriptions" onselect="onSelectionChange()" flex="1"/> - <hbox id="subscriptionInfo" invisible="true"> - <label id="view-list" class="text-link" value="&viewList.label;" onclick="UI.loadInBrowser(this.getAttribute('_url'))"/> - <spacer flex="1"/> - <label id="visit-homepage" class="text-link" value="&visitHomepage.label;" onclick="UI.loadInBrowser(this.getAttribute('_url'))"/> - </hbox> - </vbox> - <vbox pack="center" align="center"> - <description value="&list.download.failed;"/> - <hbox> - <button label="&list.download.retry;" oncommand="reloadSubscriptionList()"/> - <button label="&list.download.website;" oncommand="UI.loadDocLink('subscriptions')"/> - </hbox> - </vbox> - </deck> - - <description id="fromWebText" hidden="true">&fromWeb.description;</description> - - <groupbox id="differentSubscription"> - <label value="&title.label;" control="title"/> - <textbox id="title"/> - - <label value="&location.label;" control="location"/> - <textbox id="location"/> - </groupbox> - - <description id="supplementMessage" invisible="true" _textTemplate="&supplementMessage;"> - &supplementMessage; - <label class="text-link" oncommand="">dummy dummy dummy dummy dummy dummy dummy dummy dummy dummy</label> - </description> - <checkbox id="addMainSubscription" invisible="true" checked="true" _labelTemplate="&addMain.label;" label="&addMain.label;"/> - -</dialog> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptions.xml b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptions.xml deleted file mode 100644 index 6a05d5e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/subscriptions.xml +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of the Adblock Plus web scripts, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<subscriptions> - <subscription title="EasyList" - specialization="English" - url="https://easylist-downloads.adblockplus.org/easylist.txt" - homepage="https://easylist.adblockplus.org/" - prefixes="en" - author="fanboy, MonztA, Famlam, Khrin"/> - <subscription title="ABPindo+EasyList" - specialization="Bahasa Indonesia" - url="https://easylist-downloads.adblockplus.org/abpindo+easylist.txt" - homepage="http://abpindo.blogspot.com/" - prefixes="id" - author="heradhis"/> - <subscription title="Bulgarian list+EasyList" - specialization="българŃки" - url="https://easylist-downloads.adblockplus.org/bulgarian_list+easylist.txt" - homepage="http://stanev.org/abp/" - prefixes="bg" - author="ĐлекŃандър Станев"/> - <subscription title="EasyList China+EasyList" - specialization="ä¸ć–‡" - url="https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt" - homepage="http://abpchina.org/forum/" - prefixes="zh" - author="John, Li, Jiefei"/> - <subscription title="EasyList Czech and Slovak+EasyList" - specialization="ÄŤeština, slovenÄŤina" - url="https://easylist-downloads.adblockplus.org/easylistczechslovak+easylist.txt" - homepage="http://adblocksk.tk/" - prefixes="cs,sk" - author="tomasko126"/> - <subscription title="EasyList Dutch+EasyList" - specialization="Nederlands" - url="https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt" - homepage="https://easylist.adblockplus.org/" - prefixes="nl" - author="Famlam"/> - <subscription title="EasyList Germany+EasyList" - specialization="Deutsch" - url="https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt" - homepage="https://easylist.adblockplus.org/" - prefixes="de" - author="MonztA, Famlam"/> - <subscription title="EasyList Hebrew+EasyList" - specialization="עברית" - url="https://easylist-downloads.adblockplus.org/israellist+easylist.txt" - homepage="https://github.com/AdBlockPlusIsrael/EasyListHebrew" - prefixes="he" - author="BsT"/> - <subscription title="EasyList Italy+EasyList" - specialization="italiano" - url="https://easylist-downloads.adblockplus.org/easylistitaly+easylist.txt" - homepage="https://easylist.adblockplus.org/" - prefixes="it" - author="Khrin"/> - <subscription title="EasyList Lithuania+EasyList" - specialization="lietuviĹł kalba" - url="https://easylist-downloads.adblockplus.org/easylistlithuania+easylist.txt" - homepage="http://margevicius.lt/" - prefixes="lt" - author="Algimantas MargeviÄŤius"/> - <subscription title="Latvian List+EasyList" - specialization="latviešu valoda" - url="https://easylist-downloads.adblockplus.org/latvianlist+easylist.txt" - homepage="http://latvian-list.site11.com/" - prefixes="lv" - author="anonymous74100"/> - <subscription title="Liste AR+Liste FR+EasyList" - specialization="العربية" - url="https://easylist-downloads.adblockplus.org/liste_ar+liste_fr+easylist.txt" - homepage="https://code.google.com/p/liste-ar-adblock/" - prefixes="ar" - author="smed79"/> - <subscription title="Liste FR+EasyList" - specialization="français" - url="https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt" - homepage="http://adblock-listefr.com/" - prefixes="fr" - author="Lian, Crits, smed79"/> - <subscription title="ROList+EasyList" - specialization="românesc" - url="https://easylist-downloads.adblockplus.org/rolist+easylist.txt" - homepage="http://www.zoso.ro/rolist" - prefixes="ro" - author="MenetZ, Zoso"/> - <subscription title="RuAdList+EasyList" - specialization="Ń€ŃŃŃкий, ŃкраїнŃька" - url="https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt" - homepage="https://code.google.com/p/ruadlist/" - prefixes="ru,uk" - author="Lain_13"/> - <subscription title="Wiltteri+EasyList" - specialization="suomi" - url="https://easylist-downloads.adblockplus.org/wiltteri+easylist.txt" - homepage="http://wiltteri.net/" - prefixes="fi" - author="None"/> - </subscriptions>
\ No newline at end of file diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/utils.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/utils.js deleted file mode 100644 index 49f6e7f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/content/ui/utils.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cr = Components.results; -const Cu = Components.utils; - -Cu.import("resource://gre/modules/Services.jsm"); - -/** - * Imports a module from Adblock Plus core. - */ -function require(/**String*/ module) -{ - var result = {}; - result.wrappedJSObject = result; - Services.obs.notifyObservers(result, "adblockplus-require", module); - return result.exports; -} - -var {Policy} = require("contentPolicy"); -var {Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, - BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, ElemHideException} = require("filterClasses"); -var {FilterNotifier} = require("filterNotifier"); -var {FilterStorage, PrivateBrowsing} = require("filterStorage"); -var {IO} = require("io"); -var {defaultMatcher, Matcher, CombinedMatcher} = require("matcher"); -var {Prefs} = require("prefs"); -var {RequestNotifier} = require("requestNotifier"); -var {Subscription, SpecialSubscription, RegularSubscription, - ExternalSubscription, DownloadableSubscription} = require("subscriptionClasses"); -var {Synchronizer} = require("synchronizer"); -var {UI} = require("ui"); -var {Utils} = require("utils"); - -/** - * Shortcut for document.getElementById(id) - */ -function E(id) -{ - return document.getElementById(id); -} - -/** - * Split up all labels into the label and access key portions. - */ -document.addEventListener("DOMContentLoaded", function splitAllLabelsHandler() -{ - document.removeEventListener("DOMContentLoaded", splitAllLabelsHandler, false); - Utils.splitAllLabels(document); -}, false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/composer.dtd deleted file mode 100644 index 54ac458..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "ŮŮŠ &نهاية العنŮان"> -<!ENTITY domainRestriction.label "ŘŞ&قييد النطاق:"> -<!ENTITY collapse.default.no.label "استخدام الاŮتراضي (لا)"> -<!ENTITY firstParty.label "الطر٠&نŮسه Ůقط"> -<!ENTITY preferences.label "&إعرض الŮلاتر المتŮŮرة..."> -<!ENTITY pattern.label "إبŘŘ« عن نمŮذج"> -<!ENTITY thirdParty.label "أطرا٠أ&خرى Ůقط"> -<!ENTITY filter.label "&Ůلتر جديد :"> -<!ENTITY collapse.label "Ř·ŮŮŠ المŘجŮب: (&Řł)"> -<!ENTITY match.warning "النمŮذج الذي أدخلته لم يعد Ů…ŮاŮقا للعنŮان الذي يجب أن ŮŠŘجب ŘŁŮ ŮŠŘłŮ…Ř Ř¨Ů‡ Ůلن يأثر Ůيه"> -<!ENTITY anchor.start.label "ŮŮŠ ب&داية العنŮان"> -<!ENTITY matchCase.label "Ů…&طابقة الŘالة"> -<!ENTITY custom.pattern.label "Ů…Ř®&صص:"> -<!ENTITY unselectAllTypes.label "بدŮن ŘŁŮŠ اختيار"> -<!ENTITY type.whitelist.label "قاعدة است&ثناء"> -<!ENTITY regexp.warning "النمŮذج الذي أدخلته سيتم تعبيره على أنه تعبير العادي، الŮثير من التعابير العادية قد تؤدي إلى بطء ŮŮŠ التصŮŘ. إن لم ŘŞŮن تنŮŮŠ استخدام التعابير العادية، قم بإضاŮŘ© الرمز "*" إلى نهاية النمŮذج"> -<!ENTITY dialog.title "أض٠قاعدة تصŮŮŠŘ© لآدبلŮ٠بلس"> -<!ENTITY basic.label "العرض الأساسي"> -<!ENTITY type.filter.label "&Ůلاتر Řجب"> -<!ENTITY types.label "التطبيق على الأنŮاع:"> -<!ENTITY shortpattern.warning "النمŮذج الذي أدخلته قصير جداً ليتم ŘŞŘسينه Ůقد يبطئ تصŮŘŮ. ŮŠŮ†ŘµŘ Ř¨Ř§Ř®ŘŞŮŠŘ§Ř± قيمة ŘŁŘ·ŮŮ„ لهذا الŮلتر Ů„ŮŮŠ ŮŠŮ‚ŮŮ… آدبلŮ٠بلس بŮلترته بطريقة بŮŮاءة."> -<!ENTITY collapse.yes.label "نعم"> -<!ENTITY anchors.label "قبŮŮ„ النمŮذج Ůقط:"> -<!ENTITY collapse.default.yes.label "استخدام الاŮتراضي (نعم)"> -<!ENTITY domainRestriction.help "استعمل هذا الخيار لتŘŘŻŮŠŘŻ نطاق ŮاŘŘŻ ŘŁŮ ŘŁŮثر Ů…ŮصŮŮ„ بالرمز "|"ŘŚ سيطبق هذا الŮلتر على هذه النطاقات Ůقط. Ůضع الرمز "~" قبل اسم نطاق يعني أن الŮلتر يجب ألا يطبق على ذل٠النطاق"> -<!ENTITY accept.label "إضاŮŘ© Ůلتر"> -<!ENTITY options.label "إعدادات"> -<!ENTITY disabled.warning "آدبلŮ٠بلس معطل Řالياً. ما زال ŮŠŮ…Ůن٠إضاŮŘ© الŮلاتر Ů Ů„Ůن لن ŮŠŘŞŮ… تطبيقهم إلا إذا قمت ب[link]بتŮعيل آدبلŮ٠بلس[/link]."> -<!ENTITY anchor.start.flexible.label "ŮŮŠ ب&داية اسم النطاق"> -<!ENTITY collapse.no.label "لا"> -<!ENTITY selectAllTypes.label "اختيار الŮŮ„"> -<!ENTITY advanced.label "عرض متقدم"> -<!ENTITY pattern.explanation "هذا النمط ŮŠŮ…Ůن أن ŮŠŮŮن ŘŁŮŠ جزء من عنŮان، الرمز (*) يستعمل Ůاختصار. سيتم تطبيق المصŮاة على العناŮين المطابقة للنمط المŘŘŻŘŻ Ůقط."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/filters.dtd deleted file mode 100644 index e7691f6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "سيتم استبدال ŮاŮŘ© ŘąŮامل التصŮŮŠŘ© المخصصة الخاصة ب٠بمŘŘŞŮيات المل٠المŘŘŻŘŻ.هل تريد المتابعه؟"> -<!ENTITY slow.column "&عرض الŮلاتر"> -<!ENTITY enabled.column "Ů…Ř´&غل"> -<!ENTITY subscription.lastDownload.checksumMismatch "ŮŘ´Ů„ ŘŚ عدم تطابق المجمŮŘą الاختباري"> -<!ENTITY noFiltersInGroup.text "المجمŮعة المختارة Ůارغة"> -<!ENTITY subscription.actions.label "الإجراءات"> -<!ENTITY filter.selectAll.label "اختيار الŮŮ„"> -<!ENTITY backupButton.label "ال&نسخ الاŘتياطية Ůالاسترجاع"> -<!ENTITY restore.minVersion.warning "تنبيه : المل٠تم إنشاؤه بŮاسطة نسخة Řديثة لأد بلŮ٠بلس . يجب علي٠تŘŘŻŮŠŘ« ŘŁŘŻ بلŮ٠بلس قبل عمليةالاستعادة من هذا الملŮ. "> -<!ENTITY restore.error "لا ŮŠŮ…Ůن معالجة بينات المل٠، من المŘŘŞŮ…Ů„ أن هذاالمل٠ليس النسخة الاŘتياطية لآد بلŮ٠بلس Řź"> -<!ENTITY sort.ascending.label "ترتيب أبجدي (A > Z) (&ص)"> -<!ENTITY sort.label "ترتي&ب Řسب"> -<!ENTITY subscription.source.label "قائمة الŮلاتر"> -<!ENTITY hitcount.column "ال&ضغطات"> -<!ENTITY noFilters.text "لا ŘŞŮجد لدي٠Ůلاتر مخصصة بعد"> -<!ENTITY backup.custom.title "الŮلاتر المخصصة Ůقط"> -<!ENTITY subscription.external.label "ŘŞŮ… التŘŘŻŮŠŘ« من اضاŮŘ© اخرى"> -<!ENTITY subscription.delete.label "ازالة"> -<!ENTITY noGroupSelected.text "ج"> -<!ENTITY filter.cut.label "قص"> -<!ENTITY restore.default.label "الاسترجاع من النسخة الاŘتياطية ?1?"> -<!ENTITY subscription.lastDownload.inProgress "جاري التŘŮ…ŮŠŮ„"> -<!ENTITY subscriptions.tab.label "اشتراŮات الŮلتر"> -<!ENTITY sort.descending.label "ŘŞ&رتيب أبجدي (Z > A)"> -<!ENTITY filters.remove.warning "ŘŁŘقاً تريد ازالة الŮلاتر المختارة؟"> -<!ENTITY filter.delete.label "ŘذŮ"> -<!ENTITY addSubscriptionAdd.label "اضاŮŘ©"> -<!ENTITY viewMenu.label "عرض"> -<!ENTITY subscription.lastDownload.unknown "غير متاŘ"> -<!ENTITY addSubscriptionCancel.label "الغاء"> -<!ENTITY subscription.enabled.label "Ů…Ůعّل"> -<!ENTITY noSubscriptions.text "لم تض٠أي Ůلتر اشترا٠Řتى الان. لن يصد آد بلُ٠بلَس -ŘŁŮŠ شيء بدŮن هذه الŮلاتر, الرجاء اختيار اشتراŮات الŮلاتر -لاضاŮŘ© ŘŁŘدها"> -<!ENTITY subscription.update.label "ŘŞŘدبث الŮلاتر"> -<!ENTITY dialog.title "ŘŞŮضيلات التصŮŮŠŘ© لآد بلُ٠بلَس"> -<!ENTITY addFilter.label "ŘĄ&ضاŮŘ© Ůلتر"> -<!ENTITY subscription.minVersion.warning "يتطلب هذا الاشترا٠للتصŮŮŠŘ© ŘŁŘŘŻŘ« إصدار آد بلُ٠بلَس ŘŚ يجب التŘŘŻŮŠŘ« إلى الإصدار الأŘŘŻŘ«"> -<!ENTITY subscription.lastDownload.invalidURL "ŮŘ´Ů„ الأمر، ليس عنŮان صŘŮŠŘ"> -<!ENTITY backup.error "Řصل هنا٠خطأ ŮŮŠ إضاŮŘ© الŮلاتر إلى المل٠. ŘŞŘŁŮŘŻ من أن المل٠قابل للتعديل ٠لا ŮŠŘŞŮ… استخدامه ŮŮŠ برنامج آخر."> -<!ENTITY filter.moveUp.label "الى الاعلى"> -<!ENTITY addGroup.label "أضاŮŘ© &مجمŮعة تصŮŮŠŘ©"> -<!ENTITY filter.edit.label "ŘŞŘرير"> -<!ENTITY subscription.showHideFilters.label "اظهار / اخŮاء الŮلاتر"> -<!ENTITY acceptableAds2.label "Ř§Ů„ŘłŮ…Ř§Ř Ů„Ř¨&عض الإعلانات الغير Ů…ŘŞŘ·Ůّلة"> -<!ENTITY addSubscriptionOther.label "إضاŮŘ© اشترا٠آخر"> -<!ENTITY close.label "اغلاق"> -<!ENTITY sort.none.label "غي&ر مرتب"> -<!ENTITY filter.actions.label "ŘŁŮعال الŮلاتر"> -<!ENTITY filter.copy.label "نسخ"> -<!ENTITY filter.moveDown.label "الى الاسŮŮ„"> -<!ENTITY filter.resetHitCounts.label "استرجاع اŘصائيات الاصابات الصŘŮŠŘŘ©"> -<!ENTITY readMore.label "قراءة المزيد"> -<!ENTITY subscription.moveUp.label "الى الاعلى"> -<!ENTITY addSubscription.label "إضا&ŮŘ© اشترا٠إلى Ůلتر"> -<!ENTITY subscription.homepage.label "صŮŘŘ© البداية"> -<!ENTITY backup.complete.title "ŮŮ„ الاشتراŮات ŮالŮلاتر"> -<!ENTITY restore.own.label "الاسترجاع من النسخة الاŘتياطية الذاتية"> -<!ENTITY restore.complete.warning "سيتم استبدال ŮاŮŘ© التŮضيلات الخاصة ب٠ŮŮŠ تصŮŮŠŘ© Ů…ŘŘŞŮيات المل٠المŘŘŻŘŻ. هل تريد المتابعه؟"> -<!ENTITY filters.tab.label "الŮلاتر المخصصة"> -<!ENTITY backup.label "اعمل نسخة اŘتياطية جديدة"> -<!ENTITY find.label "بŘŘ« (&ج)"> -<!ENTITY subscription.moveDown.label "الى الاسŮŮ„"> -<!ENTITY subscription.lastDownload.connectionError "ŮŘ´Ů„ الأمر بسبب ŮŘ´Ů„ التŘŮ…ŮŠŮ„"> -<!ENTITY subscription.lastDownload.success "نجاŘ"> -<!ENTITY subscription.lastDownload.invalidData "ŮŘ´Ů„ الأمر، ليست قائمة Ůلاتر صŘŮŠŘŘ©"> -<!ENTITY filter.paste.label "لصق"> -<!ENTITY subscription.disabledFilters.enable "ŘŞŮعيل الŮلاتر المعطّلة"> -<!ENTITY lasthit.column "&آخر ضغطة"> -<!ENTITY subscription.editTitle.label "ŘŞŘرير العنŮان"> -<!ENTITY subscription.disabledFilters.warning "بعض الŮلاتر ŮŮŠ هذا الاشترا٠معطّلة"> -<!ENTITY filter.column "قانŮن ال&Ůلتر"> -<!ENTITY subscription.lastDownload.label "آخر ŘŞŘŮ…ŮŠŮ„"> -<!ENTITY viewList.label "اظهار القائمة"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/firstRun.properties deleted file mode 100644 index 647ee0c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=ŘاŮظ على خصŮصيت٠عند استخدام المتصŮŘ Ř¨ŘŞŘąŘ·ŮŠŮ„ التجسس Ů ŘŁŘ®ŮŮŠ نŮس٠على الشرŮات الإعلانية اللتي ŘŞŘاŮŮ„ أن تتبع ŮŮ„ ŘŞŘرŮاتŮ. -firstRun_toggle_off=إيقا٠-firstRun_feature_tracking=تعطيل التعقب -firstRun_feature_malware=منع البرامج الضارة -firstRun_title=ŘŞŮ… تثبيت آد بلŮ٠بلس -firstRun_toggle_on=تشغيل -firstRun_acceptableAdsExplanation=نŮŘŻ تشجيع Ů…Ůاقع Ůيب باستخدام الإعلانات ŮاضŘŘ© Ůغير مزعجة. Ůلهذا السبب Ůضعنا <a>مبادئ ŘŞŮجيهية صارمة</a> لتŘŘŻŮŠŘŻ الإعلانات المقبŮلة، Ůالتي تظهر ضمن الإعدادات الاŮتراضية. إذا Ůنت تريد أن تمنع ŮŮ„ الإعلانات ŮŠŮ…Ůن٠<a>تعطيل</a> هذا ŮŮŠ بضع Ř«Ůان. -firstRun_contributor_credits=Ř´Ůر للمساهمين -firstRun_dataCorruptionWarning=هل ŘŞŮاصل هذه الصŮŘŘ© الظهŮر Řź <a>اضغط هنا !</a> -firstRun_acceptableAdsHeadline=سيتم الآن Řجب الإعلانات المزعجة -firstRun_share=أخبر أصدقائ٠-firstRun_share_headline=<a>يقدم لنا ŮŠŘŻ المساعدة</a> ŮŮŠ جعل الإنترنت Ů…Ůاناً ŘŁŮضل -firstRun_feature_social_description=خلص تلقائياً المتصŮŘ Ř§Ů„Ř®Ř§Řµ ب٠من Ůسائل الإعلام الاجتماعية الأزرار، مثل مثل ŘŁŮ„ŮŮŠŘł بŮŮŘŚ التي تظهر ŮŮŠ صŮŘات الŮيب، Ůتتبع السلŮ٠الخاص بŮ. -firstRun_filterlistsReinitializedWarning=Ůيبد٠أن خطأ تسبب ŮŮŠ إزالة جميع Ů‚Ůائم الŮلترات Řجب الإعلانات، ٠لم نتمŮن من استعادة نسخة اŘتياطية. Ůلذل٠اضطررنا إلى إعادة تعيين الإعدادات الخاصة ب٠٠قائمة الŮلاتر للŮضع السابق Ů…Řą "الإعلانات القبŮŮ„". الرجاء التŘقق من Ů‚Ůائم الŮلترات ٠إعدادات "الإعلانات المقبŮلة" ŮŮŠ <a>خيارات آدبلŮ٠بلس</a>. -firstRun_feature_malware_description=إجعل التصŮŘ ŘŁŮثر أماناً بتعطيل Ů…Ůاقع البرامج الضارة المعرŮŮŘ©. -firstRun_features=آد بلŮ٠بلس ŮŠŮ…Ůنه عمل أشياء أخرى غير Řجب الإعلانات -firstRun_donate=تبرع -firstRun_donate_label=دعم مشرŮعنا -firstRun_feature_social=إزالة أزرار المŮاقع الإجتماعية -firstRun_legacySafariWarning=أنت تستخدم نسخة ŮŘŻŮŠŮ…Ř© من متصŮŘ ŘłŮارى Ůهذه النسخة غير Ů…ŘŻŘąŮŮ…Ř© من ŘŁŘŻ بلŮ٠بلس. بŘŮŠŘ« من الممŮن ان لا يعمل بصŮرة صŘŮŠŘŘ© على بعض المŮاقع. نŘن نŮصي بشدة ان ŘŞŮ‚ŮŮ… بالترقية الى النسخة السادسة 6.1.1 للمتصŮŘ ŘłŮارى أ٠النسخة الأŘŘŻŘ« (Ů…ŘŞŮŮر على Mac OS X 10.8 Mountain Lion) أ٠النسخة السابعة 7.0.1 أ٠الأŘŘŻŘ« (Ů…ŘŞŮŮر على OS X 10.9 Mavericks) أ٠تستطيع ان تستخدم ŘŁŘŘŻŘ« إصدارللمتصŮŘ ŮايرŮŮŮس، جŮجل ŮرŮŮ… ŘŁŮ ŘŁŮبرا. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/global.properties deleted file mode 100644 index d626eb5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=لا ŘŞŮجد عناصر للŘجب ŮŮŠ هذه الصŮŘŘ© -action3_tooltip=اضغط لتشغيل/تعطيل آدبلŮ٠بلس -notification_antiadblock_title=ŘĄŘ®Ůاء الرسائل المستهدŮة؟ -type_label_script=ŘłŮريبت -filter_elemhide_nocriteria=لم ŮŠŘŞŮ… ŘŞŘŘŻŮŠŘŻ صيغة للتعر٠على العنصر لإخŮاؤه -blockingGroup_title=Ů‚Ůاعد Řجب الدعاية -whitelisted_tooltip=آدبلŮ٠بلس Ůعال الآن، Ů Ů„Ůنه معطل بالنسبة لهذه الصŮŘŘ© -type_label_stylesheet=جدŮŮ„ الأنماط -blocked_count_tooltip=?1? خارج عن ?2? -type_label_font=الخط -type_label_popup=ناŮذة منبثقة -filter_regexp_tooltip=هذا الŮلتر إما "تعبير منطقي" أ٠أقصر من أن ŮŠŘŞŮ… ŘŞŘسينه. الŮثير من هذه الŮلاتر قد تؤدي إلى بطء ŮŮŠ التصŮŘ -action0_tooltip=اضغط لتظهر القائمة المراŮقة، اضغط بالزر الأŮسط للتشغيل/التعطيل -whitelisted_page=ŘŞŮ… تعطيل آدبلŮ٠بلس ŮŮŠ الصŮŘŘ© الŘالية -remove_group_warning=هل تريد Řقاً إزالة هذه المجمŮعة؟ -action1_tooltip=اضغط Ů„ŮŘŞŘ/إغلاق العناصر المŘجŮبة، اضغط بالزر الأŮسط للتشغيل/ التعطيل -type_label_xmlhttprequest=طلب XML -active_tooltip=إن آدبلŮ٠بلس Ů…Ůعل. هنا٠?1? اشترا٠Ůلتر Ů ?2? Ůلاتر مخصصة قيد الاستعمال -type_label_document=مستند -type_label_object_subrequest=طلب Ůرعي للعنصر -whitelistGroup_title=Ů‚Ůاعد الاستثتاء -disabled_tooltip=آدبلŮ٠بلس معطل الآن -filter_elemhide_duplicate_id=تعري٠ŮاŘŘŻ Ůقط للعنصر الذي سيتم ŘĄŘ®Ůاؤه ŮŠŮ…Ůن أن ŮŠŘŘŻŘŻ -type_label_object=عنصر -action2_tooltip=اضغط Ů„ŮŘŞŘ Ř§Ů„Ř®ŮŠŘ§Ř±Ř§ŘŞŘŚ اضغط بالزر الأŮسط للتشغيل/التعطيل -type_label_subdocument=إطار -clearStats_warning=هذا سيصŮّر ŮŮ„ اŘصاءات الŮلاتر Ůيعطّل تعداد اصابات الŮلاتر. هل تريد التقدم؟ -notification_antiadblock_message=لقد عر٠هذا المŮقع بإظهاره رسائل Ů…Ůجهة إلى المستخدمين. هل تريد أن ŮŠŘ®ŮŮŠ Adblock Plus الرسائل المستهدŮة؟ -blocked_count_addendum=المسمŮŘ Ř¨Ů‡ ?1? ŮالمخŮŮŠ ?2? -subscription_invalid_location=Ů…Ůقع قائمة الŮلتر ليس صŘŮŠŘ ŮعنŮان Ůيب ٠لا Ůأسم مل٠-type_label_image=صŮرة -remove_subscription_warning=هل أنت Řقاً راغب بإزالة هذا الاشتراŮŘź -type_label_other=أخرى -mobile_menu_enable=آدبلŮ٠بلس: ŘŞŮعيل -type_label_media=صŮŘŞ/ŮŮŠŘŻŮŠŮ -mobile_menu_disable_site=آدبلŮ٠بلس: تعطيل على ?1? -elemhideGroup_title=Ů‚Ůاعد اخŮاء العناصر -mobile_menu_enable_site=آدبلŮ٠بلس: ŘŞŮعيل على ?1? -type_label_elemhide=Ů…Ř®ŮŮŠ -newGroup_title=مجمŮعة Ůلترة جديدة -default_dialog_title=آدبلŮ٠بلس diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/overlay.dtd deleted file mode 100644 index 6214cda..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&نعم"> -<!ENTITY notification.button.no "&لا"> -<!ENTITY sync.label "Ů…&زامنة إعدادات آدبلŮ٠بلس"> -<!ENTITY whitelist.site.label "تعطيل ŮŮŠ ?1?"> -<!ENTITY filters.label "ŘŞ&Ůضيلات الŮلتر"> -<!ENTITY disable.label "تعطيل ŮŮŠ جميع الأماŮن"> -<!ENTITY objecttab.title "ŘŁŘجب"> -<!ENTITY objecttab.tooltip "اضغط هنا Ů„Řجب هذا العنصر بـ آدبلŮ٠بلاس"> -<!ENTITY menuitem.label "ŘŞŮضيلات آدبلŮ٠بلس"> -<!ENTITY objecttabs.label "عرض &تبŮيبات Ů„Ůلاش ٠جاŮا"> -<!ENTITY sendReport.label "ال&تبليغ عن خطأ ŮŮŠ هذه الصŮŘŘ©"> -<!ENTITY whitelist.page.label "تعطيل ŮŮŠ هذه الصŮŘŘ© Ůقط"> -<!ENTITY context.image.label "آدبلŮ٠بلس : Řجب صŮرة"> -<!ENTITY counthits.label "تعداد اصابات الŮلترة (&ŘĄ)"> -<!ENTITY opensidebar.label "ŮŘŞŘ Ř§Ů„ŘąŮ†Ř§ŘµŘ± المŘ&جŮبة"> -<!ENTITY notification.button.close "&اغلاق"> -<!ENTITY contribute.label "شار٠ŮŮŠ آد بلُ٠بلَس"> -<!ENTITY toolbarbutton.label "آدبلŮ٠بلس"> -<!ENTITY context.frame.label "آدبلŮ٠بلس : Řجب إطار"> -<!ENTITY blocked.tooltip "العناصر المŘجŮبة ŮŮŠ هذه الصŮŘŘ©"> -<!ENTITY hideplaceholders.label "ا&Ř®Ůاء ماس٠المŮان للعناصر المŮŮ‚ŮŮŘ©"> -<!ENTITY showinstatusbar.label "عرض ŮŮŠ شريط ال&Řالة"> -<!ENTITY sidebar.title "العناصر المŘجŮبة ŮŮŠ الصŮŘŘ© الŘالية"> -<!ENTITY options.label "&خيارات"> -<!ENTITY context.object.label "آدبلŮ٠بلس : Řجب عنصر"> -<!ENTITY context.removeWhitelist.label "آدبلŮ٠بلس : إعادة التŮعيل ŮŮŠ هذه الصŮŘŘ©"> -<!ENTITY filters.tooltip "المصاŮŮŠ الأŮثر نشاط:"> -<!ENTITY closesidebar.label "إغلاق العناصر المŘ&جŮبة"> -<!ENTITY showintoolbar.label "عرض ŮŮŠ &شريط الأدŮات"> -<!ENTITY status.tooltip "الŘالة"> -<!ENTITY context.media.label "آدبلŮ٠بلس : Řجب ŘŁŮŘŻŮŠŮŮŮŠŘŻŮŠŮ"> -<!ENTITY subscription.update.label "ŘŞŘدبث الŮلاتر"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sendReport.dtd deleted file mode 100644 index 5e7f255..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&تراجع"> -<!ENTITY issues.disabledgroups.description "اشتراŮات ŮمجمŮعات الŮلاتر التالية معطلة، ŮŮ„Ůنها قد تسبب أثرا على هذه الصŮŘŘ© رغم ذلŮ"> -<!ENTITY showData.label "إظهار بيانات التقرير"> -<!ENTITY typeSelector.falsePositive.label "آدبلŮ٠بلس ŮŠŘجب &ŘŁŮثر من اللازم"> -<!ENTITY issues.change.description "ŘŞŮ… تغيير إعداداتŮ. الرجاء إعادة ŘŞŘŮ…ŮŠŮ„ الصŮŘŘ© لتجربة التغييرات Ůإرسال تقرير بالمشŮلة إن لم ŘŞŮن قد Řلت بهذه التغييرات"> -<!ENTITY email.label "الب&ريد الإلŮترŮني:"> -<!ENTITY issues.openPreferences.label "ŮŘŞŘ ŘŞŮضيلات الŮلتر"> -<!ENTITY sendPage.confirmation "ŘŞŮ… ŘŮظ تقريرŮ. ستستطيع الŮصŮŮ„ إليه عن طريق العنŮان التالي:"> -<!ENTITY copyLink.label "&نسخ رابط التقرير"> -<!ENTITY issues.nofilters.description "آدبلŮ٠بلس لا يمنع ŘŁŮŠ شيء على هذه الصŮŘŘ©. على الأغلب أن المشŮلة التي ŘŞŮاجهها لا تتعلق بآدبلŮ٠بلس نŮسه."> -<!ENTITY sendPage.knownIssue "على الأغلب أن المشŮلة التي قمت بإرسالها معرŮŮŘ© مسبقاً. للمزيد من المعلŮمات:"> -<!ENTITY typeSelector.other.description "اختر هذا الخيار إن Ůنت تش٠أن المشŮلة بآدبلŮ٠بلس نŮسه Ůليس بأŘŘŻ الŮلاتر"> -<!ENTITY issues.disabledgroups.enable.label "ŘŞŮعيل مجمŮعة اشترا٠Ůلتر"> -<!ENTITY typeWarning.override.label "ŘŁŘŞŮهم Ůأرغب بإر&سال التقرير"> -<!ENTITY issues.disabled.enable.label "ŘŞŮعيل آدبلŮ٠بلس"> -<!ENTITY update.fixed.description "التŘديثات لاشتراŮات الŮلاتر أصلŘŘŞ المشŮلة التي أردت الإبلاغ عنها. رجاء أعد ŘŞŘŘŻŮŠŘ« الصŮŘŘ© Ůأعد المŘاŮلة، اضغط تقرير مرة أخرى إذا بقيت المشŮلة."> -<!ENTITY anonymous.label "تقرير بدŮن هŮŮŠ&Ř©"> -<!ENTITY reloadButton.label "إعادة ŘŞ&ŘŮ…ŮŠŮ„ الصŮŘŘ©"> -<!ENTITY recentReports.clear.label "&Řذ٠ŮŮ„ التقارير"> -<!ENTITY typeSelector.description "هذه الناŮذة ستقŮد٠خلال الخطŮات المطلŮبة لإرسال تبليغ بمشŮلة ŮŮŠ آدبلŮ٠بلس. ŮŮŠ البداية علي٠اختيار نŮŘą المشŮلة التي ŘŞŮاجهها من هذه الصŮŘŘ©"> -<!ENTITY screenshot.remove.label "&Řذ٠المعلŮمات الŘساسة"> -<!ENTITY issues.ownfilters.description "بعض الŮلاتر المطبقة على هذه الصŮŘŘ© من صنع المستخدم. الرجاء إلغاء ŘŞŮعيل هذه الŮلاتر لأنها ربما ŘŞŮŮن سبب المشŮلة"> -<!ENTITY update.inProgress.description "آدبلŮ٠بلس ŮŠŘتاج لتŘŘŻŮŠŘ« اشتراŮات الŮلاتر للتأŮŘŻ من أن المشŮلة لم ŮŠŘŞŮ… إصلاŘها مسبقا. الرجاء الانتظار..."> -<!ENTITY sendPage.retry.label "إرسالة مرة أخرى"> -<!ENTITY data.label "التبل&ŮŠŘş عن بيانات"> -<!ENTITY recentReports.label "تقارير٠المرسلة مؤخرا"> -<!ENTITY typeWarning.description "لقد أشرت إلى رغبت٠بالتبليغ عن Ů…Ř´Ůلة ŮŮŠ آدبلŮ٠بلس نŮسه Ůليس بالŮلاتر. الرجاء الانتباه إلى أنه من الأŮضل التبليغ عن مثل هذه المشاŮŮ„ ŮŮŠ [link]منتدى آدبلŮ٠بلس[/link]. يجب استعمال مبلغ المشاŮŮ„ Ůقط للإضاŮŘ© إلى مناقشة جارية أصلا لأن ŘŁŘداً لن يلاŘظ تقرير٠إن لم تقم بŮضع رابط إليه. سيتم إظهار رابط Ů…Ůلد لتقرير٠بمجرد أن ŘŞŮ‚ŮŮ… بإرسال التقرير."> -<!ENTITY issues.disabled.description "آدبلŮ٠بلس معطل Ůلن ŮŠŮ‚ŮŮ… بŘجب ŘŁŮŠ شيء ŮŮŠ هذه الŘالة"> -<!ENTITY attachExtensions.label "إرŮ&اق قائمة بالإضاŮات الŮعالة Ů…Řą التقرير"> -<!ENTITY issues.nosubscriptions.add.label "إضاŮŘ© اشترا٠Ůلتر"> -<!ENTITY issues.disabledfilters.enable.label "ŘŞŮعيل Ůلتر"> -<!ENTITY issues.override.label "ال&إعدادات معطلة، المتابعة بالتقرير"> -<!ENTITY issues.nosubscriptions.description "يبد٠أن٠لم تشتر٠بأي Ů‚Ůائم Ůلاتر جاهزة Ůالتي ستقŮŮ… بإزالة المŘŘŞŮى الغير من المŮاقع تلقائيا"> -<!ENTITY typeSelector.falsePositive.description "اختر هذا الخيار ان Ůان Ů…ŘŘŞŮى مهم ناقص من الصŮŘŘ© ŘŁŮ Ůانت الصŮŘŘ© تظهر بشŮŮ„ خاطئ أ٠لا تعمل بشŮŮ„ جيد. إن لم ŮŠŮن باستطاعت٠تŘŘŻŮŠŘŻ إن Ůان آدبلŮ٠بلس ه٠سبب المشŮلة جرب تعطيله مؤقتاً"> -<!ENTITY typeSelector.other.label "Ů…Ř´Ůلة ŘŁ&خرى"> -<!ENTITY emailComment.label "نŘن نشجع٠لإدخال بريد ŘĄŮ„ŮترŮني صŘŮŠŘ Ů„ŮŮŠ نتمŮن من الاتصال ب٠إذا Ůانت هنا٠أسئلة."> -<!ENTITY issues.whitelist.remove.label "إعادة ŘŞŮعيل آدبلŮ٠بلس على هذه الصŮŘŘ©"> -<!ENTITY outdatedSubscriptions.description "اشتراŮات الŮلاتر التالية لم ŮŠŘŞŮ… ŘŞŘديثها منذ أسبŮعين على الأقل. الرجاء ŘŞŘŘŻŮŠŘ« هذه الاشتراŮات قبل إرسال تقرير، ربما ŘŞŮ… ŘĄŘµŮ„Ř§Ř Ř§Ů„Ů…Ř´Ůلة مسبقا."> -<!ENTITY dataCollector.description "من Ůضل٠انتظر بضعة دقائق ريثما يجمع آدبلŮ٠بلس المعلŮمات المطلŮبة"> -<!ENTITY sendButton.label "إرسا&Ů„ التقرير"> -<!ENTITY comment.label "التعلي&Ů‚ (اختياري)Ů€"> -<!ENTITY sendPage.errorMessage "ŮŘ´Ů„ إرسال التقرير بسبب الخطأ "?1?". الرجاء التأŮŘŻ من صŘŘ© اتصال٠بالإنترنت Ůإعادة المŘاŮلة. إن استمرت المشŮلة الرجاء طلب المساعدة ŮŮŠ [link]منتديات آدبلŮ٠بلس[/link]"> -<!ENTITY showRecentReports.label "إظهار التقارير المرسلة مؤخرا"> -<!ENTITY commentPage.heading "إدخال تعليق"> -<!ENTITY update.start.label "بداية التŘŘŻŮŠŘ« الان"> -<!ENTITY issues.disabledfilters.description "الŮلاتر التالية معطلة ŮŮ„Ůن قد ŮŠŮŮن لها أثر على هذه الصŮŘŘ© رغم ذلŮ"> -<!ENTITY screenshot.description "نŮŘł الصŮŘŘ© قد تظهر بشŮŮ„ مختل٠لأشخاص مختلŮين. قد يساعدنا Ůهم المشŮلة إن قمت بإرŮاق صŮرة لشاشت٠مع تقريرŮ. ستستطيع Řذ٠المناطق التي ŘŞŘŘŞŮŮŠ معلŮمات Řساسة ŮŮذل٠Ůضع علامة على المناطق التي تظهر بها المشŮلة. Ů„Ůعل ذل٠اضغط الزر المناسب ثم اختر منطقة من الصŮرة باستخدام الŮأرة"> -<!ENTITY screenshot.attach.label "إر&Ůاق صŮرة للصŮŘŘ© Ů…Řą التقرير"> -<!ENTITY issues.whitelist.description "آدبلŮ٠بلس معطل Řاليا على الصŮŘŘ© التي ŘŞŮ‚ŮŮ… بالتبليغ عنها. الرجاء إعادة ŘŞŮعيله Ůإعادة ŘŞŘŮ…ŮŠŮ„ الصŮŘŘ© قبل أن ŘŞŮ‚ŮŮ… بإرسال التقرير للمساعدة ŮŮŠ التŘقق من المشŮلة"> -<!ENTITY typeSelector.falseNegative.label "آدبلŮ٠بلس لا ŮŠŮ‚ŮŮ… بŘجب ŘŁŘŘŻ الإ&علانات"> -<!ENTITY typeSelector.heading "اختر نŮŘą المشŮلة"> -<!ENTITY anonymity.warning "لن نŮŮن قادرين على الرجŮŘą إلي٠٠لن نعطي للتقرير أهمية Ůبيرة."> -<!ENTITY wizard.title "مبلغ المشاŮŮ„"> -<!ENTITY issues.ownfilters.disable.label "تعطيل Ůلتر"> -<!ENTITY commentPage.description "ŮŠŘłŮ…Ř Ů„Ů Ř§Ů„Řقل التالي بإدخال تعليق ليساعدنا ŮŮŠ Ůهم المشŮلة. هذه الخطŮŘ© إختيارية ŮŮ„Ůننا Ů†ŘµŘ Ř¨Ů‡Ř§ إن لم ŘŞŮن المشŮلة ŮاضŘŘ©. ستستطيع أيضا مراجعة بيانات التقرير قبل إرساله"> -<!ENTITY comment.lengthWarning "Ř·ŮŮ„ التعليق يتجاŮز 1000 ŘرŮ. سيتم إرسال ŘŁŮŮ„ 1000 Řر٠Ůقط"> -<!ENTITY typeSelector.falseNegative.description "اختر هذا الخيار إن Ůان ŘŁŘŘŻ الإعلانات ظاهرا رغم أن آدبلŮ٠بلس Ů…Ůعل"> -<!ENTITY sendPage.waitMessage "الرجاء الانتظار ريثما ŮŠŮ‚ŮŮ… آدبلŮ٠بلس بإرسال تقرير"> -<!ENTITY dataCollector.heading "أهلا ب٠ŮŮŠ مبلغ المشاŮŮ„"> -<!ENTITY screenshot.heading "إرŮاق صŮرة للشاشة"> -<!ENTITY sendPage.heading "إرسال التقرير"> -<!ENTITY issues.subscriptionCount.description "يبد٠أن٠مشتر٠ŮŮŠ الŮثير جداً من اشتراŮات الŮلاتر Ůه٠غير Ů…Ůضل لأنه قد ŮŠŮŮن السبب ŮŮŠ المشاŮŮ„ التي تعانيها. نعتذر عن قبŮŮ„ تقرير Ů…Ř´Ůلت٠لأننا لن نستطيع ŘŞŘŘŻŮŠŘŻ الŮلتر الذي يتسبب بالمشŮلة لإبلاغ Ů…Ř·Ůره. الرجاء إزالة جميع الŮلاتر Ůإبقاء الهام جداً منها Ůقط ثم ŘŞŘŁŮŘŻ من ذهاب المشŮلة أ٠لا."> -<!ENTITY screenshot.mark.label "Ůضع علا&Ů…Ř© على المشŮلة"> -<!ENTITY privacyPolicy.label "سياسة الخصŮصية"> -<!ENTITY issues.description "قام آدبلŮ٠بلس بتŘŘŻŮŠŘŻ مشاŮŮ„ بإعدادات٠قد ŘŞŮŮن هي المسؤŮلة عن هذه المشŮلة Ůسيجعل التŘقق من المشŮلة صعباً"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sidebar.dtd deleted file mode 100644 index 78b50fb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "إضاءة ŘŮا٠العنصر"> -<!ENTITY address.label "العنŮان"> -<!ENTITY context.open.label "ŮŘŞŘ ŮŮŠ تبŮيب جديد"> -<!ENTITY type.label "النŮŘą"> -<!ENTITY tooltip.filterSource.label "مصدر الŮلتر:"> -<!ENTITY noitems.label "لا عناصر Ů…ŘجŮبة"> -<!ENTITY filter.label "الŮلتر"> -<!ENTITY tooltip.size.label "الŘجم:"> -<!ENTITY reattach.label "إعادة إرŮاق"> -<!ENTITY search.label "بŘ&Ř«"> -<!ENTITY docDomain.thirdParty "(طر٠خارجي)"> -<!ENTITY filterSource.label "Ůلترة المصدر"> -<!ENTITY tooltip.docDomain.label "مصدر الملŮ:"> -<!ENTITY context.copy.label "نسخ عنŮان العنصر"> -<!ENTITY tooltip.type.label "النŮŘą"> -<!ENTITY context.disablefilter.label "تعطيل الŮلتر ?1?"> -<!ENTITY context.copyFilter.label "نسخ الŮلتر"> -<!ENTITY context.block.label "Řجب هذا العنصر"> -<!ENTITY context.enablefilter.label "إعادة ŘŞŮعيل الŮلتر ?1?"> -<!ENTITY detach.label "Ůصل"> -<!ENTITY whitelisted.label "صŮŘŘ© Ů…ŮŘ«Ůقة"> -<!ENTITY context.disablefilteronsite.label "تعطيل هذا الŮلتر على ?1?"> -<!ENTITY detached.title "آدبلŮ٠بلاس : العناصر المŘجŮبة (المنŮصلة)"> -<!ENTITY docDomain.firstParty "(طر٠داخلي)"> -<!ENTITY tooltip.type.whitelisted "(Ů…ŮŘ«ŮŮ‚)"> -<!ENTITY tooltip.filter.label "الŮلتر الŮعال"> -<!ENTITY tooltip.filter.disabled "(معطل)"> -<!ENTITY context.editfilter.label "تعديل الŮلتر الŮعال"> -<!ENTITY tooltip.type.blocked "(Ů…ŘجŮب)"> -<!ENTITY size.label "الŘجم"> -<!ENTITY context.whitelist.label "إضاŮŘ© قانŮن استثنائي إلى هذا العنصر"> -<!ENTITY context.selectAll.label "اختيار الŮŮ„"> -<!ENTITY state.label "الŘالة"> -<!ENTITY docDomain.label "مصدر الملŮ"> -<!ENTITY tooltip.address.label "العنŮان"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/subscriptionSelection.dtd deleted file mode 100644 index 7c4938b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ar/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "إضاŮŘ© ا&شترا٠الŮلتر "?1?" أيضا"> -<!ENTITY list.download.failed "ŮŘ´Ů„ آدبلŮ٠بلس ŮŮŠ جلب قائمة الاشتراŮات"> -<!ENTITY list.download.retry "إعادة المŘاŮلة"> -<!ENTITY title.label "&عنŮان الاشتراŮ"> -<!ENTITY list.download.website "عرض المŮقع"> -<!ENTITY supplementMessage "اشترا٠الŮلتر هذا يجب أن يستخدم Ů…Řą اشترا٠الŮلتر "?1?" Ůالذي لم تستعمله بعد"> -<!ENTITY viewList.label "عرض Ůلاتر"> -<!ENTITY visitHomepage.label "زيارة الصŮŘŘ© الرئيسية"> -<!ENTITY addSubscription.label "إضاŮŘ© اشتراŮ"> -<!ENTITY dialog.title "أهلاً ب٠ŮŮŠ آدبلŮ٠بلس"> -<!ENTITY location.label "&Ů…Ůقع قائمة الŮلاتر"> -<!ENTITY fromWeb.description "الرجاء التأŮŘŻ من رغبت٠ŮŮŠ إضاŮŘ© اشترا٠الŮلتر هذا. ŮŠŮ…Ůن٠أن تغير عنŮان ŘŁŮ Ů…Ůقع الاشترا٠قبل اضاŮته."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/composer.dtd deleted file mode 100644 index 1d185af..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "в края на адре&Ńа"> -<!ENTITY domainRestriction.label "Ог&раничаване на домейн:"> -<!ENTITY collapse.default.no.label "Ползвай по подразбиране(не)"> -<!ENTITY firstParty.label "Първа Ńтрана Ńам&Đľ"> -<!ENTITY preferences.label "Покажи ŃŃŠ&щеŃтвŃващите филтри.."> -<!ENTITY pattern.label "ТърŃете модел"> -<!ENTITY thirdParty.label "&Трети Ńтрани Ńамо"> -<!ENTITY filter.label "Нов Филт&ŃŠŃ€:"> -<!ENTITY collapse.label "Свиван&е на блокирани:"> -<!ENTITY match.warning "Моделът, който Ńте въвели, вече не отговаря на адреŃа за блокиране/белия ŃпиŃŃŠĐş и няма да въздейŃтвa Đ˛ŃŠŃ€Ń…Ń Đ˝ĐµĐłĐľ."> -<!ENTITY anchor.start.label "в на&чалото на адреŃа"> -<!ENTITY matchCase.label "Съвпадение на ре&гиŃтъра"> -<!ENTITY custom.pattern.label "&Đзбрани:"> -<!ENTITY unselectAllTypes.label "Не избирай нищо"> -<!ENTITY type.whitelist.label "ĐĐ·&ключение от правилото"> -<!ENTITY regexp.warning "Моделът който Ńте въвели ще бъде интерпретиран като регŃлярен израз, които не могат да бъдат ефективно обработени Ń Adblock ĐźĐ»ŃŽŃ Đ¸ могат да забавят твоят браŃĐ·ŃŠŃ€. Đко не възнамерявате да използвате регŃлярен израз, добавете звездичка (*) към края на модела."> -<!ENTITY dialog.title "Добавяне на Adblock Plus филтър правило"> -<!ENTITY basic.label "ĐžŃновен изглед"> -<!ENTITY type.filter.label "&Блокиране на филтър"> -<!ENTITY types.label "Прилага за типове:"> -<!ENTITY shortpattern.warning "Моделът които Ńте въвели е твърде кратък, за да бъде оптимизиран и може да забави ваŃия браŃĐ·ŃŠŃ€. Препоръчително е да изберете по-дълъг низ за този филтър, за да позволи Adblock ĐźĐ»ŃŽŃ Đ·Đ° по-ефективна обработка на филтъра."> -<!ENTITY collapse.yes.label "Да"> -<!ENTITY anchors.label "Приемам Ńамо модел:"> -<!ENTITY collapse.default.yes.label "Ползвай по подразбиране(да)"> -<!ENTITY domainRestriction.help "Đзползвайте тази опция, за да зададете една или повече облаŃти, разделени Ń Đ±Đ°Ń€ линия (|). Филтърът ще Ńе прилага Ńамо за избран(и) домейн(и). Ртилда (~) пред името на домейна Ńе поŃочва, че филтърът не Ńе прилага в този домейн."> -<!ENTITY accept.label "Добави Филтър"> -<!ENTITY options.label "НаŃтройки"> -<!ENTITY disabled.warning "Adblock ĐźĐ»ŃŽŃ Đµ изключена. Đ’Ńе още можете да добавите филтри, но те няма да Ńе прилагат, ĐľŃвен ако не [link]Включите Adblock ПлюŃ[/link]."> -<!ENTITY anchor.start.flexible.label "в на&чалото на домейн името"> -<!ENTITY collapse.no.label "Не"> -<!ENTITY selectAllTypes.label "Đзбери вŃички"> -<!ENTITY advanced.label "РазŃирен изглед"> -<!ENTITY pattern.explanation "Моделът може да бъде чаŃŃ‚ от адреŃ; звездичка (*) да дейŃтва като замеŃтващи Ńимволи. Филтърът ще Ńе прилага Ńамо за адреŃите, отговарящи на предвидения образец."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/filters.dtd deleted file mode 100644 index 28cd5e4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Đ’Ńички ваŃи потребителŃки филтри ще бъде заменен от Ńъдържанието на избрания файл. ĐŃкате ли да продължите?"> -<!ENTITY slow.column "Пока&жи филтри"> -<!ENTITY enabled.column "&Включен"> -<!ENTITY subscription.lastDownload.checksumMismatch "ГреŃка, неŃъвпадение на контролната ŃŃма"> -<!ENTITY noFiltersInGroup.text "Đзбраната грŃпа е празна"> -<!ENTITY subscription.actions.label "ДейŃтвия"> -<!ENTITY filter.selectAll.label "Đзбери Đ’Ńички"> -<!ENTITY backupButton.label "Đрхи&вирай и Đ’ŃŠĐ·Ńтанови"> -<!ENTITY restore.minVersion.warning "Внимание: файлът е Ńъздаден Ń ĐżĐľ-нова верŃия на Adblock Plus. Трябва да обновите Đ´Đľ поŃледната верŃия на Adblock Plus, преди да възŃтановите от този файл."> -<!ENTITY restore.error "Файлът не може да Ńе обработи или не е Ń Đ´Đ°Đ˝Đ˝Đ¸, може би Това не е Adblock Plus архивния файл?"> -<!ENTITY sort.ascending.label "&Đ > ĐŻ Ńортиране"> -<!ENTITY sort.label "&Сортирай по"> -<!ENTITY subscription.source.label "Филтър ЛиŃŃ‚"> -<!ENTITY hitcount.column "ПоŃе&щения"> -<!ENTITY noFilters.text "Ти Đ˝ŃŹĐĽĐ°Ń Đ˝Đ¸Ń‚Đľ един ŃобŃтвен филтър още."> -<!ENTITY backup.custom.title "Лични филтри Ńамо"> -<!ENTITY subscription.external.label "Ъпдейтнат от Đ´Ń€Ńга добавка"> -<!ENTITY subscription.delete.label "Đзтрий"> -<!ENTITY noGroupSelected.text "Вие трябва да изберете филтър грŃпа, преди тези филтри да бъдат показани."> -<!ENTITY filter.cut.label "Đзрежи"> -<!ENTITY restore.default.label "Đ’ŃŠĐ·Ńтанови архив от ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Đзтегляне..."> -<!ENTITY subscriptions.tab.label "Đбонаменти за Филтър"> -<!ENTITY sort.descending.label "&ĐŻ > РСортиране"> -<!ENTITY filters.remove.warning "НаиŃтина ли иŃĐşĐ°Ń Đ´Đ° Đ¸Đ·Ń‚Ń€Đ¸ĐµŃ Đ˛Ńички избрани филтри?"> -<!ENTITY filter.delete.label "Đзтрий"> -<!ENTITY addSubscriptionAdd.label "Добави"> -<!ENTITY viewMenu.label "Đзглед"> -<!ENTITY subscription.lastDownload.unknown "Няма данни"> -<!ENTITY addSubscriptionCancel.label "Откажи"> -<!ENTITY subscription.enabled.label "Включен"> -<!ENTITY noSubscriptions.text "Ти не Ńи добавил никакъв абонамент за филтри. Adblock Plus няма да блокира - нищо без филтри, моля избери "Добави филтър абонаменти" за да - Đ´ĐľĐ±Đ°Đ˛Đ¸Ń Đ˝ŃŹĐşĐ°ĐşĐ˛Đ¸."> -<!ENTITY subscription.update.label "Обнови филтрите"> -<!ENTITY dialog.title "Adblock Plus НаŃтройки за филтър"> -<!ENTITY addFilter.label "Доб&ави Филтър"> -<!ENTITY subscription.minVersion.warning "Този филтър абонамент изиŃква по-нова верŃия на Adblock Plus, трябва да обновите Đ´Đľ поŃледната верŃия на Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "ГреŃка, невалиден адреŃ"> -<!ENTITY backup.error "Възникна греŃка при пиŃане на филтри за файла.Уверете Ńе, че файлът не е защитени или Ńе използва от Đ´Ń€Ńго приложение."> -<!ENTITY filter.moveUp.label "ПремеŃти нагоре"> -<!ENTITY addGroup.label "Добави филтър &грŃпа"> -<!ENTITY filter.edit.label "Промени"> -<!ENTITY subscription.showHideFilters.label "Покажи/Ńкрий филтрите"> -<!ENTITY acceptableAds2.label "ĐžŃтавете няко&и не натрапчиви реклами"> -<!ENTITY addSubscriptionOther.label "Добави Đ´Ń€ŃĐł абонамент"> -<!ENTITY close.label "Затвори"> -<!ENTITY sort.none.label "&НеŃортирани"> -<!ENTITY filter.actions.label "Филтър дейŃтвия"> -<!ENTITY filter.copy.label "Копирай"> -<!ENTITY filter.moveDown.label "ПремеŃти надоло"> -<!ENTITY filter.resetHitCounts.label "РеŃтарт на Хит СтатиŃтиката"> -<!ENTITY readMore.label "Прочети повече"> -<!ENTITY subscription.moveUp.label "ПремеŃти нагоре"> -<!ENTITY addSubscription.label "Добави абонамент за &филтър"> -<!ENTITY subscription.homepage.label "Лична Страница"> -<!ENTITY backup.complete.title "Đ’Ńички филтри и абонаменти"> -<!ENTITY restore.own.label "Đ’ŃŠĐ·Ńтанови Ńвой архив"> -<!ENTITY restore.complete.warning "Đ’Ńички ваŃи филтър предпочитания ще бъдат заменени от Ńъдържанието на избрания файл. ĐŃкате ли да продължите?"> -<!ENTITY filters.tab.label "ПотребителŃки филтри"> -<!ENTITY backup.label "Направи нов архив"> -<!ENTITY find.label "&Намери"> -<!ENTITY subscription.moveDown.label "ПремеŃти надоло"> -<!ENTITY subscription.lastDownload.connectionError "ГреŃка, неŃŃпеŃно изтегляне"> -<!ENTITY subscription.lastDownload.success "ĐŁŃпеŃно"> -<!ENTITY subscription.lastDownload.invalidData "ГреŃка, невалиден ŃпиŃŃŠĐş Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸"> -<!ENTITY filter.paste.label "ПоŃтави"> -<!ENTITY subscription.disabledFilters.enable "РазреŃи забранените филтри"> -<!ENTITY lasthit.column "&ПоŃледни ПоŃещения"> -<!ENTITY subscription.editTitle.label "Промени титла"> -<!ENTITY subscription.disabledFilters.warning "Някой филтри в този абонамент Ńа забранени."> -<!ENTITY filter.column "&Филтър правило"> -<!ENTITY subscription.lastDownload.label "ПоŃледно изтеглен:"> -<!ENTITY viewList.label "Виж лиŃŃ‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/firstRun.properties deleted file mode 100644 index bd93321..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Сърфирайте инкогнито като забраните проŃледяването ви - Ńъщо така прикрива ваŃите дейŃтвия от рекламните компании, които биха проŃледили вŃеки Đ˛Đ°Ń Ń…ĐľĐ´. -firstRun_toggle_off=Стоп -firstRun_feature_tracking=Забраняване на проŃледяването -firstRun_feature_malware=Блокиране на зловреден ŃофтŃер -firstRun_title=Adblock Plus е инŃталиран -firstRun_toggle_on=Старт -firstRun_acceptableAdsExplanation=Бихме иŃкали да наŃърчаваме Ńеб-Ńайтовете да използват обикновена, ненатрапчива реклама. Ето защо ние ŃŃтановихме <a>Ńтроги наŃоки</a>, където можете да видите кои Ńа приемливите реклами, които Ńе показват по подразбиране. Đко вŃе още иŃкате да блокирате вŃички реклами, можете да ги <a>забраните</a> в рамките на няколко ŃекŃнди. -firstRun_contributor_credits=СътрŃдници -firstRun_dataCorruptionWarning=Страницата продължава да Ńе показва? <a>Щракнете Ń‚ŃĐş!</a> -firstRun_acceptableAdsHeadline=ДоŃадните реклами ще бъдат блокирани -firstRun_share=Споделете Ń ĐżŃ€Đ¸ŃŹŃ‚ĐµĐ»Đ¸Ń‚Đµ Ńи -firstRun_share_headline=<a>Помогнете ни</a> и направете мрежата по-добро ĐĽŃŹŃто -firstRun_feature_social_description=Đвтоматично премахва от Ńтраниците в браŃзъра бŃтоните на Ńоциалните медии, като например тези на Facebook, които Ńе появяват на някои Ńеб Ńтраници и проŃледяват ваŃето поведение. -firstRun_filterlistsReinitializedWarning=Đзглежда, че има проблем, който е изтрил вŃички филтри и не Ńме в ŃŃŠŃтояние да ги възŃтановим от архив. Поради тази причина Ńе наложи да Đ˝Ńлираме ВаŃите филтри и наŃтройките за Приемливи реклами. Моля, проверете ВаŃите ŃпиŃъци Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸, както и наŃтройките за Приемливи реклами в <a>Adblock ĐźĐ»ŃŽŃ ĐľĐżŃ†Đ¸Đ¸</a>. -firstRun_feature_malware_description=Направете Ńвоето Ńърфиране в Đнтернет по-безопаŃно чрез блокиране на зловредни домейни. -firstRun_features=Adblock Plus може и прави повече от блокиране на реклами -firstRun_donate=дарение -firstRun_donate_label=Подкрепете наŃия проект -firstRun_feature_social=Премахвай бŃтоните на Ńоциалните мрежи -firstRun_legacySafariWarning=Вие използвате Ńтара верŃия на Safari, която не Ńе поддържа от Adblock Plus. Đ’ ŃĐ»Ńчая Adblock Plus може да не работи коректно, като е възможно да Ńе нарŃŃи работата на потребителите в някои Ńеб Ńайтове. Ние Ńилно препоръчваме да актŃализирате Safari към верŃия 6 или по-виŃока (Đ´ĐľŃтъпна за Mac OS X 10.8 Mountain Lion и по-виŃока), или да използвате поŃледната верŃия на Mozilla Firefox, Google Chrome или Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/global.properties deleted file mode 100644 index ab8ac88..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Няма блокирани позиции на текŃщата Ńтраница -action3_tooltip=Щракнете за включване/изключване Adblock ПлюŃ. -notification_antiadblock_title=Скриване на ŃмиŃлените Ńъобщения? -type_label_script=Ńкрипт -filter_elemhide_nocriteria=Не е зададен критерий за разпознаване на елемент за Ńкриване -blockingGroup_title=Правила за Блокиране -whitelisted_tooltip=Adblock ĐźĐ»ŃŽŃ Đµ изключен на текŃщата Ńтраница. -type_label_stylesheet=Đ¸Đ˝Ń‚ĐµŃ€Ń„ĐµĐąŃ -blocked_count_tooltip=?1? от ?2? -type_label_font=Ńрифт -type_label_popup=изŃкачащ прозорец -filter_regexp_tooltip=Този филтър или е регŃлярен израз или е твърде кратък, за да Ńе оптимизира. Твърде много от тези филтри могат да забавят Ńърфирането. -action0_tooltip=Щракнете за да извадите контекŃтното меню, Ńредно щракване за включване/изключване. -whitelisted_page=Adblock ĐźĐ»ŃŽŃ Đ±ĐµŃе изключен за текŃщата Ńтраница -remove_group_warning=НаиŃтина ли иŃкате да премахнете тази грŃпа? -action1_tooltip=Щракнете за да отворите/затворите блокираните параграфи, Ńредно щракване за включване/изключване. -type_label_xmlhttprequest=XML заявка -active_tooltip=Adblock ĐźĐ»ŃŽŃ Đµ включен, ?1? абонамента за филтриране и ?2? потребителŃки филтър(а) Ńе използват. -type_label_document=докŃмент -type_label_object_subrequest=обект под заявка -whitelistGroup_title=Đзключение от правилата -disabled_tooltip=Adblock ĐźĐ»ŃŽŃ Đµ изключен. -filter_elemhide_duplicate_id=Може да бъде задаван Ńамо един ID на елемент за Ńкриване -type_label_object=обект -action2_tooltip=Кликнете за да отворите предпочитанията, Ńредно щракване за включване/изключване. -type_label_subdocument=рамка -clearStats_warning=Това ще реŃтартира цялата ŃтатиŃтика и ще забрани броенето на филтрите. ĐŃкате ли да продължите? -notification_antiadblock_message=Този Ńайт е извеŃтен Ń ĐżĐľĐşĐ°Đ·Đ˛Đ°Đ˝Đµ на ŃмиŃлени поŃлания от потребителите на Adblock Plus. ĐŃкате ли Adblock Plus, да Ńкрие тези ŃмиŃлени Ńъобщения? -blocked_count_addendum=(Ńъщо разреŃени:?1?, Ńкрити: ?2?) -subscription_invalid_location=МеŃтоположението на ŃпиŃъка Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸ или не е валиден URL или не е валидно името на файла. -type_label_image=картинка -remove_subscription_warning=НаиŃтина ли иŃкате да премахнете този абонамент? -type_label_other=Đ´Ń€Ńги -mobile_menu_enable=ABP: Включване -type_label_media=аŃдио/видео -mobile_menu_disable_site=ABP: Đзключване на ?1? -elemhideGroup_title=Правила за Ńкриване на елементи -mobile_menu_enable_site=ABP: Включване на ?1? -type_label_elemhide=Ńкрит -newGroup_title=Нова грŃпа Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸ -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/overlay.dtd deleted file mode 100644 index b1efd15..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Да"> -<!ENTITY notification.button.no "&Не"> -<!ENTITY sync.label "Син&хронизирай НаŃтройките за Adblock Plus"> -<!ENTITY whitelist.site.label "Забрани на ?1?"> -<!ENTITY filters.label "&Филтър НаŃтройки"> -<!ENTITY disable.label "Забрани навŃякъде"> -<!ENTITY objecttab.title "Блокирай"> -<!ENTITY objecttab.tooltip "Щракни Ń‚ŃĐş за да Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń Ń‚ĐľĐ·Đ¸ обект ŃŃŠŃ Adblock ПлюŃ"> -<!ENTITY menuitem.label "Adblock ĐźĐ»ŃŽŃ &НаŃтройки"> -<!ENTITY objecttabs.label "&Покажи разделите за Đ¤Đ»Đ°Ń Đ¸ Java"> -<!ENTITY sendReport.label "&Докладване на проблем на тази Ńтраница"> -<!ENTITY whitelist.page.label "Забрани на тази Ńтраница Ńамо"> -<!ENTITY context.image.label "Adblock ПлюŃ: Блокирани Картинки"> -<!ENTITY counthits.label "Бройте &филтър хитове"> -<!ENTITY opensidebar.label "Отвори &блокирани предмети"> -<!ENTITY notification.button.close "&Затвори"> -<!ENTITY contribute.label "Помогнете на Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock ПлюŃ"> -<!ENTITY context.frame.label "Adblock ПлюŃ:Блокирани Фреймове"> -<!ENTITY blocked.tooltip "Блокирани предмети от тази Ńтраница:"> -<!ENTITY hideplaceholders.label "Скрий контейнери на блокираните еле&менти"> -<!ENTITY showinstatusbar.label "Покажи в лен&тата на ŃŃŠŃтоянието"> -<!ENTITY sidebar.title "Блокирани предмети на тази Ńтраница"> -<!ENTITY options.label "&НаŃтройки"> -<!ENTITY context.object.label "Adblock ПлюŃ:Блокирани Обекти"> -<!ENTITY context.removeWhitelist.label "Adblock ПлюŃ: ĐźŃŃни за тази Ńтраница"> -<!ENTITY filters.tooltip "Най активни филтри:"> -<!ENTITY closesidebar.label "Затвори &блокирани предмети"> -<!ENTITY showintoolbar.label "Пок&ажи в лентата Ń Đ¸Đ˝ŃтрŃменти"> -<!ENTITY status.tooltip "СтатŃŃ:"> -<!ENTITY context.media.label "Adblock ПлюŃ: Блокирани аŃдио/видео"> -<!ENTITY subscription.update.label "Обнови филтрите"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sendReport.dtd deleted file mode 100644 index 080b8ba..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sendReport.dtd +++ /dev/null @@ -1,69 +0,0 @@ -<!ENTITY screenshot.undo.label "&Отмяна"> -<!ENTITY issues.disabledgroups.description "Следните абонаменти за филтри/грŃпи филтри Ńа изключени. Đ’Ńе пак биха могли да имат ефект Đ˛ŃŠŃ€Ń…Ń Ń‚Đ°Đ·Đ¸ Ńтраница:"> -<!ENTITY showData.label "Показване на докладваните данни"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus блокира твърде &много"> -<!ENTITY issues.change.description "ВаŃата конфигŃрация е променена. Моля, презаредете Ńтраницата, за да теŃтвате промените и да предŃтавите доклад, ако въпроŃŃŠŃ‚ не бъде Ńреден от промените."> -<!ENTITY email.label "&Ел.Поща:"> -<!ENTITY issues.openPreferences.label "Отвори наŃтройките за филтър"> -<!ENTITY sendPage.confirmation "Отчетът Ви е запазен. Можете да го намерите на Ńледния адреŃ:"> -<!ENTITY copyLink.label "&Копиране линк на доклада"> -<!ENTITY issues.nofilters.description "Adblock ĐźĐ»ŃŽŃ Đ˝Đµ блокира нищо на текŃщата Ńтраница. Наблюдавания проблем най-вероятно - не е Ńвързан Ń Adblock ПлюŃ."> -<!ENTITY sendPage.knownIssue "Докладваният от Đ’Đ°Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽ вероятно вече е извеŃтен. За повече информация:"> -<!ENTITY typeSelector.other.description "Đзберете тази наŃтройка, ако подозирате, че проблемът е Ń Adblock Plus, а не Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸Ń‚Đµ ĐĽŃ."> -<!ENTITY issues.disabledgroups.enable.label "Включване на абонамент за филтър / грŃпа филтри"> -<!ENTITY typeWarning.override.label "Разбирам и вŃе &пак иŃкам да предŃтавя доклада въпреки вŃичко"> -<!ENTITY issues.disabled.enable.label "Включи Adblock ПлюŃ"> -<!ENTITY update.fixed.description "ĐктŃализациите на ваŃите абонаменти за филтри вероятно Ńа реŃили въпроŃа който Ńте докладвали. Моля, презаредете Ńтраницата и опитайте отново, Докладвайте отново, ако проблемът вŃе още го има."> -<!ENTITY anonymous.label "&Đнонимно изпращане на информация"> -<!ENTITY reloadButton.label "Пре&зареждане на Ńтраницата"> -<!ENTITY recentReports.clear.label "Премах&ни вŃички доклади"> -<!ENTITY typeSelector.description "Този прозорец ще ви преведе през Ńтъпките, необходими за подаване на доклад за Adblock - ĐźĐ»ŃŽŃ ĐżŃ€ĐľĐ±Đ»ĐµĐĽ. Първо, моля изберете вида на проблема, който Ńте Ńрещнали на тази Ńтраница:"> -<!ENTITY screenshot.remove.label "Đź&ремахване на чŃвŃтвителните данни"> -<!ENTITY issues.ownfilters.description "Някои от филтрите, приложени на тази Ńтраница Ńа дефинирани от потребителя. Моля, деактивирайте филтрите, които може да причиняват проблема:"> -<!ENTITY update.inProgress.description "Adblock Plus трябва да актŃализира ваŃите абонаменти за филтри и да Ńе Ńвери, че въпроŃŃŠŃ‚ не е реŃен вече. Моля, изчакайте.."> -<!ENTITY sendPage.retry.label "Đзпращане отново"> -<!ENTITY data.label "&Докладвани данни:"> -<!ENTITY recentReports.label "ВаŃите наŃкоро предŃтавените доклади"> -<!ENTITY typeWarning.description "ПоŃочили Ńте, че иŃкате да Ńъобщите за общ проблем Ń Adblock Plus, а не проблем Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸Ń‚Đµ. Моля, обърнете внимание, че тези въпроŃи Ńа най-докладвани във [link]форŃма на Adblock Plus[/link]. Трябва да използвате докладчика на проблеми за допълване на ŃъщеŃтвŃваща диŃĐşŃŃия, тъй като никой няма да забележи ваŃия доклад, докато не предоŃтавите връзка към него. Đвтоматично генерирана връзка ще бъде предоŃтавена Ńлед предоŃтавянето на доклада."> -<!ENTITY issues.disabled.description "Adblock Plus е изключен - няма да блокира нищо в неговото текŃщо ŃŃŠŃтояние."> -<!ENTITY attachExtensions.label "Прилагане на ŃпиŃŃŠĐş Ń Đ°ĐşŃ‚Đ¸Đ˛Đ˝Đ¸Ń‚Đµ раз&Ńирения към доклада в ŃĐ»Ńчай че добавката причинява проблема"> -<!ENTITY issues.nosubscriptions.add.label "Добавяне на абонамент за филтър"> -<!ENTITY issues.disabledfilters.enable.label "Включи филтъра"> -<!ENTITY issues.override.label "КонфигŃрацията е &правилна, продължаване Ń Đ´ĐľĐşĐ»Đ°Đ´Đ°"> -<!ENTITY issues.nosubscriptions.description "Đзглежда не Ńте абонирани за някои от предварително направени ŃпиŃъци Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸, които автоматично премахват нежеланото Ńъдържание от Ńтраниците."> -<!ENTITY typeSelector.falsePositive.description "Đзберете тази наŃтройка, ако на Ńтраницата липŃва важно Ńъдържание, показана е некоректно или не Ń„Ńнкционира правилно. Може да определите дали Adblock ĐźĐ»ŃŽŃ Đµ причина за проблема, като временно го изключите."> -<!ENTITY typeSelector.other.label "Др&ŃĐł проблем"> -<!ENTITY emailComment.label "Ние ви препоръчваме да въведете валиден емайл адреŃ, така че да можем да Ńе Ńвържем, ако има въпроŃи отноŃно ваŃия отчет. Това ще ни позволи да Ńподелим ваŃия ĐżŃ€Đ¸Đ˝ĐľŃ Đ¸ да е Ń ĐżĐľ виŃок приоритет."> -<!ENTITY issues.whitelist.remove.label "Повторно активиране на Adblock Plus на тази Ńтраница"> -<!ENTITY outdatedSubscriptions.description "Този филтър абонамент не е бил актŃализиран най-малко две Ńедмици. Моля, актŃализирайте тези абонаменти, преди да изпратите доклад въпроŃŃŠŃ‚ може да е реŃен вече и да не Ńе налага да докладвате."> -<!ENTITY dataCollector.description "Моля, изчакайте няколко ŃекŃнди, докато Adblock Plus Ńъбере необходимите данни."> -<!ENTITY sendButton.label "ĐĐ·&пращане на доклада"> -<!ENTITY comment.label "&Коментар (по избор)"> -<!ENTITY sendPage.errorMessage "Опитът за изпращане на доклада Ńе провали Ń ĐşĐľĐ´ на греŃка "?1?". Моля, Ńверете Ńе, че Ńте Ńвързани Ń Đ¸Đ˝Ń‚ĐµŃ€Đ˝ĐµŃ‚ и повторете. Đко проблемът продължи, моля потърŃете помощ в [link]форŃма на Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Покажи наŃкоро предŃтавените доклади"> -<!ENTITY commentPage.heading "Въвеждане на коментар"> -<!ENTITY update.start.label "Започни обновяването Ńега"> -<!ENTITY issues.disabledfilters.description "Следните филтри Ńа изключени, но въпреки това може да окажат влияние на тази Ńтраница:"> -<!ENTITY screenshot.description "Същата Ńтраница може да изглежда различно за различни хора. Това може да ни помогне да разберем проблема, ако прикачите Ńнимка на екрана към ваŃия доклад. Можете да премахнете чаŃтите, Ńъдържащи чŃвŃтвителна информация, както и зони, в които проблемът Ńе забелязва. За да направите това натиŃнете Ńъответния бŃтон и изберете чаŃтта от изображението Ń ĐĽĐ¸Ńката."> -<!ENTITY screenshot.attach.label "Пр&икачване на изображение на Ńтраницата към доклада"> -<!ENTITY issues.whitelist.description "Đ’ момента Adblock Plus е изключен за Ńтраницата, която докладвате. Моля активирайте повторно - и презаредете Ńтраницата преди да изпратите доклада за да помогнете за откриване на проблема."> -<!ENTITY typeSelector.falseNegative.label "Adblock ĐźĐ»ŃŽŃ Đ˝Đµ блоки&ра реклама"> -<!ENTITY typeSelector.heading "Đзберете тип на проблема"> -<!ENTITY anonymity.warning "Ние няма да бъдем в ŃŃŠŃтояние да Ńе върнем при теб и вероятно ще Ńвалим приоритета на на доклада най доло."> -<!ENTITY wizard.title "Докладчик за проблеми"> -<!ENTITY issues.ownfilters.disable.label "Đзключване на филтър"> -<!ENTITY commentPage.description "Полето по-Đ´ĐľĐ»Ń Đ˛Đ¸ позволява да въведете коментар да ни помогне да разберем проблема. Тази Ńтъпка не е задължителна, но Ńе препоръчва, ако проблемът не е очевиден. Можете Ńъщо да прегледате данните от доклада, преди да е изпратен."> -<!ENTITY comment.lengthWarning "Дължината на коментара надвиŃава 1000 знака. Само първите 1000 знака ще бъдат изпратени."> -<!ENTITY typeSelector.falseNegative.description "Đзберете тази наŃтройка, ако Ńе показва реклама въпреки, че Adblock ĐźĐ»ŃŽŃ Đµ включен."> -<!ENTITY sendPage.waitMessage "Моля, изчакайте докато Adblock Plus предŃтавя ВаŃия отчет."> -<!ENTITY dataCollector.heading "Добре Đ´ĐľŃли в докладчика за проблеми"> -<!ENTITY screenshot.heading "Прикачете екранна Ńнимка"> -<!ENTITY sendPage.heading "Đзпрати доклада"> -<!ENTITY issues.subscriptionCount.description "Đзглежда, че Ńте Ńе абонирали за твърде много филтри. Тази наŃтройка не Ńе препоръчва, защото ще направи вероятноŃтта от проблеми много по-виŃоки. Също така не може да приемем отчета за греŃки защото не е ŃŹŃно кой филтър прави проблеми и кой автор трябва да предприеме дейŃтвия. Моля, премахнете вŃички и ĐľŃтавете Ńамо най важният филтър и пробвайте дали проблемът вŃе още ŃъщеŃтвŃва."> -<!ENTITY screenshot.mark.label "&Маркиране на проблема"> -<!ENTITY privacyPolicy.label "Защита на личните данни"> -<!ENTITY issues.description "Adblock Plus откри проблеми Ń Đ˛Đ°Ńата конфигŃрация, които може да причиняват - този проблем или ще затрŃдни доклада за разŃледването."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sidebar.dtd deleted file mode 100644 index 12441c0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Рамки на Ń„Đ»Đ°Ń ĐżŃ€ĐľĐ´Ńкти"> -<!ENTITY address.label "ĐдреŃ"> -<!ENTITY context.open.label "Отвори в нов под прозорец"> -<!ENTITY type.label "Тип"> -<!ENTITY tooltip.filterSource.label "Đзточник на филтъра"> -<!ENTITY noitems.label "Няма блокирани продŃкти"> -<!ENTITY filter.label "Филтър"> -<!ENTITY tooltip.size.label "Размер:"> -<!ENTITY reattach.label "Прикачи отново"> -<!ENTITY search.label "&ТърŃи:"> -<!ENTITY docDomain.thirdParty "(трета Ńтрана)"> -<!ENTITY filterSource.label "Филтър източник"> -<!ENTITY tooltip.docDomain.label "Đзточник на докŃмента:"> -<!ENTITY context.copy.label "Копирай адреŃа на продŃкта"> -<!ENTITY tooltip.type.label "Тип:"> -<!ENTITY context.disablefilter.label "Да изключа ли филтър ?1?"> -<!ENTITY context.copyFilter.label "Копирай филтърът"> -<!ENTITY context.block.label "Блокирай този продŃкт"> -<!ENTITY context.enablefilter.label "Повторно включване на филтъра ?1?"> -<!ENTITY detach.label "Отдели"> -<!ENTITY whitelisted.label "РазреŃена Ńтранница"> -<!ENTITY context.disablefilteronsite.label "Да изключа ли този филтър за ?1?"> -<!ENTITY detached.title "Adblock Plus: Блокирани продŃкти (отделени)"> -<!ENTITY docDomain.firstParty "ĐžŃновни"> -<!ENTITY tooltip.type.whitelisted "(разреŃен)"> -<!ENTITY tooltip.filter.label "Филтър в Ńила:"> -<!ENTITY tooltip.filter.disabled "(изключен)"> -<!ENTITY context.editfilter.label "Редактиране на филтъра в Ńила:"> -<!ENTITY tooltip.type.blocked "(блокиран)"> -<!ENTITY size.label "Размер"> -<!ENTITY context.whitelist.label "Добави изключващо правило за продŃкта"> -<!ENTITY context.selectAll.label "Đзбери вŃички"> -<!ENTITY state.label "СъŃтояние"> -<!ENTITY docDomain.label "Đзточник на докŃмента"> -<!ENTITY tooltip.address.label "ĐдреŃ:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/subscriptionSelection.dtd deleted file mode 100644 index df9a1b7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/bg/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "До&бави абонамент за филтър "?1?""> -<!ENTITY list.download.failed "Adblock ĐźĐ»ŃŽŃ Đ˝Đµ ŃŃпя да изтегли ŃпиŃŃŠĐş Ń Đ°Đ±ĐľĐ˝Đ°ĐĽĐµĐ˝Ń‚Đ¸."> -<!ENTITY list.download.retry "Опитайте отново"> -<!ENTITY title.label "&Заглавие на абонамента:"> -<!ENTITY list.download.website "Покажи Ńайтът"> -<!ENTITY supplementMessage "Този абонамент за филтърът е предназначен да Ńе използва Ń ĐżĐľĐ´ĐżĐ¸Ńка за филтри "?1?" Които не използвате вŃе още."> -<!ENTITY viewList.label "Покажи филтрите"> -<!ENTITY visitHomepage.label "ПоŃетете началната Ńтраница"> -<!ENTITY addSubscription.label "Добави абонамент"> -<!ENTITY dialog.title "Добавяне на абонамент за филтъра на Adblock ПлюŃ"> -<!ENTITY location.label "&МеŃтоположение на ŃпиŃъка Ń Ń„Đ¸Đ»Ń‚Ń€Đ¸Ń‚Đµ:"> -<!ENTITY fromWeb.description "Моля, потвърдете, че желаете да добавите този абонамент за този филтър. Може да промените заглавието или меŃтоположението преди да го добавите."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/composer.dtd deleted file mode 100644 index 28e8a16..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "al &final de l'adreça"> -<!ENTITY domainRestriction.label "Restringeix al &domini:"> -<!ENTITY collapse.default.no.label "Utilitza per defecte (no)"> -<!ENTITY firstParty.label "N&omĂ©s originals"> -<!ENTITY preferences.label "Mo&stra els filtres existents..."> -<!ENTITY pattern.label "Cerca un patrĂł"> -<!ENTITY thirdParty.label "NomĂ©s de &tercers"> -<!ENTITY filter.label "Filtre &nou:"> -<!ENTITY collapse.label "Co&l·lapsa els bloquejats:"> -<!ENTITY match.warning "El patrĂł inserit no concorda amb l'adreça a blocar/acceptar i quedarĂ sense efecte."> -<!ENTITY anchor.start.label "&al començament de l'adreça"> -<!ENTITY matchCase.label "Diferen&cia majĂşscules i minĂşscules"> -<!ENTITY custom.pattern.label "&Personalitza:"> -<!ENTITY unselectAllTypes.label "No seleccionis res"> -<!ENTITY type.whitelist.label "E&xcepciĂł"> -<!ENTITY regexp.warning "El patrĂł inserit serĂ interpretat com una expressiĂł regular, la qual no podrĂ ser processada per Adblock Plus i podria comportar una ralentitzaciĂł de la vostra experiència de navegaciĂł. Si no volĂeu emprar una expressiĂł regular, afegiu el sĂmbol (*) al final del patrĂł."> -<!ENTITY dialog.title "Afegeix una regla de filtre de l'Adblock Plus"> -<!ENTITY basic.label "VisualitzaciĂł bĂ sica"> -<!ENTITY type.filter.label "Filtre de &bloqueig"> -<!ENTITY types.label "Aplicar als tipus:"> -<!ENTITY shortpattern.warning "El patrĂł inserit Ă©s massa curt per optimitzar-lo. L'abĂşs de patrons ralentitzaran la navegaciĂł. Es recomana una cadena de text mĂ©s llarga per aquest filtre."> -<!ENTITY collapse.yes.label "SĂ"> -<!ENTITY anchors.label "Accepta nomĂ©s un patrĂł:"> -<!ENTITY collapse.default.yes.label "Utilitza per defecte (sĂ)"> -<!ENTITY domainRestriction.help "Indica un o mĂ©s dominis separats pel sĂmbol «|». El filtre nomĂ©s s'aplicarĂ a aquests dominis. El sĂmbol «~» abans d'un nom de domini indica que el filtre no s'ha d'aplicar en aquest domini."> -<!ENTITY accept.label "Afegeix un filtre"> -<!ENTITY options.label "Opcions"> -<!ENTITY disabled.warning "L'Adblock Plus estĂ actualment desactivat. Encara podeu afegir filtres però no s'aplicaran fins que no [link]activeu l'Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "al començament del &nom de domini"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Selecciona-ho tot"> -<!ENTITY advanced.label "VisualitzaciĂł avançada"> -<!ENTITY pattern.explanation "El patrĂł pot ser qualsevol part de l'adreça. L'asterisc (*) serveix de comodĂ. El filtre nomĂ©s serĂ aplicat a adreces que concordin amb el filtre."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/filters.dtd deleted file mode 100644 index 541ba03..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Tots els filtres personalitzats serĂ n substituits per els continguts del fitxer seleccionat. Vols seguir endavant?"> -<!ENTITY slow.column "Filtres d'aminorament (&w)"> -<!ENTITY enabled.column "Activat (&n)"> -<!ENTITY subscription.lastDownload.checksumMismatch "Error en la suma de verificaciĂł"> -<!ENTITY noFiltersInGroup.text "El grup seleccionat estĂ buit."> -<!ENTITY subscription.actions.label "Accions"> -<!ENTITY filter.selectAll.label "Selecciona-ho tot"> -<!ENTITY backupButton.label "Fe&s una còpia de seguretat i restaura"> -<!ENTITY restore.minVersion.warning "AtenciĂł : El fitxer ha estat creat amb una versiĂł mĂ©s nova d'AdBlock Plus. Hauries d'actualitzar a l'Ăşltima versiĂł de l'Adblock Plus abans de restaurar des d'aquest fitxer."> -<!ENTITY restore.error "Les dades del fitxer no s'han pogut processar, potser aquest no Ă©s un fitxer de còpia de Seguretat de l'AdBlock Plus ?"> -<!ENTITY sort.ascending.label "Ordre &A > Z"> -<!ENTITY sort.label "&Ordena per"> -<!ENTITY subscription.source.label "Llista de filtres"> -<!ENTITY hitcount.column "Encerts (&H)"> -<!ENTITY noFilters.text "Encara no teniu cap filtre personalitzat."> -<!ENTITY backup.custom.title "NomĂ©s els filtres personalitzats"> -<!ENTITY subscription.external.label "Actualitzat per altre extensiĂł"> -<!ENTITY subscription.delete.label "Suprimeix"> -<!ENTITY noGroupSelected.text "Necessites seleccionar un grup de filtres abans que aquests filtres puguin ser mostrats."> -<!ENTITY filter.cut.label "Retalla"> -<!ENTITY restore.default.label "Restaura de la còpia de seguretat del ?1?"> -<!ENTITY subscription.lastDownload.inProgress "S'estĂ baixant..."> -<!ENTITY subscriptions.tab.label "SubscripciĂł de filtres"> -<!ENTITY sort.descending.label "Ordre &Z > A"> -<!ENTITY filters.remove.warning "Segur que vols eliminar tots els filtres seleccionats ?"> -<!ENTITY filter.delete.label "Suprimeix"> -<!ENTITY addSubscriptionAdd.label "Afegeix"> -<!ENTITY viewMenu.label "Visualitza"> -<!ENTITY subscription.lastDownload.unknown "N/D"> -<!ENTITY addSubscriptionCancel.label "Cancel·la"> -<!ENTITY subscription.enabled.label "Activat"> -<!ENTITY noSubscriptions.text "Encara no heu afegit cap subscripciĂł de filtre; l'AdBlock Plus no blocarĂ res sense filtres. Utilitzeu l'opciĂł "Afegeix el filtre" per afegir-ne."> -<!ENTITY subscription.update.label "Actualitza els Filtres"> -<!ENTITY dialog.title "Preferències de filtre de l'AdBlock Plus"> -<!ENTITY addFilter.label "Afegeix un filt&re"> -<!ENTITY subscription.minVersion.warning "Aquesta subscripciĂł de filtre requereix una versiĂł recent. Heu d'actualitzar l'Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Error, no Ă©s una adreça vĂ lida"> -<!ENTITY backup.error "Hi ha hagut un error escribint els filtres al fitxer. Assegura't que el fitxer no s'hagi escrit protegint-lo o que l'estigui fent servir una altra aplicaciĂł."> -<!ENTITY filter.moveUp.label "Mou amunt"> -<!ENTITY addGroup.label "Afe&geix un grup de filtres"> -<!ENTITY filter.edit.label "Edita"> -<!ENTITY subscription.showHideFilters.label "Mostra/amaga els filtres"> -<!ENTITY acceptableAds2.label "Permet la publ&icitat no intrusiva"> -<!ENTITY addSubscriptionOther.label "Afegeix altre subscripciĂł de filtre"> -<!ENTITY close.label "Tanca"> -<!ENTITY sort.none.label "&Desordenat"> -<!ENTITY filter.actions.label "Accions de filtre"> -<!ENTITY filter.copy.label "Copia"> -<!ENTITY filter.moveDown.label "Mou avall"> -<!ENTITY filter.resetHitCounts.label "Reinicia les estadĂstiques"> -<!ENTITY readMore.label "MĂ©s informaciĂł"> -<!ENTITY subscription.moveUp.label "Mou amunt"> -<!ENTITY addSubscription.label "A&fegeix el filtre"> -<!ENTITY subscription.homepage.label "PĂ gina d'inici"> -<!ENTITY backup.complete.title "Tots els filtres i subscripcions"> -<!ENTITY restore.own.label "Restaura d'una còpia de seguretat propia"> -<!ENTITY restore.complete.warning "Totes les preferències de filtre serĂ n substituides amb els continguts del fitxer seleccionat. Vols seguir endavant?"> -<!ENTITY filters.tab.label "Filtres personalitzats"> -<!ENTITY backup.label "Crea una nova còpia de seguretat"> -<!ENTITY find.label "&Cerca"> -<!ENTITY subscription.moveDown.label "Mou avall"> -<!ENTITY subscription.lastDownload.connectionError "Error en la baixada"> -<!ENTITY subscription.lastDownload.success "Correcte"> -<!ENTITY subscription.lastDownload.invalidData "Error, no Ă©s una llista vĂ lida de filtres"> -<!ENTITY filter.paste.label "Enganxa"> -<!ENTITY subscription.disabledFilters.enable "Habilita els filtres"> -<!ENTITY lasthit.column "U&ltim encert"> -<!ENTITY subscription.editTitle.label "Edita el tĂtol"> -<!ENTITY subscription.disabledFilters.warning "Alguns filtres d'aquesta subscripciĂł no estan habilitats."> -<!ENTITY filter.column "Regla de &filtre"> -<!ENTITY subscription.lastDownload.label "Darrera baixada"> -<!ENTITY viewList.label "Mostra la llista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/firstRun.properties deleted file mode 100644 index 2eac957..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navegar de forma privada mitjançant la desactivaciĂł del seguiment – amagant el vostre rastre a les companyies de publicitat, que us seguirien encara mĂ©s. -firstRun_toggle_off=DESACTIVAT -firstRun_feature_tracking=Desactivar el seguiment -firstRun_feature_malware=Bloqueig de programari maliciĂłs -firstRun_title=S'ha instal·lat l'AdBlock Plus -firstRun_toggle_on=ACTIVAT -firstRun_acceptableAdsExplanation=Ens agradaria encoratjar els llocs web a utlitzar d'ara en endavant, publicitat no intrusiva. És per això que hem establert uns <a>patrons estrictes</a> per identificar els anuncis acceptables, els quals es mostren a sota de les preferències per defecte. Si encara voleu bloquejar tots els anuncis podeu <a>desactivar</a> això en pocs segons. -firstRun_contributor_credits=Crèdits de contribuciĂł -firstRun_dataCorruptionWarning=Es segueix mostrant aquesta pĂ gina? <a>Cliqueu aquĂ!</a> -firstRun_acceptableAdsHeadline=Els anuncis molestos ara es bloquejaran -firstRun_share=Digueu-ho a les vostres amistats -firstRun_share_headline=<a>DĂłneu-nos un cop de mĂ </a> al fer la xarxa un lloc millor -firstRun_feature_social_description=Eliminar automĂ ticament de la vostra experència de navegaciĂł els botons socials, com el m'agrada de Facebook, que apareixen a les pĂ gines web i segueixen el vostre comportament. -firstRun_filterlistsReinitializedWarning=Sembla que un problema ha causat que tots els filtres es suprimeixin, però hem pogut restaurar una còpia de seguretat. Durant aquest procĂ©s, tambĂ© s'ha restaurat els filtres i la configuraciĂł d'anuncis acceptable. Verifiqueu que la configuraciĂł actual Ă©s la desitjada, mitjançant les <a>«Preferències del filtre»</a> de l'Adblock Plus. -firstRun_feature_malware_description=Fer la vostra navegaciĂł mĂ©s segura bloquejant els dominis de malware coneguts. -firstRun_features=Adblock Plus pot fer molt mĂ©s que bloquejar anuncis -firstRun_donate=Feu un donatiu -firstRun_donate_label=Recolzeu el nostre projecte -firstRun_feature_social=Eliminar els botons de xarxes socials -firstRun_legacySafariWarning=EstĂ s usant una versiĂł antiga de Safari que no es troba suportada per Adblock Plus. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/global.properties deleted file mode 100644 index 1145e04..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=La pĂ gina actual no contĂ© elements bloquejables -action3_tooltip=Clica per activar/desactivar Adblock Plus -notification_antiadblock_title=Amagar missatges dirigits? -type_label_script=script -filter_elemhide_nocriteria=Cap criteri especificat per reconeixes l'element a amagar -blockingGroup_title=Regles de blocatge d'anuncis -whitelisted_tooltip=Adblock Plus estĂ actiu però desactivat en la pĂ gina actual -type_label_stylesheet=llista d'estils -blocked_count_tooltip=?1? de ?2? -type_label_font=Tipus de lletra -type_label_popup=finestra emergent -filter_regexp_tooltip=El filtre Ă©s una expressiĂł regular o Ă©s massa curt per ser optimitzat. Massa d'aquests filtres poden alentir la vostra navegaciĂł. -action0_tooltip=Clica per activar el menu contextual, clica amb el botĂł del mig per activar/desactivar. -whitelisted_page=Adblock Plus ha estat desactivat per la pĂ gina actual -remove_group_warning=Segur que vols eliminar aquest grup ? -action1_tooltip=Clica per obrir/tancar els elements bloquejables, clica amb el botĂł del mig per activar/desactivar. -type_label_xmlhttprequest=PeticiĂł XML -active_tooltip=Adblock Plus estĂ habilitat, ?1? subscripciĂł (ns) de filtre i ?2? filtre personalitzats(s) en Ăşs. -type_label_document=document -type_label_object_subrequest=SubpeticiĂł d'objecte -whitelistGroup_title=Regles d'excepciĂł -disabled_tooltip=Adblock Plus estĂ desactivat -filter_elemhide_duplicate_id=NomĂ©s un identificador de l'element pot ser especificat -type_label_object=objecte -action2_tooltip=Clica per obrir les preferències, clica amb el botĂł del mig per activar/desactivar. -type_label_subdocument=marc -clearStats_warning=Això reiniciarĂ totes les estadĂstiques d'Ăşs del filtre.Vols procedir? -notification_antiadblock_message=Aquesta web ha sigut coneguda per mostrar missatges dirigits a usuaris de Adblock Plus. Vols que Adblock Plus amague els missatges dirigits? -blocked_count_addendum=(tambĂ© a la llista blanca: ?1?, amagats: ?2?) -subscription_invalid_location=La llista de filtres no Ă©s una URL vĂ lida ni un nom de fitxer vĂ lid. -type_label_image=imatge -remove_subscription_warning=Realment desitges eliminar aquesta subscripciĂł? -type_label_other=Un altre -mobile_menu_enable=ABP : Activa -type_label_media=Ă udio/vĂdeo -mobile_menu_disable_site=ABP : Desactiva a ?1? -elemhideGroup_title=Regles d'amagar elements -mobile_menu_enable_site=ABP : Activa a ?1? -type_label_elemhide=amagat -newGroup_title=Nou grup de filtres -default_dialog_title=AdBlock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/overlay.dtd deleted file mode 100644 index fc91e9e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Si"> -<!ENTITY notification.button.no "&No"> -<!ENTITY sync.label "&Sincronitza la configuraciĂł de l'AdBlock Plus"> -<!ENTITY whitelist.site.label "Inhabilita l'Adblock Plus a ?1?"> -<!ENTITY filters.label "&Preferències del filtre"> -<!ENTITY disable.label "Inhabilita a tots els llocs"> -<!ENTITY objecttab.title "Bloca"> -<!ENTITY objecttab.tooltip "Feu clic aquĂ per blocar aquest objecte amb l'Adblock Plus"> -<!ENTITY menuitem.label "Preferències de l'Ad&block Plus"> -<!ENTITY objecttabs.label "Mostra les &pestanyes a Flash i Java"> -<!ENTITY sendReport.label "&Informa sobre la pĂ gina"> -<!ENTITY whitelist.page.label "Inhabilita nomĂ©s en aquesta pĂ gina"> -<!ENTITY context.image.label "Adblock Plus: bloca la imatge"> -<!ENTITY counthits.label "Compta els cops que &funciona el filtre"> -<!ENTITY opensidebar.label "Obre &elements blocables"> -<!ENTITY notification.button.close "&Tancar"> -<!ENTITY contribute.label "Contribueix a l'Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: bloca el marc"> -<!ENTITY blocked.tooltip "Elements bloquejats en aquesta pĂ gina:"> -<!ENTITY hideplaceholders.label "Amaga &les localitzacions dels elements blocats"> -<!ENTITY showinstatusbar.label "Mostra a la barra d'&estat"> -<!ENTITY sidebar.title "Elements blocables a la pĂ gina actual"> -<!ENTITY options.label "&Opcions"> -<!ENTITY context.object.label "Adblock Plus: bloca l'objecte"> -<!ENTITY context.removeWhitelist.label "Adblock Plus:Rehabilita aquesta pĂ gina"> -<!ENTITY filters.tooltip "Filtres mĂ©s actius:"> -<!ENTITY closesidebar.label "Tanca els elements &blocables"> -<!ENTITY showintoolbar.label "Mostra a la &barra d'eines"> -<!ENTITY status.tooltip "Estat:"> -<!ENTITY context.media.label "Adblock Plus: Bloqueja Ă udio/vĂdeo"> -<!ENTITY subscription.update.label "Actualitza els Filtres"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sendReport.dtd deleted file mode 100644 index 049bb72..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Des&fĂ©s"> -<!ENTITY issues.disabledgroups.description "Els segĂĽents filtres/grups de filtres als quals estĂ s subscrits estan deshabilitats, tot i aixĂ podrien tenir algun efecte en aquesta pĂ gina:"> -<!ENTITY showData.label "Mostra les dades de l'informe"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus estĂ bloquejant &massa"> -<!ENTITY issues.change.description "Si us plau, torna a carregar la pĂ gina per provar els canvis i envia un informe si el problema no ha estat resolt per les alteracions."> -<!ENTITY email.label "&Email:"> -<!ENTITY issues.openPreferences.label "Obre les preferències del filtre"> -<!ENTITY sendPage.confirmation "El teu informe ha estat guardat. Pots accedir a la segĂĽent adreça:"> -<!ENTITY copyLink.label "&Copia enllaç de l'informe"> -<!ENTITY issues.nofilters.description "L'Adblock Plus no estĂ filtrant res a la pĂ gina actual. Segurament el problema no estĂ relacionat amb l'Adblock Plus."> -<!ENTITY sendPage.knownIssue "El problema del que informes probablement ja es coneix. MĂ©s informaciĂł:"> -<!ENTITY typeSelector.other.description "Selecciona aquesta opciĂł si creieu que hi ha un error amb l'Adblock Plus que no sigui amb els filtres."> -<!ENTITY issues.disabledgroups.enable.label "Activa filtre de subscripciĂł / filtre de grup"> -<!ENTITY typeWarning.override.label "Ho entenc i vull pre&sentar l'informe de totes maneres"> -<!ENTITY issues.disabled.enable.label "Habilita l'Adblock Plus"> -<!ENTITY update.fixed.description "L'error s'ha solucionat actualitzant els filtres existents. Torneu a carregar la pĂ gina i verifiqueu novament. Si el problema persisteix, envieu altre avĂs."> -<!ENTITY anonymous.label "Envi&ament de forma anònima"> -<!ENTITY reloadButton.label "Ac&tualitza pĂ gina"> -<!ENTITY recentReports.clear.label "&Suprimeix tots els informes"> -<!ENTITY typeSelector.description "Aquest assistent us mostrarĂ com enviar un AvĂs d'error de l'Adblock Plus. Primer seleccioneu el tipus d'error que heu trobat:"> -<!ENTITY screenshot.remove.label "Sup&rimeix dades privades"> -<!ENTITY issues.ownfilters.description "Els filtres aplicats en aquesta pĂ gina poden ser definits per l'usuari/a. Inhabiliteu els filtres que poden causar el problema:"> -<!ENTITY update.inProgress.description "L'Adblock Plus ha d'actualitzar les subscripcions dels filtres per verificar si es pot resoldre d'aquesta manera. Espereu..."> -<!ENTITY sendPage.retry.label "Envia de nou"> -<!ENTITY data.label "Informe &de dades:"> -<!ENTITY recentReports.label "Informes que heu enviat"> -<!ENTITY typeWarning.description "Has indicat que desitges informar d'algun problema general amb Adblock Plus mĂ©s que d'un problema amb els filtres. Tingues en compte que aquests informes sĂłn els mĂ©s complets al [link]fòrum d'Adblock Plus[/link]. NomĂ©s hauries d'usar l'avisador a menys que vulguis completar una discussiĂł existent, ja que ningĂş es donarĂ compte del teu informe si no se'ls proporciona l'enllaç al mateix. L'enllaç generat automĂ ticament es concedirĂ desprĂ©s de la presentaciĂł de l'informe."> -<!ENTITY issues.disabled.description "S'ha inhabilitat l'Adblock Plus i no filtrarĂ la publicitat no desitjada."> -<!ENTITY attachExtensions.label "Adjunta una llista d'e&xtensions actives per a l'informe en cas de que el conflicte amb les extensions sigui la causa del problema"> -<!ENTITY issues.nosubscriptions.add.label "Afegeix la subscripciĂł a un filtre"> -<!ENTITY issues.disabledfilters.enable.label "Activa el filtre"> -<!ENTITY issues.override.label "La &configuraciĂł Ă©s correcta, continua amb l'informe"> -<!ENTITY issues.nosubscriptions.description "No us heu subscrit a cap llista de filtres prefabricats per filtrar automĂ ticament el contingut no desitjat de les pĂ gines web."> -<!ENTITY typeSelector.falsePositive.description "Seleccioneu aquesta opciĂł si a la pĂ gina manca contingut important, es mostra de forma incorrecta funciona deficientment. Podeu determinar si l'Adblock Plus Ă©s la causa del problema inhabilitant-lo temporalment."> -<!ENTITY typeSelector.other.label "Altr&es errors"> -<!ENTITY emailComment.label "Recomanem donar una adreça de correu electrònic vĂ lida per tal de contactar amb vostè si sorgeixen algunes preguntes sobre el vostre informe. TambĂ© ens permetrĂ reconĂ©ixer les vostres contribucions i prioritzar-les."> -<!ENTITY issues.whitelist.remove.label "Torna a habilitar l'Adblock Plus en aquesta pĂ gina"> -<!ENTITY outdatedSubscriptions.description "Aquestes subscripcions a filtres no s'han actualitzat en un mĂnim de dues setmanes i estan obsoletes. Actualitzeu-les abans d'informar d'un error, atès que ja podria estar solucionat."> -<!ENTITY dataCollector.description "L'Adblock Plus estĂ analitzant les dades. Espereu..."> -<!ENTITY sendButton.label "E&nvia informe"> -<!ENTITY comment.label "&Comentari (opcional):"> -<!ENTITY sendPage.errorMessage "Ha fallat un intent d'enviar l'informe d'error amb codi d'error "?1?". Assegura't que estĂ s connectat/da a Internet i torna a intentar-ho. Si el problema persisteix, si us plau demana assistència al [link]fòrum d'Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Mostra els informes enviats recentment"> -<!ENTITY commentPage.heading "Escriu un comentari"> -<!ENTITY update.start.label "Actualitza ara"> -<!ENTITY issues.disabledfilters.description "Els segĂĽents filtres estan desactivats, però, podrien tenir un efecte en aquesta pĂ gina:"> -<!ENTITY screenshot.description "La mateixa pĂ gina pot ser diferent per a diferents persones. Pot ajudar-nos a entendre el problema si s'adjunta una captura de pantalla per a l'informe. Pots treure seccions que contenen informaciĂł confidencial, aixĂ com remarcar les zones on el problema Ă©s evident. Per a això fes clic al botĂł corresponent i selecciona una secciĂł de la imatge amb el ratolĂ."> -<!ENTITY screenshot.attach.label "Adjun&ta una imatge de la pĂ gina amb l'informe"> -<!ENTITY issues.whitelist.description "L'Adblock Plus estĂ desactivat per aquesta pĂ gina. Habiliteu-lo i verifiqueu si el problema continua abans d'enviar un informe d'error per aquest motiu."> -<!ENTITY typeSelector.falseNegative.label "L'&Adblock Plus no bloca un anunci"> -<!ENTITY typeSelector.heading "Seleccioneu el tipus d'incidència"> -<!ENTITY anonymity.warning "No podrem contestar-lo i segurament, no el prioritzarem."> -<!ENTITY wizard.title "Avisador d'errors"> -<!ENTITY issues.ownfilters.disable.label "inhabilita el filtre"> -<!ENTITY commentPage.description "El camp de text a continuaciĂł et permet introduir un comentari que ens ajudi a comprendre el problema.Aquest pas Ă©s opcional però es recomana si el problema no Ă©s obvi.TambĂ© pots revisar les dades de l'informe abans d'enviar."> -<!ENTITY comment.lengthWarning "La longitud del teu comentari supera els 1000 carĂ cters. NomĂ©s s'enviaran els primers 1000 carĂ cters."> -<!ENTITY typeSelector.falseNegative.description "Seleccioneu aquesta opciĂł si un anunci es mostra tot i que l'Adblock Plus estĂ habilitat."> -<!ENTITY sendPage.waitMessage "Espera mentre Adblock Plus fa l'enviament del teu informe."> -<!ENTITY dataCollector.heading "Us donem la benvinguda a l'Avisador d'errors"> -<!ENTITY screenshot.heading "Adjunta Captura de pantalla"> -<!ENTITY sendPage.heading "Envia informe"> -<!ENTITY issues.subscriptionCount.description "Ja us heu subscrit a molts filtres. Aquesta configuraciĂł no Ă©s recomanable perquè podria augmentar el nombre d'errors. L'informe no serĂ enviat fins no verifiqueu que l'error Ă©s degut a un filtre. Inhabiliteu totes les subscripcions i comproveu afegint una subscripciĂł alhora que l'error realment pertany a un filtre determinat."> -<!ENTITY screenshot.mark.label "&Marca el problema"> -<!ENTITY privacyPolicy.label "PolĂtica de Privadesa"> -<!ENTITY issues.description "L'Adblock Plus ha detectat problemes amb la configuraciĂł i podria ser la causa del problema o d'una anĂ lisi errònia."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sidebar.dtd deleted file mode 100644 index e68a983..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Pampallugueja les vores de l'element"> -<!ENTITY address.label "Adreça"> -<!ENTITY context.open.label "Obre en una pestanya nova"> -<!ENTITY type.label "Tipus"> -<!ENTITY tooltip.filterSource.label "Filtre d'origen:"> -<!ENTITY noitems.label "Elements no bloquejables"> -<!ENTITY filter.label "Filtre"> -<!ENTITY tooltip.size.label "Mida:"> -<!ENTITY reattach.label "Reenganxa"> -<!ENTITY search.label "&Cerca:"> -<!ENTITY docDomain.thirdParty "(tercers)"> -<!ENTITY filterSource.label "Filtre d'origen"> -<!ENTITY tooltip.docDomain.label "Font del document:"> -<!ENTITY context.copy.label "Copia l'adreça de l'element"> -<!ENTITY tooltip.type.label "Tipus:"> -<!ENTITY context.disablefilter.label "Inhabilita el filtre ?1?"> -<!ENTITY context.copyFilter.label "Copia el filtre"> -<!ENTITY context.block.label "Bloqueja aquest element"> -<!ENTITY context.enablefilter.label "Reactiva el filtre ?1?"> -<!ENTITY detach.label "Separa"> -<!ENTITY whitelisted.label "PĂ gina a la llista de permesos"> -<!ENTITY context.disablefilteronsite.label "Inhabilita aquest filtre a ?1?"> -<!ENTITY detached.title "AdBlock Plus: Elements Blocables (Separat)"> -<!ENTITY docDomain.firstParty "(primers)"> -<!ENTITY tooltip.type.whitelisted "(a la llista de permesos)"> -<!ENTITY tooltip.filter.label "Filtre actiu"> -<!ENTITY tooltip.filter.disabled "(inhabilitat)"> -<!ENTITY context.editfilter.label "Edita el filtre actiu"> -<!ENTITY tooltip.type.blocked "(bloquejat)"> -<!ENTITY size.label "Mida"> -<!ENTITY context.whitelist.label "Afegeix una regla d'excepciĂł per a l'element"> -<!ENTITY context.selectAll.label "Selecciona-ho tot"> -<!ENTITY state.label "Estat"> -<!ENTITY docDomain.label "Font del document"> -<!ENTITY tooltip.address.label "Adreça:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/subscriptionSelection.dtd deleted file mode 100644 index a3b3ef3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ca/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Afegeix la &subscripciĂł de filtre «?1?»"> -<!ENTITY list.download.failed "L'Adblock Plus ha fallat en trobar la llista de subscripcions."> -<!ENTITY list.download.retry "Torna-ho a provar"> -<!ENTITY title.label "&TĂtol de la subscripciĂł:"> -<!ENTITY list.download.website "VĂ©s a la pĂ gina web"> -<!ENTITY supplementMessage "Aquesta subscripciĂł de filtre s'ha d'utilitzar amb «?1?» que encara no feu servir."> -<!ENTITY viewList.label "Mostra els filtres"> -<!ENTITY visitHomepage.label "VĂ©s a la pĂ gina web"> -<!ENTITY addSubscription.label "Afegeix una subscripciĂł"> -<!ENTITY dialog.title "Afegeix la subscripciĂł de filtre per a Adblock Plus"> -<!ENTITY location.label "&Filtra la localitzaciĂł de la llista:"> -<!ENTITY fromWeb.description "Confirmeu que voleu afegir aquesta subscripciĂł de filtre. Podeu canviar el tĂtol de la subscripciĂł o la localitzaciĂł abans d'afegir-la."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/composer.dtd deleted file mode 100644 index a01b809..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na &konci adresy"> -<!ENTITY domainRestriction.label "Omezit na &domĂ©nu:"> -<!ENTITY collapse.default.no.label "PouĹľĂt jako vĂ˝chozĂ (ne)"> -<!ENTITY firstParty.label "Pouze vl&astnĂ filtry"> -<!ENTITY preferences.label "Zobrazit &existujĂcĂ filtry..."> -<!ENTITY pattern.label "Vyhledat vzor"> -<!ENTITY thirdParty.label "Pouze fil&try tĹ™etĂch stran"> -<!ENTITY filter.label "NovĂ˝ &filtr:"> -<!ENTITY collapse.label "M&inimalizovat blokovanĂ© objekty:"> -<!ENTITY match.warning "Vzor, kterĂ˝ jste zadali, uĹľ neodpovĂdá adrese, kterou chcete zablokovat/povolit a nebude na ni tedy mĂt žádnĂ˝ účinek."> -<!ENTITY anchor.start.label "na &začátku adresy"> -<!ENTITY matchCase.label "&Rozlišovat velikost pĂsmen"> -<!ENTITY custom.pattern.label "Vlast&nĂ:"> -<!ENTITY unselectAllTypes.label "Zrušit vĂ˝bÄ›r"> -<!ENTITY type.whitelist.label "&VĂ˝jimka"> -<!ENTITY regexp.warning "Vzor, kterĂ˝ jste zadali, bude interpretován jako regulárnĂ vĂ˝raz. Mnoho regulárnĂch vĂ˝razĹŻ mĹŻĹľe zpomalit vaše prohlĂĹľenĂ stránek. Pokud jste nechÄ›li pouĹľĂt regulárnĂ vĂ˝raz, pĹ™idejte znak * na konec vzoru."> -<!ENTITY dialog.title "PĹ™idat pravidlo filtru Adblock Plus"> -<!ENTITY basic.label "ZákladnĂ zobrazenĂ"> -<!ENTITY type.filter.label "&BlokujĂcĂ filtr"> -<!ENTITY types.label "PouĹľĂt na typy:"> -<!ENTITY shortpattern.warning "Vzor, kterĂ˝ jste zadali, je pĹ™Ăliš krátkĂ˝, aby mohl bĂ˝t optimalizován. Mnoho takovĂ˝ch vĂ˝razĹŻ mĹŻĹľe zpomalit vaše prohlĂĹľenĂ stránek. Je doporuÄŤeno, abyste pro tento filtr zadali delšà řetÄ›zec."> -<!ENTITY collapse.yes.label "Ano"> -<!ENTITY anchors.label "Povolit vzor pouze:"> -<!ENTITY collapse.default.yes.label "PouĹľĂt jako vĂ˝chozĂ (ano)"> -<!ENTITY domainRestriction.help "Zadejte jednu nebo vĂce domĂ©n oddÄ›lenĂ˝ch znakem "|", filtr bude potĂ© pouĹľit pouze na tÄ›chto domĂ©nách. Znak "~" pĹ™ed názvem domĂ©ny zajistĂ, Ĺľe filtr nebude na tĂ©to domĂ©nÄ› pouĹľit."> -<!ENTITY accept.label "PĹ™idat filtr"> -<!ENTITY options.label "MoĹľnosti"> -<!ENTITY disabled.warning "Adblock Plus je momentálnÄ› zakázán. I tak mĹŻĹľete pĹ™idávat filtry, ale nebudou pouĹľity, dokud [link]nepovolĂte Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "na &začátku názvu domĂ©ny"> -<!ENTITY collapse.no.label "Ne"> -<!ENTITY selectAllTypes.label "Vybrat vše"> -<!ENTITY advanced.label "PokroÄŤilĂ© zobrazenĂ"> -<!ENTITY pattern.explanation "Vzor mĹŻĹľe bĂ˝t jakákoli část adresy, znak * funguje jako jakĂ˝koliv text. Filtr bude aplikován pouze na adresy odpovĂdajĂcĂ vzoru."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/filters.dtd deleted file mode 100644 index d91d351..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Všechny vaše vlastnĂ filtry budou nahrazeny obsahem vybranĂ©ho souboru. Chcete pokraÄŤovat?"> -<!ENTITY slow.column "Po&malĂ© filtry"> -<!ENTITY enabled.column "Po&volenĂ©"> -<!ENTITY subscription.lastDownload.checksumMismatch "Chyba, neodpovĂdá kontrolnĂ souÄŤet"> -<!ENTITY noFiltersInGroup.text "Vybraná skupina je prázdná"> -<!ENTITY subscription.actions.label "Akce"> -<!ENTITY filter.selectAll.label "Vybrat vše"> -<!ENTITY backupButton.label "Zál&ohovánĂ a obnova"> -<!ENTITY restore.minVersion.warning "VarovánĂ: Soubor byl vytvoĹ™en novÄ›jšà verzĂ Adblocku Plus. MÄ›li byste jej aktualizovat na nÄ›jnovÄ›jšà verzi, neĹľ budete pokraÄŤovat."> -<!ENTITY restore.error "Data ze souboru nelze zpracovat, moĹľná nejde o zálohu filtrĹŻ Adblocku Plus?"> -<!ENTITY sort.ascending.label "VzestupnÄ› (&A-Z)"> -<!ENTITY sort.label "&SeĹ™adit podle"> -<!ENTITY subscription.source.label "Seznam filtrĹŻ"> -<!ENTITY hitcount.column "Zása&hy"> -<!ENTITY noFilters.text "Nemáte žádnĂ© vlastnoruÄŤnÄ› vytvoĹ™enĂ© filtry."> -<!ENTITY backup.custom.title "Pouze vlastnĂ filtry"> -<!ENTITY subscription.external.label "Aktualizováno jinĂ˝m rozšĂĹ™enĂm"> -<!ENTITY subscription.delete.label "Smazat"> -<!ENTITY noGroupSelected.text "MusĂte vybrat skupinu filtrĹŻ, aby byly zobrazeny nÄ›jakĂ© filtry."> -<!ENTITY filter.cut.label "Vyjmout"> -<!ENTITY restore.default.label "Obnovit ze zálohy z ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Stahuji..."> -<!ENTITY subscriptions.tab.label "OdebĂranĂ© sady cizĂch filtrĹŻ"> -<!ENTITY sort.descending.label "SestupnÄ› (&Z-A)"> -<!ENTITY filters.remove.warning "Opravdu chcete odebrat všechny vybranĂ© filtry?"> -<!ENTITY filter.delete.label "Smazat"> -<!ENTITY addSubscriptionAdd.label "PĹ™idat"> -<!ENTITY viewMenu.label "Zobrazit"> -<!ENTITY subscription.lastDownload.unknown "neznámo"> -<!ENTITY addSubscriptionCancel.label "Zrušit"> -<!ENTITY subscription.enabled.label "Povoleno"> -<!ENTITY noSubscriptions.text "ZatĂm jste nezaÄŤali odebĂrat žádnou sadu cizĂch filtrĹŻ. Adblock Plus nebude blokovat nic bez nastavenĂ˝ch filtrĹŻ, pouĹľijte prosĂm "PĹ™idat cizĂ filtry", abyste nÄ›jakĂ© pĹ™idali."> -<!ENTITY subscription.update.label "Aktualizovat filtry"> -<!ENTITY dialog.title "PĹ™edvolby filtrĹŻ Adblocku Plus"> -<!ENTITY addFilter.label "&PĹ™idat filtr"> -<!ENTITY subscription.minVersion.warning "Tato cizĂ sada filtrĹŻ vyĹľaduje novÄ›jšà verzi Adblocku Plus, mÄ›li byste jej aktualizovat na nejnovÄ›jšà verzi."> -<!ENTITY subscription.lastDownload.invalidURL "Chyba, toto je nekorektnĂ adresa."> -<!ENTITY backup.error "Došlo k chybÄ› pĹ™i zápisu filtrĹŻ do souboru. UjistÄ›te se prosĂm, Ĺľe soubor nenĂ chránÄ›n proti zápisu nebo pouĹľĂván jinou aplikacĂ."> -<!ENTITY filter.moveUp.label "Posunout nahoru"> -<!ENTITY addGroup.label "PĹ™idat &skupinu filtrĹŻ"> -<!ENTITY filter.edit.label "Upravit"> -<!ENTITY subscription.showHideFilters.label "Zobrazit/skrĂ˝t filtry"> -<!ENTITY acceptableAds2.label "Povolit &nÄ›kterĂ© nerušivĂ© reklamy"> -<!ENTITY addSubscriptionOther.label "PĹ™idat dalšà sadu cizĂch filtrĹŻ"> -<!ENTITY close.label "ZavĹ™Ăt"> -<!ENTITY sort.none.label "&NeĹ™adit"> -<!ENTITY filter.actions.label "Akce filtrĹŻ"> -<!ENTITY filter.copy.label "KopĂrovat"> -<!ENTITY filter.moveDown.label "Posunout dolĹŻ"> -<!ENTITY filter.resetHitCounts.label "Vynulovat statistiku zásahĹŻ"> -<!ENTITY readMore.label "Zjistit vĂce"> -<!ENTITY subscription.moveUp.label "Posunout nahoru"> -<!ENTITY addSubscription.label "PĹ™idat cizĂ &filtry"> -<!ENTITY subscription.homepage.label "Domovská stránka"> -<!ENTITY backup.complete.title "Všechny filtry a sady cizĂch filtrĹŻ"> -<!ENTITY restore.own.label "Obnovit z vlastnĂ zálohy"> -<!ENTITY restore.complete.warning "Všechny vaše pĹ™edvolby budou nahrazeny obsahem vybranĂ©ho souboru. Chcete pokraÄŤovat?"> -<!ENTITY filters.tab.label "VlastnĂ filtry"> -<!ENTITY backup.label "VytvoĹ™it novou zálohu"> -<!ENTITY find.label "Na&jĂt"> -<!ENTITY subscription.moveDown.label "Posunout dolĹŻ"> -<!ENTITY subscription.lastDownload.connectionError "Chyba, nepodaĹ™ilo se stáhnout soubor"> -<!ENTITY subscription.lastDownload.success "ĂšspÄ›ch"> -<!ENTITY subscription.lastDownload.invalidData "Chyba, staĹľenĂ˝ soubor nenĂ souborem filtrĹŻ Adblock Plus"> -<!ENTITY filter.paste.label "VloĹľit"> -<!ENTITY subscription.disabledFilters.enable "Povolit zakázanĂ© filtry"> -<!ENTITY lasthit.column "Pos&lednĂ zásah"> -<!ENTITY subscription.editTitle.label "Upravit název"> -<!ENTITY subscription.disabledFilters.warning "NÄ›kterĂ© filtry v tĂ©to sadÄ› jsou zakázány."> -<!ENTITY filter.column "&Pravidlo filtru"> -<!ENTITY subscription.lastDownload.label "Naposledy staĹľeno:"> -<!ENTITY viewList.label "Zobrazit seznam"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/firstRun.properties deleted file mode 100644 index d71aea6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=ZakázánĂm sledovánĂ si zachovejte soukromĂ pĹ™i prohlĂĹľenĂ - zakryjte svĂ© stopy pĹ™ed reklamnĂmi spoleÄŤnostmi, kterĂ© by jinak sladovali kaĹľdiÄŤkĂ˝ Váš pohyb. -firstRun_toggle_off=VYPNUTO -firstRun_feature_tracking=Zakázat sledovánĂ -firstRun_feature_malware=BlokovánĂ malware -firstRun_title=Adblock Plus byl nainstalován -firstRun_toggle_on=ZAPNUTO -firstRun_acceptableAdsExplanation=Rádi bychom podpoĹ™ili webovĂ© stránky v pouĹľĂvánĂ jasnĂ© neobtěžujĂcĂ reklamy. Proto jsme zavedli <a>pĹ™Ăsná pravidla</a> k urÄŤenĂ pĹ™ijatelnĂ˝ch reklam, kterĂ© se pak ve vĂ˝chozĂm nastavenĂ zobrazujĂ . Pokud pĹ™esto chcete blokovat veškerou reklamu, mĹŻĹľete toto bÄ›hem chvilky <a>zakázat</a>. -firstRun_contributor_credits=Zásluhy pĹ™ispÄ›vatelĹŻ -firstRun_dataCorruptionWarning=Neustále se Vám tato stránka znovu zobrazuje? <a>KliknÄ›te zde!</a> -firstRun_acceptableAdsHeadline=OtravnĂ© reklamy budou nynĂ blokovány -firstRun_share=ĹeknÄ›te svĂ˝m přátelĹŻm -firstRun_share_headline=<a>PomoĹľte nám</a> uÄŤinit web lepšĂm -firstRun_feature_social_description=Automaticky zbavte svĂ© surfovánĂ od tlaÄŤĂtek sociálnĂch mĂ©diĂ, jako napĹ™Ăklad Facebook "To se mi lĂbĂ", která se objevujĂ na webovĂ˝ch stránkách a sledujĂ Vaše chovánĂ. -firstRun_filterlistsReinitializedWarning=Zdá se, Ĺľe nastal problĂ©m, kterĂ˝ zpĹŻsobil smazánĂ všech filtrĹŻ a nebyli jsme schopni je obnovit ze zálohy. Museli jsme tudĂĹľ Vaše filtry a nastavenĂ PĹ™ijatelnĂ˝ch reklam resetovat. ProsĂm zkontrolujte si svĂ© nastavenĂ seznamĹŻ filtrĹŻ a PĹ™ijatelnĂ˝ch reklam v <a>pĹ™edvolbách Adblocku Plus</a>. -firstRun_feature_malware_description=BlokovánĂm známĂ˝ch malwarovĂ˝ch domĂ©n uÄŤiĹte Vaše prohlĂĹľenĂ webu bezpeÄŤnÄ›jšĂm. -firstRun_features=Adblock Plus toho umĂ vĂce neĹľ jen blokovat reklamy -firstRun_donate=pĹ™ispÄ›jte -firstRun_donate_label=PodpoĹ™te náš projekt -firstRun_feature_social=Odstranit tlaÄŤĂtka sociálnĂch mĂ©diĂ -firstRun_legacySafariWarning=PouĹľĂváte starou verzi Safari, která nenĂ podporovaná Adblockem Plus. NemusĂ to tak správnÄ› fungovat nebo to mĹŻĹľe zhoršit pouĹľitelnost na nÄ›kterĂ˝ch webovĂ˝ch stránkách. DĹŻraznÄ› doporuÄŤujeme buÄŹ aktualizovat na Safari 6.1.1 ÄŤi vyššà (v OS X 10.8 Mountain Lion), nebo Safari 7.0.1 ÄŤi vyššà (v OS X 10.9 Mavericks), nebo pouĹľĂvat nejnovÄ›jšà verzi Mozilla Firefoxu, Google Chrome ÄŤi Opery. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/global.properties deleted file mode 100644 index 18ffe9f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Na tĂ©to stránce nebyly nalezeny prvky k zablokovánĂ -action3_tooltip=KlepnutĂm povolit/zakázat Adblock Plus -notification_antiadblock_title=SkrĂ˝t cĂlená hlášenĂ? -type_label_script=Skript -filter_elemhide_nocriteria=Nebyla uvedena žádná kritĂ©rie pro rozpoznánĂ elementu, kterĂ˝ má bĂ˝t skryt -blockingGroup_title=Pravidla blokovánĂ reklam -whitelisted_tooltip=Adblock Plus je aktivnĂ, ale pro aktuálnĂ stránku byl zakázán. -type_label_stylesheet=Ĺ ablona kaskádovĂ˝ch stylĹŻ -blocked_count_tooltip=?1? z ?2? -type_label_font=PĂsmo -type_label_popup=vyskakovacĂ okno -filter_regexp_tooltip=Tento filtr je buÄŹ regulárnĂ vĂ˝raz nebo je pĹ™Ăliš krátkĂ˝, aby mohl bĂ˝t optimalizován. PĹ™Ăliš mnoho takovĂ˝ch filtrĹŻ mĹŻĹľe zpomalit vaše prohlĂĹľenĂ stránek. -action0_tooltip=LevĂ© tlaÄŤĂtko: OtevĹ™Ăt mĂstnĂ nabĂdku -whitelisted_page=Adblock Plus byl pro aktuálnĂ stránku zakázán -remove_group_warning=Chcete opravdu smazat tuhle skupniu? -action1_tooltip=LevĂ© tlaÄŤĂtko: OtevĹ™Ăt blokovatelnĂ© prvky -type_label_xmlhttprequest=XML poĹľadavek -active_tooltip=Adblock Plus je aktivnĂ, cizĂ sady filtrĹŻ: ?1?, vlastnĂ filtry: ?2? -type_label_document=Dokument -type_label_object_subrequest=SubpoĹľadavek objektu -whitelistGroup_title=VĂ˝jimky z pravidel -disabled_tooltip=Adblock Plus je zakázán -filter_elemhide_duplicate_id=MĹŻĹľe bĂ˝t uvedeno pouze jedno ID elementu, kterĂ˝ má bĂ˝t skryt -type_label_object=Objekt -action2_tooltip=LevĂ© tlaÄŤĂtko: OtevĹ™Ăt pĹ™edvolby -type_label_subdocument=Rámec -clearStats_warning=Toto smaĹľe všechny statistiky a vypne poÄŤĂtánĂ zásahĹŻ filtrĹŻ. Chcete pokraÄŤovat? -notification_antiadblock_message=O tĂ©to stránce se vĂ, Ĺľe zobrazuje hlášenĂ cĂlená na uĹľivatele Adblocku Plus. Chcete, aby Adblock Plus skryl tyto cĂlenĂ© zprávy? -blocked_count_addendum=(povoleno vĂ˝jimkou: ?1?, skryto: ?2?) -subscription_invalid_location=Zadaná adresa seznamu cizĂch filtrĹŻ je buÄŹ nesprávná URL nebo obsahuje nesprávnĂ© jmĂ©no souboru. -type_label_image=Obrázek -remove_subscription_warning=SkuteÄŤnÄ› si pĹ™ejete odstranit tuto sadu cizĂch filtrĹŻ ? -type_label_other=OstatnĂ -mobile_menu_enable=ABP: povolit -type_label_media=zvuk a video -mobile_menu_disable_site=ABP: Zakázat na ?1? -elemhideGroup_title=Pravidla skrĂ˝vánĂ prvkĹŻ -mobile_menu_enable_site=ABP: Povolit na ?1? -type_label_elemhide=skryto -newGroup_title=Nová skupina filtrĹŻ -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/overlay.dtd deleted file mode 100644 index 9980b76..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ano"> -<!ENTITY notification.button.no "&Ne"> -<!ENTITY sync.label "Na&stavenĂ synchronizace Adblocku Plus"> -<!ENTITY whitelist.site.label "Vypnout na ?1?"> -<!ENTITY filters.label "&PĹ™edvolby filtrĹŻ"> -<!ENTITY disable.label "Zakázat všude"> -<!ENTITY objecttab.title "Blokovat"> -<!ENTITY objecttab.tooltip "KlepnÄ›te zde pro blokovánĂ tohoto objektu pomocĂ Adblock Plus"> -<!ENTITY menuitem.label "PĹ™edvol&by Adblock Plus"> -<!ENTITY objecttabs.label "Z&obrazovat ouška u objektĹŻ Java a Flash"> -<!ENTITY sendReport.label "&Nahlásit problĂ©m na tĂ©to stránce"> -<!ENTITY whitelist.page.label "Vypnout pouze na tĂ©to stránce"> -<!ENTITY context.image.label "Blokovat obrázek"> -<!ENTITY counthits.label "PoÄŤĂtat &zásahy filtrĹŻ"> -<!ENTITY opensidebar.label "Zo&brazit blokovatelnĂ© objekty"> -<!ENTITY notification.button.close "&ZavĹ™Ăt"> -<!ENTITY contribute.label "PĹ™ispÄ›t Adblocku Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Blokovat rámec"> -<!ENTITY blocked.tooltip "BlokovanĂ© prvky na tĂ©to stránce:"> -<!ENTITY hideplaceholders.label "SkrĂ˝t zástupnĂ© o&bjekty blokovanĂ˝ch prvkĹŻ"> -<!ENTITY showinstatusbar.label "Zob&razit ve stavovĂ©m řádku"> -<!ENTITY sidebar.title "Adblock Plus: BlokovatelnĂ© objekty na zobrazenĂ© stránce"> -<!ENTITY options.label "&MoĹľnosti"> -<!ENTITY context.object.label "Blokovat objekt"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Znovu povolit na tĂ©to stránce"> -<!ENTITY filters.tooltip "NejúčinnÄ›jšà filtry:"> -<!ENTITY closesidebar.label "SkrĂ˝t seznam &blokovatelnĂ˝ch objektĹŻ"> -<!ENTITY showintoolbar.label "Zobrazit v &nástrojovĂ© lištÄ›"> -<!ENTITY status.tooltip "Stav:"> -<!ENTITY context.media.label "Adblock Plus: Blokovat audio/video"> -<!ENTITY subscription.update.label "Aktualizovat filtry"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sendReport.dtd deleted file mode 100644 index 3fd5628..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&ZpÄ›t"> -<!ENTITY issues.disabledgroups.description "NásledujĂcĂ sady cizĂch filtrĹŻ / skupiny filtrĹŻ jsou zakázány, pĹ™esto mĹŻĹľou mĂt vliv na tuto stránku:"> -<!ENTITY showData.label "Zobrazit data hlášenĂ"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokuje pĹ™Ăliš &mnoho"> -<!ENTITY issues.change.description "Vaše nastavenĂ bylo zmÄ›nÄ›no. Obnovte prosĂm stránku pro otestovánĂ zmÄ›n a odešlete hlášenĂ problĂ©mu, pokud nebyl vyĹ™ešen Ăşpravami nastavenĂ."> -<!ENTITY email.label "E-&mail:"> -<!ENTITY issues.openPreferences.label "OtevĹ™Ăt pĹ™edvolby filtrĹŻ"> -<!ENTITY sendPage.confirmation "Vaše hlášenĂ bylo odesláno. MĹŻĹľete si prohlĂ©dnou hlášenĂ na následujĂcĂ adrese:"> -<!ENTITY copyLink.label "&KopĂrovat adresu hlášenĂ"> -<!ENTITY issues.nofilters.description "Adblock Plus na aktuálnĂ stránce nic neblokuje. ProblĂ©m, kterĂ˝ chcete nahlásit, nenĂ s nejvÄ›tšà pravdÄ›podobnostĂ zpĹŻsoben Adblockem Plus."> -<!ENTITY sendPage.knownIssue "ProblĂ©m, kterĂ˝ jste nahlásili, je pravdÄ›podobnÄ› jiĹľ známĂ˝. VĂce informacĂ:"> -<!ENTITY typeSelector.other.description "Vyberte tuto moĹľnost, pokud máte pocit, Ĺľe je chyba pĹ™Ămo v Adblocku Plus, ne ve jeho filtrech."> -<!ENTITY issues.disabledgroups.enable.label "Povolit sadu cizĂch filtrĹŻ / skupinu filtrĹŻ"> -<!ENTITY typeWarning.override.label "&RozumĂm a pĹ™esto chci odeslat hlášenĂ"> -<!ENTITY issues.disabled.enable.label "Aktivovat Adblock Plus"> -<!ENTITY update.fixed.description "Aktualizace vámi odebĂranĂ˝ch sad filtrĹŻ pravdÄ›podobnÄ› vyĹ™ešila problĂ©m,kterĂ˝ jste reportovali.ProsĂm obnovte stránku a zkuste to znovu,kliknÄ›te na Znovu oznámit pokud problĂ©m pĹ™etrval."> -<!ENTITY anonymous.label "&AnonymnĂ odeslánĂ"> -<!ENTITY reloadButton.label "&Obnovit stránku"> -<!ENTITY recentReports.clear.label "Odst&ranit všechna hlášenĂ"> -<!ENTITY typeSelector.description "Toto okno vás provede kroky potĹ™ebnĂ˝mi k oznámenĂ problĂ©mu v Adblocku Plus. ZaÄŤnÄ›te prosĂm vybránĂm druhu problĂ©mu, se kterĂ˝m jste se na tĂ©to stránce setkali:"> -<!ENTITY screenshot.remove.label "&Odstranit dĹŻvÄ›rnĂ© Ăşdaje"> -<!ENTITY issues.ownfilters.description "NÄ›kterĂ© filtry pouĹľitĂ© na tĂ©to stránce jsou vytvoĹ™enĂ© vámi. ZakaĹľte prosĂm filtry, kterĂ© mohly zpĹŻsobit problĂ©m:"> -<!ENTITY update.inProgress.description "Adblock Plus potĹ™ebuje aktualizovat váš filtr odbÄ›rĹŻ aby zajistil Ĺľe otázka nebyla jiĹľ vyĹ™ešena. ProsĂm ÄŤekejte..."> -<!ENTITY sendPage.retry.label "Odeslat znovu"> -<!ENTITY data.label "&Data hlášenĂ:"> -<!ENTITY recentReports.label "Vaše nedávná hlášenĂ"> -<!ENTITY typeWarning.description "Vybrali jste, Ĺľe chcete nahlásit problĂ©m pĹ™Ămo v Adblocku Plus, nikoli chybu ve filtrech. Nejlepšà zpĹŻsob hlášenĂ takovĂ˝chto chyb je na [link]fĂłru Adblocku Plus[/link]. MÄ›li byste pouĹľĂvat nástroj na hlášenĂ chyb pouze jako doplnÄ›k existujĂcĂ diskuse na fĂłru, protoĹľe nikdo se nebude zabĂ˝vat vašĂm hlášenĂm, dokud neposkytnete odkaz na nÄ›j. Automaticky vygenerovanĂ˝ odkaz bude zobrazet po odeslánĂ hlášenĂ."> -<!ENTITY issues.disabled.description "Adblock Plus je zakázanĂ˝, v souÄŤasnĂ©m stavu nebude blokovat nic."> -<!ENTITY attachExtensions.label "&PĹ™ipojit seznam aktivnĂch rozšĂĹ™enĂ k hlášenĂ pro pĹ™Ăpad, Ĺľe problĂ©m byl zpĹŻsoben konfliktem mezi doplĹky"> -<!ENTITY issues.nosubscriptions.add.label "PĹ™idat sadu cizĂch filtrĹŻ"> -<!ENTITY issues.disabledfilters.enable.label "Povolit filtr"> -<!ENTITY issues.override.label "NastavenĂ je v &pořádku, pokraÄŤovat v hlášenĂ problĂ©m"> -<!ENTITY issues.nosubscriptions.description "Zdá se, Ĺľe nejste pĹ™ihlášeni k odbÄ›ru žádnĂ˝ch cizĂch sad filtrĹŻ, kterĂ© automaticky odstraĹujĂ nežádoucĂ obsah z webovĂ˝ch stránek."> -<!ENTITY typeSelector.falsePositive.description "Vyberte tuto moĹľnost, pokud na stránce chybĂ dĹŻleĹľitĂ˝ obsah, nenĂ zobrazena správnÄ› nebo nefunguje. Zda je Adblock Plus pĹ™ĂÄŤinou problĂ©mu mĹŻĹľete zjistit jeho doÄŤasnĂ˝m vypnutĂm."> -<!ENTITY typeSelector.other.label "JinĂ˝ &problĂ©m"> -<!ENTITY emailComment.label "Nabádáme vás,aby jste zadali platnou emailovou adresu,aby jsme vás mohli kontaktovat pokud budou nÄ›jakĂ© nesrovnalosti s vašim nahlášenĂm.TakĂ© nám to umoĹľnĂ rozeznat vaše pĹ™ĂspÄ›vky a pĹ™ikládat jim vyššà prioritu."> -<!ENTITY issues.whitelist.remove.label "Znovu povolit Adblock Plus na tĂ©to stránce"> -<!ENTITY outdatedSubscriptions.description "NásledujĂcĂ odbÄ›r filtrĹŻ nebyl aktualizován minimálnÄ› dva tĂ˝dny.ProsĂm aktualizujte tyto odbÄ›ry neĹľ reportujete chybu,problĂ©m uĹľ mohl bĂ˝t vyĹ™ešen."> -<!ENTITY dataCollector.description "PoÄŤkejte prosĂm zatĂmco Adblock Plus sbĂrá potĹ™ebná data."> -<!ENTITY sendButton.label "&Odeslat hlášenĂ"> -<!ENTITY comment.label "&Komentář (nepovinnĂ˝)"> -<!ENTITY sendPage.errorMessage "Pokus odeslat hlášenĂ problĂ©mu selhal s chybovĂ˝m kĂłdem "?1?". Ověřte prosĂm, Ĺľe jste pĹ™ipojeni k internetu a pokus opakujte. Pokud problĂ©m pĹ™etrvává, zkuste prosĂm vyhledat pomoc na [link]fĂłru Adblocku Plus[/link]."> -<!ENTITY showRecentReports.label "Ukázat nedávno odeslaná hlášenĂ"> -<!ENTITY commentPage.heading "VloĹľit komentář"> -<!ENTITY update.start.label "Spustit aktualizaci"> -<!ENTITY issues.disabledfilters.description "NásledujĂcĂ filtry jsou zakázány, pĹ™esto mĹŻĹľou mĂt vliv na tuto stránku:"> -<!ENTITY screenshot.description "Stejná stránka mĹŻĹľe bĂ˝t zobrazena odlišnÄ› rĹŻznĂ˝m lidem. PomĹŻĹľe nám pochopit problĂ©m, pokud pĹ™ipojĂte snĂmek stránky k vašemu hlášenĂ problĂ©mu. MĹŻĹľete odstranit části obsahujĂcĂ dĹŻvÄ›rnĂ© informace i vyznaÄŤit mĂsta, kde je problĂ©m vidÄ›t. Toho docĂlĂte klepnutĂm na odpovĂdajĂcĂ tlaÄŤĂtko a vĂ˝bÄ›rem části obrázku myšĂ."> -<!ENTITY screenshot.attach.label "&PĹ™ipojit snĂmek stránky k hlášenĂ"> -<!ENTITY issues.whitelist.description "Adblock Plus je aktuálnÄ› neaktivnĂ na stránce, na kterĂ© hlásĂte problĂ©m. ProsĂm aktivujte jej a obnovte stránku pĹ™edtĂm, neĹľ odešlete hlášenĂ, abyste pomohli vyĹ™ešit váš problĂ©m."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus &neblokuje reklamu"> -<!ENTITY typeSelector.heading "Vyberte druh problĂ©mu"> -<!ENTITY anonymity.warning "Nebudeme moci vám odepsat a vašemu reportu bude pravdÄ›podobnÄ› pĹ™ikládána nižšà priorita."> -<!ENTITY wizard.title "OznamovánĂ problĂ©mĹŻ"> -<!ENTITY issues.ownfilters.disable.label "Zakázat filtr"> -<!ENTITY commentPage.description "Do textovĂ©ho pole nĂĹľe mĹŻĹľete vloĹľit komentář vysvÄ›tlujĂcĂ problĂ©m, kterĂ˝ hlásĂte. Tento krok nenĂ povinnĂ˝, ale je doporuÄŤenĂ˝, pokud problĂ©m nenĂ jednoznaÄŤnÄ› viditelnĂ˝. MĹŻĹľete takĂ© prohlĂ©dnout data hlášenĂ pĹ™ed jejich odeslánĂm."> -<!ENTITY comment.lengthWarning "Váš komentář pĹ™esahuje 1000 znakĹŻ. Pouze prvnĂch 1000 znakĹŻ bude odesláno."> -<!ENTITY typeSelector.falseNegative.description "Tuto moĹľnost vyberte v pĹ™ĂpadÄ›, Ĺľe vidĂte reklamu i pĹ™esto, Ĺľe je Adblock Plus aktivovanĂ˝."> -<!ENTITY sendPage.waitMessage "ProsĂm poÄŤkejte zatĂmco Adblock Plus odesĂlá vaše hlášenĂ."> -<!ENTITY dataCollector.heading "VĂtejte v nástroji na oznamovánĂ problĂ©mĹŻ"> -<!ENTITY screenshot.heading "PĹ™ipojit snĂmek"> -<!ENTITY sendPage.heading "Odeslat hlášenĂ"> -<!ENTITY issues.subscriptionCount.description "Vypadá to, Ĺľe jste pĹ™ihlášeni k odbÄ›ru pĹ™Ăliš mnoha sad cizĂch filtrĹŻ. Toto nastavenĂ nenĂ doporuÄŤeno, protoĹľe vĂ˝raznÄ› zvyšuje pravdÄ›podobnost vĂ˝skytu problĂ©mĹŻ. ZároveĹ nelze pĹ™ijmout vaše hlášenĂ, protoĹľe nenĂ jasnĂ©, kterĂ˝ z autorĹŻ sad cizĂch filtrĹŻ je za zodpovÄ›dnĂ˝. Odhlašte se prosĂm z odbÄ›ru všech nepotĹ™ebnĂ˝ch sad cizĂch filtrĹŻ a vyzkoušejte, zda se problĂ©m vyskytuje i potĂ©."> -<!ENTITY screenshot.mark.label "&VyznaÄŤit problĂ©m"> -<!ENTITY privacyPolicy.label "Ochrana soukromĂ"> -<!ENTITY issues.description "Adblock Plus zjistil problĂ©my s vašĂm nastavenĂm, kterĂ© mĹŻĹľou zpĹŻsobovat tento problĂ©m nebo ztĂĹľit jeho Ĺ™ešenĂ."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sidebar.dtd deleted file mode 100644 index 8707ce4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "BlikánĂ obrysu objektu"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "OtevĹ™Ăt v novĂ©m panelu"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "Zdroj filtru:"> -<!ENTITY noitems.label "Nic nebylo zablokováno"> -<!ENTITY filter.label "Filtr"> -<!ENTITY tooltip.size.label "Velikost:"> -<!ENTITY reattach.label "PĹ™ipojit"> -<!ENTITY search.label "&Hledat:"> -<!ENTITY docDomain.thirdParty "(externĂ)"> -<!ENTITY filterSource.label "Zdroj filtru"> -<!ENTITY tooltip.docDomain.label "Zdroj dokumentu:"> -<!ENTITY context.copy.label "KopĂrovat adresu objektu"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Zakázat filtr ?1?"> -<!ENTITY context.copyFilter.label "KopĂrovat filtr"> -<!ENTITY context.block.label "Blokovat tento objekt"> -<!ENTITY context.enablefilter.label "OpÄ›t povolit filtr ?1?"> -<!ENTITY detach.label "OddÄ›lit"> -<!ENTITY whitelisted.label "Adresa je na bĂlĂ© listinÄ›"> -<!ENTITY context.disablefilteronsite.label "Zakázat tento filtr na ?1?"> -<!ENTITY detached.title "Adblock Plus: BlokovatelnĂ© prvky (oddÄ›leno)"> -<!ENTITY docDomain.firstParty "(vlastnĂ)"> -<!ENTITY tooltip.type.whitelisted "(na bĂlĂ© listinÄ›)"> -<!ENTITY tooltip.filter.label "PouĹľitĂ© filtry:"> -<!ENTITY tooltip.filter.disabled "(zakázanĂ˝)"> -<!ENTITY context.editfilter.label "Upravit pĹ™ĂslušnĂ˝ filtr"> -<!ENTITY tooltip.type.blocked "(blokováno)"> -<!ENTITY size.label "Velikost"> -<!ENTITY context.whitelist.label "PĹ™idat vĂ˝jimku pro tento objekt"> -<!ENTITY context.selectAll.label "Vybrat vše"> -<!ENTITY state.label "Stav"> -<!ENTITY docDomain.label "Zdroj dokumentu"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/subscriptionSelection.dtd deleted file mode 100644 index a3fb375..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/cs/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "PĹ™idat takĂ© cizĂ &sadu filtrĹŻ "?1?""> -<!ENTITY list.download.failed "Adblocku Plus se nepodaĹ™ilo zĂskat seznam cizĂch sad filtrĹŻ."> -<!ENTITY list.download.retry "Zkusit znovu"> -<!ENTITY title.label "&OznaÄŤenĂ cizĂch filtrĹŻ:"> -<!ENTITY list.download.website "Zobrazit webovou stránku"> -<!ENTITY supplementMessage "Tato cizĂ sada filtrĹŻ je urÄŤena k pouĹľĂvánĂ se sadou "?1?", kterou ještÄ› nepouĹľĂváte."> -<!ENTITY viewList.label "Zobrazit pravidla"> -<!ENTITY visitHomepage.label "NavštĂvit domovskou stránku"> -<!ENTITY addSubscription.label "PĹ™idat cizĂ sadu filtrĹŻ"> -<!ENTITY dialog.title "PĹ™idat sadu cizĂch filtrĹŻ Adblock Plus"> -<!ENTITY location.label "&UmĂstÄ›nĂ sady filtrĹŻ:"> -<!ENTITY fromWeb.description "ProsĂm potvrÄŹte, Ĺľe chcete pĹ™idat tuto cizĂ sadu filtrĹŻ. MĹŻĹľete zmÄ›nĂt jejĂ titulek nebo umĂstÄ›nĂ pĹ™ed jejĂm pĹ™idánĂm."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/composer.dtd deleted file mode 100644 index 124473c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "i s&lutningen af adressen"> -<!ENTITY domainRestriction.label "Begræns til &domæne:"> -<!ENTITY collapse.default.no.label "Brug standard (nej)"> -<!ENTITY firstParty.label "Kun &førsteparts"> -<!ENTITY preferences.label "Vi&s eksisterende filtre..."> -<!ENTITY pattern.label "Kig efter mønster"> -<!ENTITY thirdParty.label "Kun tred&jeparts"> -<!ENTITY filter.label "&Nyt filter:"> -<!ENTITY collapse.label "Sammenf&old blokeret:"> -<!ENTITY match.warning "Det angivne mønster matcher ikke længere den blokerede/hvidlistede adresse og har ingen effekt."> -<!ENTITY anchor.start.label "i be&gyndelsen af adressen"> -<!ENTITY matchCase.label "&Versalfølsom (a/A)"> -<!ENTITY custom.pattern.label "&Tilpasset:"> -<!ENTITY unselectAllTypes.label "Vælg ingen"> -<!ENTITY type.whitelist.label "&Undtagelsesregel"> -<!ENTITY regexp.warning "Det indtastede mønster vil blive fortolket som et regulært udtryk. Mange regulære udtryk kan gøre din browser langsommere. Hvis det ikke var din mening at bruge et regulært udtryk, sĂĄ tilføj et * i sidst i mønsteret."> -<!ENTITY dialog.title "Tilføj Adblock Plus filterregel"> -<!ENTITY basic.label "Enkel visning"> -<!ENTITY type.filter.label "Blok&eringsfilter"> -<!ENTITY types.label "Benyt pĂĄ typer:"> -<!ENTITY shortpattern.warning "Det indtastede mønster er for kort til optimering, og kan sløve din browser. Det anbefales at du vælger en længere streng for dette filter."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Accepter kun mønster:"> -<!ENTITY collapse.default.yes.label "Brug standard (ja)"> -<!ENTITY domainRestriction.help "Angiv Ă©t eller flere domæner adskilt af symbolet "|", sĂĄ vil filteret kun blive anvendt pĂĄ disse domæner. Symbolet "~" foran et domæne angiver at filteret ikke skal anvendes pĂĄ dette domæne."> -<!ENTITY accept.label "Tilføj filter"> -<!ENTITY options.label "Indstillinger"> -<!ENTITY disabled.warning "Adblock Plus er deaktiveret. Du kan stadig tilføje filtre men disse anvendes ikke før du [link]aktiverer Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "i be&gyndelsen af domænenavnet"> -<!ENTITY collapse.no.label "Nej"> -<!ENTITY selectAllTypes.label "Vælg alle"> -<!ENTITY advanced.label "Avanceret visning"> -<!ENTITY pattern.explanation "Mønsteret kan være enhver del af adressen, tegnet * bruges som jokertegn. Filteret benyttes kun pĂĄ adresser der matcher mønsteret."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/filters.dtd deleted file mode 100644 index 3d0400b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Alle dine tilpassede filtre erstattes af indholdet i den valgte fil. Vil du fortsætte?"> -<!ENTITY slow.column "Langs&omme filtre"> -<!ENTITY enabled.column "A&ktiveret"> -<!ENTITY subscription.lastDownload.checksumMismatch "Fejlede, checksum matcher ikke"> -<!ENTITY noFiltersInGroup.text "Den valgte gruppe er tom"> -<!ENTITY subscription.actions.label "Handlinger"> -<!ENTITY filter.selectAll.label "Vælg alle"> -<!ENTITY backupButton.label "&Backup og gendan"> -<!ENTITY restore.minVersion.warning "Advarsel: Filen er oprettet med en nyere Adblock Plus. Du bør opdatere Adblock Plus før du gendanner fra denne fil."> -<!ENTITY restore.error "Filen kunne ikke ĂĄbnes, mĂĄske er det ikke en Adblock Plus backupfil?"> -<!ENTITY sort.ascending.label "&A > Z"> -<!ENTITY sort.label "&Sorter efter"> -<!ENTITY subscription.source.label "Filterliste"> -<!ENTITY hitcount.column "&Hits"> -<!ENTITY noFilters.text "Du har endnu ingen tilpassede filtre."> -<!ENTITY backup.custom.title "Kun tilpassede filtre"> -<!ENTITY subscription.external.label "Opdateret af en anden tilføjelse"> -<!ENTITY subscription.delete.label "Slet"> -<!ENTITY noGroupSelected.text "Vælg en filtergruppe for at fĂĄ vist filtrene."> -<!ENTITY filter.cut.label "Klip"> -<!ENTITY restore.default.label "Gendan backup fra ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Henter..."> -<!ENTITY subscriptions.tab.label "Filterabonnementer"> -<!ENTITY sort.descending.label "&Z > A"> -<!ENTITY filters.remove.warning "Vil du fjerne de valgte filtre?"> -<!ENTITY filter.delete.label "Slet"> -<!ENTITY addSubscriptionAdd.label "Tilføj"> -<!ENTITY viewMenu.label "Vis"> -<!ENTITY subscription.lastDownload.unknown "Ukendt"> -<!ENTITY addSubscriptionCancel.label "Annuller"> -<!ENTITY subscription.enabled.label "Aktiveret"> -<!ENTITY noSubscriptions.text "Du har endnu ikke tilføjet Filterabonnementer. Adblock Plus blokerer ikke - noget uden filtre, sĂĄ brug "Tilføj Filterabonnementer; - for at tilføje nogen."> -<!ENTITY subscription.update.label "Opdater filtre"> -<!ENTITY dialog.title "Adblock Plus filterpræferencer"> -<!ENTITY addFilter.label "Ti&lføj filter"> -<!ENTITY subscription.minVersion.warning "Dette Filterabonnement kræver en nyere udgave af Adblock Plus. Opdater venligst."> -<!ENTITY subscription.lastDownload.invalidURL "Fejlede, ikke en gyldig adresse"> -<!ENTITY backup.error "Der opstod en skrivefejl. Kontroller at filen ikke er skrivebeskyttet eller ĂĄben i et andet program."> -<!ENTITY filter.moveUp.label "Flyt op"> -<!ENTITY addGroup.label "Tilføj filter&gruppe"> -<!ENTITY filter.edit.label "Rediger"> -<!ENTITY subscription.showHideFilters.label "Vis/skjul filtre"> -<!ENTITY acceptableAds2.label "T&illad upĂĄtrængende annoncering delvist"> -<!ENTITY addSubscriptionOther.label "Tilføj endnu et abonnement"> -<!ENTITY close.label "Luk"> -<!ENTITY sort.none.label "&Usorteret"> -<!ENTITY filter.actions.label "Filterhandlinger"> -<!ENTITY filter.copy.label "Kopier"> -<!ENTITY filter.moveDown.label "Flyt ned"> -<!ENTITY filter.resetHitCounts.label "Nulstil statistikker"> -<!ENTITY readMore.label "Lær mere"> -<!ENTITY subscription.moveUp.label "Flyt op"> -<!ENTITY addSubscription.label "Til&føj filterabonnement"> -<!ENTITY subscription.homepage.label "Hjemmeside"> -<!ENTITY backup.complete.title "Alle filtre og abonnementer"> -<!ENTITY restore.own.label "Gendan eget backup"> -<!ENTITY restore.complete.warning "Alle dine filterpræferencer erstattes af indholdet i den valgte fil. Vil du fortsætte?"> -<!ENTITY filters.tab.label "Tilpassede filtre"> -<!ENTITY backup.label "Opret nyt backup"> -<!ENTITY find.label "S&øg"> -<!ENTITY subscription.moveDown.label "Flyt op"> -<!ENTITY subscription.lastDownload.connectionError "Fejlede, hentningsfejl"> -<!ENTITY subscription.lastDownload.success "Succes"> -<!ENTITY subscription.lastDownload.invalidData "Fejlede, ikke en gyldig liste over filtre"> -<!ENTITY filter.paste.label "Sæt ind"> -<!ENTITY subscription.disabledFilters.enable "Aktiver deaktiverede filtre"> -<!ENTITY lasthit.column "Seneste h&it"> -<!ENTITY subscription.editTitle.label "Rediger titel"> -<!ENTITY subscription.disabledFilters.warning "Dette abonnement indeholder deaktiverede filtre."> -<!ENTITY filter.column "&Filterregel"> -<!ENTITY subscription.lastDownload.label "Sidst hentet:"> -<!ENTITY viewList.label "Vis liste"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/firstRun.properties deleted file mode 100644 index 57c941b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Deaktiver sporing - og skjul dine netvaner fra de annoncefirmaer der holder øje med din færden. -firstRun_toggle_off=FRA -firstRun_feature_tracking=Deaktiver sporing -firstRun_feature_malware=Malwareblokering -firstRun_title=Adblock Plus blev installeret -firstRun_toggle_on=TIL -firstRun_acceptableAdsExplanation=Vi vil gerne tilskynde websider til at bruge enkel, diskret annoncering. Derfor har vi indført <a>strenge retningslinjer</a> for at identificere de acceptable annoncer, der vises med standardindstillingerne. Hvis du stadig vil blokere alle annoncer, kan du let <a>deaktivere</a> dette. -firstRun_contributor_credits=Tak til -firstRun_dataCorruptionWarning=<a>Klik her!</a> hvis denne side bliver ved med at dukke op. -firstRun_acceptableAdsHeadline=Generende annoncer bliver nu blokeret -firstRun_share=Fortæl det til vennerne -firstRun_share_headline=<a>Giv en hĂĄnd</a> med at gøre internettet til et bedre sted -firstRun_feature_social_description=Fjern automatisk de knapper fra sociale medier, f.eks Facebook Like, som vises pĂĄ websider og sporer din adfærd. -firstRun_filterlistsReinitializedWarning=Et problem har tilsyneladende fjernet alle filtre og det var ikke muligt at gendanne en backup. Dine filtre og indstillinger for upĂĄtrængende annoncer er derfor blevet nulstillet. Kontroller dine filtre m.m. i <a>Adblock Plus præferencer</a>. -firstRun_feature_malware_description=Gør din browsing mere sikker ved at blokere kendte malwaredomæner. -firstRun_features=Adblock Plus kan mere end blot blokere annoncer -firstRun_donate=donĂ©r -firstRun_donate_label=Støt projektet -firstRun_feature_social=Fjern knapper fra sociale medier -firstRun_legacySafariWarning=Du bruger en gammel udgave af Safari, som ikke understøttes af Adblock Plus. Det kan fungere dĂĄrligt eller forringe brugeroplevelsen pĂĄ nogle websteder. Vi anbefaler kraftigt at opdatere til minimum Safari 6.1.1 (pĂĄ OS X 10,8 Mountain Lion), Safari 7.0.1 (pĂĄ OS X 10.9 Mavericks) eller bruge den nyeste Firefox, Google Chrome eller Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/global.properties deleted file mode 100644 index 6f29187..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ingen blokerbare elementer pĂĄ aktuel side -action3_tooltip=Klik for at aktivere/deaktivere Adblock Plus. -notification_antiadblock_title=Skjul mĂĄlrettede beskeder ? -type_label_script=script -filter_elemhide_nocriteria=Ingen kriterier angivet for at genkende elementet der skal skjules -blockingGroup_title=Blokeringsregler -whitelisted_tooltip=Adblock Plus er aktiv men slĂĄet fra pĂĄ nuværende side. -type_label_stylesheet=stilark -blocked_count_tooltip=?1? ud af ?2? -type_label_font=skrifttype -type_label_popup=popup vindue -filter_regexp_tooltip=Dette filter er enten et regulært udtryk eller for kort til at blive optimeret. For mange af disse kan gøre din browser langsommere. -action0_tooltip=Klik for at vise kontekstmenuen, midterklik aktiverer/deaktiverer. -whitelisted_page=Adblock Plus er slĂĄet fra for aktuel side -remove_group_warning=Vil du virkelig fjerne denne gruppe? -action1_tooltip=Klik for at ĂĄbne/lukke blokĂ©rbare elementer, midterklik aktiverer/deaktiverer. -type_label_xmlhttprequest=XML-forespørgsel -active_tooltip=Adblock Plus er aktiveret, ?1? filter-abonnementer og ?2? brugerdefinerede filtre i brug. -type_label_document=dokument -type_label_object_subrequest=objekt underforespørgsel -whitelistGroup_title=Undtagelsesregler -disabled_tooltip=Adblock Plus er deaktiveret. -filter_elemhide_duplicate_id=Kun Ă©t ID for elementet der skal skjules kan angives -type_label_object=objekt -action2_tooltip=Klik for at ĂĄbne indstillingerne, midterklik aktiverer/deaktiverer. -type_label_subdocument=ramme -clearStats_warning=Nulstiller hit statistikker for alle filtre og deaktiverer tælleren. Vil du fortsætte? -notification_antiadblock_message=Denne side er kendt for mĂĄlrettede beskeder til Adblock Plus brugere. Skal Adblock Plus skjule disse beskeder ? -blocked_count_addendum=(ogsĂĄ hvidlistet: ?1?, skjult: ?2?) -subscription_invalid_location=Filterlistens placering er hverken en gyldig URL eller et gyldigt filnavn. -type_label_image=billede -remove_subscription_warning=Vil du virkelig fjerne dette abonnement? -type_label_other=andet -mobile_menu_enable=ABP: Aktiver -type_label_media=audio/video -mobile_menu_disable_site=ABP: Deaktiver pĂĄ ?1? -elemhideGroup_title=Skjul emner regler -mobile_menu_enable_site=ABP: Aktiver pĂĄ ?1? -type_label_elemhide=skjult -newGroup_title=Ny filtergruppe -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/overlay.dtd deleted file mode 100644 index 89522f2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ja"> -<!ENTITY notification.button.no "&Nej"> -<!ENTITY sync.label "Syn&k Adblock Plus indstillinger"> -<!ENTITY whitelist.site.label "SlĂĄ fra pĂĄ ?1?"> -<!ENTITY filters.label "&Filterpræferencer"> -<!ENTITY disable.label "Deaktiver overalt"> -<!ENTITY objecttab.title "Bloker"> -<!ENTITY objecttab.tooltip "Klik her for at blokere dette objekt med Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus indstillinger"> -<!ENTITY objecttabs.label "Vis faner pĂĄ Flash og &Java"> -<!ENTITY sendReport.label "Ra&pporter problem"> -<!ENTITY whitelist.page.label "SlĂĄ fra pĂĄ denne side"> -<!ENTITY context.image.label "Adblock billede"> -<!ENTITY counthits.label "Tæl filter&hits"> -<!ENTITY opensidebar.label "Ă…bn blokĂ©&rbare elementer"> -<!ENTITY notification.button.close "&Luk"> -<!ENTITY contribute.label "Bidrag til Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock ramme"> -<!ENTITY blocked.tooltip "Blokerede emner pĂĄ denne side:"> -<!ENTITY hideplaceholders.label "Skjul blokerede emners &pladsholder"> -<!ENTITY showinstatusbar.label "&Vis pĂĄ statuslinje"> -<!ENTITY sidebar.title "BlokĂ©rbare elementer pĂĄ aktuel side"> -<!ENTITY options.label "In&dstillinger"> -<!ENTITY context.object.label "Adblock objekt"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: GenaktivĂ©r pĂĄ denne side"> -<!ENTITY filters.tooltip "Mest aktive filtre:"> -<!ENTITY closesidebar.label "Luk blokĂ©&rbare elementer"> -<!ENTITY showintoolbar.label "Vi&s pĂĄ værktøjslinje"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Bloker audio/video"> -<!ENTITY subscription.update.label "Opdater filtre"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sendReport.dtd deleted file mode 100644 index 5965eed..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Fortr&yd"> -<!ENTITY issues.disabledgroups.description "Følgende abonnementer/filtre er deaktiveret, men kan stadig pĂĄvirke siden:"> -<!ENTITY showData.label "Vis rapportdata"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokerer for &meget"> -<!ENTITY issues.change.description "Indstillingen blev ændret. Genindlæs siden og se om det har hjulpet. Indsend rapporten hvis problemet stadig findes."> -<!ENTITY email.label "E&mail:"> -<!ENTITY issues.openPreferences.label "Ă…ben filterindstillinger"> -<!ENTITY sendPage.confirmation "Rapporten er gemt. Den kan ses pĂĄ følgende adresse:"> -<!ENTITY copyLink.label "&Kopier link"> -<!ENTITY issues.nofilters.description "Adblock Plus blokerer intet pĂĄ denne side. Problemet skyldes sandsynligvis ikke Adblock Plus."> -<!ENTITY sendPage.knownIssue "Det rapporterede problem er sandsynligvis kendt. Mere information:"> -<!ENTITY typeSelector.other.description "Vælges hvis du tror problemet skyldes Adblock Plus selv og ikke filtrene."> -<!ENTITY issues.disabledgroups.enable.label "Aktiver abonnement/filtre"> -<!ENTITY typeWarning.override.label "&Jeg forstĂĄr og vil indsende alligevel."> -<!ENTITY issues.disabled.enable.label "Aktiver Adblock Plus"> -<!ENTITY update.fixed.description "Opdateringen af filterabonnementet har sandsynligvis løst dit problem. Genindlæs siden og prøv igen. Rapporter igen hvis problemet bestĂĄr."> -<!ENTITY anonymous.label "&Anonym indsendelse"> -<!ENTITY reloadButton.label "&Genindlæs side"> -<!ENTITY recentReports.clear.label "&Fjern alle rapporter"> -<!ENTITY typeSelector.description "Dette vindue vil føre dig gennem de trin der kræves for at rapportere et Adblock Plus problem. Vælg først hvilken problemtype du oplever pĂĄ denne side:"> -<!ENTITY screenshot.remove.label "&Dæk omrĂĄde"> -<!ENTITY issues.ownfilters.description "Der anvendes brugerdefinerede filtre pĂĄ denne side. Deaktiver filtret der mĂĄske forĂĄrsager problemet:"> -<!ENTITY update.inProgress.description "Adblock Plus skal opdatere dit filterabonnement for at sikre at problemet ikke er blevet løst. Vent..."> -<!ENTITY sendPage.retry.label "Send igen"> -<!ENTITY data.label "Ra&pportdata:"> -<!ENTITY recentReports.label "Dine seneste rapporter"> -<!ENTITY typeWarning.description "Du vil indsende en rapport om generelle problemer med Adblock Plus, og ikke med filtrene. Bemærk at den slags problemer behandles bedst i [link]Adblock Plus forum[/link]. Du bør kun bruge denne problemrapport som bilag til en eksisterende diskussion, da ingen bemærker den med mindre du angiver et link. Du vil modtage et link efter afsendelse af rapporten."> -<!ENTITY issues.disabled.description "Adblock Plus er deaktiveret og blokerer ingenting."> -<!ENTITY attachExtensions.label "&Vedhæft liste med aktive tilføjelser til konstatering af eventuelle konflikter"> -<!ENTITY issues.nosubscriptions.add.label "Tilføj filterabonnement"> -<!ENTITY issues.disabledfilters.enable.label "Aktiver filter"> -<!ENTITY issues.override.label "&Indstillingen er korrekt, fortsæt rapporten"> -<!ENTITY issues.nosubscriptions.description "Du abonnerer tilsyneladende ikke pĂĄ nogen af de filtre der automatisk fjerner uønsket indhold fra websider."> -<!ENTITY typeSelector.falsePositive.description "Vælges hvis siden mangler vigtigt indhold, vises forkert eller ikke fungerer rigtigt. Du kan se om problemet skyldes Adblock Plus ved at deaktivere det midlertidigt."> -<!ENTITY typeSelector.other.label "&Andet"> -<!ENTITY emailComment.label "Vi opfordrer dig til at angive en gyldig mailadresse, sĂĄ vi kan kontakte dig, hvis der er spørgsmĂĄl til rapporten. Det tillader ogsĂĄ genkendelse af dit bidrag for højere prioritet."> -<!ENTITY issues.whitelist.remove.label "Genaktiver Adblock Plus pĂĄ denne side"> -<!ENTITY outdatedSubscriptions.description "Følgende filterabonnementer er ikke opdateret i mindst to uger. Opdater før du rapporterer en fejl, problemet er muligvis løst allerede."> -<!ENTITY dataCollector.description "Vent et øjeblik mens Adblock Plus indsamler data."> -<!ENTITY sendButton.label "Se&nd rapport"> -<!ENTITY comment.label "&Kommentar (valgfri):"> -<!ENTITY sendPage.errorMessage "Afsendelse af rapporten fejlede med kode "?1?". Kontroller din internetforbindelse og prøv igen. Hvis problemet fortsætter sĂĄ søg hjælp i [link]Adblock Plus forum[/link]."> -<!ENTITY showRecentReports.label "Vis nyligt indsendte rapporter"> -<!ENTITY commentPage.heading "Indsæt kommentar"> -<!ENTITY update.start.label "Start opdatering"> -<!ENTITY issues.disabledfilters.description "Følgende filtre er deaktiveret, men kan stadig pĂĄvirke siden:"> -<!ENTITY screenshot.description "Samme side kan vises pĂĄ forskellige mĂĄder. Det vil hjælpe os med at forstĂĄ problemet, hvis du vedhæfter et screenshot til rapporten. Du kan dække følsomme data og markere omrĂĄder hvor problemet er tydeligt. Klik pĂĄ den ønskede knap og vælg et omrĂĄde med musen."> -<!ENTITY screenshot.attach.label "Vedhæft &billede"> -<!ENTITY issues.whitelist.description "Adblock Plus er deaktiveret pĂĄ siden du rapporterer. Genaktiver det og genindlæs siden før du indsender rapporten."> -<!ENTITY typeSelector.falseNegative.label "Adbloc&k Plus blokerer ikke annonce"> -<!ENTITY typeSelector.heading "Vælg problemtype"> -<!ENTITY anonymity.warning "Vi kan ikke kontakte dig, rapporten prioriteres lavere."> -<!ENTITY wizard.title "Rapporter problem"> -<!ENTITY issues.ownfilters.disable.label "Deaktiver filter"> -<!ENTITY commentPage.description "I tekstfeltet kan du beskrive problemet nærmere. Det er valgfrit, men vil hjælpe med at forstĂĄ problemet bedre. Du kan ogsĂĄ gennemse rapporten før du sender den."> -<!ENTITY comment.lengthWarning "Teksten overstiger 1000 tegn. Kun de første 1000 tegn bliver sendt."> -<!ENTITY typeSelector.falseNegative.description "Vælges hvis en annonce vises selv om Adblock Plus er aktiveret."> -<!ENTITY sendPage.waitMessage "Vent mens Adblock Plus sender rapporten."> -<!ENTITY dataCollector.heading "Velkommen til Rapporter problem"> -<!ENTITY screenshot.heading "Vedhæft screenshot"> -<!ENTITY sendPage.heading "Send rapport"> -<!ENTITY issues.subscriptionCount.description "Du abonnerer tilsyneladende pĂĄ for mange filtre. Det anbefales ikke, da det vil forøge chancen for problemer meget. Vi kan heller ikke acceptere din rapport, da det er uklart hvilken filterudvikler der skal behandle den. Fjern alle unødvendige filtre og se om problemet stadig eksisterer."> -<!ENTITY screenshot.mark.label "&Marker problem"> -<!ENTITY privacyPolicy.label "Privatlivspolitik"> -<!ENTITY issues.description "Adblock Plus har fundet problemer i dine indstillinger der kan forĂĄrsage dette probleme eller vanskeliggøre yderligere undesøgelser."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sidebar.dtd deleted file mode 100644 index 5e93842..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Fremhæv emnets kanter"> -<!ENTITY address.label "Adresse"> -<!ENTITY context.open.label "Ă…bn i nyt faneblad"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Filterkilde:"> -<!ENTITY noitems.label "Ingen blokĂ©rbare emner"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Størrelse:"> -<!ENTITY reattach.label "Gentilkobl"> -<!ENTITY search.label "S&øg:"> -<!ENTITY docDomain.thirdParty "(tredjeparts)"> -<!ENTITY filterSource.label "Filterkilde"> -<!ENTITY tooltip.docDomain.label "Dokumentkilde:"> -<!ENTITY context.copy.label "Kopier emnets adresse"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY context.disablefilter.label "Deaktiver filter ?1?"> -<!ENTITY context.copyFilter.label "Kopier filter"> -<!ENTITY context.block.label "BlokĂ©r dette emne"> -<!ENTITY context.enablefilter.label "Genaktiver filter ?1?"> -<!ENTITY detach.label "Frakobl"> -<!ENTITY whitelisted.label "Hvidlistet side"> -<!ENTITY context.disablefilteronsite.label "Deaktiver dette filter pĂĄ ?1?"> -<!ENTITY detached.title "Adblock Plus blokĂ©rbare emner (frakoblet)"> -<!ENTITY docDomain.firstParty "(førsteparts)"> -<!ENTITY tooltip.type.whitelisted "(hvidlistet)"> -<!ENTITY tooltip.filter.label "Fungerende filter:"> -<!ENTITY tooltip.filter.disabled "(deaktiveret)"> -<!ENTITY context.editfilter.label "RedigĂ©r aktuelt filter"> -<!ENTITY tooltip.type.blocked "(blokeret)"> -<!ENTITY size.label "Størrelse"> -<!ENTITY context.whitelist.label "Tilføj undtagelsesregel for emne"> -<!ENTITY context.selectAll.label "Vælg alle"> -<!ENTITY state.label "Tilstand"> -<!ENTITY docDomain.label "Dokumentkilde"> -<!ENTITY tooltip.address.label "Adresse:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/subscriptionSelection.dtd deleted file mode 100644 index cf25b98..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/da/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Tilføj og&sĂĄ filterabonnement "?1?"."> -<!ENTITY list.download.failed "Adblock Plus kunne ikke hente abonnementslisten."> -<!ENTITY list.download.retry "Prøv igen"> -<!ENTITY title.label "Abonnemen&tstitel:"> -<!ENTITY list.download.website "Se hjemmeside"> -<!ENTITY supplementMessage "Dette filterabonnement er beregnet til brug sammen med abonnementet "?1?" som du endnu ikke bruger."> -<!ENTITY viewList.label "Vis filtre"> -<!ENTITY visitHomepage.label "Besøg hjemmeside"> -<!ENTITY addSubscription.label "Tilføj abonnement"> -<!ENTITY dialog.title "Tilføj Adblock Plus filterabonnement"> -<!ENTITY location.label "Fi&lterlistens placering:"> -<!ENTITY fromWeb.description "Bekræft tilføjelsen af dette abonnement. Du kan ændre titel eller placering før det tilføjes."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/composer.dtd deleted file mode 100644 index 7d377e2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "am En&de der Adresse"> -<!ENTITY domainRestriction.label "Auf Do&main beschränken:"> -<!ENTITY collapse.default.no.label "Standardeinstellung (nein)"> -<!ENTITY firstParty.label "Nur fĂĽr Elemente der Ursprungsseite"> -<!ENTITY preferences.label "Existierende Filter an&zeigen ..."> -<!ENTITY pattern.label "Muster suchen"> -<!ENTITY thirdParty.label "Nur fĂĽr Elemen&te von Drittseiten"> -<!ENTITY filter.label "Neue &Filter:"> -<!ENTITY collapse.label "Platz frei&geben:"> -<!ENTITY match.warning "Das Muster, das Sie eingegeben haben, passt nicht mehr zu der Adresse, fĂĽr die der Filter erstellt werden soll. Es wird keinen Einfluss mehr auf diese Adresse haben."> -<!ENTITY anchor.start.label "am An&fang der Adresse"> -<!ENTITY matchCase.label "GroĂź-/&Kleinschreibung beachten"> -<!ENTITY custom.pattern.label "Be&nutzerdefiniert:"> -<!ENTITY unselectAllTypes.label "Keine auswählen"> -<!ENTITY type.whitelist.label "&Ausnahmeregel"> -<!ENTITY regexp.warning "Das Muster, das Sie eingegeben haben, wird als regulärer Ausdruck interpretiert. Zu viele reguläre AusdrĂĽcke könnten Ihren Browser verlangsamen. Falls Sie nicht beabsichtigt haben, reguläre AusdrĂĽcke zu verwenden, fĂĽgen Sie einfach das Symbol '*' am Ende des Musters an."> -<!ENTITY dialog.title "Neuen Filter hinzufĂĽgen"> -<!ENTITY basic.label "Standardansicht"> -<!ENTITY type.filter.label "&Blockierregel"> -<!ENTITY types.label "Auf Elementtypen anwenden:"> -<!ENTITY shortpattern.warning "Das Muster, das Sie eingegeben haben, ist zu kurz zum Optimieren. Zu viele solche Muster könnten Ihren Browser verlangsamen. Es ist deshalb empfehlenswert, nach Möglichkeit ein längeres Muster fĂĽr diesen Filter zu verwenden."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Muster nur akzeptieren:"> -<!ENTITY collapse.default.yes.label "Standardeinstellung (ja)"> -<!ENTITY domainRestriction.help "Geben Sie eine oder mehrere Domains an (Trennzeichen ist "|"), der Filter wird dann nur auf diesen Domains angewandt. Das Zeichen "~" vor einem Domainnamen bedeutet, dass der Filter auf dieser Domain nicht angewandt werden sollte."> -<!ENTITY accept.label "Filter hinzufĂĽgen"> -<!ENTITY options.label "Optionen"> -<!ENTITY disabled.warning "Adblock Plus ist deaktiviert. Sie können trotzdem den Filter hinzufĂĽgen, dieser wird jedoch erst angewandt, wenn Sie [link]Adblock Plus aktivieren[/link]."> -<!ENTITY anchor.start.flexible.label "am An&fang des Domain-Namens"> -<!ENTITY collapse.no.label "Nein"> -<!ENTITY selectAllTypes.label "Alle auswählen"> -<!ENTITY advanced.label "Erweiterte Ansicht"> -<!ENTITY pattern.explanation "Das Muster kann ein beliebiger Teil der Adresse sein, das Zeichen '*' kann dabei als Jokerzeichen verwendet werden. Der Filter wird nur auf Adressen angewandt, die auf das Muster passen."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/filters.dtd deleted file mode 100644 index 7c3e0f1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "Alle Ihre eigenen Filter werden durch den Inhalt dieser Datei ersetzt. Wollen Sie fortfahren?"> -<!ENTITY slow.column "&Langsame Filter"> -<!ENTITY enabled.column "A&ktiviert"> -<!ENTITY subscription.lastDownload.checksumMismatch "Fehler, PrĂĽfsumme ist falsch, möglicherweise ein Ăśbertragungsfehler"> -<!ENTITY noFiltersInGroup.text "Die gewählte Filtergruppe ist leer."> -<!ENTITY subscription.actions.label "Aktionen"> -<!ENTITY filter.selectAll.label "Alle auswählen"> -<!ENTITY backupButton.label "Sic&hern und Wiederherstellen"> -<!ENTITY restore.minVersion.warning "Warnung: diese Datei wurde mit einer neueren Version von Adblock Plus erstellt. Sie sollten Adblock Plus auf die neueste Version aktualisieren, bevor Sie Daten von dieser Sicherung wiederherstellen."> -<!ENTITY restore.error "Die Daten dieser Datei sind fehlerhaft, vielleicht ist es keine Sicherungsdatei von Adblock Plus?"> -<!ENTITY sort.ascending.label "&Aufsteigend"> -<!ENTITY sort.label "&Sortieren"> -<!ENTITY subscription.source.label "Filterliste"> -<!ENTITY hitcount.column "T&reffer"> -<!ENTITY noFilters.text "Sie haben noch keine eigenen Filter."> -<!ENTITY backup.custom.title "Nur eigene Filter"> -<!ENTITY subscription.external.label "Wird von einer anderen Erweiterung aktualisiert"> -<!ENTITY subscription.delete.label "Löschen"> -<!ENTITY noGroupSelected.text "Sie mĂĽssen eine Filtergruppe auswählen, um deren Inhalt anzuzeigen."> -<!ENTITY filter.cut.label "Ausschneiden"> -<!ENTITY restore.default.label "Sicherung von ?1? wiederherstellen"> -<!ENTITY subscription.lastDownload.inProgress "Wird heruntergeladen ..."> -<!ENTITY subscriptions.tab.label "Filterabonnements"> -<!ENTITY sort.descending.label "A&bsteigend"> -<!ENTITY filters.remove.warning "Wollen Sie wirklich alle ausgewählten Filter löschen?"> -<!ENTITY filter.delete.label "Löschen"> -<!ENTITY addSubscriptionAdd.label "HinzufĂĽgen"> -<!ENTITY viewMenu.label "Ansicht"> -<!ENTITY subscription.lastDownload.unknown "Nie"> -<!ENTITY addSubscriptionCancel.label "Abbrechen"> -<!ENTITY subscription.enabled.label "Aktiviert"> -<!ENTITY noSubscriptions.text "Sie haben noch keine Filterabonnements hinzugefĂĽgt. Ohne Filter wird Adblock Plus - nichts blockieren können, bitte benutzen Sie die Schaltfläche "Filterabonnement hinzufĂĽgen"."> -<!ENTITY subscription.update.label "Filter aktualisieren"> -<!ENTITY dialog.title "Filtereinstellungen von Adblock Plus"> -<!ENTITY addFilter.label "&Filter hinzufĂĽgen"> -<!ENTITY subscription.minVersion.warning "Diese Filterliste benötigt eine neuere Version von Adblock Plus, Sie sollten auf die neueste Version von Adblock Plus aktualisieren."> -<!ENTITY subscription.lastDownload.invalidURL "Fehler, ungĂĽltige Adresse"> -<!ENTITY backup.error "Beim Schreiben der Filter in die Datei ist ein Problem aufgetreten. Bitte stellen Sie sicher, dass die Datei nicht schreibgeschĂĽtzt ist oder von einem anderen Programm verwendet wird."> -<!ENTITY filter.moveUp.label "Nach oben verschieben"> -<!ENTITY addGroup.label "Filter&gruppe hinzufĂĽgen"> -<!ENTITY filter.edit.label "Bearbeiten"> -<!ENTITY subscription.showHideFilters.label "Filter anzeigen/verstecken"> -<!ENTITY acceptableAds2.label "Einige nicht auf&dringliche Werbung zulassen"> -<!ENTITY addSubscriptionOther.label "Anderes Abonnement hinzufĂĽgen"> -<!ENTITY close.label "SchlieĂźen"> -<!ENTITY sort.none.label "&Unsortiert"> -<!ENTITY filter.actions.label "Filteraktionen"> -<!ENTITY filter.copy.label "Kopieren"> -<!ENTITY filter.moveDown.label "Nach unten verschieben"> -<!ENTITY filter.resetHitCounts.label "Trefferstatistiken zurĂĽcksetzen"> -<!ENTITY readMore.label "Mehr Information"> -<!ENTITY subscription.moveUp.label "Nach oben verschieben"> -<!ENTITY addSubscription.label "Filtera&bonnement hinzufĂĽgen"> -<!ENTITY subscription.homepage.label "Webseite"> -<!ENTITY backup.complete.title "Alle Filter und alle Filterabonnements"> -<!ENTITY restore.own.label "Eigene Sicherung wiederherstellen"> -<!ENTITY restore.complete.warning "Alle Ihre Filtereinstellungen werden durch den Inhalt dieser Datei ersetzt. Wollen Sie fortfahren?"> -<!ENTITY filters.tab.label "Eigene Filter"> -<!ENTITY backup.label "Neue Sicherung erstellen"> -<!ENTITY find.label "Filter durch&suchen"> -<!ENTITY subscription.moveDown.label "Nach unten verschieben"> -<!ENTITY subscription.lastDownload.connectionError "Fehler, Herunterladen fehlgeschlagen"> -<!ENTITY subscription.lastDownload.success "Erfolgreich"> -<!ENTITY subscription.lastDownload.invalidData "Fehler, keine gĂĽltige Filterliste"> -<!ENTITY filter.paste.label "EinfĂĽgen"> -<!ENTITY subscription.disabledFilters.enable "Deaktivierte Filter aktivieren"> -<!ENTITY lasthit.column "Let&zter Treffer"> -<!ENTITY subscription.editTitle.label "Umbenennen"> -<!ENTITY subscription.disabledFilters.warning "Einige Filter in dieser Filterliste sind deaktiviert."> -<!ENTITY filter.column "&Filterregel"> -<!ENTITY subscription.lastDownload.label "Zuletzt aktualisiert:"> -<!ENTITY viewList.label "Liste öffnen"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/firstRun.properties deleted file mode 100644 index 98089de..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Privates Surfen durch Deaktivierung der Tracker - Versteckt Ihr Surfverhalten vor Werbefirmen, die Sie sonst ausspionieren wĂĽrden. -firstRun_toggle_off=AUS -firstRun_feature_tracking=Verfolgung ausschalten -firstRun_feature_malware=Malware-Blockierung -firstRun_title=Adblock Plus wurde installiert -firstRun_toggle_on=AN -firstRun_acceptableAdsExplanation=Wir möchten Webseiten dazu ermutigen schlichte und unaufdringliche Werbung zu verwenden. Deshalb werden durch <a>strenge Richtlinien</a> akzeptable Werbeanzeigen bestimmt, welche unter Standard-Einstellungen noch angezeigt werden. Wenn Sie jedoch alle Werbungen blockieren möchten, können Sie diese Einstellung in kurzer Zeit <a>deaktivieren</a>. -firstRun_contributor_credits=Mitwirkende -firstRun_dataCorruptionWarning=Wird diese Seite immer wieder angezeigt? <a>Bitte hier klicken!</a> -firstRun_acceptableAdsHeadline=Lästige Werbung wird jetzt blockiert -firstRun_share=Weiterempfehlen -firstRun_share_headline=<a>Bitte unterstĂĽtzen Sie uns</a> dabei, das Internet zu einem besseren Ort zu machen -firstRun_feature_social_description=Entfernt Social-Media-Buttons (z.B. den Facebook-Like) die auf Webseiten erscheinen und Ihr Surfverhalten aufzeichnen. -firstRun_filterlistsReinitializedWarning=Es scheint, als ob aufgrund eines Problems alle Filter entfernt wurden und wir keine Sicherung wiederherstellen konnten. Deshalb wurden alle Ihre Filter sowie Ihre Einstellungen fĂĽr akzeptable Werbung zurĂĽckgesetzt werden. ĂśberprĂĽfen Sie bitte Ihre Filterliste und Ihre Einstellungen fĂĽr akzeptable Werbung in den <a>Adblock Plus Optionen</a>. -firstRun_feature_malware_description=Sicheres Surfen durch Blockieren von infizierten Webseiten. -firstRun_features=Adblock Plus kann mehr als nur Werbung blockieren -firstRun_donate=Spenden -firstRun_donate_label=UnterstĂĽtzen Sie unser Projekt -firstRun_feature_social=Social Media-Buttons entfernen -firstRun_legacySafariWarning=Sie verwenden eine ältere Version von Safari, die nicht von Adblock Plus unterstĂĽtzt wird. Es kann sein, dass Adblock Plus damit nicht richtig funktioniert oder dass bestimmte Websites nicht richtig dargestellt werden. Wir empfehlen deshalb dringend, entweder einen Upgrade auf Safari 6.1.1 oder höher (auf OS X 10.8 Mountain Lion) oder auf Safari 7.0.1 oder höher (auf OS X 10.9 Mavericks) durchzufĂĽhren oder die neueste Version von Mozilla Firefox, Google Chrome oder Opera zu verwenden. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/global.properties deleted file mode 100644 index da3cac2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Auf der geöffneten Seite gibt es keine Elemente, die blockiert werden könnten -action3_tooltip=Adblock Plus ein- bzw. ausschalten -notification_antiadblock_title=Zielgerichtete Nachrichten ausblenden? -type_label_script=Skript -filter_elemhide_nocriteria=Keine Kriterien angegeben, um das zu versteckende Element zu erkennen -blockingGroup_title=Blockierregeln -whitelisted_tooltip=Adblock Plus ist auf dieser Seite deaktiviert. -type_label_stylesheet=Stylesheet -blocked_count_tooltip=?1? von ?2? -type_label_font=Schriftart -type_label_popup=Pop-up-Fenster -filter_regexp_tooltip=Dieser Filter ist entweder ein regulärer Ausdruck oder zu kurz zum Optimieren. Zu viele solche Filter könnten Ihren Browser verlangsamen. -action0_tooltip=KontextmenĂĽ anzeigen. Mittlere Maustaste schaltet Adblock Plus ein und aus. -whitelisted_page=Adblock Plus wurde fĂĽr die geöffnete Seite deaktiviert -remove_group_warning=Sind Sie sicher, dass Sie diese Filtergruppe entfernen möchten? -action1_tooltip=Liste blockierbarer Elemente öffnen bzw. schlieĂźen. Mittlere Maustaste schaltet Adblock Plus ein und aus. -type_label_xmlhttprequest=XML-Anfrage -active_tooltip=Adblock Plus ist aktiv, ?1? Filterabonnement(s) und ?2? eigene Filter werden verwendet. -type_label_document=Dokument -type_label_object_subrequest=Objekt-Anfrage -whitelistGroup_title=Ausnahmeregeln -disabled_tooltip=Adblock Plus ist deaktiviert. -filter_elemhide_duplicate_id=Nur ein ID-Wert des zu versteckenden Elements kann angegeben werden -type_label_object=Objekt -action2_tooltip=Adblock Plus Einstellungen öffnen. Mittlere Maustaste schaltet Adblock Plus ein und aus. -type_label_subdocument=Frame -clearStats_warning=Alle Trefferstatistiken werden zurĂĽckgesetzt und Filtertreffer werden in Zukunft nicht mehr gezählt. Wollen Sie fortfahren? -notification_antiadblock_message=Diese Seite hat in der Vergangenheit Adblock Plus-Nutzern gezielt Nachrichten angezeigt. Soll Adblock Plus Nachrichten dieser Art verstecken? -blocked_count_addendum=(auĂźerdem Ausnahmen: ?1?, versteckte Elemente: ?2?) -subscription_invalid_location=Die eingegebene Adresse ist weder eine gĂĽltige Web-Adresse, noch ein gĂĽltiger Dateiname. -type_label_image=Grafik -remove_subscription_warning=Sind Sie sicher, dass Sie dieses Abonnement entfernen möchten? -type_label_other=Unbekannt -mobile_menu_enable=ABP: Aktivieren -type_label_media=Audio/Video -mobile_menu_disable_site=ABP: Deaktivieren auf ?1? -elemhideGroup_title=Regeln zum Verstecken von Elementen -mobile_menu_enable_site=ABP: Aktivieren auf ?1? -type_label_elemhide=Versteckt -newGroup_title=Neue Filtergruppe -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/overlay.dtd deleted file mode 100644 index 7007b24..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ja"> -<!ENTITY notification.button.no "&Nein"> -<!ENTITY sync.label "Adblock Plus-Einstellungen s&ynchonisieren"> -<!ENTITY whitelist.site.label "Deaktivieren: auf ?1?"> -<!ENTITY filters.label "Filterein&stellungen"> -<!ENTITY disable.label "Ăśberall deaktivieren"> -<!ENTITY objecttab.title "Blockieren"> -<!ENTITY objecttab.tooltip "Klicken Sie hier, um dieses Objekt mit Adblock Plus zu blockieren"> -<!ENTITY menuitem.label "&Adblock Plus - Einstellungen"> -<!ENTITY objecttabs.label "Ta&b zum Blockieren von Flash und Java anzeigen"> -<!ENTITY sendReport.label "&Fehler auf dieser Seite melden"> -<!ENTITY whitelist.page.label "Deaktivieren: nur auf dieser Seite"> -<!ENTITY context.image.label "Adblock Plus: Grafik blockieren"> -<!ENTITY counthits.label "Filtertreffer &zählen"> -<!ENTITY opensidebar.label "&Blockierbare Elemente öffnen"> -<!ENTITY notification.button.close "&SchlieĂźen"> -<!ENTITY contribute.label "Zu Adblock Plus beitragen"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Frame blockieren"> -<!ENTITY blocked.tooltip "Blockierte Elemente auf dieser Seite:"> -<!ENTITY hideplaceholders.label "P&latzhalter blockierter Elemente verstecken"> -<!ENTITY showinstatusbar.label "In &Statusleiste anzeigen"> -<!ENTITY sidebar.title "Elemente der geöffneten Seite"> -<!ENTITY options.label "&Optionen"> -<!ENTITY context.object.label "Adblock Plus: Objekt blockieren"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Auf dieser Seite wieder aktivieren"> -<!ENTITY filters.tooltip "Am meisten angewandte Filter:"> -<!ENTITY closesidebar.label "&Blockierbare Elemente schlieĂźen"> -<!ENTITY showintoolbar.label "In Symbolleis&te anzeigen"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Audio-/Video-Element blockieren"> -<!ENTITY subscription.update.label "Filter aktualisieren"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sendReport.dtd deleted file mode 100644 index 5dfc848..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sendReport.dtd +++ /dev/null @@ -1,105 +0,0 @@ -<!ENTITY screenshot.undo.label "&RĂĽckgängig"> -<!ENTITY issues.disabledgroups.description "Die folgenden Filterabonnements / Filtergruppen sind deaktiviert, hätten jedoch - einen Einfluss auf diese Webseite:"> -<!ENTITY showData.label "Berichtdaten anzeigen"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blockiert zu &viel"> -<!ENTITY issues.change.description "Ihre Einstellungen wurden geändert. Bitte laden Sie die Seite neu, um die Ă„nderungen - jetzt zu testen. Bitte melden Sie den Fehler, falls das Problem durch die - Ă„nderungen nicht gelöst wurde."> -<!ENTITY email.label "E-&Mail:"> -<!ENTITY issues.openPreferences.label "Filtereinstellungen öffnen"> -<!ENTITY sendPage.confirmation "Ihr Bericht wurde gespeichert. Sie können Ihn unter der folgenden Adresse aufrufen:"> -<!ENTITY copyLink.label "Lin&k zum Bericht kopieren"> -<!ENTITY issues.nofilters.description "Adblock Plus blockiert auf dieser Seite nichts. Das Problem, das Sie sehen, wurde - wahrscheinlich nicht von Adblock Plus verursacht."> -<!ENTITY sendPage.knownIssue "Das Problem, das Sie berichtet haben, ist möglicherweise bereits bekannt. Zusätzliche Information:"> -<!ENTITY typeSelector.other.description "Wählen Sie diese Option, falls Sie ein Problem mit Adblock Plus selber und nicht - mit dessen Filtern vermuten."> -<!ENTITY issues.disabledgroups.enable.label "Filterabonnement / Filtergruppe aktivieren"> -<!ENTITY typeWarning.override.label "Ich &verstehe und will trotzdem einen Fehlerbericht einsenden"> -<!ENTITY issues.disabled.enable.label "Adblock Plus aktivieren"> -<!ENTITY update.fixed.description "Die Aktualisierung Ihrer Filterabonnements hat das Problem wahrscheinlich - bereits gelöst. Bitte laden Sie die Seite neu und senden Sie den Fehlerbericht - noch einmal ab, falls das Problem weiterhin besteht."> -<!ENTITY anonymous.label "&Anonymer Beitrag"> -<!ENTITY reloadButton.label "Seite &neu laden"> -<!ENTITY recentReports.clear.label "Alle Be&richte löschen"> -<!ENTITY typeSelector.description "Dieser Assistent wird Sie durch die nötigen Schritte zum Melden eines Adblock Plus-Fehlers - leiten. Zuerst wählen Sie bitte die Art des Fehlers, den Sie auf dieser Seite - beobachten:"> -<!ENTITY screenshot.remove.label "&Private Informationen löschen"> -<!ENTITY issues.ownfilters.description "Einige der Filter, die auf dieser Seite angewandt wurden, sind benutzerdefiniert. - Bitte deaktivieren Sie Filter, die das Problem verursacht haben könnten:"> -<!ENTITY update.inProgress.description "Adblock Plus muss Ihre Filterabonnements aktualisieren, um sicherzustellen, - dass das Problem nicht bereits gelöst ist. Bitte warten Sie ..."> -<!ENTITY sendPage.retry.label "Noch einmal senden"> -<!ENTITY data.label "Bericht&daten:"> -<!ENTITY recentReports.label "Ihre zuletzt gesendeten Fehlerberichte"> -<!ENTITY typeWarning.description "Sie haben angedeutet, dass Sie ein allgemeines Problem mit Adblock Plus melden wollen - und kein Filterproblem. Bitte beachten Sie, dass solche Probleme am besten im - [link]Adblock Plus Forum[/link] gemeldet werden sollten. Den Fehlerberichts-Assistenten - sollte man nur als Ergänzung zu einer vorhandenen Diskussion verwenden. Sie mĂĽssen - den Link zu Ihrem Fehlerbericht angeben, weil ihn sonst niemand sehen wird. - Diesen automatisch generierten Link bekommen Sie nach dem Senden des Berichts."> -<!ENTITY issues.disabled.description "Adblock Plus ist deaktiviert, in diesem Zustand wird es nichts blockieren."> -<!ENTITY attachExtensions.label "Liste aktiver Er&weiterungen anhängen fĂĽr den Fall, dass das Problem von einer anderen Erweiterung verursacht wird"> -<!ENTITY issues.nosubscriptions.add.label "Filterabonnement hinzufĂĽgen"> -<!ENTITY issues.disabledfilters.enable.label "Filter aktivieren"> -<!ENTITY issues.override.label "Die Einstellungen sind so &korrekt, mit dem Fehlerbericht fortfahren"> -<!ENTITY issues.nosubscriptions.description "Es scheint, dass Sie keine der fertigen Filterlisten abonniert haben. Ein solches - kostenloses Abonnement ist jedoch erforderlich, um automatisch Werbung zu entfernen."> -<!ENTITY typeSelector.falsePositive.description "Wählen Sie diese Option, falls auf der Seite wichtige Inhalte fehlen, die Seite - falsch angezeigt wird oder nicht korrekt funktioniert. Sie können feststellen, - ob Adblock Plus das Problem verursacht, indem Sie es vorĂĽbergehend deaktivieren."> -<!ENTITY typeSelector.other.label "An&derer Fehler"> -<!ENTITY emailComment.label "Wir empfehlen Ihnen, eine gĂĽltige e-Mail-Adresse einzugeben, damit wir Sie kontaktieren können, falls es Fragen zu Ihrem Bericht gibt. Es erlaubt uns, Ihre Beiträge zu erkennen und diesen höhere Prioritäten beizumessen."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus auf dieser Seite wieder aktivieren"> -<!ENTITY outdatedSubscriptions.description "Die folgenden Filterabonnements wurden mindesten zwei Wochen lang nicht - aktualisiert. Bitte aktualisieren Sie diese, bevor Sie einen Fehlerbericht - senden, das Problem könnte bereits gelöst sein."> -<!ENTITY dataCollector.description "Bitte warten Sie einige Augenblicke, während Adblock Plus die benötigten Daten sammelt."> -<!ENTITY sendButton.label "Bericht ab&senden"> -<!ENTITY comment.label "&Kommentar (optional):"> -<!ENTITY sendPage.errorMessage "Beim Senden des Berichts ist ein Fehler aufgetreten (Fehlercode "?1?"). - Bitte stellen Sie sicher, dass Sie mit dem Internet verbunden sind, und versuchen - Sie, den Bericht noch einmal zu senden. Falls das Problem bestehen bleibt, wenden - Sie sich an das [link]Adblock Plus Forum[/link]."> -<!ENTITY showRecentReports.label "Zuletzt gesendeten Fehlerberichte anzeigen"> -<!ENTITY commentPage.heading "Kommentar eingeben"> -<!ENTITY update.start.label "Aktualisierung starten"> -<!ENTITY issues.disabledfilters.description "Die folgenden Filter sind deaktiviert, hätten jedoch einen Einfluss auf diese Webseite:"> -<!ENTITY screenshot.description "Dieselbe Seite kann bei verschiedenen Leuten verschieden aussehen. Deswegen könnte es - hilfreich sein, wenn Sie zu Ihrem Bericht ein Bild der Webseite hinzufĂĽgen. Sie können - Teile der Seite entfernen, falls sie private Informationen enthalten. Ebenso können - Sie Stellen markieren, wo das Problem deutlich wird. Klicken Sie dafĂĽr die entsprechende - Taste und markieren Sie den Bereich auf dem Bild mit der Maus."> -<!ENTITY screenshot.attach.label "Dieses &Bild meinem Bericht hinzufĂĽgen"> -<!ENTITY issues.whitelist.description "Adblock Plus ist derzeit deaktiviert auf der Seite, fĂĽr die Ihr Bericht gesendet werden - soll. Bitte aktivieren Sie Adblock Plus wieder und laden Sie die Seite neu, bevor Sie - den Fehler melden. Das wird die Untersuchung des Problems vereinfachen."> -<!ENTITY typeSelector.falseNegative.label "Eine &Werbeeinblendung wird von Adblock Plus nicht blockiert"> -<!ENTITY typeSelector.heading "Fehlerart wählen"> -<!ENTITY anonymity.warning "Es ist uns nicht möglich sich erneut an Sie zu wenden und wir werden Ihrem Bericht eine niedrigere Priorität beimessen."> -<!ENTITY wizard.title "Fehler melden"> -<!ENTITY issues.ownfilters.disable.label "Filter deaktivieren"> -<!ENTITY commentPage.description "Unten können Sie einen Kommentar eingeben, um uns zu helfen, das Problem zu verstehen. - Das ist zwar optional, ist jedoch empfohlen, falls das Problem nicht offensichtlich ist. - Sie können auch die Daten Ihres Berichts ĂĽberprĂĽfen, bevor sie gesendet werden."> -<!ENTITY comment.lengthWarning "Ihr Kommentar ist länger als 1000 Zeichen. Nur die ersten 1000 Zeichen werden gesendet."> -<!ENTITY typeSelector.falseNegative.description "Wählen Sie diese Option, falls Werbung auf der Seite angezeigt wird, obwohl - Adblock Plus aktiviert ist."> -<!ENTITY sendPage.waitMessage "Bitte warten Sie, während Adblock Plus Ihren Bericht sendet."> -<!ENTITY dataCollector.heading "Willkommen zum Fehlerberichts-Assistenten"> -<!ENTITY screenshot.heading "Bildschirmfoto hinzufĂĽgen"> -<!ENTITY sendPage.heading "Bericht absenden"> -<!ENTITY issues.subscriptionCount.description "Es scheint, dass Sie zu viele Filterlisten abonniert haben. Das ist nicht - empfohlen, weil die Wahrscheinlichkeit von Problemen dadurch sehr stark - ansteigt. Wir können auĂźerdem Ihren Fehlerbericht nicht annehmen, weil unklar - ist, welche Filterliste fĂĽr das Problem verantwortlich ist. Bitte entfernen - Sie alle bis auf die wirklich notwendigen Filterabonnements und ĂĽberprĂĽfen - Sie dann, ob das Problem immer noch auftritt."> -<!ENTITY screenshot.mark.label "Proble&m markieren"> -<!ENTITY privacyPolicy.label "Datenschutzerklärung"> -<!ENTITY issues.description "Adblock Plus hat Probleme in Ihren Einstellungen gefunden, die fĂĽr das vorliegende - Problem verantwortlich sein könnten oder eine Untersuchung des Problems behindern - wĂĽrden."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sidebar.dtd deleted file mode 100644 index cac33e3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Position des Elements aufzeigen"> -<!ENTITY address.label "Adresse"> -<!ENTITY context.open.label "Adresse in neuem Tab öffnen"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "Herkunft des Filters:"> -<!ENTITY noitems.label "Keine blockierbaren Elemente"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Größe:"> -<!ENTITY reattach.label "Ankoppeln"> -<!ENTITY search.label "&Suchen:"> -<!ENTITY docDomain.thirdParty "(Anfrage zu einer Drittseite)"> -<!ENTITY filterSource.label "Filterquelle"> -<!ENTITY tooltip.docDomain.label "Ursprungsdomain:"> -<!ENTITY context.copy.label "Adresse des Elements kopieren"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Filter ?1? deaktivieren"> -<!ENTITY context.copyFilter.label "Filter kopieren"> -<!ENTITY context.block.label "Dieses Element blockieren"> -<!ENTITY context.enablefilter.label "Filter ?1? wieder aktivieren"> -<!ENTITY detach.label "Abkoppeln"> -<!ENTITY whitelisted.label "Deaktiviert auf dieser Seite"> -<!ENTITY context.disablefilteronsite.label "Diesen Filter auf ?1? deaktivieren"> -<!ENTITY detached.title "Adblock Plus: Elemente der geöffneten Seite (abgekoppelt)"> -<!ENTITY docDomain.firstParty "(Anfrage zu derselben Domain)"> -<!ENTITY tooltip.type.whitelisted "(Ausnahmeregel aktiv)"> -<!ENTITY tooltip.filter.label "Angewandter Filter:"> -<!ENTITY tooltip.filter.disabled "(deaktiviert)"> -<!ENTITY context.editfilter.label "Angewandten Filter bearbeiten"> -<!ENTITY tooltip.type.blocked "(blockiert)"> -<!ENTITY size.label "Größe"> -<!ENTITY context.whitelist.label "Ausnahmeregel fĂĽr das Element hinzufĂĽgen"> -<!ENTITY context.selectAll.label "Alles auswählen"> -<!ENTITY state.label "Status"> -<!ENTITY docDomain.label "Ursprungsdomain"> -<!ENTITY tooltip.address.label "Addresse:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/subscriptionSelection.dtd deleted file mode 100644 index ee00470..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/de/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Filterabonnement »?1?« auc&h hinzufĂĽgen"> -<!ENTITY list.download.failed "Adblock Plus konnte die Liste der Filterabonnements nicht herunterladen."> -<!ENTITY list.download.retry "Nochmal versuchen"> -<!ENTITY title.label "Be&zeichnung des Abonnements:"> -<!ENTITY list.download.website "Internetseite ansehen"> -<!ENTITY supplementMessage "Dieses Filterabonnement sollte in Verbindung mit dem Filterabonnement »?1?« verwendet werden."> -<!ENTITY viewList.label "Filter ansehen"> -<!ENTITY visitHomepage.label "Webseite der Filterliste besuchen"> -<!ENTITY addSubscription.label "Filterabonnement hinzufĂĽgen"> -<!ENTITY dialog.title "Filterabonnement fĂĽr Adblock Plus hinzufĂĽgen"> -<!ENTITY location.label "Ad&resse der Filterliste:"> -<!ENTITY fromWeb.description "Bitte bestätigen Sie, dass Sie dieses Filterabonnement hinzufĂĽgen möchten. Die Bezeichnung und Adresse der Abonnements können vor dem HinzufĂĽgen geändert werden."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/composer.dtd deleted file mode 100644 index 1b3fd03..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na kóń&cu adrese"> -<!ENTITY domainRestriction.label "WobgranicowaĹ› na &domenu:"> -<!ENTITY collapse.default.no.label "Standard wuĹľywaĹ› (nÄ›)"> -<!ENTITY firstParty.label "&Jano prÄ›dny bok"> -<!ENTITY preferences.label "&EksistÄ›rujuce filtry pokazaĹ›..."> -<!ENTITY pattern.label "Muster pytaĹ›"> -<!ENTITY thirdParty.label "Jano &tĹ›eĹ›i bok"> -<!ENTITY filter.label "Nowy &filter:"> -<!ENTITY collapse.label "B&lokÄ›rowane zĹ‚oĹľyĹ›:"> -<!ENTITY match.warning "Muster, kĂłtaryĹľ sćo zapĂłdaĹ‚, wÄ›cej njewĂłtpowÄ›dujo adresy, kĂłtaraĹľ ma se blokÄ›rowaĹ›/do běłeje lisćiny pĹ›ewzeĹ› a njezmÄ›jo Ĺľedno wustatkowanje na nju."> -<!ENTITY anchor.start.label "na zac&hopjeĹ„ku adrese"> -<!ENTITY matchCase.label "&Na wjelikopisanje ĹşiwaĹ›"> -<!ENTITY custom.pattern.label "&SwĂłjski:"> -<!ENTITY unselectAllTypes.label "Ĺ˝eden wubraĹ›"> -<!ENTITY type.whitelist.label "&WuwzeĹ›owe pšawidĹ‚o"> -<!ENTITY regexp.warning "Muster, kĂłtaryĹľ sćo zapĂłdaĹ‚, buĹşo se ako regularny wuraz interpretÄ›rowaĹ›, kĂłtaryĹľ njedajo se pĹ›ez Adblock Plus statkownje pĹ›eźěłaĹ› a mĂłgĹ‚ waš wobglÄ›dowak spomałšyĹ›. Jolic njocoĹ›o regularny wuraz wuĹľywaĹ›, pĹ›idajĹ›o gwÄ›zdku (*) ke kóńcoju mustra."> -<!ENTITY dialog.title "Filtrowe pšawidĹ‚o Adblock Plus pĹ›idaĹ›"> -<!ENTITY basic.label "ZakĹ‚adny naglÄ›d"> -<!ENTITY type.filter.label "&BlokÄ›rujucy filter"> -<!ENTITY types.label "Na typy naĹ‚oĹľyĹ›:"> -<!ENTITY shortpattern.warning "Muster, kĂłtaryĹľ sćo zapĂłdaĹ‚, jo za optimÄ›rowanje pĹ›ekrotko a mĂłgĹ‚ waš wobglÄ›dowak spomałšyĹ›. PĹ›iraĹşujo se, aĹľ wubjerjoĹ›o dlěšy znamuškowy rjeĹ›azk za toĹ› ten filter, aby wy Adblock Plus dowĂłliĹ‚, filter statkownjej pĹ›eźěłaĹ‚."> -<!ENTITY collapse.yes.label "Jo"> -<!ENTITY anchors.label "Jano muster akceptÄ›rowaĹ›:"> -<!ENTITY collapse.default.yes.label "Standard wuĹľywaĹ› (jo)"> -<!ENTITY domainRestriction.help "WuĹľyjĹ›o toĹ› tu opciju, aby wy pĂłdaĹ‚ jadnu domenu abo nÄ›kotare domeny, kĂłtareĹľ wĂłtdźěluju se pĹ›ez wertikalnu ceru (|). Filter buĹşo se jano na wubrane domeny naĹ‚oĹľowaĹ›. Tilda (~) pĹ›ed domenowym mjenim pĂłdawa, aĹľ filter njebuĹşo se na tu domenu naĹ‚oĹľowaĹ›."> -<!ENTITY accept.label "Filter pĹ›idaĹ›"> -<!ENTITY options.label "Opcije"> -<!ENTITY disabled.warning "Adblock Plus jo tuchylu znjemóžnjony. MóžoĹ›o hyšći filtry pĹ›idaĹ›, ale njebudu se naĹ‚oĹľowaĹ›, snaĹşkuli [link]zmóžnijoĹ›o Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "na zac&hopjeĹ„ku mjenja domeny"> -<!ENTITY collapse.no.label "NÄ›"> -<!ENTITY selectAllTypes.label "Wšykne wubraĹ›"> -<!ENTITY advanced.label "Rozšyrjony naglÄ›d"> -<!ENTITY pattern.explanation "Muster móžo źěl adrese byĹ›; gwÄ›zdki (*) funkcionÄ›ruju ako zastupujuce symbole. Filter buĹşo se janĹľ na adrese naĹ‚oĹľowaĹ›, kĂłtareĹľ wĂłtpowÄ›duju pĂłdanemu mustroju."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/filters.dtd deleted file mode 100644 index 35ed52d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Wšykne waše swĂłjske filtry budu se pĹ›ez wopĹ›imjeĹ›e wubraneje dataje narownowaĹ›. CoĹ›o dalej cyniĹ›?"> -<!ENTITY slow.column "&PĂłmaĹ‚e filtry"> -<!ENTITY enabled.column "Z&móžnjony"> -<!ENTITY subscription.lastDownload.checksumMismatch "NjeraĹşiĹ‚o, wopacna kontrolna suma"> -<!ENTITY noFiltersInGroup.text "Wubrana kupka jo prozna."> -<!ENTITY subscription.actions.label "Akcije"> -<!ENTITY filter.selectAll.label "Wšykno wubraĹ›"> -<!ENTITY backupButton.label "&ZawÄ›sćiĹ› a wĂłtnowiĹ›"> -<!ENTITY restore.minVersion.warning "Warnowanje: Dataja jo se pĹ›ez nowšu wersiju Adblock Plus napĂłraĹ‚a. Wy by měł na nejnowšu wersiju Adblock Plus aktualizÄ›rowaĹ›, njeĹľli aĹľ wĂłtnowijoĹ›o toĹ› tu dataju."> -<!ENTITY restore.error "Daty dataje njedaju se pĹ›eźěłaĹ›, jo móžno, aĹľ wĂłna njejo zawÄ›sćeĹ„ska dataja Adblock Plus?"> -<!ENTITY sort.ascending.label "SortÄ›row&aĹ„ski pĂłrÄ›d A > Z"> -<!ENTITY sort.label "&SortÄ›rowaĹ› pĂł"> -<!ENTITY subscription.source.label "Filtrowa lisćina"> -<!ENTITY hitcount.column "&Trjefarje"> -<!ENTITY noFilters.text "Njejsćo Ĺľedne swĂłjske filtry."> -<!ENTITY backup.custom.title "Jano swĂłjske filtry"> -<!ENTITY subscription.external.label "PĹ›ez druge rozšyrjenje aktualizÄ›rowany"> -<!ENTITY subscription.delete.label "LašowaĹ›"> -<!ENTITY noGroupSelected.text "MusyĹ›o filtrowu kupku wubraĹ›, njeĹľli aĹľ jeje filtry daju se pokazaĹ›."> -<!ENTITY filter.cut.label "WurÄ›zaĹ›"> -<!ENTITY restore.default.label "ZawÄ›sćeĹ„sku kopiju z ?1? wĂłtnowiĹ›"> -<!ENTITY subscription.lastDownload.inProgress "Ześěgujo se..."> -<!ENTITY subscriptions.tab.label "Filtrowe abonementy"> -<!ENTITY sort.descending.label "SortÄ›rowaĹ„ski pĂłrÄ›d &Z > A"> -<!ENTITY filters.remove.warning "CoĹ›o napšawdu wšykne wubrane filtry wĂłtpĂłraĹ›?"> -<!ENTITY filter.delete.label "LašowaĹ›"> -<!ENTITY addSubscriptionAdd.label "PĹ›idaĹ›"> -<!ENTITY viewMenu.label "NaglÄ›d"> -<!ENTITY subscription.lastDownload.unknown "Njejo nic k dispoziciji"> -<!ENTITY addSubscriptionCancel.label "PĹ›etergnuĹ›"> -<!ENTITY subscription.enabled.label "Zmóžnjony"> -<!ENTITY noSubscriptions.text "Njejsćo hyšći Ĺľedne filtrowe abonementy pĹ›idaĹ‚. Adblock Plus njebuĹşo bjez filtrow nic blokÄ›rowaĹ›, pšosym wuĹľyjĹ›o "Filtrowy abonement pĹ›idaĹ›", aby filter pĹ™idaĹ‚."> -<!ENTITY subscription.update.label "Filtry akutalizÄ›rowaĹ›"> -<!ENTITY dialog.title "Adblock Plus - filtrowe nastajenja"> -<!ENTITY addFilter.label "Filter pĹ›i&daĹ›"> -<!ENTITY subscription.minVersion.warning "ToĹ› ten filtrowy abonement pomina se nowšu wersiju Adblock Plus, wy by měł na nejnowšu wersiju Adblock Plus aktualizÄ›rowaĹ›."> -<!ENTITY subscription.lastDownload.invalidURL "NjeraĹşiĹ‚o, Ĺľedna pĹ‚aĹ›iwa adresa"> -<!ENTITY backup.error "PĹ›i pisanju filtrow do dataje jo zmĂłlka namakaĹ‚a. ZawÄ›sććo, aĹľ dataja njejo pĹ›eĹ›iwo pisanjeju šćitana abo njewuĹľywa se pĹ›ez drugi program."> -<!ENTITY filter.moveUp.label "GĂłrjej"> -<!ENTITY addGroup.label "Filtrowu &kupku pĹ›idaĹ›"> -<!ENTITY filter.edit.label "WobźěłaĹ›"> -<!ENTITY subscription.showHideFilters.label "Filtry pokazaĹ›/schowaĹ›"> -<!ENTITY acceptableAds2.label "De&centne wabjenje dowĂłliĹ›"> -<!ENTITY addSubscriptionOther.label "Drugi abonement pĹ›idaĹ›"> -<!ENTITY close.label "ZacyniĹ›"> -<!ENTITY sort.none.label "&NjesortÄ›rowany"> -<!ENTITY filter.actions.label "Filtrowe akcije"> -<!ENTITY filter.copy.label "KopÄ›rowaĹ›"> -<!ENTITY filter.moveDown.label "DoĹ‚oj"> -<!ENTITY filter.resetHitCounts.label "Statistiku slÄ›dk stajiĹ›"> -<!ENTITY readMore.label "Dalšne informacije"> -<!ENTITY subscription.moveUp.label "GĂłrjej"> -<!ENTITY addSubscription.label "&Filtrowy abonement pĹ›idaĹ›"> -<!ENTITY subscription.homepage.label "Startowy bok"> -<!ENTITY backup.complete.title "Wšykne filtry a abonementy"> -<!ENTITY restore.own.label "SwĂłjsku zawÄ›sćeĹ„sku kopiju wĂłtnowiĹ›"> -<!ENTITY restore.complete.warning "Wšykne waše filtrowe nastajenja budu se pĹ›ez wopĹ›imjeĹ›e wubraneje dataje narownowaĹ›. CoĹ›o dalej cyniĹ›?"> -<!ENTITY filters.tab.label "SwĂłjske filtry"> -<!ENTITY backup.label "Nowu zaÄ›sćeĹ„sku kopiju napĂłraĹ›"> -<!ENTITY find.label "&PytaĹ›"> -<!ENTITY subscription.moveDown.label "DoĹ‚oj"> -<!ENTITY subscription.lastDownload.connectionError "NjeraĹşiĹ‚o, ześěgnjeĹ„ska zmĂłlka"> -<!ENTITY subscription.lastDownload.success "WuspÄ›ch"> -<!ENTITY subscription.lastDownload.invalidData "NjeporaĹşiĹ‚o, Ĺľedna pĹ‚aĹ›iwa filtrowa lisćina"> -<!ENTITY filter.paste.label "ZasunuĹ›"> -<!ENTITY subscription.disabledFilters.enable "Znjemóžnjone filtry zmóžniĹ›"> -<!ENTITY lasthit.column "S&lÄ›dny trjefaĹ•"> -<!ENTITY subscription.editTitle.label "Titel wobźěłaĹ›"> -<!ENTITY subscription.disabledFilters.warning "NÄ›kotare filtry w toĹ› tom abonomenĹ›e su znjemóžnjone."> -<!ENTITY filter.column "&Filtrowe pšawidĹ‚o"> -<!ENTITY subscription.lastDownload.label "SlÄ›dne ześěgnjenje:"> -<!ENTITY viewList.label "Lisćinu pokazaĹ›"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/firstRun.properties deleted file mode 100644 index fa8cf6a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=PĹ›eglÄ›dujĹ›o priwatnje, z tym aĹľ znjemóžnjujoĹ›o slÄ›dowanje resp. zatajaĹ›o swĂłje slÄ›dy pĹ›ed wabjeĹ„skimi pĹ›edewzeĹ›ami, kĂłtareĹľ by rady kuĹľdemu z wašych pĂłgibow slÄ›dowali. -firstRun_toggle_off=WUĹ ALTOWANY -firstRun_feature_tracking=SlÄ›dowanje znjemóžniĹ› -firstRun_feature_malware=Ĺ kĂłdnu software blokÄ›rowaĹ› -firstRun_title=Adblock Plus jo se instalÄ›rowaĹ‚ -firstRun_acceptableAdsExplanation=My by rady websedĹ‚a pĂłzbuĹşili, wuwÄ›rne, decentne wabjenje wuĹľywaĹ›. Togodla smy <a>kšute smÄ›rnice</a> pĂłstajili, aby my akceptabelne wabjenje identificÄ›rowali, kĂłtareĹľ pokazujo se w standardnych nastajenjach. Jolic coĹ›o weto wšykne wabjenje blokÄ›rowaĹ›, móžoĹ›o jo w bÄ›gu maĹ‚o sekundow <a>znjemóžniĹ›</a>. -firstRun_toggle_on=ZAĹ ALTOWANY -firstRun_contributor_credits=Źěkowanje sobustatkujucym -firstRun_dataCorruptionWarning=Pokazujo se toĹ› ten bok dalej? <a>KlikniĹ›o how!</a> -firstRun_acceptableAdsHeadline=Gramne wabjenje buĹşo se nÄ›nto blokÄ›rowaĹ› -firstRun_share=InformÄ›rujĹ›o swĂłje pĹ›ijaĹ›ele -firstRun_share_headline=<a>PĂłdajĹ›o nam ruku</a>, aby my web k lÄ›pšemu mÄ›stnoju cynili -firstRun_features=Adblock Plus móžo wÄ›cej cyniĹ› ako wabjenje blokÄ›rowaĹ› -firstRun_feature_malware_description=Cyńśo swĂłjo pĹ›eglÄ›dowanje wÄ›sćejše, z tym aĹľ blokÄ›rujoĹ›o znate domeny zĹ‚osneje softwary. -firstRun_feature_social_description=WĂłtpĂłrajĹ›o swĂłju pĹ›eglÄ›dowaĹ„sku aktiwitu z tĹ‚ocaškow socialnych medijow, ako na pĹ›. tĹ‚ocaška "SpĂłdoba se mÄ›" na Facebooku, kĂłtareĹľ pokazuju se na webbokach a slÄ›duju wašomu zaĹşarĹľanjeju. -firstRun_donate=pĂłsćiĹ› -firstRun_donate_label=PĂłdprÄ›jĹ›o naš projekt -firstRun_feature_social=TĹ‚ocaški za socialne medije wĂłtpĂłraĹ› -firstRun_legacySafariWarning=WuĹľywaĹ›o staru wersiju Safari, kĂłtaraĹľ njepĂłdpÄ›ra se pĹ›ez Adblock Plus. WĂłn njebuĹşo snaĹş korektnje funkcionÄ›rowaĹ› abo by mĂłgaĹ‚ wuĹľywarske doĹľywjenje na wÄ›stych websedĹ‚ach kazyĹ›. PĹ›iraĹşujomy wuraznje, aĹľ pak aktualizÄ›rujoĹ›o na Safari 6.1.1 abo wušu wersiju (stoj za Mac OS X 10.8 Mountain Lion k dispoziciji) abo Safari 7.0.1 abo wušu wersiju (na OS X 10.9 Mavericks) pak wuĹľywaĹ›o nejnowšu wersiju Mozilla Firefox, Google Chrome abo Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/global.properties deleted file mode 100644 index 3b6e734..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ĺ˝edne blokÄ›rujobne zapiski na toĹ› tom boku -action3_tooltip=KliknuĹ›, aby se Adblock Plus zmóžniĹ‚/znjemóžniĹ‚. -notification_antiadblock_title=Celowe powěźeĹ„ki schowaĹ›? -type_label_script=skript -filter_elemhide_nocriteria=Njejsu Ĺľedne kriterije pĂłdane, aby element spĂłznaĹ‚, kĂłtaryĹľ ma se schowaĹ› -blockingGroup_title=PšawidĹ‚a za blokÄ›rowanje wabjenja -whitelisted_tooltip=Adblock Plus jo znjemóžnjony na aktualnem boku. -type_label_stylesheet=stilowa pĹ›edĹ‚oga -blocked_count_tooltip=?1? z ?2? -type_label_font=pismo -type_label_popup=Wuskokujuce wokno -filter_regexp_tooltip=ToĹ› ten filter jo pak regularny wuraz pak pĹ›ekrotko za optimÄ›rowanje. PĹ›ewjele toĹ› tych filtrow by mĂłgĹ‚o waš wobglÄ›dowak spomałšyĹ›. -action0_tooltip=KliknuĹ›, aby kontekstowy meni do prÄ›dka pĹ›injasć, ze srjejĹşneju tastu kliknuĹ›, aby zmóžniĹ‚(znjemóžniĹ‚. -whitelisted_page=Adblock Plus jo se za aktualny bok znjemóžniĹ‚ -remove_group_warning=CoĹ›o toĹ› tu kupku napšawdu wĂłtpĂłraĹ›? -action1_tooltip=KliknuĹ›, aby se blokÄ›rujobne zapiski wĂłcynili/zacynili, ze srjejĹşneju tastu kliknuĹ›, aby zmóžniĹ‚/znjemóžniĹ‚. -type_label_xmlhttprequest=XML-napšašowanje -active_tooltip=Adblock Plus jo zmóžnjony, ?1? filtrowe abonementy a ?2? swĂłjske filtry se wuĹľywaju. -type_label_document=dokument -type_label_object_subrequest=objektowe pĂłdnapšašowanje -whitelistGroup_title=WuwzeĹ›owe pšawidĹ‚a -disabled_tooltip=Adblock Plus jo znjemóžnjony. -filter_elemhide_duplicate_id=Jano jaden ID elementa, kĂłtaryĹľ ma se schowaĹ›, dajo se pĂłdaĹ› -type_label_object=objekt -action2_tooltip=KliknuĹ›, aby se nastajenja wĂłcynili, ze srjejĹşneju tastu kliknuĹ›, aby zmóžniĹ‚/znjemóžniĹ‚. -type_label_subdocument=wobĹ‚uk -clearStats_warning=To stajijo wšu filtrowu statistiku slÄ›dk a znjemóžnijo licenje filtrowych wĂłtpowÄ›dnikow. CoĹ›o pĂłkšacowaĹ›? -notification_antiadblock_message=ToĹ› to sedĹ‚o jo za to znate, aĹľ pokazujo celowe powěźeĹ„ki za wuĹľywarje Adblock Plus. CoĹ›o, aĹľ Adblock Plus chowa celowe powěźeĹ„ki? -blocked_count_addendum=(teke w běłej lisćinje: ?1?, schowane: ?2?) -subscription_invalid_location=MÄ›stno filtroweje lisćiny njejo daniĹľ pĹ‚aĹ›iwy URL daniĹľ pĹ‚aĹ›iwe datajowe mÄ›. -type_label_image=wobraz -remove_subscription_warning=CoĹ›o toĹ› ten abonement napšawdu wĂłtpĂłraĹ›? -type_label_other=druge -mobile_menu_enable=ABP: ZmóžniĹ› -type_label_media=awdio/wideo -mobile_menu_disable_site=ABP: Na ?1? znjemóžniĹ› -elemhideGroup_title=PšawidĹ‚a za schowanje elementow -mobile_menu_enable_site=ABP: Na ?1? zmóžniĹ› -type_label_elemhide=schowany -newGroup_title=Nowa filtrowa kupka -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/overlay.dtd deleted file mode 100644 index b5e7b62..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Jo"> -<!ENTITY notification.button.no "&NÄ›"> -<!ENTITY sync.label "Nastajenja za syn&chronizÄ›rowanje Adblock Plus"> -<!ENTITY whitelist.site.label "Na ?1? znjemóžniĹ›"> -<!ENTITY filters.label "&Filtrowe nastajenja"> -<!ENTITY disable.label "WšuĹşi znjemóžniĹ›"> -<!ENTITY objecttab.title "BlokÄ›rowaĹ›"> -<!ENTITY objecttab.tooltip "KlikniĹ›o how, aby toĹ› ten objekt z Adblock Plus blokÄ›rowaĹ‚"> -<!ENTITY menuitem.label "Adblock Plus - &Nastajenja"> -<!ENTITY objecttabs.label "&Rejtarki wĂł Flash a Java pokazaĹ›"> -<!ENTITY sendReport.label "&Problem na toĹ› tom boku k wÄ›sći daĹ›"> -<!ENTITY whitelist.page.label "Jano na toĹ› tom boku znjemóžniĹ›"> -<!ENTITY context.image.label "Adblock Plus: Wobraz blokÄ›rowaĹ›"> -<!ENTITY counthits.label "Fi&ltrowe trjefarje licyĹ›"> -<!ENTITY opensidebar.label "B&lokÄ›rujobne zapiski wĂłcyniĹ›"> -<!ENTITY notification.button.close "&ZacyniĹ›"> -<!ENTITY contribute.label "K Adblock Plus pĹ›inosowaĹ›"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: WobĹ‚uk blokÄ›rowaĹ›"> -<!ENTITY blocked.tooltip "BlokÄ›rowane zapiski na toĹ› tom boku:"> -<!ENTITY hideplaceholders.label "Na&mÄ›stniki blokÄ›rowanych elementow schowaĹ›"> -<!ENTITY showinstatusbar.label "W &statusowej lejstwje pokazaĹ›"> -<!ENTITY sidebar.title "BlokÄ›rujobne zapiski na aktualnem boku"> -<!ENTITY options.label "&Opcije"> -<!ENTITY context.object.label "Adblock Plus: Objekt blokÄ›rowaĹ›"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Na toĹ› tom boku zasej zmóžniĹ›"> -<!ENTITY filters.tooltip "Nejaktiwnjejše filtry:"> -<!ENTITY closesidebar.label "B&lokÄ›rujobne zapiski zacyniĹ›"> -<!ENTITY showintoolbar.label "W symbolowej rÄ›&dce pokazaĹ›"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Awdio/Wideo blokÄ›rowaĹ›"> -<!ENTITY subscription.update.label "Filtry akutalizÄ›rowaĹ›"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sendReport.dtd deleted file mode 100644 index 3637b33..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&AnulÄ›rowaĹ›"> -<!ENTITY issues.disabledgroups.description "SlÄ›dujuce filtrowe abonementy/filtrowe kupki su znjemóžnjone, weto by mĂłgli wustatkowanje na toĹ› ten bok měś:"> -<!ENTITY showData.label "Daty rozpšawy pokazaĹ›"> -<!ENTITY typeSelector.falsePositive.label "Ad&block Plus blokÄ›rujo pĹ›ewjele"> -<!ENTITY issues.change.description "Waša konfiguracija jo se zmÄ›niĹ‚a. Pšosym zacytajĹ›o bok znowego, aby zmÄ›ny testowaĹ‚ a wĂłtpĂłsćelĹ›o rozpšawu, jolic problem njejo se pĹ›ez zmÄ›ny rozwÄ›zaĹ‚."> -<!ENTITY email.label "&E-mail:"> -<!ENTITY issues.openPreferences.label "Filtrowe nastajenja wĂłcyniĹ›"> -<!ENTITY sendPage.confirmation "Waša rozpšawa jo se skĹ‚adowaĹ‚a. MóžoĹ›o ju pĂłd slÄ›dujuceju adresu namakaĹ›:"> -<!ENTITY copyLink.label "WĂłt&kaz rozpšawy kopÄ›rowaĹ›"> -<!ENTITY issues.nofilters.description "Adblock Plus njeblokÄ›rujo nic na aktualnem boku. Problem, kĂłtaryĹľ sćo k wÄ›sći daĹ‚, nejskerjej njama z Adblock Plus cyniĹ›."> -<!ENTITY sendPage.knownIssue "Problem, wĂł kĂłtaryĹľ sćo rozpšawiĹ‚, jo nejskerjej juĹľo znaty. Dalšne informacije:"> -<!ENTITY typeSelector.other.description "Wubjeŕśo toĹ› tu opciju, jolic gĂłdaĹ›o skerjej problem z Adblock Plus samym ako z jogo filtrami."> -<!ENTITY issues.disabledgroups.enable.label "Filtrowy abonement/filtrowu kupku zmóžniĹ›"> -<!ENTITY typeWarning.override.label "Roz&mÄ›ju a cu rozpšawu weto pĂłsĹ‚aĹ›"> -<!ENTITY issues.disabled.enable.label "Adblock Plus zmóžniĹ›"> -<!ENTITY update.fixed.description "Aktualizacije za waše filtrowe abonementy su nejskerjej problem rozwÄ›zali, kĂłtaryĹľ sćo k wÄ›sći daĹ‚. Pšosym zacytajĹ›o bok znowego, wopytajĹ›o hyšći raz a klikniĹ›o zasej na 'Hyšći raz pĂłsĹ‚aĹ›', jolic problem hyšći wobstoj."> -<!ENTITY anonymous.label "&Anonymne sĹ‚anje"> -<!ENTITY reloadButton.label "&Bok znowego zacytaĹ›"> -<!ENTITY recentReports.clear.label "&Wšykne rozpšawy wĂłtpĂłraĹ›"> -<!ENTITY typeSelector.description "ToĹ› to wokno buĹşo wam pĹ›ez kšace wjasć, kĂłtareĹľ su trÄ›bne za sĹ‚anje wopisanja problemow z Adblock Plus. Wubjeŕśo pšosym nejpjerwjej druĹľynu problema, na kĂłtaryĹľ sćo na toĹ› tom boku starcyĹ‚:"> -<!ENTITY screenshot.remove.label "&Sensibelne daty wĂłtpĂłraĹ›"> -<!ENTITY issues.ownfilters.description "NÄ›kotare filtry, kĂłtareĹľ naĹ‚oĹľuju se na toĹ› ten bok, su wĂłt wuĹľywarja definÄ›rowane. Pšosym znjemóžniĹ›o filtry, kĂłtareĹľ by mĂłgli problem zawinowaĹ›:"> -<!ENTITY update.inProgress.description "Adblock Plus musy waše filtrowe abonementy aktualizÄ›rowaĹ›, aby zawÄ›sćiĹ‚, aĹľ problem njejo se hyšći rozwÄ›zaĹ‚. Pšosym cakajĹ›o..."> -<!ENTITY sendPage.retry.label "Hyšći raz pĂłsĹ‚aĹ›:"> -<!ENTITY data.label "&Daty rozpšawy:"> -<!ENTITY recentReports.label "Waše njedawno wĂłtpĂłsĹ‚ane rozpšawy"> -<!ENTITY typeWarning.description "Sćo pĂłdaĹ‚, aĹľ maš skerjej powšykny problem z Adblock Plus ako problem z filtrami. Pšosym ĹşiwajĹ›o na to, aĹľ take problemy by mÄ›li se nejlÄ›pjej we [link]forumje Adblock Plus[/link] k wÄ›sći daĹ›. Wy by měł jano rozpšawniski asistent za problemy wuĹľywaĹ›, aby eksistÄ›rujucu diskusiju wudopoĹ‚niĹ‚, dokulaĹľ nichten njewopĂłznajo se wašu rozpšawu, snaĹşkuli wy by wĂłtkaz na njo dodaĹ›. Awtomatiski napĂłrany wĂłtkaz dodajo se pĂł sĹ‚anju rozpšawy."> -<!ENTITY issues.disabled.description "Adblock Plus jo znjemóžnjony, njebuĹşo blokÄ›rowaĹ› nic w aktualnem statusu."> -<!ENTITY attachExtensions.label "&Lisćinu aktiwnych rozšyrjenjow k rozpšawje pĹ›ipowjesás, jolic konflikt z rozšyrjenim jo pĹ›icyna problema"> -<!ENTITY issues.nosubscriptions.add.label "Filtrowy abonement pĹ›idaĹ›"> -<!ENTITY issues.disabledfilters.enable.label "Filter zmóžniĹ›"> -<!ENTITY issues.override.label "Kon&figuracija jo korektna, z rozpšawu pĂłkšacowaĹ›"> -<!ENTITY issues.nosubscriptions.description "Zda se, aĹľ njejĹ›co Ĺľedne gĂłtowe lisćiny filtrow abonÄ›rowaĹ‚, kĂłtareĹľ awtomatiski wĂłtwĂłnoĹşuju njewitane wopĹ›imjeĹ›e."> -<!ENTITY typeSelector.falsePositive.description "Wubjeŕśo toĹ› tu opciju, jolic waĹľne wopĹ›imjeĹ›e felujo bokoju, jolic bok zwobraznja se wopak abo porÄ›dnje njefunkcionÄ›rujo. MóžoĹ›o zwÄ›sćiĹ›, lÄ›c Adblock Plus jo wina na toĹ› tom problemje, gaĹľ znjemóžnijoĹ›o jen nachylu."> -<!ENTITY typeSelector.other.label "D&rugi problem"> -<!ENTITY emailComment.label "PĹ›iraĹşujomy wam, pĹ‚aĹ›iwu e-mailowu adresu zapĂłdaĹ›, aby mĂłgli z wami do zwiska stajiĹ›, jolic su pšašanja wĂł wašej rozpšawje. To zmóžnijo nam, waše pĹ›inoski pĹ›ipĂłznaĹ› a jim wušu prioritu daĹ›."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus na toĹ› tom boku znowego zmóžniĹ›"> -<!ENTITY outdatedSubscriptions.description "SlÄ›dujuce filtrowe abonementy njejsu se wĂłt nanejmjenjej dweju tyĹşenjowu zaktualizÄ›rowali. Pšosym zaktualizÄ›rujĹ›o toĹ› te abonementy, pjerwjej aĹľ pĂłsćeloš powěźeĹ„ku. Problem by mĂłgaĹ‚ pĂłn juĹľo rozwÄ›zany byĹ›."> -<!ENTITY dataCollector.description "Pšosym pĂłcakajĹ›o chylku, mjaztym aĹľ Adblock Plus wĂłtwoĹ‚ujo trÄ›bne daty."> -<!ENTITY sendButton.label "Ro&zpšawu pĂłsĹ‚aĹ›"> -<!ENTITY comment.label "&Komentar (opcionalny)"> -<!ENTITY sendPage.errorMessage "Wopyt, rozpšawu sĹ‚aĹ›, jo se ze zmĂłlkowym kodom "?1?" njeraĹşiĹ‚. Pšosym zawÄ›sććo, aĹľ sćo z internetom zwÄ›zany a wopytajĹ›o hyšći raz. Jolic problem dalej eksistÄ›rujo, pšosćo pšosym w [link]forumje Adblock Plus[/link] wĂł pomoc."> -<!ENTITY showRecentReports.label "Njedawno wĂłtpĂłsĹ‚ane rozpšawy pokazaĹ›"> -<!ENTITY commentPage.heading "Komentar zapĂłdaĹ›"> -<!ENTITY update.start.label "Aktualizaciju nÄ›nto startowaĹ›"> -<!ENTITY issues.disabledfilters.description "SlÄ›dujuce filtry su znjemóžnjone, weto by mĂłgli wustatkowanje na toĹ› ten bok měś:"> -<!ENTITY screenshot.description "Ten samy bok móžo rozdźělnje za rozdźělnych luĹşi wuglÄ›daĹ›. Móžo nam pomagaĹ›, problem rozměś, jolic pĹ›idajo wašej rozpšawje foto wobrazowki . MóžoĹ›o wĂłtrÄ›zki wĂłtpĂłraĹ›, kĂłtareĹľ wopĹ›imujo sensibelne informacije a teke wobĹ‚uki markÄ›rowaĹ›, ĹşoĹľ se problem pokazujo. Aby to cyniĹ‚, klikniĹ›o na wĂłtpowÄ›dny tłócašk a wubjeŕśo wĂłtrÄ›zk wobraza ze swĂłjeju myšku."> -<!ENTITY screenshot.attach.label "W&obraz boka rozpšawje pĹ›idaĹ›"> -<!ENTITY issues.whitelist.description "Adblock Plus jo tuchylu na boku, wĂł kĂłtaremĹľ rozpšawjaĹ›o, znjemóžnjony. Pšosym zmóžniĹ›o jen znowego a zacytajĹ›o bok, njeĹľli aĹľ wĂłtposćeloĹ›o rozpšawu, aby analyzÄ›rowanje toĹ› togo problema pĂłdprěł."> -<!ENTITY typeSelector.falseNegative.label "Adb&lock Plus njeblokÄ›rujo wabjenje"> -<!ENTITY typeSelector.heading "Wubjeŕśo problemowy typ"> -<!ENTITY anonymity.warning "Njamóžomy se zasej a was wobroĹ›iĹ› a dajomy nejskerjej wašej rozpšawje nišu prioritu."> -<!ENTITY wizard.title "Rozpšawniski asistent za problemy"> -<!ENTITY issues.ownfilters.disable.label "Filter znjemóžniĹ›"> -<!ENTITY commentPage.description "SlÄ›dujuce tekstowe pĂłlo zmóžnja wam, komentar zapĂłdaĹ›, aby wy nam pomagaĹ‚, problem rozměś. ToĹ› ten kšac jo opcionalny, ale pĹ›iraĹşujo se, jolic problem njejo widobny. MóžoĹ›o teke daty rozpšawy pĹ›eglÄ›daĹ›, njeĹľli aĹľ se sćelo."> -<!ENTITY comment.lengthWarning "DĹ‚ujkosć wašogo komentara pĹ›ekšaca 1000 znamuškow. Jano prÄ›dne 1000 znamuškow budu se sĹ‚aĹ›."> -<!ENTITY typeSelector.falseNegative.description "Wubjeŕśo toĹ› tu opciju, jolic wabjenje se zwobraznja, lÄ›crownoĹľ Adblock Plus jo zmóžnjony."> -<!ENTITY sendPage.waitMessage "Pšosym cakajĹ›o, mjaztym aĹľ Adblock Plus sćelo wašu rozpšawu."> -<!ENTITY dataCollector.heading "WitajĹ›o do rozpšawniskego asistenta za problemy"> -<!ENTITY screenshot.heading "Foto wobrazowki pĹ›idaĹ›"> -<!ENTITY sendPage.heading "Rozpšawu sĹ‚aĹ›"> -<!ENTITY issues.subscriptionCount.description "Zda se, aĹľ sćo pĹ›ewjele filtrowych abonementow abonÄ›rowaĹ‚. ToĹ› to nastajenje se njepĹ›iraĹşujo, dokulaĹľ wjelgin pĂłwušujo wÄ›rjepĂłdobnosć problemow. Teke njamóžomy waš problemowe wopisanje akceptÄ›rowaĹ›, dokulaĹľ jo njejasnje, kĂłtary awtor filtrowego abonementa ma jadnaĹ›. Pšosym wĂłtwĂłnoźćo wšykne mimo napšawdu trÄ›bnych filtrowych abonementow a testujĹ›o, lÄ›c problem daleje nastawa."> -<!ENTITY screenshot.mark.label "&Problem markÄ›rowaĹ›"> -<!ENTITY privacyPolicy.label "PšawidĹ‚a priwatnosći"> -<!ENTITY issues.description "Adblock Plus jo problemy z wašeju konfiguraciju namakaĹ‚, kĂłtareĹľ by mĂłgli na toĹ› ten problem wina byĹ› abo póśěźuju analyzÄ›rowanje problema."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sidebar.dtd deleted file mode 100644 index edbbdb6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Kšomy zapiska pokazaĹ›"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "W nowem rejtarku wĂłcyniĹ›"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "Filtrowe ĹľrÄ›dĹ‚o:"> -<!ENTITY noitems.label "Ĺ˝edne blokÄ›rujobne zapiski"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Wjelikosć:"> -<!ENTITY reattach.label "Zasej pĹ›ipowjesyĹ›"> -<!ENTITY search.label "&PytaĹ›:"> -<!ENTITY docDomain.thirdParty "(tĹ›eĹ›i part)"> -<!ENTITY filterSource.label "Filtrowe ĹľrÄ›dĹ‚o"> -<!ENTITY tooltip.docDomain.label "Dokumentowe ĹľrÄ›dĹ‚o:"> -<!ENTITY context.copy.label "Adresu zapiska kopÄ›rowaĹ›"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Filter ?1? znjemóžniĹ›"> -<!ENTITY context.copyFilter.label "Filter kopÄ›rowaĹ›"> -<!ENTITY context.block.label "ToĹ› ten zapisk blokÄ›rowaĹ›"> -<!ENTITY context.enablefilter.label "Filter ?1? zasej zmóžniĹ›"> -<!ENTITY detach.label "WĂłtpowjesyĹ›"> -<!ENTITY whitelisted.label "Bok w běłej lisćinje"> -<!ENTITY context.disablefilteronsite.label "ToĹ› ten filter na ?1? znjemóžniĹ›"> -<!ENTITY detached.title "Adblock Plus: BlokÄ›rujobne zapiski (wĂłtpowjesone)"> -<!ENTITY docDomain.firstParty "(prÄ›dny part)"> -<!ENTITY tooltip.type.whitelisted "(w běłej lisćinje)"> -<!ENTITY tooltip.filter.label "Aktiwny filter:"> -<!ENTITY tooltip.filter.disabled "(znjemóžnjony)"> -<!ENTITY context.editfilter.label "Aktiwny filter wobźěłaĹ›"> -<!ENTITY tooltip.type.blocked "(blokÄ›rowany)"> -<!ENTITY size.label "Wjelikosć"> -<!ENTITY context.whitelist.label "WuwzeĹ›owe pšawidĹ‚o za toĹ› ten zapisk pĹ›idaĹ›"> -<!ENTITY context.selectAll.label "Wšykno wubraĹ›"> -<!ENTITY state.label "Status"> -<!ENTITY docDomain.label "Dokumentowe ĹľrÄ›dĹ‚o"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/subscriptionSelection.dtd deleted file mode 100644 index 334b3de..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/dsb/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "&Filtrowy abonement "?1?" teke pĹ›idaĹ›"> -<!ENTITY list.download.failed "Adblock Plus njejo mĂłgaĹ‚ lisćiny abonementow wĂłtwoĹ‚aĹ›."> -<!ENTITY list.download.retry "Hyšći raz wopytaĹ›"> -<!ENTITY title.label "&Titel abonementa:"> -<!ENTITY list.download.website "WebsedĹ‚o se woglÄ›daĹ›"> -<!ENTITY supplementMessage "ToĹ› ten filtrowy abonement jo za to myslony, se z filtrowym abonementom "?1?" wuĹľywaĹ›, kĂłtaryĹľ hyšći njewuĹľywaĹ›o."> -<!ENTITY viewList.label "Filtry se woglÄ›daĹ›"> -<!ENTITY visitHomepage.label "K startowemu bokoju woglÄ›daĹ›"> -<!ENTITY addSubscription.label "Abonement pĹ›idaĹ›"> -<!ENTITY dialog.title "Filtrowy abonement Adblock Plus pĹ›idaĹ›"> -<!ENTITY location.label "&MÄ›stno filtroweje lisćiny:"> -<!ENTITY fromWeb.description "Pšosym wobkšuśćo, aĹľ coĹ›o toĹ› ten filtrowy abonement pĹ›idaĹ›. MóžoĹ›o titel abo mÄ›stno abonementa zmÄ›niĹ›, njeĹľli aĹľ jen pĹ›idajoĹ›o."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/composer.dtd deleted file mode 100644 index 8ea8aee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "Ďτο Ď„Î&λος της διεύθυνĎης"> -<!ENTITY domainRestriction.label "ΠεĎιοĎÎąĎ&ÎĽĎŚĎ‚ Ďτον τομÎα:"> -<!ENTITY collapse.default.no.label "ΧĎήĎη Ď€ĎοκαθοĎÎąĎÎĽÎνου (όχι)"> -<!ENTITY firstParty.label "&Εκτός από Ď„Ďίτους"> -<!ENTITY preferences.label "Î Ďοβολή υπαĎχόντων φίλτĎων..."> -<!ENTITY pattern.label "ΑναζήτηĎη μοτίβου"> -<!ENTITY thirdParty.label "Από &Ď„Ďίτους μόνο"> -<!ENTITY filter.label "ÎťÎÎż φίλτĎÎż:"> -<!ENTITY collapse.label "Σύμπτυξη φĎαγμÎνων:"> -<!ENTITY match.warning "Το μοτίβο που ειĎάγατε δεν ταιĎιάζει πλÎον Ďτην διεύθυνĎη που θÎλετε να φĎαγεί και δεν θα Îχει κανÎνα αποτÎλεĎμα."> -<!ENTITY anchor.start.label "Ďτην &αĎχή της διεύθυνĎης"> -<!ENTITY matchCase.label "ΤαίĎιαĎμα μικĎών-κεφαλαίων"> -<!ENTITY custom.pattern.label "Î ĎÎż&ĎαĎμογή:"> -<!ENTITY unselectAllTypes.label "Επιλογή κανενός"> -<!ENTITY type.whitelist.label "Κανόνας εξαίĎεĎης"> -<!ENTITY regexp.warning "Το μοτίβο που ειĎάγατε θα εĎμηνευτεί Ďαν regular expression. Πολλά regular expressions μποĎεί να μειώĎουν την ταχύτητα πλοήγηĎης. Αν Ďκοπός Ďας δεν ήταν να χĎηĎιμοποιήĎετε regular expressions, Ď€ĎÎżĎθÎĎτε το Ďύμβολο * Ďτο Ď„Îλος του μοτίβου."> -<!ENTITY dialog.title "Î ĎÎżĎθήκη κανόνα φίλτĎου του Adblock Plus"> -<!ENTITY basic.label "ΒαĎική Ď€Ďοβολή"> -<!ENTITY type.filter.label "Φίλτ&ĎÎż φĎαγής"> -<!ENTITY types.label "ΕφαĎμογή Ďτους τύπους:"> -<!ENTITY shortpattern.warning "Το μοτίβο που ειĎάγατε είναι πολύ κοντό για να βελτιĎτοποιηθεί· πολλά Ď„Îτοια μοτίβα μποĎεί να μειώĎουν την ταχύτητα πλοήγηĎης. Î Ďοτείνεται να επιλÎξετε Îνα μακĎύτεĎÎż μοτίβο για το φίλτĎÎż."> -<!ENTITY collapse.yes.label "Ναι"> -<!ENTITY anchors.label "Αποδοχή του μοτίβου μόνο:"> -<!ENTITY collapse.default.yes.label "ΧĎήĎη Ď€ĎοκαθοĎÎąĎÎĽÎνου (ναι)"> -<!ENTITY domainRestriction.help "ΔηλώĎτε Îναν ή πεĎÎąĎĎότεĎους τομείς (domain) διαχωĎÎąĎÎĽÎνους με το Ďύμβολο "|", και το φίλτĎÎż θα εφαĎÎĽÎżĎτεί μόνο Ďε αυτούς. Το Ďύμβολο "~" Ď€Ďιν από τον τομÎα Ďημαίνει πως το φίλτĎÎż δεν θα εφαĎÎĽÎżĎτεί Ďτο ĎυγκεκĎιμÎνο τομÎα."> -<!ENTITY accept.label "Î ĎÎżĎθήκη φίλτĎου"> -<!ENTITY options.label "ΕπιλογÎĎ‚"> -<!ENTITY disabled.warning "Το Adblock Plus είναι απενεĎγοποιημÎνο. ΜποĎείτε να Ď€ĎÎżĎθÎĎετε φίλτĎα αλλά αυτά θα εφαĎÎĽÎżĎτούν μόλις [link]ενεĎγοποιήĎετε το Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "Ďτην &αĎχή του ονόματος τομÎα"> -<!ENTITY collapse.no.label "Όχι"> -<!ENTITY selectAllTypes.label "Επιλογή όλων"> -<!ENTITY advanced.label "Για Ď€ĎοχωĎημÎνους"> -<!ENTITY pattern.explanation "Το μοτίβο μποĎεί να είναι οποιοδήποτε ÎĽÎĎος της διεύθυνĎης, το Ďύμβολο * δĎα ως wildcard. Το φίλτĎÎż θα εφαĎÎĽÎżĎτεί μόνο Ďτις διευθύνĎεις που ταιĎιάζουν Ďτο μοτίβο."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/filters.dtd deleted file mode 100644 index 006871b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Όλα τα Ď€ĎÎżĎαĎÎĽÎżĎÎĽÎνα φίλτĎα Ďας θα αντικαταĎταθούν από τα πεĎιεχόμενα του επιλεγμÎνου αĎχείου. θÎλετε να ĎυνεχίĎετε;"> -<!ENTITY slow.column "&ΕμφάνιĎη φίλτĎων"> -<!ENTITY enabled.column "Ε&νεĎγοποιημÎνο"> -<!ENTITY subscription.lastDownload.checksumMismatch "ΑπÎτυχε, απόκλιĎη Ďτον Îλεγχο checksum"> -<!ENTITY noFiltersInGroup.text "Η επιλεγμÎνη ομάδα είναι άδεια"> -<!ENTITY subscription.actions.label "ΕνÎĎγειες"> -<!ENTITY filter.selectAll.label "Επιλογή όλων"> -<!ENTITY backupButton.label "&ΑντίγĎαφα αĎφαλείας και επαναφοĎά"> -<!ENTITY restore.minVersion.warning "Î ĎοειδοποίηĎη: το αĎχείο Îχει δημιουĎγηθεί με μια νεότεĎη ÎκδοĎη του Adblock Plus. Îα Ď€ĎÎπει να αναβαθμίĎετε το Adblock Plus Ďτην τελευταία του ÎκδοĎη Ď€Ďιν ανακτήĎετε από αυτό το αĎχείο."> -<!ENTITY restore.error "Τα δεδομÎνα του αĎχείου δεν μποĎούν να επεξεĎγαĎτούν, μήπως αυτός δεν είναι αντίγĎαφο αĎφαλείας του Adblock Plus;"> -<!ENTITY sort.ascending.label "&ΑύξουĎα"> -<!ENTITY sort.label "&ΤαξινόμηĎη κατά"> -<!ENTITY subscription.source.label "ΛίĎτα φίλτĎων"> -<!ENTITY hitcount.column "Επιτυ&χίες"> -<!ENTITY noFilters.text "Δεν Îχετε κάποιο Ď€ĎÎżĎαĎÎĽÎżĎÎĽÎνο φίλτĎÎż ακόμα."> -<!ENTITY backup.custom.title "Μόνο τα Ď€ĎÎżĎαĎÎĽÎżĎÎĽÎνα φίλτĎα"> -<!ENTITY subscription.external.label "ΕνημεĎώθηκε από άλλο Ď€ĎĎŚĎθετο"> -<!ENTITY subscription.delete.label "ΔιαγĎαφή"> -<!ENTITY noGroupSelected.text "Î ĎÎπει να επιλÎξετε μια ομάδα φίλτĎων ĎŽĎτε να εμφανιĎτούν τα φίλτĎα της."> -<!ENTITY filter.cut.label "Αποκοπή"> -<!ENTITY restore.default.label "ΕπαναφοĎά αντιγĎάφου αĎφαλείας από την ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Σε εξÎλιξη..."> -<!ENTITY subscriptions.tab.label "ΣυνδĎομÎĎ‚ φίλτĎων"> -<!ENTITY sort.descending.label "Φ&θίνουĎα"> -<!ENTITY filters.remove.warning "ÎÎλετε να απομακĎύνετε όλα τα επιλεγμÎνα φίλτĎα;"> -<!ENTITY filter.delete.label "ΔιαγĎαφή"> -<!ENTITY addSubscriptionAdd.label "Î ĎÎżĎθήκη"> -<!ENTITY viewMenu.label "Î Ďοβολή"> -<!ENTITY subscription.lastDownload.unknown "Îś/Δ"> -<!ENTITY addSubscriptionCancel.label "ΑκύĎωĎη"> -<!ENTITY subscription.enabled.label "ΕνεĎγοποιημÎνη"> -<!ENTITY noSubscriptions.text "Δεν Îχετε Ď€ĎÎżĎθÎĎει κάποια ĎυνδĎομή φίλτĎων. Το Adblock Plus δεν μποĎεί να μπλοκάĎει κάτι χωĎÎŻĎ‚ φίλτĎα· παĎακαλώ χĎηĎιμοποιήĎτε την "Î ĎÎżĎθήκη ĎυνδĎομής" για να ÎżĎÎŻĎετε μια."> -<!ENTITY subscription.update.label "ΕνημÎĎωĎη φίλτĎων"> -<!ENTITY dialog.title "Î ĎοτιμήĎεις φίλτĎων του Adblock Plus"> -<!ENTITY addFilter.label "Î ĎÎżĎθήκη &φίλτĎου"> -<!ENTITY subscription.minVersion.warning "Αυτή η ĎυνδĎομή φίλτĎων απαιτεί μια νεότεĎη ÎκδοĎη του Adblock Plus· θα Ď€ĎÎπει να αναβαθμίĎετε το Adblock Plus Ďτην τελευταία ÎκδοĎη."> -<!ENTITY subscription.lastDownload.invalidURL "ΑπÎτυχε, μη ÎγκυĎη διεύθυνĎη"> -<!ENTITY backup.error "ΥπήĎξε κάποιο Ď€Ďόβλημα Ďτην εγγĎαφή των φίλτĎων Ďτο αĎχείο. ΣιγουĎευτείτε ότι το αĎχείο δεν Ď€ĎÎżĎτατεύεται από εγγĎαφή ή ότι δεν χĎηĎιμοποιείται από κάποια άλλη εφαĎμογή."> -<!ENTITY filter.moveUp.label "ΜετακίνηĎη επάνω"> -<!ENTITY addGroup.label "Î Ď&ÎżĎθήκη ομάδας φίλτĎων"> -<!ENTITY filter.edit.label "ΕπεξεĎγαĎία"> -<!ENTITY subscription.showHideFilters.label "ΕμφάνιĎη/απόκĎĎ…Ďη φίλτĎων"> -<!ENTITY acceptableAds2.label "Να επιτĎÎπονται &μεĎικÎĎ‚ μη-παĎεμβατικÎĎ‚ διαφημίĎεις"> -<!ENTITY addSubscriptionOther.label "Î ĎÎżĎθήκη άλλης ĎυνδĎομής"> -<!ENTITY close.label "ΚλείĎιμο"> -<!ENTITY sort.none.label "Χ&ωĎÎŻĎ‚ ταξινόμηĎη"> -<!ENTITY filter.actions.label "ΕνÎĎγειες φίλτĎων"> -<!ENTITY filter.copy.label "ΑντιγĎαφή"> -<!ENTITY filter.moveDown.label "ΜετακίνηĎη κάτω"> -<!ENTITY filter.resetHitCounts.label "ΜηδενιĎÎĽĎŚĎ‚ ĎτατιĎτικών επιτυχιών"> -<!ENTITY readMore.label "ΔιαβάĎτε πεĎÎąĎĎότεĎα"> -<!ENTITY subscription.moveUp.label "ΜετακίνηĎη επάνω"> -<!ENTITY addSubscription.label "Î ĎÎż&Ďθήκη ĎυνδĎομής"> -<!ENTITY subscription.homepage.label "ΙĎτοĎελίδα"> -<!ENTITY backup.complete.title "Όλα τα φίλτĎα και οι ĎυνδĎομÎĎ‚"> -<!ENTITY restore.own.label "ΕπαναφοĎά δικού Ďας αντιγĎάφου αĎφαλείας"> -<!ENTITY restore.complete.warning "Όλες οι Ď€ĎοτιμήĎεις των φίλτĎων Ďας θα αντικαταĎταθούν από τα πεĎιεχόμενα του επιλεγμÎνου αĎχείου. θÎλετε να ĎυνεχίĎετε;"> -<!ENTITY filters.tab.label "Î ĎÎżĎαĎÎĽÎżĎÎĽÎνα φίλτĎα"> -<!ENTITY backup.label "ΔημιουĎγία νÎου αντιγĎάφου αĎφαλείας"> -<!ENTITY find.label "Εύ&ĎεĎη"> -<!ENTITY subscription.moveDown.label "ΜετακίνηĎη κάτω"> -<!ENTITY subscription.lastDownload.connectionError "ΑπÎτυχε, Ďφάλμα κατά τη λήĎη"> -<!ENTITY subscription.lastDownload.success "Επιτυχής"> -<!ENTITY subscription.lastDownload.invalidData "ΑπÎτυχε, μη ÎγκυĎη λίĎτα φίλτĎων"> -<!ENTITY filter.paste.label "ΕπικόλληĎη"> -<!ENTITY subscription.disabledFilters.enable "ΕνεĎγοποίηĎη απενεĎγοποιημÎνων φίλτĎων"> -<!ENTITY lasthit.column "Τε&λευταία επιτυχία"> -<!ENTITY subscription.editTitle.label "ΕπεξεĎγαĎία τίτλου"> -<!ENTITY subscription.disabledFilters.warning "Κάποια φίλτĎα Ďε αυτή την ĎυνδĎομή είναι απενεĎγοποιημÎνα."> -<!ENTITY filter.column "Κανόνας &φίλτĎου"> -<!ENTITY subscription.lastDownload.label "Τελευταία ενημÎĎωĎη:"> -<!ENTITY viewList.label "Δείτε την λίĎτα"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/firstRun.properties deleted file mode 100644 index 5ca81f3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=ΠεĎιηγηθείτε ιδιωτικά απενεĎγοποιώντας την παĎακολούθηĎη - αποκĎύπτοντας τα ίχνη Ďας από εταιĎείες διαφημίĎεων που μποĎούν να παĎακολουθούν κάθε κίνηĎή Ďας. -firstRun_toggle_off=ΑνενεĎγό -firstRun_feature_tracking=ΑπενεĎγοποίηĎη της παĎακολούθηĎης -firstRun_feature_malware=ΦĎαγή κακόβουλου λογιĎμικού -firstRun_title=Το Adblock Plus Îχει εγκαταĎταθεί -firstRun_acceptableAdsExplanation=Îα θÎλαμε να ενθαĎĎύνουμε τις ÎąĎτοĎελίδες να χĎηĎιμοποιούν ξεκάθαĎες, διακĎιτικÎĎ‚ διαφημίĎεις. Γι' αυτό το λόγο Îχουμε ÎżĎÎŻĎει <a>αυĎτηĎÎĎ‚ κατευθυντήĎιες ÎłĎαμμÎĎ‚</a> για τον Ď€ĎÎżĎδιοĎÎąĎÎĽĎŚ των αποδεκτών διαφημίĎεων, οι οποίες εμφανίζονται Ďτις Ď€ĎοεπιλεγμÎνες ĎυθμίĎεις. Εάν εξακολουθείτε να θÎλετε να αποκλείĎετε όλες τις διαφημίĎεις μποĎείτε να <a>απενεĎγοποιήĎετε</a> αυτήν την επιλογή Ďε λίγα δευτεĎόλεπτα. -firstRun_toggle_on=ΕνεĎγό -firstRun_contributor_credits=Μνεία ĎυντελεĎτών -firstRun_dataCorruptionWarning=Αυτή η Ďελίδα Ďυνεχίζει να εμφανίζεται; <a>Κάντε κλικ εδώ!</a> -firstRun_acceptableAdsHeadline=Οι ενοχλητικÎĎ‚ διαφημίĎεις τώĎα θα αποκλειĎτούν -firstRun_share=Πείτε το Ďτους φίλους Ďας -firstRun_share_headline=<a>ΔώĎτε μας Îνα χεĎάκι</a> Ďτο να κάνουμε το διαδίκτυο Îνα καλύτεĎÎż ÎĽÎĎος -firstRun_features=Το Adblock Plus μποĎεί να κάνει πεĎÎąĎĎότεĎα από το φιλτĎάĎÎąĎμα διαφημίĎεων -firstRun_feature_malware_description=Κάνετε την πεĎιήγηĎη Ďας πιο αĎφαλή φĎάĎĎοντας γνωĎĎ„ÎĎ‚ διευθύνĎεις κακόβουλου λογιĎμικού. -firstRun_feature_social_description=Απαλλάξετε αυτομάτως την πεĎιήγηĎή Ďας από κουμπιά των ÎĽÎĎων κοινωνικής δικτύωĎης, όπως το Like του Facebook, που εμφανίζονται Ďε ÎąĎτοĎελίδες και παĎακολουθούν τη ĎυμπεĎιφοĎά Ďας. -firstRun_donate=δωĎÎŻĎτε -firstRun_donate_label=ΥποĎτηĎίξτε το ÎĎγο μας -firstRun_feature_social=ΑφαίĎεĎη κουμπιών ÎĽÎĎων κοινωνικής δικτύωĎης -firstRun_legacySafariWarning=ΧĎηĎιμοποιείτε μια παλιά ÎκδοĎη του Safari, η οποία δεν υποĎτηĎίζεται από το Adblock Plus. ΜποĎεί να μην λειτουĎγεί ĎωĎτά ή να αλλοιώĎει την εμπειĎία χĎήĎτη Ďε ÎżĎÎąĎÎĽÎνες ÎąĎτοĎελίδες. Σας ĎυνιĎτούμε είτε να ενημεĎĎŽĎετε την ÎκδοĎη του φυλλομετĎητή Ďε Safari 6.1.1 ή νεότεĎη (Ďε Mac OS X 10.8 Mountain Lion), ή Ďε Safari 7.0.1 ή νεότεĎη (Ďε OS X 10.9 Mavericks) ή να χĎηĎιμοποιήĎετε την τελευταία ÎκδοĎη του Mozilla Firefox, Google Chrome ή Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/global.properties deleted file mode 100644 index bdd9d06..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Δεν υπάĎχουν αντικείμενα Ď€Ďος φĎαγή Ďε αυτή τη Ďελίδα -action3_tooltip=Κλικ για ενεĎγοποίηĎη/απενεĎγοποίηĎη. -notification_antiadblock_title=ΑπόκĎĎ…Ďη ĎτοχευμÎνων μηνυμάτων; -type_label_script=ĎενάĎιο εντολών -filter_elemhide_nocriteria=Δεν καθοĎÎŻĎτηκαν ÎşĎιτήĎια ĎŽĎτε να αναγνωĎÎąĎτεί το Ďτοιχείο που θα φιλτĎαĎÎąĎτεί -blockingGroup_title=Κανόνες φĎαγής διαφημίĎεων -whitelisted_tooltip=Το Adblock Plus είναι ενεĎγό αλλά απενεĎγοποιημÎνο για την Ď„ĎÎχουĎα Ďελίδα. -type_label_stylesheet=stylesheet -blocked_count_tooltip=?1? από τα ?2? -type_label_font=ÎłĎαμματοĎειĎά -type_label_popup=αναδυόμενο παĎάθυĎÎż -filter_regexp_tooltip=Αυτό το φίλτĎÎż είναι Îνα regular expression ή είναι πολύ κοντό ĎŽĎτε να βελτιĎτοποιηθεί. Πολλά από αυτά τα φίλτĎα μποĎεί να μειώĎουν την ταχύτητα πλοήγηĎης. -action0_tooltip=Κλικ για το μενού πεĎιεχομÎνου, μεĎαίο κλικ για ενεĎγοποίηĎη/απενεĎγοποίηĎη. -whitelisted_page=Το Adblock Plus απενεĎγοποιήθηκε για την Ď„ĎÎχουĎα Ďελίδα -remove_group_warning=ÎÎλετε ĎίγουĎα να διαγĎάĎετε αυτή την ομάδα; -action1_tooltip=Κλικ για να ανοίξετε/κλείĎετε τα Ďτοιχεία Ď€Ďος φĎαγή, μεĎαίο κλικ για ενεĎγοποίηĎη/απενεĎγοποίηĎη. -type_label_xmlhttprequest=αίτημα XML -active_tooltip=Το Adblock Plus είναι ενεĎγό, ?1? ĎυνδĎομή(ÎĎ‚) φίλτĎων και ?2? Ď€ĎÎżĎαĎÎĽÎżĎÎĽÎνο(α) φίλτĎÎż(α) Ďε χĎήĎη. -type_label_document=κείμενο -type_label_object_subrequest=object subrequest -whitelistGroup_title=Κανόνες εξαίĎεĎης -disabled_tooltip=Το Adblock Plus είναι ανενεĎγό. -filter_elemhide_duplicate_id=Μόνο μια ταυτότητα του Ďτοιχείου Ď€Ďος απόκĎĎ…Ďη Ď€ĎÎπει να καθοĎÎąĎτεί -type_label_object=αντικείμενο -action2_tooltip=Κλικ για τις επιλογÎĎ‚, μεĎαίο κλικ για ενεĎγοποίηĎη/απενεĎγοποίηĎη. -type_label_subdocument=πλαίĎιο -clearStats_warning=Αυτό θα μηδενίĎει τα ĎτατιĎτικά και θα απενεĎγοποιήĎει τις επιτυχίες των φίλτĎων. ÎÎλετε να ĎυνεχίĎετε; -notification_antiadblock_message=Αυτή η Ďελίδα είναι γνωĎτό ότι Ď€Ďοβάλει ĎτοχευμÎνα μηνύματα Ďτους χĎήĎτες του Adblock Plus. ÎÎλετε το Adblock Plus να αποκĎύπτει ĎτοχευμÎνα μηνύματα; -blocked_count_addendum=(λευκή λίĎτα: ?1?, ÎşĎυφά: ?2?) -subscription_invalid_location=Η τοποθεĎία της λίĎτας φίλτĎων δεν είναι ÎγκυĎη URL ούτε και όνομα αĎχείου. -type_label_image=εικόνα -remove_subscription_warning=ÎÎλετε να απομακĎύνετε αυτή τη ĎυνδĎομή; -type_label_other=άλλο -mobile_menu_enable=ABP: ΕνεĎγοποίηĎη -type_label_media=ήχος/βίντεο -mobile_menu_disable_site=ABP: ΑπενεĎγοποίηĎη Ďτο ?1? -elemhideGroup_title=Κανόνες απόκĎĎ…Ďης Ďτοιχείων -mobile_menu_enable_site=ABP: ΕνεĎγοποίηĎη Ďτο ?1? -type_label_elemhide=ÎşĎυφό -newGroup_title=ÎťÎα ομάδα φίλτĎων -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/overlay.dtd deleted file mode 100644 index 0d3fe6e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ναι"> -<!ENTITY notification.button.no "&Όχι"> -<!ENTITY sync.label "ÎŁĎ…Îł&χĎονιĎÎĽĎŚĎ‚ των ĎυθμίĎεων του Adblock Plus"> -<!ENTITY whitelist.site.label "ΑπενεĎγοποίηĎη Ďτο ?1?"> -<!ENTITY filters.label "Î ĎοτιμήĎεις &φίλτĎων"> -<!ENTITY disable.label "ΑπενεĎγοποίηĎη παντού"> -<!ENTITY objecttab.title "ΦĎαγή"> -<!ENTITY objecttab.tooltip "Κλικ εδώ για να φιλτĎάĎετε αυτό το αντικείμενο με το Adblock Plus"> -<!ENTITY menuitem.label "Ad&block Plus"> -<!ENTITY objecttabs.label "ΕμφάνιĎη ετικÎĎ„&ας Ďε αντικείμενα Flash και Java"> -<!ENTITY sendReport.label "Αναφο&Ďά Ď€Ďοβλήματος Ďε αυτή την Ďελίδα"> -<!ENTITY whitelist.page.label "ΑπενεĎγοποίηĎη Ďε αυτή τη Ďελίδα μόνο"> -<!ENTITY context.image.label "Adblock Plus: φĎαγή εικόνας"> -<!ENTITY counthits.label "Κα&ταμÎĎ„ĎηĎη επιτυχιών φίλτĎων"> -<!ENTITY opensidebar.label "Άνοιγμ&α των φιλτĎαĎÎąĎÎĽÎνων Ďτοιχείων"> -<!ENTITY notification.button.close "&ΚλείĎιμο"> -<!ENTITY contribute.label "ΣυνειĎφÎĎετε Ďτο Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: φĎαγή πλαιĎίου"> -<!ENTITY blocked.tooltip "Στοιχεία που Îχουν φĎαχθεί Ďε αυτή τη Ďελίδα:"> -<!ENTITY hideplaceholders.label "ΑπόκĎĎ…Ďη πλα&ÎąĎίων των φιλτĎαĎÎąĎÎĽÎνων Ďτοιχείων"> -<!ENTITY showinstatusbar.label "ΕμφάνιĎη Ďτην ÎłĎαμμή &κατάĎταĎης"> -<!ENTITY sidebar.title "Στοιχεία Ď€Ďος φιλτĎάĎÎąĎμα Ďτην Ď„ĎÎχουĎα Ďελίδα"> -<!ENTITY options.label "Επι&λογÎĎ‚"> -<!ENTITY context.object.label "Adblock Plus: φĎαγή αντικειμÎνου"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: ΕνεĎγοποίηĎη Ď' αυτή την Ďελίδα"> -<!ENTITY filters.tooltip "ΦίλτĎα με τις πεĎÎąĎĎότεĎες επιτυχίες:"> -<!ENTITY closesidebar.label "ΚλείĎιμο των φιλτĎ&αĎÎąĎÎĽÎνων Ďτοιχείων"> -<!ENTITY showintoolbar.label "ΕμφάνιĎη Ďτην εĎγαλειο&θήκη"> -<!ENTITY status.tooltip "ΚατάĎταĎη:"> -<!ENTITY context.media.label "Adblock Plus: φĎαγή ήχου/βίντεο"> -<!ENTITY subscription.update.label "ΕνημÎĎωĎη φίλτĎων"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sendReport.dtd deleted file mode 100644 index 642b03a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Αναί&ĎεĎη"> -<!ENTITY issues.disabledgroups.description "Οι ακόλουθες ĎυνδĎομÎĎ‚ φίλτĎων / ομάδες φίλτĎων είναι απενεĎγοποιημÎνες, παĎόλα αυτά μποĎεί να Îχουν επίδĎαĎη Ďε αυτή την Ďελίδα:"> -<!ENTITY showData.label "ΕμφάνιĎη δεδομÎνων αναφοĎάς"> -<!ENTITY typeSelector.falsePositive.label "Το Adblock Plus φĎάζει πάĎα πολλά &Ďτοιχεία"> -<!ENTITY issues.change.description "Οι ĎυθμίĎεις Ďας Îχουν αλλάξει. ΠαĎακαλώ ανανεώĎτε την Ďελίδα για να δοκιμάĎετε τις αλλαγÎĎ‚ και υποβάλλετε μια αναφοĎά αν το ζήτημα δεν Îχει λυθεί από τις Ď„ĎοποποιήĎεις."> -<!ENTITY email.label "Email: (&ÎĽ)"> -<!ENTITY issues.openPreferences.label "Î ĎοτιμήĎεις φίλτĎων"> -<!ENTITY sendPage.confirmation "Η αναφοĎά Ďας Îχει αποθηκευτεί. Î ĎĎŚĎβαĎη Ďε αυτήν Îχετε από την ακόλουθη διεύθυνĎη:"> -<!ENTITY copyLink.label "&ΑντιγĎαφή διεύθυνĎης αναφοĎάς"> -<!ENTITY issues.nofilters.description "Το Adblock Plus δεν φιλτĎάĎει τίποτα Ďτην Ď„ĎÎχουĎα Ďελίδα. Το ζήτημα το οποίο παĎατηĎείτε πιθανώς δεν Ďχετίζεται με το Adblock Plus."> -<!ENTITY sendPage.knownIssue "Το ζήτημα που αναφÎĎατε είναι πιθανώς ήδη γνωĎτό. ΠεĎÎąĎĎότεĎες πληĎοφοĎίες:"> -<!ENTITY typeSelector.other.description "ΕπιλÎξτε αυτό αν υποπτεύεĎτε κάποιο ζήτημα με το Adblock Plus το ίδιο, παĎά με τα φίλτĎα που χĎηĎιμοποιούνται."> -<!ENTITY issues.disabledgroups.enable.label "ΕνεĎγοποίηĎη της ĎυνδĎομής φίλτĎων / ομάδας φίλτĎων"> -<!ENTITY typeWarning.override.label "&Κατανοώ και επιθυμώ να υποβάλω την αναφοĎά όπως και να Îχει"> -<!ENTITY issues.disabled.enable.label "ΕνεĎγοποίηĎη του Adblock Plus"> -<!ENTITY update.fixed.description "Οι ενημεĎĎŽĎεις Ďτις ĎυνδĎομÎĎ‚ φίλτĎων πιθανώς επιλύουν το Ď€Ďόβλημα το οποίο αναφÎĎετε. ΠαĎακαλώ ανανεώĎτε την Ďελίδα και Ď€ĎÎżĎπαθήĎτε ξανά. Κάντε μια αναφοĎά αν το Ď€Ďόβλημα παĎαμÎνει."> -<!ENTITY anonymous.label "&Ανώνυμη υποβολή"> -<!ENTITY reloadButton.label "Α&νανÎωĎη Ďελίδας"> -<!ENTITY recentReports.clear.label "&ΑφαίĎεĎη όλων των αναφοĎών"> -<!ENTITY typeSelector.description "Σε αυτό το παĎάθυĎÎż θα βĎείτε βοήθεια για τα βήματα που Ď€ĎÎπει να ακολουθηθούν ĎŽĎτε να υποβληθεί μια αναφοĎά για κάποιο ζήτημα που αντιμετωπίζετε Ďχετικά με το Adblock Plus. ΠαĎακαλώ Ď€Ďώτα επιλÎξτε τον τύπο του ζητήματος που αντιμετωπίζετε Ďε αυτή την Ďελίδα:"> -<!ENTITY screenshot.remove.label "ΑφαίĎεĎη ευαίĎθητων &δεδομÎνων"> -<!ENTITY issues.ownfilters.description "ΜεĎικά από τα φίλτĎα Îχουν ÎżĎÎąĎτεί από εĎάς. ΠαĎακαλώ απενεĎγοποιήĎτε τα φίλτĎα που πιθανώς Îχουν Ď€ĎοκαλÎĎει το ζήτημα:"> -<!ENTITY update.inProgress.description "Το Adblock Plus θα Ď€ĎÎπει να ενημεĎĎŽĎει τις ĎυνδĎομÎĎ‚ φίλτĎων ĎŽĎτε να βεβαιωθεί ότι το Ď€Ďόβλημα δεν Îχει ήδη επιλυθεί. ΠαĎακαλώ πεĎιμÎνετε..."> -<!ENTITY sendPage.retry.label "ΑποĎτολή ξανά"> -<!ENTITY data.label "ΔεδομÎνα ανα&φοĎάς"> -<!ENTITY recentReports.label "Οι αναφοĎÎĎ‚ που υποβάλλατε Ď€ĎĎŚĎφατα"> -<!ENTITY typeWarning.description "ΔηλώĎατε πως θÎλετε να αναφÎĎετε Îνα γενικό ζήτημα Ďχετικά με το Adblock Plus παĎά Îνα Ď€Ďόβλημα με τα φίλτĎα. ΠαĎακαλώ Îχετε Ďτο νου Ďας ότι Ď„Îτοιου είδους ζητήματα ταιĎιάζουν καλύτεĎα Ďτο [link]forum του Adblock Plus[/link]. Îα Ď€ĎÎπει να χĎηĎιμοποιείτε την αναφοĎά ζητήματος επιπĎĎŚĎθετα μιας υπάĎχουĎας ĎυζήτηĎης Ďτο forum, καθώς κανÎνας δεν θα Ď€ĎÎżĎÎξει την αναφοĎά Ďας εκτός αν πεĎÎąÎχει δεĎÎĽĎŚ Ď€Ďος την ĎυζήτηĎη. Îź αυτόματα δημιουĎγημÎνος δεĎÎĽĎŚĎ‚ θα εμφανιĎτεί μετά την υποβολή της αναφοĎάς."> -<!ENTITY issues.disabled.description "Το Adblock Plus είναι απενεĎγοποιημÎνο, δεν θα φιλτĎάĎει τίποτα Ďτην παĎούĎα κατάĎταĎη."> -<!ENTITY attachExtensions.label "ΕπιĎύναĎε την &λίĎτα με τα ενεĎγά Ď€ĎĎŚĎθετα Ďτην αναφοĎά, Ďε πεĎίπτωĎη που κάποια αĎυμβατότητα μεταξύ αυτών είναι το Ď€Ďόβλημα"> -<!ENTITY issues.nosubscriptions.add.label "Î ĎÎżĎθήκη ĎυνδĎομής φίλτĎων"> -<!ENTITY issues.disabledfilters.enable.label "ΕνεĎγοποίηĎη φίλτĎου"> -<!ENTITY issues.override.label "Οι Ďυθμί&Ďεις είναι ĎωĎĎ„ÎĎ‚, ĎυνεχίĎτε με την αναφοĎά"> -<!ENTITY issues.nosubscriptions.description "Φαίνεται πως δεν είĎτε ĎυνδĎομητής Ďε καμιά από τις Ď€ĎοεγκατεĎτημÎνες λίĎτες φίλτĎων που αυτόματα αφαιĎούν ανεπιθύμητο πεĎιεχόμενο από τις Ďελίδες."> -<!ENTITY typeSelector.falsePositive.description "ΕπιλÎξτε αυτό, αν η Ďελίδα ĎτεĎείται βαĎικό πεĎιεχόμενο, εμφανίζεται λαθεμÎνα ή δεν λειτουĎγεί ĎωĎτά. Για να διαγνώĎετε αν το Adblock Plus είναι η αιτία του Ď€Ďοβλήματός Ďας, απενεĎγοποιήĎτε το Ď€ĎÎżĎωĎινά."> -<!ENTITY typeSelector.other.label "Ά&λλο ζήτημα"> -<!ENTITY emailComment.label "Σας ĎυνιĎτούμε να ειĎάγετε μια ÎγκυĎη διεύθυνĎη ηλεκτĎονικού ταχυδĎομείου, ĎŽĎτε να επικοινωνήĎουμε μαζί Ďας εάν υπάĎχουν εĎωτήĎεις Ďχετικά με την αναφοĎά Ďας. Îα μας επιτĎÎĎει επίĎης, να αναγνωĎίζουμε τις ĎυνειĎφοĎÎĎ‚ Ďας και να τις δώĎουμε Ď…ĎηλότεĎη Ď€ĎοτεĎαιότητα."> -<!ENTITY issues.whitelist.remove.label "ΕνεĎγοποίηĎη του Adblock Plus Ďε αυτή την Ďελίδα"> -<!ENTITY outdatedSubscriptions.description "Οι ακόλουθες ĎυνδĎομÎĎ‚ φίλτĎων δεν Îχουν ενημεĎωθεί για δύο τουλάχιĎτο εβδομάδες. ΠαĎακαλώ ενημεĎĎŽĎτε αυτÎĎ‚ τις ĎυνδĎομÎĎ‚ Ď€Ďιν υποβάλετε την αναφοĎά, μιας και το ζήτημα μποĎεί ήδη να Îχει επιλυθεί."> -<!ENTITY dataCollector.description "ΠαĎακαλώ πεĎιμÎνετε καθώς το Adblock Plus ĎυλλÎγει τα απαĎαίτητα δεδομÎνα."> -<!ENTITY sendButton.label "Απο&Ďτολή αναφοĎάς"> -<!ENTITY comment.label "ÎŁ&χόλιο (Ď€ĎοαιĎετικό):"> -<!ENTITY sendPage.errorMessage "Η Ď€ĎÎżĎπάθεια αποĎτολής της αναφοĎάς απÎτυχε με κωδικό λάθους "?1?". ΠαĎακαλώ βεβαιωθείτε ότι Îχετε Ď€ĎĎŚĎβαĎη Ďτο ίντεĎνετ και Ď€ĎÎżĎπαθήĎτε ξανά. Εάν το Ď€Ďόβλημα παĎαμείνει, παĎακαλώ ζητήĎτε βοήθεια Ďτο [link]forum του Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "ΕμφάνιĎη Ď€ĎĎŚĎφατα υποβληθÎντων αναφοĎών"> -<!ENTITY commentPage.heading "ΕιĎαγωγή Ďχολίου"> -<!ENTITY update.start.label "ΞεκινήĎτε την ενημÎĎωĎη"> -<!ENTITY issues.disabledfilters.description "Τα ακόλουθα φίλτĎα είναι απενεĎοποιημÎνα, παĎόλα αυτά μποĎεί να Îχουν επίδĎαĎη Ďε αυτή την Ďελίδα:"> -<!ENTITY screenshot.description "Η ίδια Ďελίδα μποĎεί να εμφανίζεται διαφοĎετικά για διαφοĎετικούς χĎήĎτες. Εάν επιĎυνάĎετε Îνα Ďτιγμιότυπο οθόνης Ďτην αναφοĎά Ďας μποĎεί να μας βοηθήĎει να κατανοήĎουμε το Ď€Ďόβλημα. ΜποĎείτε να αφαιĎÎĎετε τμήματα τα οποία πεĎÎąÎχουν ευαίĎθητες πληĎοφοĎίες όπως και να επιĎημάνετε πεĎιοχÎĎ‚ Ďτις οποίες εντοπίζεται το Ď€Ďόβλημα. Για να το πετύχετε, επιλÎξτε το αντίĎτοιχο κουμπί και επιλÎξτε Îνα τμήμα του Ďτιγμιότυπου με το ποντίκι."> -<!ENTITY screenshot.attach.label "ΕπιĎύναĎη Ďτιγμιότυπου Îż&θόνης Ďτην αναφοĎά"> -<!ENTITY issues.whitelist.description "Το Adblock Plus είναι απενεĎγοποιημÎνο Ďτην Ďελίδα που αναφÎĎετε. ΠαĎακαλώ ενεĎγοποιήĎτε το και ανανεώĎτε την Ďελίδα Ď€Ďιν υποβάλλετε την αναφοĎά."> -<!ENTITY typeSelector.falseNegative.label "Το Adblock Plus δεν &φĎάζει μια διαφήμιĎη"> -<!ENTITY typeSelector.heading "Τύπος ζητήματος"> -<!ENTITY anonymity.warning "Δεν θα μποĎÎĎουμε να επικοινωνήĎουμε μαζί Ďας και πιθανώς η αναφοĎά Ďας να θεωĎηθεί χαμηλής Ď€ĎοτεĎαιότητας."> -<!ENTITY wizard.title "ΑναφοĎά ζητήματος"> -<!ENTITY issues.ownfilters.disable.label "ΑπενεĎγοποίηĎη φίλτĎου"> -<!ENTITY commentPage.description "Το πεδίο κειμÎνου παĎακάτω Ďας επιτĎÎπει να ειĎάγετε κάποιο Ďχόλιο το οποίο θα μας βοηθήĎει να κατανοήĎουμε το ζήτημα που αντιμετωπίζετε. Το παĎόν βήμα είναι Ď€ĎοαιĎετικό αλλά Ď€Ďοτείνεται να ĎυμπληĎωθεί αν το Ď€Ďόβλημα δεν είναι Ď€ĎοφανÎĎ‚. ΜποĎείτε να αναθεωĎήĎετε την αναφοĎά Ď€Ďιν την αποĎτείλετε."> -<!ENTITY comment.lengthWarning "Το ÎĽÎγεθος του Ďχολίου υπεĎβαίνει τους 1000 χαĎακτήĎες. Μόνο οι Ď€Ďώτοι 1000 θα αποĎταλούν."> -<!ENTITY typeSelector.falseNegative.description "ΕπιλÎξτε αυτό αν μια διαφήμιĎη εμφανίζεται παĎόλο που το Adblock Plus είναι ενεĎγοποιημÎνο."> -<!ENTITY sendPage.waitMessage "ΠαĎακαλώ πεĎιμÎνετε καθώς το Adblock Plus υποβάλει την αναφοĎά."> -<!ENTITY dataCollector.heading "Καλώς ήĎθατε Ďτον βοηθό αναφοĎάς ζητήματος"> -<!ENTITY screenshot.heading "Στιγμιότυπο οθόνης"> -<!ENTITY sendPage.heading "ΑποĎτολή αναφοĎάς"> -<!ENTITY issues.subscriptionCount.description "Φαίνεται ότι είĎτε ĎυνδĎομητής Ďε πάĎα πολλÎĎ‚ λίĎτες φίλτĎων. Αυτή η επιλογή δεν ĎυνιĎτάται. Δεν μποĎούμε να δεχτούμε την αναφοĎά Ď€Ďοβλήματος διότι δεν είναι ĎαφÎĎ‚ ποιος από τους ĎυγγĎαφείς των φίλτĎων Ď€ĎÎπει να Ď€Ďοβεί Ďε κάποια ενÎĎγεια ĎŽĎτε να διοĎθοθεί αυτό. ΠαĎακαλώ αφαιĎÎĎτε όλες εκτός από τις απαĎαίτητες λίĎτες φίλτĎων, και δοκιμάĎτε πάλι για να εξακĎιβώĎετε αν το Ď€Ďόβλημα ĎυνεχιĎτεί."> -<!ENTITY screenshot.mark.label "ΕπιĎή&μανĎη του Ď€Ďοβλήματος"> -<!ENTITY privacyPolicy.label "Πολιτική αποĎĎήτου"> -<!ENTITY issues.description "ΕντοπίĎτηκαν κάποια ζητήματα Ďτις ĎυθμίĎεις Ďας που πιθανώς να είναι υπεύθυνες για αυτό το ζήτημα, ή που θα δυĎκολÎĎουν την ÎĎευνα της αναφοĎάς."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sidebar.dtd deleted file mode 100644 index 76fe125..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "ΠλαίĎιο Ďτοιχείου Flash"> -<!ENTITY address.label "ΔιεύθυνĎη"> -<!ENTITY context.open.label "Άνοιγμα Ďε νÎα καĎĎ„Îλα"> -<!ENTITY type.label "Τύπος"> -<!ENTITY tooltip.filterSource.label "Πηγή φίλτĎου:"> -<!ENTITY noitems.label "Δεν υπάĎχουν Ďτοιχεία Ď€Ďος φιλτĎάĎÎąĎμα"> -<!ENTITY filter.label "ΦίλτĎÎż"> -<!ENTITY tooltip.size.label "ÎśÎγεθος:"> -<!ENTITY reattach.label "Î ĎÎżĎάĎτηĎη"> -<!ENTITY search.label "Ανα&ζήτηĎη:"> -<!ENTITY docDomain.thirdParty "(Ď„Ďίτων)"> -<!ENTITY filterSource.label "Πηγή φίλτĎου"> -<!ENTITY tooltip.docDomain.label "Πηγή εγγĎάφου:"> -<!ENTITY context.copy.label "ΑντιγĎαφή τοποθεĎίας του Ďτοιχείου"> -<!ENTITY tooltip.type.label "Τύπος:"> -<!ENTITY context.disablefilter.label "ΑπενεĎγοποίηĎη φίλτĎου ?1?"> -<!ENTITY context.copyFilter.label "ΑντιγĎαφή φίλτĎου"> -<!ENTITY context.block.label "ΦĎαγή του Ďτοιχείου"> -<!ENTITY context.enablefilter.label "ΕνεĎγοποίηĎη φίλτĎου ?1?"> -<!ENTITY detach.label "ΑποκόλληĎη"> -<!ENTITY whitelisted.label "Η Ďελίδα ανήκει Ďτην άĎĎ€Ďη λίĎτα"> -<!ENTITY context.disablefilteronsite.label "ΑπενεĎγοποίηĎη του φίλτĎου Ďτο ?1?"> -<!ENTITY detached.title "Adblock Plus: Στοιχεία Ď€Ďος φĎαγή"> -<!ENTITY docDomain.firstParty "(Ď€Ďωτεύον)"> -<!ENTITY tooltip.type.whitelisted "(Ďτην άĎĎ€Ďη λίĎτα)"> -<!ENTITY tooltip.filter.label "ΦίλτĎÎż εν δĎάĎη:"> -<!ENTITY tooltip.filter.disabled "(απενεĎγοποιημÎνο)"> -<!ENTITY context.editfilter.label "ΕπεξεĎγαĎία του φίλτĎου εν δĎάĎη"> -<!ENTITY tooltip.type.blocked "(φιλτĎαĎÎąĎÎĽÎνο)"> -<!ENTITY size.label "ÎśÎγεθος"> -<!ENTITY context.whitelist.label "Î ĎÎżĎθήκη κανόνα εξαίĎεĎης για το Ďτοιχείο"> -<!ENTITY context.selectAll.label "Επιλογή όλων"> -<!ENTITY state.label "ΚατάĎταĎη"> -<!ENTITY docDomain.label "Πηγή εγγĎάφου"> -<!ENTITY tooltip.address.label "ΔιεύθυνĎη:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/subscriptionSelection.dtd deleted file mode 100644 index 054b6e9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/el/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Î ĎÎżĎ&θήκη και της ĎυνδĎομής φίλτĎων "?1?""> -<!ENTITY list.download.failed "Το Adblock Plus απÎτυχε να λάβει την λίĎτα με τις ĎυνδĎομÎĎ‚."> -<!ENTITY list.download.retry "Î ĎÎżĎπαθήĎτε ξανά"> -<!ENTITY title.label "Τίτλος &ĎυνδĎομής:"> -<!ENTITY list.download.website "Î Ďοβολή της ÎąĎτοĎελίδας"> -<!ENTITY supplementMessage "Αυτή η ĎυνδĎομή φίλτĎων μποĎεί να χĎηĎιμοποιηθεί μαζί με την ĎυνδĎομή "?1?" την οποία δεν χĎηĎιμοποιείτε."> -<!ENTITY viewList.label "Î Ďοβολή φίλτĎων"> -<!ENTITY visitHomepage.label "ΙĎτοĎελίδα της ĎυνδĎομής"> -<!ENTITY addSubscription.label "Î ĎÎżĎθήκη ĎυνδĎομής"> -<!ENTITY dialog.title "ΣυνδĎομÎĎ‚ φίλτĎων του Adblock Plus"> -<!ENTITY location.label "&ΤοποθεĎία λίĎτας φίλτĎων:"> -<!ENTITY fromWeb.description "ΠαĎακαλώ επιβεβαιώĎτε ότι θÎλετε να Ď€ĎÎżĎθÎĎετε αυτή την λίĎτα φίλτĎων. ΜποĎείτε να Ď„ĎοποποιήĎετε τον τίτλο ή την τοποθεĎία Ď€Ďιν την Ď€ĎÎżĎθήκη."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/composer.dtd deleted file mode 100644 index 00d84ba..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "at the end of the address"> -<!ENTITY domainRestriction.label "Restrict to domain:"> -<!ENTITY collapse.default.no.label "Use default (no)"> -<!ENTITY firstParty.label "First-party only"> -<!ENTITY preferences.label "Show existing filters..."> -<!ENTITY pattern.label "Look for pattern"> -<!ENTITY thirdParty.label "Third-party only"> -<!ENTITY filter.label "New filter:"> -<!ENTITY collapse.label "Collapse blocked:"> -<!ENTITY match.warning "The pattern you entered no longer matches the address to be blocked/whitelisted and will have no effect on it."> -<!ENTITY anchor.start.label "at the beginning of the address"> -<!ENTITY matchCase.label "Match case"> -<!ENTITY custom.pattern.label "Custom:"> -<!ENTITY unselectAllTypes.label "Select none"> -<!ENTITY type.whitelist.label "Exception rule"> -<!ENTITY regexp.warning "The pattern you entered will be interpreted as a regular expression; this cannot be efficiently processed by Adblock Plus and may slow down your browsing experience. If you didn't intend to use a regular expression, add an asterisk (*) to the end of the pattern."> -<!ENTITY dialog.title "Add Adblock Plus filter rule"> -<!ENTITY basic.label "Basic view"> -<!ENTITY type.filter.label "Blocking filter"> -<!ENTITY types.label "Apply to types:"> -<!ENTITY shortpattern.warning "The pattern you entered is too short to be optimised; this may slow down your browsing experience. It is recommended that you choose a longer string for this filter to allow Adblock Plus to process the filter more efficiently."> -<!ENTITY collapse.yes.label "Yes"> -<!ENTITY anchors.label "Accept pattern only:"> -<!ENTITY collapse.default.yes.label "Use default (yes)"> -<!ENTITY domainRestriction.help "Use this option to specify one or more domains separated by a bar line (|). The filter will only be applied on the domain(s) selected. A tilde (~) before a domain name indicates that the filter will not be applied on that domain."> -<!ENTITY accept.label "Add filter"> -<!ENTITY options.label "Options"> -<!ENTITY disabled.warning "Adblock Plus is currently disabled. You can still add filters but they will not be applied unless you [link]enable Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "at the beginning of the domain name"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Select all"> -<!ENTITY advanced.label "Advanced view"> -<!ENTITY pattern.explanation "The pattern can be any part of the address; asterisks (*) act as wildcards. The filter will only be applied to addresses matching the pattern provided."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/filters.dtd deleted file mode 100644 index fa14794..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?"> -<!ENTITY slow.column "Slow filters"> -<!ENTITY enabled.column "Enabled"> -<!ENTITY subscription.lastDownload.checksumMismatch "Failed: checksum mismatch"> -<!ENTITY noFiltersInGroup.text "The selected group is empty"> -<!ENTITY subscription.actions.label "Actions"> -<!ENTITY filter.selectAll.label "Select All"> -<!ENTITY backupButton.label "Backup and Restore"> -<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file."> -<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?"> -<!ENTITY sort.ascending.label "A > Z sort order"> -<!ENTITY sort.label "Sort by"> -<!ENTITY subscription.source.label "Filter list"> -<!ENTITY hitcount.column "Hits"> -<!ENTITY noFilters.text "You don't have any custom filters yet."> -<!ENTITY backup.custom.title "Custom filters only"> -<!ENTITY subscription.external.label "Updated by another extension"> -<!ENTITY subscription.delete.label "Delete"> -<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed."> -<!ENTITY filter.cut.label "Cut"> -<!ENTITY restore.default.label "Restore backup from ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Downloading..."> -<!ENTITY subscriptions.tab.label "Filter subscriptions"> -<!ENTITY sort.descending.label "Z > A sort order"> -<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?"> -<!ENTITY filter.delete.label "Delete"> -<!ENTITY addSubscriptionAdd.label "Add"> -<!ENTITY viewMenu.label "View"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Cancel"> -<!ENTITY subscription.enabled.label "Enabled"> -<!ENTITY noSubscriptions.text "You haven't added any filter subscriptions yet. Adblock Plus won't block - anything without filters, please use "Add filter subscription" to - add some."> -<!ENTITY subscription.update.label "Update filters"> -<!ENTITY dialog.title "Adblock Plus Filter Preferences"> -<!ENTITY addFilter.label "Add filter"> -<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version; you should update to the latest Adblock Plus version."> -<!ENTITY subscription.lastDownload.invalidURL "Failed: not a valid address"> -<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application."> -<!ENTITY filter.moveUp.label "Move up"> -<!ENTITY addGroup.label "Add filter group"> -<!ENTITY filter.edit.label "Edit"> -<!ENTITY subscription.showHideFilters.label "Show/hide filters"> -<!ENTITY acceptableAds2.label "Allow some non-intrusive advertising"> -<!ENTITY addSubscriptionOther.label "Add a different subscription"> -<!ENTITY close.label "Close"> -<!ENTITY sort.none.label "Unsorted"> -<!ENTITY filter.actions.label "Filter actions"> -<!ENTITY filter.copy.label "Copy"> -<!ENTITY filter.moveDown.label "Move down"> -<!ENTITY filter.resetHitCounts.label "Reset hit statistics"> -<!ENTITY readMore.label "Read more"> -<!ENTITY subscription.moveUp.label "Move up"> -<!ENTITY addSubscription.label "Add filter subscription"> -<!ENTITY subscription.homepage.label "Homepage"> -<!ENTITY backup.complete.title "All filters and subscriptions"> -<!ENTITY restore.own.label "Restore own backup"> -<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?"> -<!ENTITY filters.tab.label "Custom filters"> -<!ENTITY backup.label "Create new backup"> -<!ENTITY find.label "Find"> -<!ENTITY subscription.moveDown.label "Move down"> -<!ENTITY subscription.lastDownload.connectionError "Failed: download failure"> -<!ENTITY subscription.lastDownload.success "Success"> -<!ENTITY subscription.lastDownload.invalidData "Failed: not a valid filters list"> -<!ENTITY filter.paste.label "Paste"> -<!ENTITY subscription.disabledFilters.enable "Enable disabled filters"> -<!ENTITY lasthit.column "Last hit"> -<!ENTITY subscription.editTitle.label "Edit title"> -<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled."> -<!ENTITY filter.column "Filter rule"> -<!ENTITY subscription.lastDownload.label "Last download:"> -<!ENTITY viewList.label "View list"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/firstRun.properties deleted file mode 100644 index 971a702..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Browse privately by disabling tracking - hiding your tracks from ad companies that would track your every move. -firstRun_toggle_off=OFF -firstRun_feature_tracking=Disable Tracking -firstRun_feature_malware=Malware Blocking -firstRun_title=Adblock Plus has been installed -firstRun_acceptableAdsExplanation=We'd like to encourage websites to use straightforward, unobtrusive advertising. That's why we've established <a>strict guidelines</a> to identify positive ads, which are shown under default settings. If you still wish to block every ad you can <a>disable</a> this in a few seconds. -firstRun_toggle_on=ON -firstRun_contributor_credits=Contributor Credits -firstRun_dataCorruptionWarning=Does this page keep showing up? <a>Click here!</a> -firstRun_acceptableAdsHeadline=Annoying ads will now be blocked. -firstRun_share=Tell your friends -firstRun_share_headline=<a>Help us</a> in making the web a better place -firstRun_features=Adblock Plus can do more than block ads -firstRun_feature_malware_description=Make your browsing more secure by blocking known malware domains. -firstRun_feature_social_description=Automatically rid your browsing experience of social media buttons (such as the Facebook Like) which appear on web pages and track your behaviour. -firstRun_donate=Donate -firstRun_donate_label=Support our project -firstRun_feature_social=Remove Social Media Buttons -firstRun_legacySafariWarning=You are using an old version of Safari which is not supported by Adblock Plus. It might not work correctly or impair the user experience on some websites. We strongly recommend to either update to Safari 6.1.1 or higher (on OS X 10.8 Mountain Lion), or Safari 7.0.1 or higher (on OS X 10.9 Mavericks), or to use the latest version of Mozilla Firefox, Google Chrome or Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/global.properties deleted file mode 100644 index 6d3b8c6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=No blockable items on the current page -action3_tooltip=Click to enable/disable Adblock Plus. -notification_antiadblock_title=Hide targeted messages? -type_label_script=script -filter_elemhide_nocriteria=No criteria specified to recognise the element to be hidden -blockingGroup_title=Ad Blocking Rules -whitelisted_tooltip=Adblock Plus is active but disabled on current page. -type_label_stylesheet=stylesheet -blocked_count_tooltip=?1? out of ?2? -type_label_font=font -type_label_popup=popup window -filter_regexp_tooltip=This filter is either a regular expression or too short to be optimised. Too many of these filters might slow down your browsing. -action0_tooltip=Click to bring up context menu; middle-click to enable/disable. -whitelisted_page=Adblock Plus has been disabled for the current page -remove_group_warning=Do you really want to remove this group? -action1_tooltip=Click to open/close blockable items; middle-click to enable/disable. -type_label_xmlhttprequest=XML request -active_tooltip=Adblock Plus is enabled, ?1? filter subscription(s) and ?2? custom filter(s) in use. -type_label_document=document -type_label_object_subrequest=object sub-request -whitelistGroup_title=Exception Rules -disabled_tooltip=Adblock Plus is disabled. -filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified -type_label_object=object -action2_tooltip=Click to open preferences; middle-click to enable/disable. -type_label_subdocument=frame -clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? -blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?) -subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name. -type_label_image=image -remove_subscription_warning=Do you really want to remove this subscription? -type_label_other=other -mobile_menu_enable=ABP: Enable -type_label_media=audio/video -mobile_menu_disable_site=ABP: Disable on ?1? -elemhideGroup_title=Element Hiding Rules -mobile_menu_enable_site=ABP: Enable on ?1? -type_label_elemhide=hidden -newGroup_title=New filter group -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/overlay.dtd deleted file mode 100644 index f916e9a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "Yes"> -<!ENTITY notification.button.no "No"> -<!ENTITY sync.label "Syn&chronise Adblock Plus settings"> -<!ENTITY whitelist.site.label "Disable on ?1?"> -<!ENTITY filters.label "Filter preferences"> -<!ENTITY disable.label "Disable everywhere"> -<!ENTITY objecttab.title "Block"> -<!ENTITY objecttab.tooltip "Block this object with Adblock Plus"> -<!ENTITY menuitem.label "Adblock Plus Preferences"> -<!ENTITY objecttabs.label "Show tabs on Flash and Java"> -<!ENTITY sendReport.label "Report issue on this page"> -<!ENTITY whitelist.page.label "Disable on this page only"> -<!ENTITY context.image.label "Adblock Plus: Block image"> -<!ENTITY counthits.label "Count filter hits"> -<!ENTITY opensidebar.label "Open blockable items"> -<!ENTITY notification.button.close "Close"> -<!ENTITY contribute.label "Contribute to Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Block frame"> -<!ENTITY blocked.tooltip "Blocked items on this page:"> -<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements"> -<!ENTITY showinstatusbar.label "Show in status bar"> -<!ENTITY sidebar.title "Blockable items on current page"> -<!ENTITY options.label "Options"> -<!ENTITY context.object.label "Adblock Plus: Block object"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Re-enable on this page"> -<!ENTITY filters.tooltip "Most active filters:"> -<!ENTITY closesidebar.label "Close blockable items"> -<!ENTITY showintoolbar.label "Show in toolbar"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Block audio/video"> -<!ENTITY subscription.update.label "Update filters"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sendReport.dtd deleted file mode 100644 index 1dec6f7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sendReport.dtd +++ /dev/null @@ -1,71 +0,0 @@ -<!ENTITY screenshot.undo.label "Undo"> -<!ENTITY issues.disabledgroups.description "The following filter subscriptions / filter groups are disabled, yet they might have an effect on this page:"> -<!ENTITY showData.label "Show report data"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus is blocking too much"> -<!ENTITY issues.change.description "Your configuration has been changed. Please reload the page to test the changes and submit a report if the issue hasn't been resolved by the alterations."> -<!ENTITY email.label "Email:"> -<!ENTITY issues.openPreferences.label "Open filter preferences"> -<!ENTITY sendPage.confirmation "Your report has been saved. You can access it at the following address:"> -<!ENTITY copyLink.label "Copy report link"> -<!ENTITY issues.nofilters.description "Adblock Plus isn't blocking anything on the current page. The issue you are observing is probably unrelated to Adblock Plus."> -<!ENTITY sendPage.knownIssue "The issue you reported is probably already known. More information:"> -<!ENTITY typeSelector.other.description "Select this option if you suspect an issue with Adblock Plus itself rather than its filters."> -<!ENTITY issues.disabledgroups.enable.label "Enable filter subscription / filter group"> -<!ENTITY typeWarning.override.label "I understand and want to submit the report anyway"> -<!ENTITY issues.disabled.enable.label "Enable Adblock Plus"> -<!ENTITY update.fixed.description "The updates to your filter subscriptions likely resolved the issue that you - were reporting. Please reload the page and retry, hit Report again if the - problem remains."> -<!ENTITY anonymous.label "Anonymous submission"> -<!ENTITY reloadButton.label "Reload page"> -<!ENTITY recentReports.clear.label "Remove all reports"> -<!ENTITY typeSelector.description "This window will guide you through the steps required for the submission of an Adblock Plus issue report. First, please select the type of issue that you are experiencing on this page:"> -<!ENTITY screenshot.remove.label "Remove sensitive data"> -<!ENTITY issues.ownfilters.description "Some of the filters applied on this page are user-defined. Please disable the filters that might have caused the issue:"> -<!ENTITY update.inProgress.description "Adblock Plus needs to update your filter subscriptions to make sure that the - issue hasn't been resolved already. Please wait..."> -<!ENTITY sendPage.retry.label "Send again"> -<!ENTITY data.label "Report data:"> -<!ENTITY recentReports.label "Your recently submitted reports"> -<!ENTITY typeWarning.description "You have indicated that you want to report a general issue with Adblock Plus rather than a problem with the filters. Please note that such issues are best reported in the [link]Adblock Plus forum[/link]. You should only use the issue reporter to supplement an existing discussion, as nobody will notice your report unless you provide them with the link to it. The automatically generated link will be provided after submitting the report."> -<!ENTITY issues.disabled.description "Adblock Plus is disabled, it will not block anything in its current state."> -<!ENTITY attachExtensions.label "Attach a list of active extensions to the report in case add-on conflict is the cause of the problem"> -<!ENTITY issues.nosubscriptions.add.label "Add filter subscription"> -<!ENTITY issues.disabledfilters.enable.label "Enable filter"> -<!ENTITY issues.override.label "The configuration is correct, continue with the report"> -<!ENTITY issues.nosubscriptions.description "You do not appear to be subscribed to any of the pre-made filter lists that automatically remove unwanted content from websites."> -<!ENTITY typeSelector.falsePositive.description "Select this option if the page lacks important content, displays incorrectly or fails to function properly. You can determine whether Adblock Plus is the cause of the problem by disabling it temporarily."> -<!ENTITY typeSelector.other.label "Other issue"> -<!ENTITY emailComment.label "We encourage you to enter a valid email address so that we can contact you if there are questions - about your report. It will also allow us to recognize your contributions and to prioritize them higher."> -<!ENTITY issues.whitelist.remove.label "Re-enable Adblock Plus on this page"> -<!ENTITY outdatedSubscriptions.description "The following filter subscriptions haven't been updated for at least two - weeks. Please update these subscriptions before submitting a report, the - issue might be resolved already."> -<!ENTITY dataCollector.description "Please wait a few moments while Adblock Plus gathers the required data."> -<!ENTITY sendButton.label "Send report"> -<!ENTITY comment.label "Comment (optional):"> -<!ENTITY sendPage.errorMessage "An attempt to send the report failed with error code "?1?". Please ensure you are connected to the Internet and retry. If the problem persists please request assistance in the [link]Adblock Plus forum[/link]."> -<!ENTITY showRecentReports.label "Show recently submitted reports"> -<!ENTITY commentPage.heading "Enter comment"> -<!ENTITY update.start.label "Start update now"> -<!ENTITY issues.disabledfilters.description "The following filters are disabled, yet they might have an effect on this page:"> -<!ENTITY screenshot.description "The same page can look different for different people. It may help us to understand the problem if you attach a screenshot to your report. You can remove sections containing sensitive information as well as mark areas where the problem is noticeable. To do that click the corresponding button and select a section of the image with your mouse."> -<!ENTITY screenshot.attach.label "Attach a page image to the report"> -<!ENTITY issues.whitelist.description "Adblock Plus is currently disabled on the page you are reporting. Please re-enable it and reload the page before submitting the report to assist the investigation of this issue."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus doesn't block an advertisement"> -<!ENTITY typeSelector.heading "Select issue type"> -<!ENTITY anonymity.warning "We won't be able to come back to you and will likely prioritize the report lower."> -<!ENTITY wizard.title "Issue reporter"> -<!ENTITY issues.ownfilters.disable.label "Disable filter"> -<!ENTITY commentPage.description "The text field below allows you to enter a comment to help us understand the issue. This step is optional but recommended if the problem isn't obvious. You can also review the report data before it is sent."> -<!ENTITY comment.lengthWarning "The length of your comment exceeds 1000 characters. Only the first 1000 characters will be sent."> -<!ENTITY typeSelector.falseNegative.description "Select this option if an advertisement is displayed despite Adblock Plus being enabled."> -<!ENTITY sendPage.waitMessage "Please wait while Adblock Plus is submitting your report."> -<!ENTITY dataCollector.heading "Welcome to the issue reporter"> -<!ENTITY screenshot.heading "Attach screenshot"> -<!ENTITY sendPage.heading "Send report"> -<!ENTITY issues.subscriptionCount.description "It seems that you are subscribed to too many filter subscriptions. This setup is not recommended because it will make the likeliness of issues much higher. We also cannot accept your issue report because it is unclear which filter subscription author needs to take action. Please remove all but the really necessary filter subscriptions and test whether the issue still occurs then."> -<!ENTITY screenshot.mark.label "Mark the problem"> -<!ENTITY privacyPolicy.label "Privacy policy"> -<!ENTITY issues.description "Adblock Plus has detected issues with your configuration that might be responsible for this issue or will make investigating the report difficult."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sidebar.dtd deleted file mode 100644 index 32cb7e1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash item's borders"> -<!ENTITY address.label "Address"> -<!ENTITY context.open.label "Open in New Tab"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Filter source:"> -<!ENTITY noitems.label "No blockable items"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Size"> -<!ENTITY reattach.label "Reattach"> -<!ENTITY search.label "Search:"> -<!ENTITY docDomain.thirdParty "(third party)"> -<!ENTITY filterSource.label "Filter source"> -<!ENTITY tooltip.docDomain.label "Document source:"> -<!ENTITY context.copy.label "Copy item's address"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY context.disablefilter.label "Disable filter ?1?"> -<!ENTITY context.copyFilter.label "Copy filter"> -<!ENTITY context.block.label "Block this item"> -<!ENTITY context.enablefilter.label "Re-enable filter ?1?"> -<!ENTITY detach.label "Detach"> -<!ENTITY whitelisted.label "Whitelisted page"> -<!ENTITY context.disablefilteronsite.label "Disable this filter on ?1?"> -<!ENTITY detached.title "Adblock Plus: Blockable items (detached)"> -<!ENTITY docDomain.firstParty "(first party)"> -<!ENTITY tooltip.type.whitelisted "(whitelisted)"> -<!ENTITY tooltip.filter.label "Filter in effect:"> -<!ENTITY tooltip.filter.disabled "(disabled)"> -<!ENTITY context.editfilter.label "Edit filter in effect"> -<!ENTITY tooltip.type.blocked "(blocked)"> -<!ENTITY size.label "Size"> -<!ENTITY context.whitelist.label "Add exception rule for item"> -<!ENTITY context.selectAll.label "Select all"> -<!ENTITY state.label "State"> -<!ENTITY docDomain.label "Document source"> -<!ENTITY tooltip.address.label "Address:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/subscriptionSelection.dtd deleted file mode 100644 index 10ba808..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-GB/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Add filter subscription "?1?" as well"> -<!ENTITY list.download.failed "Adblock Plus failed to retrieve the list of subscriptions."> -<!ENTITY list.download.retry "Try again"> -<!ENTITY title.label "Subscription title:"> -<!ENTITY list.download.website "View website"> -<!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet."> -<!ENTITY viewList.label "View filters"> -<!ENTITY visitHomepage.label "Visit home page"> -<!ENTITY addSubscription.label "Add subscription"> -<!ENTITY dialog.title "Add Adblock Plus filter subscription"> -<!ENTITY location.label "Filter list location:"> -<!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/composer.dtd deleted file mode 100644 index bba41e3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/composer.dtd +++ /dev/null @@ -1,38 +0,0 @@ -<!ENTITY dialog.title "Add Adblock Plus filter rule"> -<!ENTITY accept.label "Add filter"> -<!ENTITY advanced.label "Advanced view"> -<!ENTITY basic.label "Basic view"> - -<!ENTITY disabled.warning "Adblock Plus is currently disabled. You can still add filters but they will not be applied unless you [link]enable Adblock Plus[/link]."> - -<!ENTITY filter.label "New &filter:"> -<!ENTITY preferences.label "&Show existing filters..."> -<!ENTITY type.filter.label "&Blocking filter"> -<!ENTITY type.whitelist.label "E&xception rule"> -<!ENTITY pattern.label "Look for pattern"> -<!ENTITY pattern.explanation "The pattern can be any part of the address; asterisks (*) act as wildcards. The filter will only be applied to addresses matching the pattern provided."> -<!ENTITY regexp.warning "The pattern you entered will be interpreted as a regular expression which cannot be efficiently processed by Adblock Plus and may slow down your browsing experience. If you didn't intend to use a regular expression, add an asterisk (*) to the end of the pattern."> -<!ENTITY shortpattern.warning "The pattern you entered is too short to be optimized and may slow down your browsing experience. It is recommended that you choose a longer string for this filter to allow Adblock Plus to process the filter more efficiently."> -<!ENTITY match.warning "The pattern you entered no longer matches the address to be blocked/whitelisted and will have no effect on it."> -<!ENTITY custom.pattern.label "&Custom:"> -<!ENTITY anchors.label "Accept pattern only:"> -<!ENTITY anchor.start.label "at the be&ginning of the address"> -<!-- Note: This access key should usually be the same as anchor.start.flexible.accesskey. It is the same checkbox with different label depending on suggested filter.--> -<!ENTITY anchor.start.flexible.label "at the be&ginning of the domain name"> -<!-- Note: This access key should usually be the same as anchor.start.accesskey. It is the same checkbox with different label depending on suggested filter.--> -<!ENTITY anchor.end.label "at the e&nd of the address"> -<!ENTITY options.label "Options"> -<!ENTITY domainRestriction.label "Restrict to &domain:"> -<!ENTITY domainRestriction.help "Use this option to specify one or more domains separated by a bar line (|). The filter will only be applied on the domain(s) selected. A tilde (~) before a domain name indicates that the filter will not be applied on that domain."> -<!ENTITY firstParty.label "Fi&rst-party only"> -<!ENTITY thirdParty.label "&Third-party only"> -<!ENTITY matchCase.label "&Match case"> -<!ENTITY types.label "Apply to types:"> -<!ENTITY selectAllTypes.label "Select all"> -<!ENTITY unselectAllTypes.label "Select none"> - -<!ENTITY collapse.label "Co&llapse blocked:"> -<!ENTITY collapse.default.yes.label "Use default (yes)"> -<!ENTITY collapse.default.no.label "Use default (no)"> -<!ENTITY collapse.yes.label "Yes"> -<!ENTITY collapse.no.label "No"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/filters.dtd deleted file mode 100644 index 1ab4720..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/filters.dtd +++ /dev/null @@ -1,92 +0,0 @@ -<!ENTITY dialog.title "Adblock Plus Filter Preferences"> - -<!ENTITY subscriptions.tab.label "Filter subscriptions"> -<!ENTITY filters.tab.label "Custom filters"> - -<!ENTITY addSubscription.label "Add &filter subscription"> -<!ENTITY addSubscriptionAdd.label "Add"> -<!ENTITY addSubscriptionCancel.label "Cancel"> -<!ENTITY addSubscriptionOther.label "Add a different subscription"> - -<!ENTITY noSubscriptions.text " - You haven't added any filter subscriptions yet. Adblock Plus won't block - anything without filters, please use "Add filter subscription" to - add some. -"> -<!ENTITY subscription.homepage.label "Homepage"> -<!ENTITY subscription.external.label "Updated by another extension"> -<!ENTITY subscription.source.label "Filter list"> -<!ENTITY subscription.enabled.label "Enabled"> -<!ENTITY subscription.lastDownload.label "Last download:"> -<!ENTITY subscription.lastDownload.inProgress "Downloading…"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY subscription.lastDownload.invalidURL "Failed, not a valid address"> -<!ENTITY subscription.lastDownload.connectionError "Failed, download failure"> -<!ENTITY subscription.lastDownload.invalidData "Failed, not a valid filters list"> -<!ENTITY subscription.lastDownload.checksumMismatch "Failed, checksum mismatch"> -<!ENTITY subscription.lastDownload.success "Success"> -<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version."> -<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled."> -<!ENTITY subscription.disabledFilters.enable "Enable disabled filters"> - -<!ENTITY subscription.actions.label "Actions"> -<!ENTITY subscription.update.label "Update filters"> -<!ENTITY subscription.editTitle.label "Edit title"> -<!ENTITY subscription.delete.label "Delete"> -<!ENTITY subscription.showHideFilters.label "Show/hide filters"> -<!ENTITY subscription.moveUp.label "Move up"> -<!ENTITY subscription.moveDown.label "Move down"> - -<!ENTITY acceptableAds2.label "Allow some non-&intrusive advertising"> -<!ENTITY viewList.label "View list"> -<!ENTITY readMore.label "Read more"> - -<!ENTITY addGroup.label "Add filter &group"> -<!ENTITY noFilters.text " - You don't have any custom filters yet. -"> - -<!ENTITY addFilter.label "A&dd filter"> -<!ENTITY filter.actions.label "Filter actions"> -<!ENTITY filter.edit.label "Edit"> -<!ENTITY filter.cut.label "Cut"> -<!ENTITY filter.copy.label "Copy"> -<!ENTITY filter.paste.label "Paste"> -<!ENTITY filter.delete.label "Delete"> -<!ENTITY filter.selectAll.label "Select All"> -<!ENTITY filter.resetHitCounts.label "Reset hit statistics"> -<!ENTITY filter.moveUp.label "Move up"> -<!ENTITY filter.moveDown.label "Move down"> -<!ENTITY viewMenu.label "View"> - -<!ENTITY filter.column "&Filter rule"> -<!ENTITY slow.column "Slo&w filters"> -<!ENTITY enabled.column "E&nabled"> -<!ENTITY hitcount.column "&Hits"> -<!ENTITY lasthit.column "&Last hit"> -<!ENTITY sort.label "&Sort by"> -<!ENTITY sort.none.label "&Unsorted"> -<!ENTITY sort.ascending.label "&A > Z sort order"> -<!ENTITY sort.descending.label "&Z > A sort order"> -<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed."> -<!ENTITY noFiltersInGroup.text "The selected group is empty."> - -<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?"> - -<!ENTITY backupButton.label "&Backup and Restore"> -<!ENTITY backup.label "Create new backup"> -<!-- Note: the placeholder ?1? will be replaced by date/time of the automatic backup --> -<!ENTITY restore.default.label "Restore backup from ?1?"> -<!ENTITY restore.own.label "Restore own backup"> - -<!ENTITY backup.complete.title "All filters and subscriptions"> -<!ENTITY backup.custom.title "Custom filters only"> - -<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application."> -<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?"> -<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?"> -<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?"> -<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file."> - -<!ENTITY find.label "Fi&nd"> -<!ENTITY close.label "Close"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/firstRun.properties deleted file mode 100644 index 21438b1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/firstRun.properties +++ /dev/null @@ -1,24 +0,0 @@ -firstRun_title=Adblock Plus has been installed -firstRun_dataCorruptionWarning=Does this page keep showing up? <a>Click here!</a> -firstRun_acceptableAdsHeadline=Annoying ads will now be blocked -firstRun_acceptableAdsExplanation=We'd like to encourage websites to use straightforward, unobtrusive advertising. That's why we've established <a>strict guidelines</a> to identify acceptable ads, which are shown under default settings. If you still want to block every ad you can <a>disable</a> this in a few seconds. -firstRun_legacySafariWarning=You are using an old version of Safari which is not supported by Adblock Plus. It might not work correctly or impair the user experience on some websites. We strongly recommend to either update to Safari 6.1.1 or higher (on OS X 10.8 Mountain Lion), or Safari 7.0.1 or higher (on OS X 10.9 Mavericks), or to use the latest version of Mozilla Firefox, Google Chrome or Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. - -firstRun_toggle_on=ON -firstRun_toggle_off=OFF - -firstRun_features=Adblock Plus can do more than block ads -firstRun_feature_malware=Malware Blocking -firstRun_feature_malware_description=Make your browsing more secure by blocking known malware domains. -firstRun_feature_social=Remove Social Media Buttons -firstRun_feature_social_description=Automatically rid your browsing experience of social media buttons, such as the Facebook Like, which appear on web pages and track your behavior. -firstRun_feature_tracking=Disable Tracking -firstRun_feature_tracking_description=Browse privately by disabling tracking - hiding your tracks from ad companies that would track your every move. - -firstRun_share_headline=<a>Give us a hand</a> in making the web a better place -firstRun_donate=donate -firstRun_donate_label=Support our project -firstRun_share=Tell your friends - -firstRun_contributor_credits=Contributor Credits diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/global.properties deleted file mode 100644 index 59de9cb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/global.properties +++ /dev/null @@ -1,58 +0,0 @@ -default_dialog_title=Adblock Plus - -action0_tooltip=Click to bring up context menu, middle-click to enable/disable. -action1_tooltip=Click to open/close blockable items, middle-click to enable/disable. -action2_tooltip=Click to open preferences, middle-click to enable/disable. -action3_tooltip=Click to enable/disable Adblock Plus. - -disabled_tooltip=Adblock Plus is disabled. -# Note: the placeholder ?1? will be replaced by the number of active filter subscriptions, the placeholder ?2? by the number of custom filters -active_tooltip=Adblock Plus is enabled, ?1? filter subscription(s) and ?2? custom filter(s) in use. -whitelisted_tooltip=Adblock Plus is disabled on current page. - -# Note: the placeholder ?1? will be replaced by the number of blocked items, the placeholder ?2? by the total number of items on current page -blocked_count_tooltip=?1? out of ?2? -# Note: the placeholder ?1? will be replaced by the number of whitelisted items, the placeholder ?2? by the number of hidden items on current page -blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?) - -no_blocking_suggestions=No blockable items on the current page -whitelisted_page=Adblock Plus has been disabled for the current page - -newGroup_title=New filter group -whitelistGroup_title=Exception Rules -blockingGroup_title=Ad Blocking Rules -elemhideGroup_title=Element Hiding Rules - -remove_subscription_warning=Do you really want to remove this subscription? -remove_group_warning=Do you really want to remove this group? -clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed? - -filter_regexp_tooltip=This filter is either a regular expression or too short to be optimized. Too many of these filters might slow down your browsing. -filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified -filter_elemhide_nocriteria=No criteria specified to recognize the element to be hidden - -subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name. - -type_label_other=other -type_label_script=script -type_label_image=image -type_label_stylesheet=stylesheet -type_label_object=object -type_label_subdocument=frame -type_label_document=document -type_label_elemhide=hidden -type_label_popup=pop-up window - -type_label_xmlhttprequest=XML request -type_label_object_subrequest=object subrequest -type_label_media=audio/video -type_label_font=font - -mobile_menu_enable=ABP: Enable -# Note: the placeholder ?1? will be replaced by the site name. Ideally it should be at the end of the string (space is limited and site names can be long). -mobile_menu_enable_site=ABP: Enable on ?1? -# Note: the placeholder ?1? will be replaced by the site name. Ideally it should be at the end of the string (space is limited and site names can be long). -mobile_menu_disable_site=ABP: Disable on ?1? - -notification_antiadblock_title=Hide targeted messages? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/overlay.dtd deleted file mode 100644 index 895ff80..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/overlay.dtd +++ /dev/null @@ -1,41 +0,0 @@ -<!ENTITY status.tooltip "Status:"> -<!ENTITY blocked.tooltip "Blocked items on this page:"> -<!ENTITY filters.tooltip "Most active filters:"> - -<!ENTITY menuitem.label "Ad&block Plus Preferences"> -<!ENTITY toolbarbutton.label "Adblock Plus"> - -<!ENTITY context.image.label "Adblock Plus: Block image"> -<!ENTITY context.object.label "Adblock Plus: Block object"> -<!ENTITY context.frame.label "Adblock Plus: Block frame"> -<!ENTITY context.media.label "Adblock Plus: Block audio/video"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Re-enable on this page"> - -<!ENTITY sidebar.title "Blockable items on current page"> - -<!ENTITY sendReport.label "&Report issue on this page"> -<!ENTITY filters.label "&Filter preferences"> -<!ENTITY opensidebar.label "Open &blockable items"> -<!-- Note: This access key should usually be the same as closesidebar.accesskey. It is the same menu item with different label depending on whether the sidebar is currently open.--> -<!ENTITY closesidebar.label "Close &blockable items"> -<!-- Note: This access key should usually be the same as opensidebar.accesskey. It is the same menu item with different label depending on whether the sidebar is currently open.--> -<!-- Note: the placeholder ?1? will be replaced by the domain name of the current page --> -<!ENTITY whitelist.site.label "Disable on ?1?"> -<!ENTITY whitelist.page.label "Disable on this page only"> -<!ENTITY disable.label "Disable everywhere"> -<!ENTITY options.label "&Options"> -<!ENTITY contribute.label "Contribute to Adblock Plus"> - -<!ENTITY showintoolbar.label "Show in tool&bar"> -<!ENTITY showinstatusbar.label "&Show in status bar"> -<!ENTITY objecttabs.label "Show &tabs on Flash and Java"> -<!ENTITY hideplaceholders.label "Hide p&laceholders of blocked elements"> -<!ENTITY counthits.label "Count filter &hits"> -<!ENTITY sync.label "Syn&c Adblock Plus settings"> -<!ENTITY objecttab.title "Block"> -<!ENTITY objecttab.tooltip "Click here to block this object with Adblock Plus"> - -<!ENTITY notification.button.yes "&Yes"> -<!ENTITY notification.button.no "&No"> -<!ENTITY notification.button.close "&Close"> -<!ENTITY subscription.update.label "Update filters"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sendReport.dtd deleted file mode 100644 index 49621ec..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sendReport.dtd +++ /dev/null @@ -1,181 +0,0 @@ -<!ENTITY wizard.title "Issue reporter"> -<!ENTITY privacyPolicy.label "Privacy policy"> - -<!ENTITY dataCollector.heading "Welcome to the issue reporter"> -<!ENTITY dataCollector.description "Please wait a few moments while Adblock Plus gathers the required data."> - -<!-- Please keep typeSelector.heading short - it is shown in the progress bar, not much space there --> -<!ENTITY typeSelector.heading "Select issue type"> - -<!ENTITY typeSelector.description " - This window will guide you through the steps required for the submission of an Adblock - Plus issue report. First, please select the type of issue that you are experiencing - on this page: -"> - -<!ENTITY typeSelector.falsePositive.label "Adblock Plus is blocking too &much"> -<!ENTITY typeSelector.falsePositive.description " - Select this option if the page lacks important content, displays incorrectly or - fails to function properly. You can determine whether Adblock Plus is the cause - of the problem by disabling it temporarily. -"> - -<!ENTITY typeSelector.falseNegative.label "Adblock Plus doesn't block an ad&vertisement"> -<!ENTITY typeSelector.falseNegative.description " - Select this option if an advertisement is displayed despite - Adblock Plus being enabled. -"> - -<!ENTITY typeSelector.other.label "O&ther issue"> -<!ENTITY typeSelector.other.description " - Select this option if you suspect an issue with Adblock Plus itself rather - than its filters. -"> - -<!ENTITY showRecentReports.label "Show recently submitted reports"> -<!ENTITY recentReports.label "Your recently submitted reports"> -<!ENTITY recentReports.clear.label "&Remove all reports"> -<!ENTITY update.inProgress.description " - Adblock Plus needs to update your filter subscriptions to make sure that the - issue hasn't been resolved already. Please wait... -"> - -<!ENTITY update.fixed.description " - The updates to your filter subscriptions likely resolved the issue that you - were reporting. Please reload the page and retry, hit Report again if the - problem remains. -"> - -<!ENTITY outdatedSubscriptions.description " - The following filter subscriptions haven't been updated for at least two - weeks. Please update these subscriptions before submitting a report, the - issue might be resolved already. -"> - -<!ENTITY update.start.label "Start update now"> - -<!ENTITY issues.description " - Adblock Plus has detected issues with your configuration that might be responsible - for this issue or will make investigating the report difficult. -"> - -<!ENTITY issues.whitelist.description " - Adblock Plus is currently disabled on the page you are reporting. Please re-enable - it and reload the page before submitting the report to assist the investigation of - this issue. -"> -<!ENTITY issues.whitelist.remove.label "Re-enable Adblock Plus on this page"> - -<!ENTITY issues.disabled.description " - Adblock Plus is disabled, it will not block anything in its current state. -"> -<!ENTITY issues.disabled.enable.label "Enable Adblock Plus"> - -<!ENTITY issues.nofilters.description " - Adblock Plus isn't blocking anything on the current page. The issue you are - observing is most likely unrelated to Adblock Plus. -"> - -<!ENTITY issues.nosubscriptions.description " - You do not appear to be subscribed to any of the pre-made filter lists that - automatically remove unwanted content from websites. -"> -<!ENTITY issues.nosubscriptions.add.label "Add filter subscription"> - -<!ENTITY issues.subscriptionCount.description " - It seems that you are subscribed to too many filter subscriptions. This - setup is not recommended because it will make the likeliness - of issues much higher. We also cannot accept your issue report because it - is unclear which filter subscription author needs to take action. Please - remove all but the really necessary filter subscriptions and test whether - the issue still occurs then. -"> -<!ENTITY issues.openPreferences.label "Open filter preferences"> - -<!ENTITY issues.ownfilters.description " - Some of the filters applied on this page are user-defined. Please disable - the filters that might have caused the issue: -"> -<!ENTITY issues.ownfilters.disable.label "Disable filter"> - -<!ENTITY issues.disabledgroups.description " - The following filter subscriptions / filter groups are disabled, yet they might have - an effect on this page: -"> -<!ENTITY issues.disabledgroups.enable.label "Enable filter subscription / filter group"> - -<!ENTITY issues.disabledfilters.description " - The following filters are disabled, yet they might have an effect on this page: -"> -<!ENTITY issues.disabledfilters.enable.label "Enable filter"> - -<!ENTITY issues.override.label "The &configuration is correct, continue with the report"> -<!ENTITY issues.change.description " - Your configuration has been changed. Please reload the page to test the changes - and submit a report if the issue hasn't been resolved by the alterations. -"> - -<!ENTITY typeWarning.description " - You have indicated that you want to report a general issue with Adblock Plus rather - than a problem with the filters. Please note that such issues are best reported - in the [link]Adblock Plus forum[/link]. You should only use the issue reporter to - supplement an existing discussion, as nobody will notice your report - unless you provide them with the link to it. The automatically generated link - will be provided after submitting the report. -"> - -<!ENTITY typeWarning.override.label "I under&stand and want to submit the report anyway"> -<!ENTITY reloadButton.label "&Reload page"> -<!-- Please keep screenshot.heading short - it is shown in the progress bar, not much space there --> -<!ENTITY screenshot.heading "Attach screenshot"> - -<!ENTITY screenshot.description " - The same page can look different for different people. It may help us to - understand the problem if you attach a screenshot to your report. You can remove - sections containing sensitive information as well as mark areas where the - problem is noticeable. To do that click the corresponding button and select - a section of the image with your mouse. -"> - -<!ENTITY screenshot.attach.label "A&ttach a page image to the report"> -<!ENTITY screenshot.mark.label "&Mark the problem"> -<!ENTITY screenshot.remove.label "&Remove sensitive data"> -<!ENTITY screenshot.undo.label "&Undo"> -<!-- Please keep commentPage.heading short - it is shown in the progress bar, not much space there --> -<!ENTITY commentPage.heading "Enter comment"> - -<!ENTITY commentPage.description " - The text field below allows you to enter a comment to help us understand the issue. - This step is optional but recommended if the problem isn't obvious. - You can also review the report data before it is sent. -"> - -<!ENTITY emailComment.label " - We encourage you to enter a valid email address so that we can contact you if there are questions - about your report. It will also allow us to recognize your contributions and to prioritize them higher. -"> -<!ENTITY comment.label "&Comment (optional):"> -<!ENTITY comment.lengthWarning "The length of your comment exceeds 1000 characters. Only the first 1000 characters will be sent."> -<!ENTITY email.label "E&mail:"> -<!ENTITY anonymous.label "&Anonymous submission"> -<!ENTITY anonymity.warning "We won't be able to come back to you and will likely prioritize the report lower."> - -<!ENTITY attachExtensions.label "Attach a list of active e&xtensions to the report in case add-on conflict is the cause of the problem"> -<!ENTITY sendButton.label "Se&nd report"> -<!ENTITY showData.label "Show report data"> -<!ENTITY data.label "Re&port data:"> -<!-- Please keep sendPage.heading short - it is shown in the progress bar, not much space there --> -<!ENTITY sendPage.heading "Send report"> -<!ENTITY sendPage.waitMessage "Please wait while Adblock Plus is submitting your report."> -<!ENTITY sendPage.confirmation "Your report has been saved. You can access it at the following address:"> -<!ENTITY sendPage.knownIssue "The issue you reported is probably already known. More information:"> - -<!-- Note: the placeholder ?1? will be replaced by the error code --> -<!ENTITY sendPage.errorMessage " - An attempt to send the report failed with error code "?1?". Please ensure you are - connected to the Internet and retry. If the problem persists please request - assistance in the [link]Adblock Plus forum[/link]. -"> -<!ENTITY sendPage.retry.label "Send again"> - -<!ENTITY copyLink.label "&Copy report link"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sidebar.dtd deleted file mode 100644 index f612047..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/sidebar.dtd +++ /dev/null @@ -1,41 +0,0 @@ -<!ENTITY detached.title "Adblock Plus: Blockable items (detached)"> - -<!ENTITY detach.label "Detach"> -<!ENTITY reattach.label "Reattach"> - -<!ENTITY search.label "&Search:"> -<!ENTITY type.label "Type"> -<!ENTITY address.label "Address"> -<!ENTITY filter.label "Filter"> -<!ENTITY state.label "State"> -<!ENTITY size.label "Size"> -<!ENTITY filterSource.label "Filter source"> -<!ENTITY docDomain.label "Document source"> -<!ENTITY docDomain.thirdParty "(third party)"> -<!ENTITY docDomain.firstParty "(first party)"> -<!ENTITY noitems.label "No blockable items"> -<!ENTITY whitelisted.label "Whitelisted page"> -<!ENTITY tooltip.address.label "Address:"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY tooltip.type.blocked "(blocked)"> -<!ENTITY tooltip.type.whitelisted "(whitelisted)"> -<!ENTITY tooltip.size.label "Size:"> -<!ENTITY tooltip.docDomain.label "Document source:"> -<!ENTITY tooltip.filter.label "Filter in effect:"> -<!ENTITY tooltip.filter.disabled "(disabled)"> -<!ENTITY tooltip.filterSource.label "Filter source:"> - -<!ENTITY context.block.label "Block this item"> -<!ENTITY context.editfilter.label "Edit filter in effect"> -<!ENTITY context.whitelist.label "Add exception rule for item"> -<!-- Note: the placeholder ?1? will be replaced by the filter text --> -<!ENTITY context.disablefilter.label "Disable filter ?1?"> -<!-- Note: the placeholder ?1? will be replaced by the filter text --> -<!ENTITY context.enablefilter.label "Re-enable filter ?1?"> -<!-- Note: the placeholder ?1? will be replaced by the domain name of the current page --> -<!ENTITY context.disablefilteronsite.label "Disable this filter on ?1?"> -<!ENTITY context.open.label "Open in New Tab"> -<!ENTITY context.flash.label "Flash item's borders"> -<!ENTITY context.copy.label "Copy item's address"> -<!ENTITY context.copyFilter.label "Copy filter"> -<!ENTITY context.selectAll.label "Select all"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/subscriptionSelection.dtd deleted file mode 100644 index 78444d1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/en-US/subscriptionSelection.dtd +++ /dev/null @@ -1,19 +0,0 @@ -<!ENTITY dialog.title "Add Adblock Plus filter subscription"> - -<!ENTITY viewList.label "View filters"> -<!ENTITY visitHomepage.label "Visit home page"> - -<!ENTITY addSubscription.label "Add subscription"> - -<!ENTITY list.download.failed "Adblock Plus failed to retrieve the list of subscriptions."> -<!ENTITY list.download.retry "Try again"> -<!ENTITY list.download.website "View website"> - -<!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it."> - -<!ENTITY title.label "Subscrip&tion title:"> -<!ENTITY location.label "Fi&lter list location:"> -<!-- Note: the placeholder (?1?) will be replaced by the name of the filter subscription required --> -<!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet."> -<!-- Note: the placeholder (?1?) will be replaced by the name of the filter subscription required --> -<!ENTITY addMain.label "Add filter &subscription "?1?" as well"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/composer.dtd deleted file mode 100644 index 20fc48a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "en la fi&no de la adreso"> -<!ENTITY domainRestriction.label "&Limigi al retregiono:"> -<!ENTITY collapse.default.no.label "Uzi apriorojn (ne)"> -<!ENTITY firstParty.label "Nu&r de unua liveranto"> -<!ENTITY preferences.label "Montri &ekzistantajn filtrilojn..."> -<!ENTITY pattern.label "Serĉi modelon"> -<!ENTITY thirdParty.label "Nur de &tria liveranto"> -<!ENTITY filter.label "Nova &filtrilo:"> -<!ENTITY collapse.label "Ma&letendi blokitajn:"> -<!ENTITY match.warning "La modelo, kiun vi enigis, ne plu konformas kun la adreso, kiu estu blokata/transprenata en la blankan liston kaj ne havos efikon al Äťi."> -<!ENTITY anchor.start.label "en la &komenco de la adreso"> -<!ENTITY matchCase.label "&Atenti usklecon"> -<!ENTITY custom.pattern.label "&Propraj:"> -<!ENTITY unselectAllTypes.label "Elekti nenion"> -<!ENTITY type.whitelist.label "Es&ceptoregulo"> -<!ENTITY regexp.warning "La modelo, kiun vi enigis, estos interpretata kiel regula esprimo, kiu ne povas esti traktata oer Adblock Plus kaj povas malrapidigi vian retumadon. Se vi ne intencas uzi regulan esprimon, aldonu asteriskon (*) al la fino de la modelo."> -<!ENTITY dialog.title "Aldoni filtrilregulon al Adblock Plus"> -<!ENTITY basic.label "Baza vido"> -<!ENTITY type.filter.label "&Blokanta filtrilo"> -<!ENTITY types.label "Apliki al specoj:"> -<!ENTITY shortpattern.warning "La modelo, kiun vi enigis, estas tro mallonga por optimigo kaj povas malrapidigi vian retumadon. RekomendiÄťas, ke vi elektas pli longan signoĉenon por ĉi tiu filtrilo por permesi Adblock Plus trakti la filtrilon pli efike."> -<!ENTITY collapse.yes.label "Jes"> -<!ENTITY anchors.label "Akcepti modelon nur:"> -<!ENTITY collapse.default.yes.label "Uzi apriorojn (jes)"> -<!ENTITY domainRestriction.help "Uzu ĉi tiun opcion por specifi unu retregionon aĹ plurajn retregionojn, separitajn per strekosigno (|). La filtrilo estos nur aplikata al elektita(j) retregiono(j). Tildo (~) antaĹ retregiona nomo indikas, ke la filtrilo ne estos aplikata al tiu retregiono."> -<!ENTITY accept.label "Aldoni filtrilon"> -<!ENTITY options.label "Opcioj"> -<!ENTITY disabled.warning "Addblock Plus estas nun malĹťaltita. Vi povas ankoraĹ aldoni filtrilojn sed ili ne estos aplikataj, Äťis vi [link]enĹťaltas Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "en la komenco de la retre&giona nomo"> -<!ENTITY collapse.no.label "Ne"> -<!ENTITY selectAllTypes.label "Elekti ĉion"> -<!ENTITY advanced.label "Detala vido"> -<!ENTITY pattern.explanation "La modelo povas esti parto de la adreso; asteriskoj (*) funkcias kiel ĵokeroj. La filtrilo estos nur aplikata al adresoj, kiuj konformas kun la specifita modelo."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/filters.dtd deleted file mode 100644 index a7c498c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Äiuj viaj propraj filtriloj estos anstataĹigataj per la enhavo de la elektita dosiero. Äu vi volas daĹrigi?"> -<!ENTITY slow.column "&Malrapidaj filtriloj"> -<!ENTITY enabled.column "Ebl&igita"> -<!ENTITY subscription.lastDownload.checksumMismatch "Malsukcesis, kontrolsuma miskongruo"> -<!ENTITY noFiltersInGroup.text "La elektita grupo estas malplena."> -<!ENTITY subscription.actions.label "Agoj"> -<!ENTITY filter.selectAll.label "Elekti ĉion"> -<!ENTITY backupButton.label "Se&kurkopii kaj restaĹri"> -<!ENTITY restore.minVersion.warning "Averto: la dosiero estas kreita per pli nova versio de Adblock Plus. Vi Äťisdatigu al la plej nova versio de Adblock Plus antaĹ ol vi restaĹri ion el ĉi tiu dosiero."> -<!ENTITY restore.error "La dosieraj datumoj ne povis traktitaj, ĉu tio eble ne estas sekurkopia dosiero de Adblock Plus?"> -<!ENTITY sort.ascending.label "Ordigo &A > Z"> -<!ENTITY sort.label "&Ordigi laĹ"> -<!ENTITY subscription.source.label "Filtrila listo"> -<!ENTITY hitcount.column "&Trafoj"> -<!ENTITY noFilters.text "Vi ankoraĹ ne havas proprajn filtrilojn."> -<!ENTITY backup.custom.title "Nur propraj filtriloj"> -<!ENTITY subscription.external.label "Äśisdatigita per alia etendaĵo"> -<!ENTITY subscription.delete.label "ForviĹťi"> -<!ENTITY noGroupSelected.text "Vi devas elekti filtrilgrupon antaĹ ol filtriloj povas esti vidigataj."> -<!ENTITY filter.cut.label "Eltondi"> -<!ENTITY restore.default.label "RestaĹri sekurkopion de ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ElĹťutanta..."> -<!ENTITY subscriptions.tab.label "Filtrilabonoj"> -<!ENTITY sort.descending.label "Ordigo &Z > A"> -<!ENTITY filters.remove.warning "Äu vi vere volas forigi ĉiujn elektitajn filtrilojn?"> -<!ENTITY filter.delete.label "ForviĹťi"> -<!ENTITY addSubscriptionAdd.label "Aldoni"> -<!ENTITY viewMenu.label "Vidi"> -<!ENTITY subscription.lastDownload.unknown "Neniu"> -<!ENTITY addSubscriptionCancel.label "Nuligi"> -<!ENTITY subscription.enabled.label "Ebligita"> -<!ENTITY noSubscriptions.text "Vi ankoraĹ ne aldonis filtrilabonojn. Adblock Plus blokos enion sen filtriloj, bonvolu uzu "Aldoni filtrilabonon" por aldoni abonon."> -<!ENTITY subscription.update.label "Äśisdatigi filtrilojn"> -<!ENTITY dialog.title "Filtrilaj agordoj de Adblock Plus"> -<!ENTITY addFilter.label "Al&doni filtrilon"> -<!ENTITY subscription.minVersion.warning "Äi tiu filtrilabono bezonas pli novan version de Adblock Plus, vi Äťisdatigu al la plej nova versio de Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Malsukcesis, tio ne estas valida adreso"> -<!ENTITY backup.error "Okazis eraro dum skribado de filtriloj en dosieron. Kontrolu, ke la dosiero ne estas kontraĹskribe protektita aĹ uzate per alia aplikaĵo."> -<!ENTITY filter.moveUp.label "Supren"> -<!ENTITY addGroup.label "Aldoni filtril&grupon"> -<!ENTITY filter.edit.label "Redakti"> -<!ENTITY subscription.showHideFilters.label "Montri/KaĹťi filtrilojn"> -<!ENTITY acceptableAds2.label "Permesi neal&trudiÄťantan reklamon"> -<!ENTITY addSubscriptionOther.label "Aldoni alian abonon"> -<!ENTITY close.label "Fermi"> -<!ENTITY sort.none.label "&Nenio"> -<!ENTITY filter.actions.label "Filtrilaj agoj"> -<!ENTITY filter.copy.label "Kopii"> -<!ENTITY filter.moveDown.label "Malsupren"> -<!ENTITY filter.resetHitCounts.label "Rekomencigi trafostatistikon"> -<!ENTITY readMore.label "Legu pli"> -<!ENTITY subscription.moveUp.label "Supren"> -<!ENTITY addSubscription.label "Aldoni &filtrilabonon"> -<!ENTITY subscription.homepage.label "HejmpaÄťo"> -<!ENTITY backup.complete.title "Äiuj filtriloj kaj abonoj"> -<!ENTITY restore.own.label "RestaĹri propran sekurkopion"> -<!ENTITY restore.complete.warning "Äiuj viaj filtrilaj agordoj estos anstataĹigataj per la enhavo de la elektita dosiero. Äu vi volas daĹrigi?"> -<!ENTITY filters.tab.label "Propraj filtriloj"> -<!ENTITY backup.label "Krei novan sekurkopion"> -<!ENTITY find.label "&Serĉi"> -<!ENTITY subscription.moveDown.label "Malsupren"> -<!ENTITY subscription.lastDownload.connectionError "Malsukcesis, elĹťuta eraro"> -<!ENTITY subscription.lastDownload.success "Sukceso"> -<!ENTITY subscription.lastDownload.invalidData "Malsukcesis, tio ne estas listo de validaj filtriloj"> -<!ENTITY filter.paste.label "Alglui"> -<!ENTITY subscription.disabledFilters.enable "Ebligi malebligitajn filtrilojn"> -<!ENTITY lasthit.column "&Lasta trafo"> -<!ENTITY subscription.editTitle.label "Redakti titolon"> -<!ENTITY subscription.disabledFilters.warning "Kelkaj filtriloj en ĉi tiu abono estas malebligitaj."> -<!ENTITY filter.column "&Filtrilregulo"> -<!ENTITY subscription.lastDownload.label "Lasta elĹťuto:"> -<!ENTITY viewList.label "Montri liston"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/firstRun.properties deleted file mode 100644 index 64666ee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Retumu private malebligante spuradon resp. kaĹťante viajn spurojn antaĹ reklamfirmaoj, kiuj volonte spurus ĉiun el viaj movoj. -firstRun_toggle_off=MalĹťaltita -firstRun_feature_tracking=Malebligi spuradon -firstRun_feature_malware=Bloki fiprogramaron -firstRun_title=Adblock Plus instaliÄťis -firstRun_acceptableAdsExplanation=Ni volonte kuraÄťigus retejojn uzi sinceran, nealtrudiÄťeman varbadon. Tial ni fiksis <a>striktajn direktivojn</a> por identigi akcepteblan reklamon, kiujn vi trovas en la defaĹltaj agordoj. Se vi ankoraĹ volas bloki ĉian reklamon, vi povas <a>malebligi</a> tion dum malmultaj sekundoj. -firstRun_toggle_on=Ĺśaltita -firstRun_contributor_credits=Danko al kontribuintoj -firstRun_dataCorruptionWarning=Äu la paÄťo estas plumontrata? <a>Klaku ĉi tie!</a> -firstRun_acceptableAdsHeadline=AltrudiÄťema reklamo estos nun blokata -firstRun_share=Informu viajn amikojn -firstRun_share_headline=<a>Donu al ni manon</a>, por ke ni faru la reton pli bona loko -firstRun_features=Adblock Plus povas fari pli multe ol bloki reklamon -firstRun_feature_malware_description=Faru vian retumadon pli sekura blokante konatajn domajnojn de fiprogramaro. -firstRun_feature_social_description=AĹtomate forigi vian retan agadon faritan pere de butonoj de sociaj medioj, kiel la butono "Ĺśati" en Fejsbuko, kiuj aperas en retpaÄťoj kaj spuras vian konduton. -firstRun_donate=donaci -firstRun_donate_label=Subtenu nian projekton -firstRun_feature_social=Forigi butonojn de sociaj aĹdvidaĵoj -firstRun_legacySafariWarning=Vi uzas malnovan version de Safari, kiun Adblock Plus ne subtenas. Eble Äťi ne korekte funkcios aĹ Äťenas la travivaĵon de uzanto sur kelkaj retejoj. Ni eksplicite rekomendas aĹ Äťisdatigi al Safari 6.1.1 aĹ pli alta versio (estas je dispono por Mac OS X 10.8 Mountain Lion) aĹ Safari 7.0.1 aĹ pli alta versio (estas je dispono por OS X 10.9 Mavericks) aĹ uzi la plej novan version de Mozilla Firefox, Google Chrome aĹ Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/global.properties deleted file mode 100644 index f37a94d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Neniuj blokeblaj elementoj en ĉi tiu paÄťo -action3_tooltip=Klaku por ebligi/malebligi Adblock Plus. -notification_antiadblock_title=Äu kaĹťi celmesaÄťojn? -type_label_script=skripto -filter_elemhide_nocriteria=Neniuj kriterioj specifitaj por ekkoni la kaĹťotan elementon -blockingGroup_title=Reguloj por bloki reklamon -whitelisted_tooltip=Adblock Plus estas malebligita sur ĉi tiu paÄťo. -type_label_stylesheet=stilfolio -blocked_count_tooltip=?1? el ?2? -type_label_font=tiparo -type_label_popup=Ĺťprucfenestro -filter_regexp_tooltip=Äi tiu filtrilo estas aĹ regula esprimo aĹ tro mallonga por optimigo. Tro multe da ĉi tiuj filtriloj povus malrapidigi vian retumadon. -action0_tooltip=Klaku por vidigi la kuntekstan menuon, klaku per la meza musklavo por ebligi/malebligi Äťin. -whitelisted_page=Adblock Plus estas malebligita por ĉi tiu paÄťo -remove_group_warning=Äu vi vere volas forigi ĉi tiun grupon? -action1_tooltip=Klaku por malfermi/fermi blokeblajn elementojn, klaku per la meza musklavo por ebligi/malebligi Äťin. -type_label_xmlhttprequest=XML-peto -active_tooltip=Adblock Plus estas ebligita, ?1? filtrilabonoj kaj ?2? propraj filtriloj estas uzataj. -type_label_document=dokumento -type_label_object_subrequest=objekta subpeto -whitelistGroup_title=Esceptoreguloj -disabled_tooltip=Adblock Plus estas malebligita. -filter_elemhide_duplicate_id=Nur unu el la kaĹťotaj elementoj povas esti specifata -type_label_object=objekto -action2_tooltip=Klaku por malfermi agordojn, klaku per la meza musklavo por ebligi/malebligi Äťin. -type_label_subdocument=kadro -clearStats_warning=Tio rekomencigos la statistikon de filtrilaj trafoj kaj malebligos la nombradon de filtrilaj trafoj. Äu vi volas daĹrigi? -notification_antiadblock_message=Estas konate, ke ĉi tiu retejo montras celmesaÄťojn por uzantoj de Adblock Plus. Äu vi volas, ke Adblock Plus kaĹťu celmesaÄťojn? -blocked_count_addendum=(ankaĹ en blanka listo: ?1?, kaĹťita: ?2?) -subscription_invalid_location=La loko de la listo de filtriloj estas nek valida URL nek valida dosiernomo. -type_label_image=bildo -remove_subscription_warning=Äu vi efektive volas fini ĉi tiun abonon? -type_label_other=alia -mobile_menu_enable=ABP: Ebligi -type_label_media=aĹdio/video -mobile_menu_disable_site=ABP: Malebligi en ?1? -elemhideGroup_title=Reguloj por kaĹťi elementojn -mobile_menu_enable_site=ABP: Ebligi en ?1? -type_label_elemhide=kaĹťita -newGroup_title=Nova grupo de filtriloj -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/overlay.dtd deleted file mode 100644 index 6c1bb4f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Jes"> -<!ENTITY notification.button.no "&Ne"> -<!ENTITY sync.label "&Sinkronigi agordojn de Adblock Plus"> -<!ENTITY whitelist.site.label "Malebligi sur ?1?"> -<!ENTITY filters.label "&Filtrilaj agordoj"> -<!ENTITY disable.label "Äie malebligi"> -<!ENTITY objecttab.title "Bloki"> -<!ENTITY objecttab.tooltip "Klaku ĉi tien por bloki ĉi tiun objekton per Adblock Plus"> -<!ENTITY menuitem.label "&Agordoj de Adblock Plus"> -<!ENTITY objecttabs.label "&Montri langetojn de Flash kaj Äśavo"> -<!ENTITY sendReport.label "&Raporti problemon pri ĉi tiu paÄťo"> -<!ENTITY whitelist.page.label "Malebligi nur sur ĉi tiu paÄťo"> -<!ENTITY context.image.label "Adblock Plus: Bloki bildon"> -<!ENTITY counthits.label "&Nombri filtriltrafojn"> -<!ENTITY opensidebar.label "Malfermi &blokeblajn elementojn"> -<!ENTITY notification.button.close "&Fermi"> -<!ENTITY contribute.label "Kontribuu al Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Bloki kadron"> -<!ENTITY blocked.tooltip "Blokitaj elementoj sur ĉi tiu paÄťo:"> -<!ENTITY hideplaceholders.label "KaĹťi &lokokupilojn de blokitaj elementoj"> -<!ENTITY showinstatusbar.label "Vidi&gi en statstrio"> -<!ENTITY sidebar.title "Blokeblaj elementoj sur la nuna paÄťo"> -<!ENTITY options.label "&Opcioj"> -<!ENTITY context.object.label "Adblock Plus: Bloki objekton"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Reebligi sur ĉi tiu paÄťo"> -<!ENTITY filters.tooltip "Plej aktivaj filtriloj:"> -<!ENTITY closesidebar.label "Fermi &blokeblajn elementojn"> -<!ENTITY showintoolbar.label "&Vidigi en ilobreto"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Bloki aĹdion/videon"> -<!ENTITY subscription.update.label "Äśisdatigi filtrilojn"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sendReport.dtd deleted file mode 100644 index 5e145e7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Malfari"> -<!ENTITY issues.disabledgroups.description "La sekvontaj filtrilabonoj/filtrilgrupoj estas malebligitaj, sed ili povus havi efikon al ĉi tiu paÄťo:"> -<!ENTITY showData.label "Montri raportodatumojn"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokas tro &multe"> -<!ENTITY issues.change.description "Via konfiguro estas ĹťanÄťita. Bonvolu reĹťargi la paÄťon por testi la ĹťanÄťojn kaj sendu la raporton, se la problemo ne solviÄťos per la ĹťanÄťoj."> -<!ENTITY email.label "&RetpoĹťto:"> -<!ENTITY issues.openPreferences.label "Malfermi filtrilagordojn"> -<!ENTITY sendPage.confirmation "Via raporto estas konservita. Vi povas atingi Äťin ĉe sekvonta adreso:"> -<!ENTITY copyLink.label "&Kopii raportligilon"> -<!ENTITY issues.nofilters.description "Adblock Plus blokas nenion sur ĉi tiu paÄťo. La problemo, kiun vi observas, plej verĹťajne ne rilatas al Adblock Plus."> -<!ENTITY sendPage.knownIssue "La problemo, kiun vi raportis, eble estas jam konata. Pliaj informoj:"> -<!ENTITY typeSelector.other.description "Elektu ĉi tiun opcion, se vi kredas problemon kun Adblock Plus mem pli verĹťajna ol kun Äťiaj filtriloj."> -<!ENTITY issues.disabledgroups.enable.label "Ebligi filtrilabonon/filtrilgrupon"> -<!ENTITY typeWarning.override.label "Mi komprena&s kaj volas sendi la raporton malgraĹ tio"> -<!ENTITY issues.disabled.enable.label "Ebligi Adblock Plus"> -<!ENTITY update.fixed.description "La Äťisdatigoj de viaj filtrilabonoj verĹťajne solvis la problemon, kiun vi sciigis. Bonvolu reĹťargi la paÄťon kaj alklaku denoe 'Sendi denove', se la problemo ankoraĹ ekzistas."> -<!ENTITY anonymous.label "&Anonima sendado"> -<!ENTITY reloadButton.label "&ReĹťargi paÄťon"> -<!ENTITY recentReports.clear.label "&Forigi ĉiujn raportojn"> -<!ENTITY typeSelector.description "Äi tiu fenestro gvidos vin tra la paĹťoj, kiuj estas bezonataj por sendi la problemraporton de Adblock Plus. Unue bonvolu elekti la problemtipon, kiun vi renkontis sur ĉi tiu paÄťo:"> -<!ENTITY screenshot.remove.label "&Forigi gravajn datumojn"> -<!ENTITY issues.ownfilters.description "Kelkaj filtriloj aplikataj al ĉi tiu paÄťo estas propre difinitaj. Bonvolu malebligi la filtrilojn, kiuj povus kaĹzi la problemon:"> -<!ENTITY update.inProgress.description "Adblock Plus devas Äťisdatigi viajn fitrilabonojn por certigi, ke la problemo ne estas jam solvita. Bonvolu atendi..."> -<!ENTITY sendPage.retry.label "Denove sendi"> -<!ENTITY data.label "Ra&portodatumoj:"> -<!ENTITY recentReports.label "Viaj antaĹ nelonge senditaj raportoj"> -<!ENTITY typeWarning.description "Vi indikis, ke vi volas raporti Äťeneralan problemon kun Adblock Plus opiniante tion pli verĹťajna ol problemo kun la filtriloj. Bonvolu atenti, ke tia problemo estu plej bone raportata en [link]forumo de Adblock Plus[/link]. Vi nur uzu la problemraportilon por kompletigi ekzistantan diskuton, ĉar neniu rimarkos via raporton, escepte, se vi donas al ili la ligilon al Äťi. La aĹtomate generita ligilo estos provizita post sendado de la raporto."> -<!ENTITY issues.disabled.description "Adblock Plus estas malebligita, Äťi blokos nenion en sia aktuala stato."> -<!ENTITY attachExtensions.label "Kun&sendi liston de aktivaj etendaĵoj kun la raporto, se etendaĵa konflikto estas la kaĹzo de la problemo"> -<!ENTITY issues.nosubscriptions.add.label "Aldoni filtrilabonon"> -<!ENTITY issues.disabledfilters.enable.label "Ebligi filtrilon"> -<!ENTITY issues.override.label "La &konfiguro estas korekta, daĹrigi la raporton"> -<!ENTITY issues.nosubscriptions.description "Ĺśajnas, ke vi ne abonis preparitan liston de filtriloj, kiuj aĹtomate forigas nedeziratan enhavon de retejoj."> -<!ENTITY typeSelector.falsePositive.description "Elektu ĉi tiun opcion, se la paÄťo malhavas gravan enhavon, ne estas vidigata korekte abo malsukcesas korekte funkcii. Vi povas determini, ĉu Adblock Plus estas la kaĹzo de la problemo malebligante Äťin provizore."> -<!ENTITY typeSelector.other.label "&Alia problemo"> -<!ENTITY emailComment.label "Ni rekomendas al vi enigi validan retpoĹťtan adreson, por ke ni povu kontakti vin, se estos demandoj pri via raporto. Tio ankaĹ ebligas al ni agnoski viajn kontribuojn kaj doni pli altan prioritaton al ili."> -<!ENTITY issues.whitelist.remove.label "Denove ebligi Adblock Plus sur ĉi tiu paÄťo"> -<!ENTITY outdatedSubscriptions.description "La sekvontaj filtrilabonoj ne ÄťisdatiÄťis de almenaĹ du semajnoj. Bonvolu Äťisdatigi ĉi tiujn abonojn, antaĹ ol vi sendas raporton, la problemo estas eble jam solvita."> -<!ENTITY dataCollector.description "Bonvolu atendi kelkajn momentojn dum Adblock Plus akiras la necesajn datumojn."> -<!ENTITY sendButton.label "Se&ndi raporton"> -<!ENTITY comment.label "&Komento (laĹvole):"> -<!ENTITY sendPage.errorMessage "Provo por sendi la raporton malsukcesis kun erarkodo "?1?". Bonvolu certiÄťu, ke vi estas konektita al la interreto kaj provu denove. Se la problemo pluekzistas, bonvolu peti pri helpo en la [link]forumo de Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Montri antaĹ nelonge senditajn raportojn"> -<!ENTITY commentPage.heading "Enigi komenton"> -<!ENTITY update.start.label "Startigu nun Äťisdatigon"> -<!ENTITY issues.disabledfilters.description "La sekvontaj filtriloj estas malebligitaj, sed ili povus havi efikon al ĉi tiu paÄťo:"> -<!ENTITY screenshot.description "La sama paÄťo povas aspekti alie por diferencaj homoj. Helpus kompreni la problemon, se vi aldonas ekrankopion al via raporto. Vi povas forigi sekciojn, kiuj enhavas konfidencajn informojn kaj marki lokojn, kie la problemo estas rimarkebla. Por fari tion, alklaku la respektivan butonon kaj elektu la sekcion de la bildo per via muso."> -<!ENTITY screenshot.attach.label "Kunsendi paÄťobi&ldon kun la raporto"> -<!ENTITY issues.whitelist.description "Adblock Plus estas nun malebligita sur la paÄťo, pri kiu vi raportas. Bonvolu ebligi Äťin denove kaj reĹťargu la paÄťon antaĹ ol vi sendas la raporton por helpi analizi ĉi tiun problemon."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus ne blokas &reklamon"> -<!ENTITY typeSelector.heading "Elekti problemtipon"> -<!ENTITY anonymity.warning "Ni ne povas turni nin al vi denove kaj ni donos verĹťajne pli malaltan prioritaton al via raporto."> -<!ENTITY wizard.title "Problemraportilo"> -<!ENTITY issues.ownfilters.disable.label "Malebligi filtrilon"> -<!ENTITY commentPage.description "La tekstokampo malsupre ebligas al vi enigi komenton por helpi al ni kompreni la problemon. Äi tiu paĹťo estas laĹvola, sed rekomendata, se la problemo ne estas evidenta. Vi povas ankaĹ kontroli la raportodatumojn, antaĹ ol Äťi estas forsendata."> -<!ENTITY comment.lengthWarning "Via komento havas pli ol 1000 signojn. Nur la unuaj 1000 signoj estos sendataj:"> -<!ENTITY typeSelector.falseNegative.description "Elektu ĉi tiun opcion, se reklamo estas vidigata, kvankam Adblock Plus estas ebligita."> -<!ENTITY sendPage.waitMessage "Bonvolu atendi, dum Adblock Plus sendas vian raporton."> -<!ENTITY dataCollector.heading "Bonvenon al la problemraportilo"> -<!ENTITY screenshot.heading "Kunsendi ekrankopion"> -<!ENTITY sendPage.heading "Sendi raporton"> -<!ENTITY issues.subscriptionCount.description "Ĺśajnas, ke vi abonis tro multajn filtrilabonojn. Äi tiu agordo ne rekomendiÄťas, ĉar Äťi plialtigas la probablecon de problemoj. Ni ankaĹ ne povas akcepti vian problemraporton, ĉar estas malklare, kiu filtrilabona aĹtoro devas agi. Bonvolu forigi ĉion, escepte de la vere necesaj filtrilabonoj kaj testu, ĉu la problemo poste ankoraĹ ekzistas."> -<!ENTITY screenshot.mark.label "Ma&rki la problemon"> -<!ENTITY privacyPolicy.label "Reguloj de privateco"> -<!ENTITY issues.description "Adblock Plus malkovris problemojn kun via konfiguro, kiu eble estas kulpa pri ĉi tiu problemo aĹ malfaciligas la analizadon de la raporto."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sidebar.dtd deleted file mode 100644 index 949e6ac..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Borderoj de elementoj de Flash"> -<!ENTITY address.label "Adreso"> -<!ENTITY context.open.label "Malfermi en nova langeto"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Fonto de la filtrilo:"> -<!ENTITY noitems.label "Neniuj blokeblaj elementoj"> -<!ENTITY filter.label "Filtrilo"> -<!ENTITY tooltip.size.label "Grandeco:"> -<!ENTITY reattach.label "Denove kunligi"> -<!ENTITY search.label "&Serĉi:"> -<!ENTITY docDomain.thirdParty "(de tria liveranto)"> -<!ENTITY filterSource.label "Fonto de la filtrilo"> -<!ENTITY tooltip.docDomain.label "Fonto de la dokumento:"> -<!ENTITY context.copy.label "Kopii la adreson de la elemento"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Malebligi filtrilon ?1?"> -<!ENTITY context.copyFilter.label "Kopii filtrilon"> -<!ENTITY context.block.label "Bloki ĉi tiun elementon"> -<!ENTITY context.enablefilter.label "Denove ebligi filtrilon ?1?"> -<!ENTITY detach.label "Malligi"> -<!ENTITY whitelisted.label "PaÄťo en blanka listo"> -<!ENTITY context.disablefilteronsite.label "Malebligi ĉi tiun filtrilon sur ?1?"> -<!ENTITY detached.title "Adblock Plus: Blokeblaj elementoj (malligitaj)"> -<!ENTITY docDomain.firstParty "(de unua liveranto)"> -<!ENTITY tooltip.type.whitelisted "(en blanka listo)"> -<!ENTITY tooltip.filter.label "Efika filtrilo:"> -<!ENTITY tooltip.filter.disabled "(malebligita)"> -<!ENTITY context.editfilter.label "Redakti efikan filtrilon"> -<!ENTITY tooltip.type.blocked "(blokita)"> -<!ENTITY size.label "Grandeco"> -<!ENTITY context.whitelist.label "Aldoni esceptoregulon por elemento"> -<!ENTITY context.selectAll.label "Elekti ĉion"> -<!ENTITY state.label "Stato"> -<!ENTITY docDomain.label "Fonto de la dokumento"> -<!ENTITY tooltip.address.label "Adreso:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/subscriptionSelection.dtd deleted file mode 100644 index b28ca3b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eo/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "AnkaĹ aldoni &filtrilabonon "?1?""> -<!ENTITY list.download.failed "Adblock Plus malsukcesis akiri la liston de abonoj."> -<!ENTITY list.download.retry "AnkoraĹfoje provi"> -<!ENTITY title.label "&Titolo de la abono:"> -<!ENTITY list.download.website "Rigardi retejon"> -<!ENTITY supplementMessage "Äi tiu filtrilabono estu uzata kun la filtrilabono "?1?", kiun vi ankoraĹ ne uzas."> -<!ENTITY viewList.label "Rigardi filtrilojn"> -<!ENTITY visitHomepage.label "Viziti hejmpaÄťon"> -<!ENTITY addSubscription.label "Redakti abonon"> -<!ENTITY dialog.title "Aldoni filtrilabonon de Adblock Plus"> -<!ENTITY location.label "&Loko de la listo de filtriloj:"> -<!ENTITY fromWeb.description "Bonvolu konfirmi, ke vi volas aldoni ĉi tiun filtrilabonon. Vi povas ĹťanÄťi la abonan titolon aĹ lokon antaĹ ol vi aldonas Äťin."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/composer.dtd deleted file mode 100644 index 935f034..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "al &final de la direcciĂłn"> -<!ENTITY domainRestriction.label "Restringir al d&ominio:"> -<!ENTITY collapse.default.no.label "Usar predeterminado (no)"> -<!ENTITY firstParty.label "Solamente pe&rsonal"> -<!ENTITY preferences.label "&Mostrar filtros existentes…"> -<!ENTITY pattern.label "Buscar patrĂłn"> -<!ENTITY thirdParty.label "Solamen&te de terceros"> -<!ENTITY filter.label "Nuevo fi&ltro:"> -<!ENTITY collapse.label "&Colapsar los bloqueados:"> -<!ENTITY match.warning "El patrĂłn que ingresaste no coincide más con la direcciĂłn bloqueada o segura, y no surtirá ningĂşn efecto."> -<!ENTITY anchor.start.label "al com&ienzo de la direcciĂłn"> -<!ENTITY matchCase.label "Coincidir m&ayĂşsculas"> -<!ENTITY custom.pattern.label "&Personalizado:"> -<!ENTITY unselectAllTypes.label "No seleccionar nada"> -<!ENTITY type.whitelist.label "Regla de &excepciĂłn"> -<!ENTITY regexp.warning "El patrĂłn que ingresĂ©s será interpretado como una expresiĂłn constante. Demasiadas expresiones constantes podrĂan ralentizar tu navegaciĂłn web. Si no preferĂs usar expresiones constantes, agregá un asterisco ("*") al final del patrĂłn."> -<!ENTITY dialog.title "Agregar regla de filtro de Adblock Plus"> -<!ENTITY basic.label "Vista básica"> -<!ENTITY type.filter.label "Filtros de &bloqueo"> -<!ENTITY types.label "Aplicar a tipos:"> -<!ENTITY shortpattern.warning "El patrĂłn que ingresaste es demasiado corto para poder ser optimizado. Varios patrones similares podrĂan ralentizar tu navegaciĂłn web. Te recomendamos que elijás una cadena más larga para este filtro."> -<!ENTITY collapse.yes.label "SĂ"> -<!ENTITY anchors.label "Aceptar solamente patrĂłn:"> -<!ENTITY collapse.default.yes.label "Usar predeterminado (sĂ)"> -<!ENTITY domainRestriction.help "Especificá uno o más dominios, separados por el sĂmbolo tuberĂa "|", asĂ el filtro se aplica solamente sobre estos dominios. El sĂmbolo ñuflo "~" adelante de un nombre de dominio significa que el filtro no se aplicarĂa sobre ese dominio."> -<!ENTITY accept.label "Agregar filtro"> -<!ENTITY options.label "Opciones"> -<!ENTITY disabled.warning "Adblock Plus está deshabilitado. PodĂ©s seguir agregando filtros, pero no se aplicarán hasta que no actives los [link]filtros de Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "al comienzo del nombre de &dominio"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Seleccionar todo"> -<!ENTITY advanced.label "Vista avanzada"> -<!ENTITY pattern.explanation "El patrĂłn puede ser cualquier parte de la direcciĂłn. El asterisco ("*") funciona como un comodĂn. El filtro sĂłlo será aplicado a aquellas direcciones que coincidan con el patrĂłn."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/filters.dtd deleted file mode 100644 index 4c0cf83..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Todos tus filtros personalizados serán reemplazados por los contenidos del archivo seleccionado. ÂżQuerĂ©s continuar?"> -<!ENTITY slow.column "Filtros &lentos"> -<!ENTITY enabled.column "Ha&bilitado"> -<!ENTITY subscription.lastDownload.checksumMismatch "FallĂł, el archivo de suma de comprobaciĂłn no coincide"> -<!ENTITY noFiltersInGroup.text "El grupo seleccionado está vacĂo."> -<!ENTITY subscription.actions.label "Acciones"> -<!ENTITY filter.selectAll.label "Seleccionar todo"> -<!ENTITY backupButton.label "Resg&uardar y restaurar"> -<!ENTITY restore.minVersion.warning "ADVERTENCIA: este archivo fue creado por una versiĂłn más reciente de Adblock Plus. DeberĂas actualizarte a la Ăşltima versiĂłn de Adblock Plus antes de restaurar este archivo."> -<!ENTITY restore.error "No se pudo procesar los datos del archivo. ÂżEste es un archivo de resguardo de Adblock Plus?"> -<!ENTITY sort.ascending.label "Ordenar de la "&A" a la "Z""> -<!ENTITY sort.label "&Ordenar por"> -<!ENTITY subscription.source.label "Lista de filtros"> -<!ENTITY hitcount.column "V&eces usado"> -<!ENTITY noFilters.text "TodavĂa no tenĂ©s ningĂşn filtro personalizado."> -<!ENTITY backup.custom.title "Solamente filtros personalizados"> -<!ENTITY subscription.external.label "Actualizado por otra extensiĂłn"> -<!ENTITY subscription.delete.label "Eliminar"> -<!ENTITY noGroupSelected.text "Necesitás seleccionar un grupo de filtros antes de que sus filtros puedan ser visualizados."> -<!ENTITY filter.cut.label "Cortar"> -<!ENTITY restore.default.label "ÂżRestaurar resguardo de ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Descargando…"> -<!ENTITY subscriptions.tab.label "Suscripciones de filtro"> -<!ENTITY sort.descending.label "Ordenar de la "&Z" a la "A""> -<!ENTITY filters.remove.warning "ÂżEstás seguro que querĂ©s quitar todos los filtros seleccionados?"> -<!ENTITY filter.delete.label "Eliminar"> -<!ENTITY addSubscriptionAdd.label "Agregar"> -<!ENTITY viewMenu.label "Ver"> -<!ENTITY subscription.lastDownload.unknown "No disponible"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Habilitado"> -<!ENTITY noSubscriptions.text "TodavĂa no agregaste ninguna suscripciĂłn de filtro. Adblock Plus no bloqueará nada sin filtros. Por favor, andá a "Agregar suscripciĂłn de filtro" para agregar alguno."> -<!ENTITY subscription.update.label "Actualizar filtros"> -<!ENTITY dialog.title "Preferencia de filtro de Adblock Plus"> -<!ENTITY addFilter.label "&Agregar filtro"> -<!ENTITY subscription.minVersion.warning "Esta suscripciĂłn de filtro necesita de una versiĂłn más reciente de Adblock Plus. DeberĂas actualizar a la Ăşltima versiĂłn de Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "FallĂł, no es una direcciĂłn válida"> -<!ENTITY backup.error "Hubo un error al escribir filtros al archivo. Asegurate de que el archivo no estĂ© protegido contra escritura o siendo usado por otro programa."> -<!ENTITY filter.moveUp.label "Subir"> -<!ENTITY addGroup.label "Agregar &grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Mostrar/ocultar filtros"> -<!ENTITY acceptableAds2.label "Permitir publicidad no &hostigadora"> -<!ENTITY addSubscriptionOther.label "Agregar un filtro de suscripciĂłn"> -<!ENTITY close.label "Cerrar"> -<!ENTITY sort.none.label "Sin or&denar"> -<!ENTITY filter.actions.label "Acciones de filtro"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Bajar"> -<!ENTITY filter.resetHitCounts.label "Restablecer estadĂsticas de uso"> -<!ENTITY readMore.label "Leer más"> -<!ENTITY subscription.moveUp.label "Subir"> -<!ENTITY addSubscription.label "Agregar suscri&pciĂłn de filtros"> -<!ENTITY subscription.homepage.label "Página principal"> -<!ENTITY backup.complete.title "Todos los filtros y suscripciones"> -<!ENTITY restore.own.label "Restaurar tu propio resguardo"> -<!ENTITY restore.complete.warning "Todas tus preferencias de filtros serán reemplazadas por los contenidos del archivo seleccionado. ÂżQuerĂ©s continuar?"> -<!ENTITY filters.tab.label "Filtros personalizados"> -<!ENTITY backup.label "Crear nuevo resguardo"> -<!ENTITY find.label "Bus&car"> -<!ENTITY subscription.moveDown.label "Bajar"> -<!ENTITY subscription.lastDownload.connectionError "FallĂł, error en la descarga"> -<!ENTITY subscription.lastDownload.success "Se realizĂł exitosamente"> -<!ENTITY subscription.lastDownload.invalidData "FallĂł, no es una lista de filtros válida"> -<!ENTITY filter.paste.label "Pegar"> -<!ENTITY subscription.disabledFilters.enable "Habilitar filtros deshabilitados"> -<!ENTITY lasthit.column "Ăšl&tima vez usado"> -<!ENTITY subscription.editTitle.label "Editar tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "Algunos filtros en esta suscripciĂłn están deshabilitados."> -<!ENTITY filter.column "&Regla de filtro"> -<!ENTITY subscription.lastDownload.label "Ăšltima descarga:"> -<!ENTITY viewList.label "Ver lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/firstRun.properties deleted file mode 100644 index 3973073..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navegá privadamente deshabilitando el rastreo; esto es: ocultarle a las agencias de publicidad tus visitas, las cuales, de otro modo, registrarĂan todos tus movimientos. -firstRun_toggle_off=DESACTIVAR -firstRun_feature_tracking=Deshabilitá el rastreo -firstRun_feature_malware=Bloqueá malware -firstRun_title=Se instalĂł Adblock Plus -firstRun_toggle_on=ACTIVAR -firstRun_acceptableAdsExplanation=Nos gustarĂa alentar a que los sitios web usen publicidad más directa y menos hostigadora. Es por eso que establecimos unas <a>pautas estrictas</a> para identificar publicidades aceptables, las cuales se muestran en la configuraciĂłn predeterminada. Si aĂşn asĂ querĂ©s seguir bloqueando todas las publicidades, podĂ©s <a>deshabilitar</a> esto en segundos. -firstRun_contributor_credits=CrĂ©ditos -firstRun_dataCorruptionWarning=ÂżSigue apareciendo esta página? <a>¡HacĂ© clic acá!</a> -firstRun_acceptableAdsHeadline=Las molestas publicidades ahora serán bloqueadas -firstRun_share=Contáselo a tus amigos -firstRun_share_headline=<a>Danos una mano</a> para hacer de la web un lugar mejor -firstRun_feature_social_description=DeshacĂ© automáticamente, en tu experiencia al navegar, botones de medios sociales, como el "Me gusta" de Facebook, el cual aparece en miles de páginas web y rastrean tu comportamiento. -firstRun_filterlistsReinitializedWarning=Parece que hay un problema que causa que todos los filtros se quiten y que no se pueda restaurar desde una copia de seguridad. Por lo tanto tuvimos que restablecer tus filtros y la configuraciĂłn de publicidades aceptadas. Por favor, revisá tus listas de filtros y la configuraciĂłn de publicidades aceptadas en las <a>opciones de Adblock Plus</a>. -firstRun_feature_malware_description=HacĂ© tu navegaciĂłn web más segura bloqueando dominios identificados como malware. -firstRun_features=Adblock Plus puede bloquear más que publicidades -firstRun_donate=doná -firstRun_donate_label=Apoyá nuestro proyecto -firstRun_feature_social=Quitá botones de redes sociales -firstRun_legacySafariWarning=Estás usando una versiĂłn vieja de Safari, la cual no soporta Adblock Plus. Puede que no funcione correctamente o que perjudique la experiencia del usuario en algunos sitios web. Te recomendamos encarecidamente que, o bien actualicĂ©s a Safari 6.1. o más reciente (en Mac OS X 10.8 Mountain Lion), o Safari 7.0.1 o más reciente (en Mac OS X 10.9 Mavericks), o bien usĂ©s la Ăşltima versiĂłn de Mozilla Firefox, Google Chrome u Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/global.properties deleted file mode 100644 index fb119dc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=No hay elementos bloqueables en la página actual -action3_tooltip=Clic para habilitar/deshabilitar Adblock Plus. -notification_antiadblock_title=ÂżOcultar mensajes de usuario? -type_label_script=script -filter_elemhide_nocriteria=No se especificĂł el criterio para reconocer el elemento a ser ocultado -blockingGroup_title=Reglas de bloqueo de publicidad -whitelisted_tooltip=Adblock Plus está deshabilitado en la página actual. -type_label_stylesheet=hoja de estilo -blocked_count_tooltip=?1? de un total de ?2? -type_label_font=tipografĂa -type_label_popup=ventana emergente -filter_regexp_tooltip=Este filtro, o bien es una expresiĂłn constante, o bien es demasiado corto para ser optimizado. Demasiados filtros similares podrĂan ralentizar tu navegaciĂłn web. -action0_tooltip=Clic para ver el menĂş contextual, clic con el botĂłn del medio para habilitarlo/deshabilitarlo. -whitelisted_page=Adblock Plus fue deshabilitado para la página actual -remove_group_warning=ÂżEstás seguro que querĂ©s quitar este grupo? -action1_tooltip=Clic para abrir/cerrar los elementos bloqueables, clic con el botĂłn del medio para habilitarlos/deshabilitarlos. -type_label_xmlhttprequest=peticiĂłn XML -active_tooltip=Adblock Plus está activo. En uso: ?1? suscripciĂłn/es de filtros y ?2? filtro/s personalizado/s. -type_label_document=documento -type_label_object_subrequest=subpeticiĂłn de objeto -whitelistGroup_title=Reglas de excepciĂłn -disabled_tooltip=Adblock Plus está deshabilitado. -filter_elemhide_duplicate_id=Se puede especificar solamente un identificador del elemento a ser ocultado. -type_label_object=objeto -action2_tooltip=Clic para abrir el menĂş de preferencias, clic con el botĂłn del medio para habilitarlo/deshabilitarlo. -type_label_subdocument=marco -clearStats_warning=Esto restablecerá todas las estadĂsticas de conteo y las deshabilitará. ÂżQuerĂ©s continuar? -notification_antiadblock_message=Este sitio web es conocido por mostrar mensajes a los usuarios de Adblock Plus. ÂżQuerĂ©s que Adblock Plus los oculte? -blocked_count_addendum=(tambiĂ©n en la lista segura: ?1?, ocultos: ?2?) -subscription_invalid_location=La ubicaciĂłn de lista de filtros no es válida, o no es válido el nombre de archivo. -type_label_image=imagen -remove_subscription_warning=ÂżEstás seguro que querĂ©s quitar esta suscripciĂłn? -type_label_other=otro -mobile_menu_enable=ABP: Habilitar -type_label_media=audio/video -mobile_menu_disable_site=ABP: Deshabilitar en ?1? -elemhideGroup_title=Reglas de elementos colapsados -mobile_menu_enable_site=ABP: Habilitar en ?1? -type_label_elemhide=oculto -newGroup_title=Nuevo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/overlay.dtd deleted file mode 100644 index 1ba864e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&SĂ"> -<!ENTITY notification.button.no "&No"> -<!ENTITY sync.label "Si&ncronizar la configuraciĂłn de Adblock Plus"> -<!ENTITY whitelist.site.label "Deshabilitar en ?1?"> -<!ENTITY filters.label "P&referencias de filtro"> -<!ENTITY disable.label "Deshabilitar en todos lados"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "HacĂ© clic acá para bloquear este objeto con Adblock Plus"> -<!ENTITY menuitem.label "&Preferencias de Adblock Plus"> -<!ENTITY objecttabs.label "Mostrar pe&stañas en Flash y Java"> -<!ENTITY sendReport.label "&Informar de problemas en esta página"> -<!ENTITY whitelist.page.label "Deshabilitar solamente en esta página"> -<!ENTITY context.image.label "Adblock Plus: bloquear imagen"> -<!ENTITY counthits.label "&Veces usado"> -<!ENTITY opensidebar.label "&Abrir elementos bloqueables"> -<!ENTITY notification.button.close "&Cerrar"> -<!ENTITY contribute.label "ContribuĂ a Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: bloquear marco"> -<!ENTITY blocked.tooltip "Elementos bloqueados en esta página:"> -<!ENTITY hideplaceholders.label "Co&lapsar elementos bloqueados"> -<!ENTITY showinstatusbar.label "Mostrar en la barra de &estado"> -<!ENTITY sidebar.title "Elementos bloqueables en la página actual"> -<!ENTITY options.label "&Opciones"> -<!ENTITY context.object.label "Adblock Plus: bloquear objeto"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: rehabilitar en esta página"> -<!ENTITY filters.tooltip "Filtros más activos:"> -<!ENTITY closesidebar.label "&Cerrar elementos bloqueables"> -<!ENTITY showintoolbar.label "Mostrar en la barra de &herramientas"> -<!ENTITY status.tooltip "Estado:"> -<!ENTITY context.media.label "Adblock Plus: bloquear audio/video"> -<!ENTITY subscription.update.label "Actualizar filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sendReport.dtd deleted file mode 100644 index cda41df..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Deshacer"> -<!ENTITY issues.disabledgroups.description "Las siguientes suscripciones de filtros / grupos de filtros están deshabilitados, aunque aĂşn podrĂan tener algĂşn efecto sobre esta página web:"> -<!ENTITY showData.label "Mostrar datos del informe"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus bloquea &demasiado"> -<!ENTITY issues.change.description "Tu configuraciĂłn cambiĂł. Por favor, recargá la página para probar los cambios y enviar el informe si el problema no se resolviĂł despuĂ©s de estos cambios."> -<!ENTITY email.label "DirecciĂłn de correo e&lectrĂłnico:"> -<!ENTITY issues.openPreferences.label "Abrir preferencias de filtros"> -<!ENTITY sendPage.confirmation "Tu informe se guardĂł exitosamente. PodĂ©s acceder al mismo desde esta direcciĂłn:"> -<!ENTITY copyLink.label "Cop&iar enlace del informe"> -<!ENTITY issues.nofilters.description "Adblock Plus no está bloqueando nada de la página actual. Este problema especĂfico probablemente no tenga que ver con Adblock Plus."> -<!ENTITY sendPage.knownIssue "El problema que enviaste probablemente es un inconveniente ya informado. Más informaciĂłn:"> -<!ENTITY typeSelector.other.description "Seleccioná esta opciĂłn si pensás que el problema está relacionado más con Adblock Plus mismo que con sus filtros."> -<!ENTITY issues.disabledgroups.enable.label "Habilitar suscripciĂłn de filtro / grupo de filtro"> -<!ENTITY typeWarning.override.label "Lo &entiendo, y quiero enviar el informe de todas maneras"> -<!ENTITY issues.disabled.enable.label "Habilitar Adblock Plus"> -<!ENTITY update.fixed.description "Las actualizaciones a tus suscripciones de filtros probablemente resolvieron el problema que informaste. Por favor, recargá la página y reintentá. HacĂ© clic en "Informar" si el problema persiste."> -<!ENTITY anonymous.label "EnvĂo a&nĂłnimo"> -<!ENTITY reloadButton.label "&Recargar la página"> -<!ENTITY recentReports.clear.label "&Quitar todos los informes"> -<!ENTITY typeSelector.description "Esta ventana te va a guiar a travĂ©s de los pasos necesarios para el envĂo de informes de problemas de Adblock Plus. Por favor, primero elegĂ el tipo de problema que estás experimentando en esta página web:"> -<!ENTITY screenshot.remove.label "Q&uitar datos sensibles"> -<!ENTITY issues.ownfilters.description "Algunos de los filtros aplicados en esta página están definidos por el usuario. Por favor, deshabilitá los filtros que podrĂan causar el inconveniente:"> -<!ENTITY update.inProgress.description "Adblock Plus necesita actualizar tus suscripciones de filtros para asegurarse de que el problema no ha sido solucionado aĂşn. Por favor, esperá…"> -<!ENTITY sendPage.retry.label "Enviar de nuevo"> -<!ENTITY data.label "Datos del &informe:"> -<!ENTITY recentReports.label "Tus informes enviados recientemente"> -<!ENTITY typeWarning.description "Indicaste que querĂ©s informar de un problema general de Adblock Plus mismo más que un problema con los filtros. Por favor, tenĂ© en cuenta que tal clase de problemas se informan de mejor modo en el [link]foro de Adblock Plus[/link]. DeberĂas usar el informe de problemas solamente para complementar un debate existente, ya que nadie sabrá de tu informe, a menos que les ofrezcas el enlace hacia el mismo. El enlace generado automáticamente será otorgado luego de enviar el informe."> -<!ENTITY issues.disabled.description "Adblock Plus se encuentra deshabilitado, no bloqueará nada en este estado actual."> -<!ENTITY attachExtensions.label "Adjuntá una lista de las e&xtensiones activas al informe, en caso de que sea alguno de los complementos el causante del problema"> -<!ENTITY issues.nosubscriptions.add.label "Agregar suscripciĂłn de filtro"> -<!ENTITY issues.disabledfilters.enable.label "Habilitar filtro"> -<!ENTITY issues.override.label "La &configuraciĂłn es correcta, podĂ©s continuar con el informe"> -<!ENTITY issues.nosubscriptions.description "Parece que no estás suscripto a ninguna de las listas de filtro preestablecidas que automáticamente quita contenido no deseado de sitios web."> -<!ENTITY typeSelector.falsePositive.description "Seleccioná esta opciĂłn si falta contenido importante, si la página se visualiza incorrectamente o si no funciona apropiadamente. PodĂ©s determinar si Adblock Plus es el causante del problema, deshabilitándolo temporalmente."> -<!ENTITY typeSelector.other.label "&Otro problema"> -<!ENTITY emailComment.label "Te alentamos a que ingresĂ©s una direcciĂłn válida de correo electrĂłnico, asĂ podemos contactarte si tenemos dudas sobre tu informe. TambiĂ©n nos permitirá reconocer tus contribuciones y priorizarlas por sobre el resto."> -<!ENTITY issues.whitelist.remove.label "Rehabilitar Adblock Plus en esta página."> -<!ENTITY outdatedSubscriptions.description "Las siguientes suscripciones de filtros no fueron actualizadas por, al menos, dos semanas. Por favor, actualizá estas suscripciones antes de enviar un informe; el problema ya podrĂa haberse resuelto."> -<!ENTITY dataCollector.description "Por favor, esperá unos instantes mientras Adblock Plus recolecta los datos requeridos."> -<!ENTITY sendButton.label "En&viar informe"> -<!ENTITY comment.label "Com&entarios (opcional):"> -<!ENTITY sendPage.errorMessage "Se intentĂł enviar el reporte, pero fallĂł y devolviĂł un error de cĂłdigo "?1?". Por favor, asegurate que estás conectado a Internet e intentá nuevamente. Si el problema persiste, por favor, pedĂ ayuda en el [link]foro de Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Mostrar informes enviados recientemente"> -<!ENTITY commentPage.heading "Ingresar comentarios"> -<!ENTITY update.start.label "Comenzar con la actualizaciĂłn ahora"> -<!ENTITY issues.disabledfilters.description "Los siguientes filtros están deshabilitados, aunque aĂşn podrĂan tener algĂşn efecto sobre esta página web:"> -<!ENTITY screenshot.description "La misma página web puede lucir diferente para distintas personas. Si adjuntás una captura de pantalla a tu informe, nos serĂa de mucha ayuda para entender el inconveniente. Por supuesto, podĂ©s quitar fragmentos conteniendo informaciĂłn sensible, asĂ como marcar áreas en donde el problema es más explĂcito. Para hacer eso, hacĂ© clic en el botĂłn correspondiente y seleccioná un fragmento de la imagen con el mouse."> -<!ENTITY screenshot.attach.label "&Adjuntar al informe una captura de la página web"> -<!ENTITY issues.whitelist.description "Adblock Plus se encuentra deshabilitado en la página que estás informando. Por favor, rehabilitalo y recargá la página antes de enviar el informe para colaborar con la investigaciĂłn de este problema."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus no bloquea una &publicidad"> -<!ENTITY typeSelector.heading "Seleccioná el tipo de problema"> -<!ENTITY anonymity.warning "No podremos contactarte y tu informe seguramente tendrá poca prioridad."> -<!ENTITY wizard.title "Informe de problemas"> -<!ENTITY issues.ownfilters.disable.label "Deshabilitar filtro"> -<!ENTITY commentPage.description "El campo de texto, debajo, te permite ingresar algĂşn comentario para ayudarnos a entender el problema. Este paso es opcional, pero encarecidamente recomendado si el problema no resulta tan obvio. TambiĂ©n podĂ©s revisar los datos del informe antes de enviarlo."> -<!ENTITY comment.lengthWarning "La longitud de tu comentario excede los 1.000 caracteres. SĂłlo los primeros 1.000 caracteres serán enviados."> -<!ENTITY typeSelector.falseNegative.description "Seleccioná esta opciĂłn si una publicidad es mostrada, estando Adblock Plus habilitado."> -<!ENTITY sendPage.waitMessage "Por favor, esperá mientras Adblock Plus envĂa tu informe."> -<!ENTITY dataCollector.heading "Bienvenido al informe de problemas"> -<!ENTITY screenshot.heading "Adjuntar captura"> -<!ENTITY sendPage.heading "Enviar informe"> -<!ENTITY issues.subscriptionCount.description "Parece que estás suscripto a demasiadas suscripciones de filtros. Esta configuraciĂłn no es recomendada, ya que potenciará sobre manera la apariciĂłn de problemas. Tampoco podemos aceptar tu reporte por inconvenientes, porque no quedarĂa claro quĂ© autor de todos esos filtros es el que debe corregir algo. Por favor, quitá todas las suscripciones de filtros, dejando sĂłlo las que considerĂ©s elementales, y luego fijate si el problema continĂşa."> -<!ENTITY screenshot.mark.label "&Marcar el problema"> -<!ENTITY privacyPolicy.label "PolĂtica de privacidad"> -<!ENTITY issues.description "Adblock Plus detectĂł problemas con tu configuraciĂłn, la cual podrĂa ser la causante de este inconveniente."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sidebar.dtd deleted file mode 100644 index 4648a04..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Bordes de los elementos Flash"> -<!ENTITY address.label "DirecciĂłn"> -<!ENTITY context.open.label "Abrir en nueva pestaña"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Fuente del filtro"> -<!ENTITY noitems.label "Sin elementos bloqueables"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamaño:"> -<!ENTITY reattach.label "Rejuntar"> -<!ENTITY search.label "&Buscar:"> -<!ENTITY docDomain.thirdParty "(de terceros)"> -<!ENTITY filterSource.label "Fuente de filtro"> -<!ENTITY tooltip.docDomain.label "Fuente del documento:"> -<!ENTITY context.copy.label "Copiar direcciĂłn del elemento"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Deshabilitar filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar filtro"> -<!ENTITY context.block.label "Bloquear este elemento"> -<!ENTITY context.enablefilter.label "Rehabilitar filtro ?1?"> -<!ENTITY detach.label "Separar"> -<!ENTITY whitelisted.label "Página segura"> -<!ENTITY context.disablefilteronsite.label "Deshabilitar este filtro en ?1?"> -<!ENTITY detached.title "Adblock Plus: elementos bloqueables (separados)"> -<!ENTITY docDomain.firstParty "(personal)"> -<!ENTITY tooltip.type.whitelisted "(segura)"> -<!ENTITY tooltip.filter.label "Filtro en efecto:"> -<!ENTITY tooltip.filter.disabled "(deshabilitado)"> -<!ENTITY context.editfilter.label "Editar filtro en efecto"> -<!ENTITY tooltip.type.blocked "(bloqueada)"> -<!ENTITY size.label "Tamaño"> -<!ENTITY context.whitelist.label "Agregar regla de excepciĂłn por elemento"> -<!ENTITY context.selectAll.label "Seleccionar todo"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Fuente del documento"> -<!ENTITY tooltip.address.label "DirecciĂłn:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/subscriptionSelection.dtd deleted file mode 100644 index 099f80a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-AR/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Agregá tambiĂ©n la suscripciĂłn de filtros "?1?"."> -<!ENTITY list.download.failed "Hubo un error al recuperar la lista de suscripciones."> -<!ENTITY list.download.retry "Intentar de nuevo"> -<!ENTITY title.label "&TĂtulo de suscripciĂłn:"> -<!ENTITY list.download.website "Ver sitio web"> -<!ENTITY supplementMessage "Esta suscripciĂłn está diseñada para ser usada conjuntamente con la suscripciĂłn de filtros "?1?", que aĂşn no agregaste."> -<!ENTITY viewList.label "Ver filtros"> -<!ENTITY visitHomepage.label "Visitar la página oficial"> -<!ENTITY addSubscription.label "Agregar suscripciĂłn"> -<!ENTITY dialog.title "Agregar suscripciĂłn de filtro de Adblock Plus"> -<!ENTITY location.label "&UbicaciĂłn de la lista de filtros:"> -<!ENTITY fromWeb.description "Por favor, confirmá que querĂ©s agregar esta suscripciĂłn de filtros. PodĂ©s cambiar el tĂtulo de la suscripciĂłn o la ubicaciĂłn antes de agregarla."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/composer.dtd deleted file mode 100644 index 1785209..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "al &final de la direcciĂłn"> -<!ENTITY domainRestriction.label "&Restringir al dominio:"> -<!ENTITY collapse.default.no.label "Usar predeterminado (no)"> -<!ENTITY firstParty.label "SĂłlo para conteni&dos del dominio"> -<!ENTITY preferences.label "&Mostrar filtros existentes…"> -<!ENTITY pattern.label "Buscar patrĂłn"> -<!ENTITY thirdParty.label "SĂłlo para con&tenidos de terceros"> -<!ENTITY filter.label "&Nuevo filtro:"> -<!ENTITY collapse.label "C&olapsar elementos bloqueados:"> -<!ENTITY match.warning "El patrĂłn introducido no coincide con la direcciĂłn a bloquear o incluir en la lista blanca, y no tendrá ningĂşn efecto sobre ella."> -<!ENTITY anchor.start.label "al &inicio de la direcciĂłn"> -<!ENTITY matchCase.label "&Coincidir MAY/minĂşs"> -<!ENTITY custom.pattern.label "&Personalizar:"> -<!ENTITY unselectAllTypes.label "No seleccionar ninguno"> -<!ENTITY type.whitelist.label "Regla de e&xcepciĂłn"> -<!ENTITY regexp.warning "El patrĂłn que ha introducido se interpretará como expresiĂłn regular. Si usa muchas expresiones regulares su navegaciĂłn podrĂa volverse más lenta. Si no querĂa usar una expresiĂłn regular, añada un carácter "*" al final del patrĂłn."> -<!ENTITY dialog.title "Añadir regla de filtrado de Adblock Plus"> -<!ENTITY basic.label "Vista básica"> -<!ENTITY type.filter.label "Filtro de &bloqueo"> -<!ENTITY types.label "Aplicar a estos tipos:"> -<!ENTITY shortpattern.warning "El patrĂłn que ha introducido es demasiado corto para ser optimizado, si usa muchos patrones como este su navegaciĂłn podrĂa volverse más lenta. Le recomendamos elegir una cadena más larga para este filtro."> -<!ENTITY collapse.yes.label "SĂ"> -<!ENTITY anchors.label "SĂłlo aceptar patrones:"> -<!ENTITY collapse.default.yes.label "Usar predeterminado (sĂ)"> -<!ENTITY domainRestriction.help "Si especifica uno o varios dominios separados por el sĂmbolo "|", el filtro sĂłlo se aplicará a dichos dominios. El sĂmbolo "~" antes del nombre de un dominio indica que el filtro no se aplicará en ese dominio."> -<!ENTITY accept.label "Añadir filtro"> -<!ENTITY options.label "Opciones"> -<!ENTITY disabled.warning "Adblock Plus está desactivado. Puede añadir filtros, pero no se aplicarán a menos que [link]active Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "al &inicio del nombre de dominio"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Seleccionar todos"> -<!ENTITY advanced.label "Vista avanzada"> -<!ENTITY pattern.explanation "El patrĂłn puede ser cualquier parte de la direcciĂłn, el carácter "*" actĂşa como comodĂn. El filtro sĂłlo se aplicará a las direcciones que se correspondan con el patrĂłn."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/filters.dtd deleted file mode 100644 index 27f587b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Todas sus filtros personalizados se sustituirán por los contenidos del archivo seleccionado ÂżDesea continuar?"> -<!ENTITY slow.column "Filtros l&entos"> -<!ENTITY enabled.column "Acti&vado"> -<!ENTITY subscription.lastDownload.checksumMismatch "Error, el checksum no coincide"> -<!ENTITY noFiltersInGroup.text "El grupo seleccionado está vacĂo"> -<!ENTITY subscription.actions.label "Acciones"> -<!ENTITY filter.selectAll.label "Seleccionar todos"> -<!ENTITY backupButton.label "&Copias de seguridad y restauraciĂłn"> -<!ENTITY restore.minVersion.warning "AtenciĂłn: el archivo se creĂł con una versiĂłn más reciente de Adblock Plus. DeberĂa actualizar a la Ăşltima versiĂłn de Adblock Plus antes de hacer una restauraciĂłn desde este archivo."> -<!ENTITY restore.error "No se pudieron procesar los datos del archivo. ÂżEs posible que no sea un archivo de copia de seguridad de Adblock Plus?"> -<!ENTITY sort.ascending.label "Ordenar &A > Z"> -<!ENTITY sort.label "&Listar"> -<!ENTITY subscription.source.label "Lista de filtros"> -<!ENTITY hitcount.column "&Contador"> -<!ENTITY noFilters.text "AĂşn no tiene filtros personalizados."> -<!ENTITY backup.custom.title "SĂłlo los filtros personalizados"> -<!ENTITY subscription.external.label "Actualizado por otra extensiĂłn"> -<!ENTITY subscription.delete.label "Eliminar"> -<!ENTITY noGroupSelected.text "Tiene que seleccionar un grupo de filtros para que se muestren sus filtros."> -<!ENTITY filter.cut.label "Cortar"> -<!ENTITY restore.default.label "Restaurar copia de seguridad de ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Descargando…"> -<!ENTITY subscriptions.tab.label "Suscripciones de filtros"> -<!ENTITY sort.descending.label "Ordenar &Z > A"> -<!ENTITY filters.remove.warning "ÂżEstá seguro de querer eliminar todos los filtros seleccionados?"> -<!ENTITY filter.delete.label "Eliminar"> -<!ENTITY addSubscriptionAdd.label "Añadir"> -<!ENTITY viewMenu.label "Ver"> -<!ENTITY subscription.lastDownload.unknown "N/D"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Activada"> -<!ENTITY noSubscriptions.text "AĂşn no ha añadido ninguna suscripciĂłn de filtros. Adblock Plus no bloquea nada si no tiene filtros, por favor use "Añadir suscripciĂłn de filtros" para añadir alguna."> -<!ENTITY subscription.update.label "Actualizar filtros"> -<!ENTITY dialog.title "Preferencias de filtros de Adblock Plus"> -<!ENTITY addFilter.label "A&ñadir filtro"> -<!ENTITY subscription.minVersion.warning "Esta suscripciĂłn de filtros necesita una versiĂłn más reciente de Adblock Plus, deberĂa actualizar a la Ăşltima versiĂłn de Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Error: direcciĂłn no válida"> -<!ENTITY backup.error "Se produjo un error al escribir filtros en el archivo. AsegĂşrese que el archivo no está protegido contra escritura o siendo utilizado por otra aplicaciĂłn."> -<!ENTITY filter.moveUp.label "Subir"> -<!ENTITY addGroup.label "Añadir &grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Mostrar/ocultar filtros"> -<!ENTITY acceptableAds2.label "&Permitir cierta publicidad no intrusiva"> -<!ENTITY addSubscriptionOther.label "Añadir otra suscripciĂłn"> -<!ENTITY close.label "Cerrar"> -<!ENTITY sort.none.label "&Sin ordenar"> -<!ENTITY filter.actions.label "Acciones de filtros"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Bajar"> -<!ENTITY filter.resetHitCounts.label "Reiniciar estadĂsticas de uso"> -<!ENTITY readMore.label "Leer más"> -<!ENTITY subscription.moveUp.label "Subir"> -<!ENTITY addSubscription.label "Añadir &suscripciĂłn de filtros"> -<!ENTITY subscription.homepage.label "Página de inicio"> -<!ENTITY backup.complete.title "Todos los filtros y suscripciones"> -<!ENTITY restore.own.label "Restaurar copia de seguridad propia"> -<!ENTITY restore.complete.warning "Todas sus preferencias de filtros se sustituirán por los contenidos del archivo seleccionado ÂżDesea continuar?"> -<!ENTITY filters.tab.label "Filtros personalizados"> -<!ENTITY backup.label "Crear nueva copia de seguridad"> -<!ENTITY find.label "&Buscar"> -<!ENTITY subscription.moveDown.label "Bajar"> -<!ENTITY subscription.lastDownload.connectionError "Error: error de descarga"> -<!ENTITY subscription.lastDownload.success "Correcto"> -<!ENTITY subscription.lastDownload.invalidData "Error: lista de filtros no válida"> -<!ENTITY filter.paste.label "Pegar"> -<!ENTITY subscription.disabledFilters.enable "Activar filtros desactivados"> -<!ENTITY lasthit.column "Ăšltimo &uso"> -<!ENTITY subscription.editTitle.label "Editar tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "En esta suscripciĂłn hay filtros desactivados."> -<!ENTITY filter.column "&Regla de filtrado"> -<!ENTITY subscription.lastDownload.label "Ăšltima descarga:"> -<!ENTITY viewList.label "Ver lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/firstRun.properties deleted file mode 100644 index 83ba3ff..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navegue con intimidad desactivando el rastreo - ocultando su rastro a las empresas de publicidad que espĂan cada uno de sus movimientos. -firstRun_toggle_off=DESACTIVAR -firstRun_feature_tracking=Desactivar el rastreo -firstRun_feature_malware=Bloquear malware -firstRun_title=Se ha instalado Adblock Plus -firstRun_toggle_on=ACTIVAR -firstRun_acceptableAdsExplanation=Nos gustarĂa fomentar el uso de una publicidad más directa y menos agresiva en los sitios web. Por eso hemos establecido unas <a>directrices estrictas</a> para identificar la publicidad aceptable, que se muestra en modo predeterminado. Si sigue queriendo bloquear toda la publicidad puede <a>desactivar</a> este modo en unos pocos segundos. -firstRun_contributor_credits=Colaboradores -firstRun_dataCorruptionWarning=ÂżSigue apareciendo esta página? <a>Pulse aquĂ</a> -firstRun_acceptableAdsHeadline=Ahora se bloqueará la publicidad molesta -firstRun_share=DĂgaselo a sus amigos -firstRun_share_headline=<a>AyĂşdenos</a> a conseguir una web mejor -firstRun_feature_social_description=Elimine automáticamente de su navegaciĂłn los botones de redes sociales, como los "Me gusta" de Facebook, incluidos en las paginas web y que rastrean sus hábitos. -firstRun_filterlistsReinitializedWarning=Parece que un problema provocĂł que se eliminasen todos los filtros y no se pudo restaurar una copia de seguridad. Por ello ha sido necesario reiniciar los filtros y predisposiciones de publicidad aceptable. Por favor, revise sus listas de filtros y predisposiciones de publicidad aceptable en <a>Opciones de Adblock Plus</a>. -firstRun_feature_malware_description=Navegue con más seguridad bloqueando dominios identificados como malware. -firstRun_features=Adblock Plus no sĂłlo bloquea anuncios, puede hacer más cosas -firstRun_donate=Donar -firstRun_donate_label=Apoye nuestro proyecto -firstRun_feature_social=Eliminar botones de redes sociales -firstRun_legacySafariWarning=Está utilizando una versiĂłn antigua de Safari no soportada por Adblock Plus, por lo que podrĂa funcionar incorrectamente o afectar a su experiencia de usuario en algunos sitios web. Le recomendamos actualizar a Safari 6.1.1 o posterior (para Mac OS X 10.8 Mountain Lion), o a Safari 7.0.1 o superior (para Mac OS X 10.9 Mavericks), o usar la Ăşltima versiĂłn de Mozilla Firefox, Google Chrome u Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/global.properties deleted file mode 100644 index f1f432e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=No hay elementos que se puedan bloquear en la página actual -action3_tooltip=Pulse para activar/desactivar Adblock Plus. -notification_antiadblock_title=ÂżOcultar mensajes dirigidos a usuarios de Adblock Plus? -type_label_script=script -filter_elemhide_nocriteria=No se especificĂł ningĂşn criterio para identificar el elemento a ocultar -blockingGroup_title=Reglas de bloqueo de publicidad -whitelisted_tooltip=Adblock Plus activado pero deshabilitado en la página actual. -type_label_stylesheet=hoja de estilo -blocked_count_tooltip=?1? de un total de ?2? -type_label_font=fuente -type_label_popup=ventana emergente -filter_regexp_tooltip=Este filtro es una expresiĂłn regular o demasiado corto para ser optimizado. Demasiados filtros de este tipo podrĂan hacer más lenta su navegaciĂłn. -action0_tooltip=Pulse para abrir el menĂş contextual, botĂłn central para activar/desactivar. -whitelisted_page=Se ha deshabilitado Adblock Plus para la página actual -remove_group_warning=ÂżEstá seguro de querer eliminar este grupo? -action1_tooltip=Pulse para abrir/cerrar elementos para bloquear, botĂłn central para activar/desactivar. -type_label_xmlhttprequest=solicitud XML -active_tooltip=Adblock Plus activado, ?1? suscripciones de filtros y ?2? filtros personalizados en uso. -type_label_document=documento -type_label_object_subrequest=solicitud de objeto -whitelistGroup_title=Reglas de excepciĂłn -disabled_tooltip=Adblock Plus está desactivado. -filter_elemhide_duplicate_id=SĂłlo puede especificarse una ID del elemento a ocultar -type_label_object=objeto -action2_tooltip=Pulse para abrir las preferencias, botĂłn central para activar/desactivar. -type_label_subdocument=marco -clearStats_warning=Se reiniciarán todas las estadĂsticas de uso de filtros y se desactivarán dichas estadĂsticas de uso de filtros. ÂżDesea continuar con la acciĂłn? -notification_antiadblock_message=Se sabe que este sitio ha mostrado en el pasado mensajes dirigidos a los usuarios de Adblock Plus. ÂżQuiere que Adblock Plus oculte esos mensajes? -blocked_count_addendum=(en lista blanca: ?1?, ocultos: ?2?) -subscription_invalid_location=La direcciĂłn de la lista de filtros no es una URL ni una ruta de archivo válida. -type_label_image=imagen -remove_subscription_warning=ÂżEstá seguro de querer eliminar esta suscripciĂłn? -type_label_other=otro -mobile_menu_enable=ABP: Activar -type_label_media=audio/vĂdeo -mobile_menu_disable_site=ABP: Desactivar en ?1? -elemhideGroup_title=Reglas de ocultaciĂłn de elementos -mobile_menu_enable_site=ABP: Activar en ?1? -type_label_elemhide=oculto -newGroup_title=Nuevo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/overlay.dtd deleted file mode 100644 index 7820c11..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "& SĂ"> -<!ENTITY notification.button.no "& No"> -<!ENTITY sync.label "Sincroni&zar predisposiciones de Adblock Plus"> -<!ENTITY whitelist.site.label "Desactivar en ?1?"> -<!ENTITY filters.label "&Preferencias de filtros"> -<!ENTITY disable.label "Desactivar globalmente"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "Pulse aquĂ para bloquear este objeto con Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus"> -<!ENTITY objecttabs.label "&Mostrar pestañas en Flash y Java"> -<!ENTITY sendReport.label "&Informar de un problema en esta página"> -<!ENTITY whitelist.page.label "Desactivar sĂłlo en esta página"> -<!ENTITY context.image.label "ABP - Bloquear imagen"> -<!ENTITY counthits.label "Contar &usos de filtros"> -<!ENTITY opensidebar.label "Abrir &ventana elementos bloqueables"> -<!ENTITY notification.button.close "&Cerrar"> -<!ENTITY contribute.label "Ayudar a Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "ABP - Bloquear marco"> -<!ENTITY blocked.tooltip "Elementos bloqueados en esta página:"> -<!ENTITY hideplaceholders.label "O&cultar posicionadores de elementos bloqueados"> -<!ENTITY showinstatusbar.label "Mostrar en la barra &de estado"> -<!ENTITY sidebar.title "Elementos bloqueables en la página actual"> -<!ENTITY options.label "&Opciones"> -<!ENTITY context.object.label "ABP - Bloquear objeto"> -<!ENTITY context.removeWhitelist.label "ABP - Reactivar en esta página"> -<!ENTITY filters.tooltip "Filtros más activos:"> -<!ENTITY closesidebar.label "Cerrar &ventana elementos bloqueables"> -<!ENTITY showintoolbar.label "Mostrar en la barra de &herramientas"> -<!ENTITY status.tooltip "Estado:"> -<!ENTITY context.media.label "ABP - Bloquear vĂdeo/audio"> -<!ENTITY subscription.update.label "Actualizar filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sendReport.dtd deleted file mode 100644 index 63a2bcc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Deshacer"> -<!ENTITY issues.disabledgroups.description "Están desactivadas las siguientes suscripciones de filtros/grupos de filtros, que podrĂan tener algĂşn tipo de efecto sobre la página:"> -<!ENTITY showData.label "Mostrar datos del informe"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus está bloqueando de&masiado"> -<!ENTITY issues.change.description "Se ha cambiado su configuraciĂłn. Por favor, recargue la página para probar los cambios y enviar un informe si el problema no se ha resuelto con las modificaciones."> -<!ENTITY email.label "Co&rreo electrĂłnico:"> -<!ENTITY issues.openPreferences.label "Abrir preferencias de filtros"> -<!ENTITY sendPage.confirmation "Su informe ha sido guardado. Puede acceder a Ă©l en la siguiente direcciĂłn:"> -<!ENTITY copyLink.label "&Copiar enlace del informe"> -<!ENTITY issues.nofilters.description "Adblock Plus no está bloqueando nada en esta página. El problema que observa muy probablemente no tenga nada que ver con Adblock Plus."> -<!ENTITY sendPage.knownIssue "El problema del que informĂł probablemente ya fuera conocido. Más informaciĂłn:"> -<!ENTITY typeSelector.other.description "Seleccione esta opciĂłn si cree que es un problema del mismo Adblock Plus, y no de sus filtros."> -<!ENTITY issues.disabledgroups.enable.label "Activar suscripciĂłn de filtros/grupo de filtros"> -<!ENTITY typeWarning.override.label "Lo &entiendo pero quiero enviar el informe de todas formas"> -<!ENTITY issues.disabled.enable.label "Activar Adblock Plus"> -<!ENTITY update.fixed.description "La actualizaciĂłn de sus suscripciones de filtros probablemente resolviĂł el problema del que estaba informando. Por favor, recargue la página y vuelva a probar. Pulse de nuevo Informar de un problema si no se ha solucionado."> -<!ENTITY anonymous.label "EnvĂo &anĂłnimo"> -<!ENTITY reloadButton.label "&Recargar página"> -<!ENTITY recentReports.clear.label "Eliminar &todos los informes"> -<!ENTITY typeSelector.description "Esta ventana le guiará en el proceso necesario para enviar un informe de fallo de Adblock Plus. Primero, seleccione el tipo de problema que ha detectado en esta página:"> -<!ENTITY screenshot.remove.label "&Eliminar datos sensibles"> -<!ENTITY issues.ownfilters.description "Algunos de los filtros aplicados en esta página son filtros personales de usuario. Por favor, desactive los filtros que podrĂan haber causado el problema:"> -<!ENTITY update.inProgress.description "Adblock Plus necesita actualizar sus suscripciones de filtros para asegurarse de que el problema aĂşn no se ha resuelto. Espere, por favor…"> -<!ENTITY sendPage.retry.label "Enviar de nuevo"> -<!ENTITY data.label "&Datos del informe:"> -<!ENTITY recentReports.label "Sus informes más recientes"> -<!ENTITY typeWarning.description "Usted ha indicado que quiere informar de un problema atribuible a Adblock Plus y no a los filtros utilizados. Tenga en cuenta que suele ser mejor informar de este tipo de problemas en el [link]foro de Adblock Plus[/link], y utilizar el generador de informes de problemas sĂłlo como añadido en una discusiĂłn ya existente, puesto que nadie se apercibirá de su informe a menos que aporte un enlace al mismo. Tras enviar el informe se le mostrará el enlace generado automáticamente."> -<!ENTITY issues.disabled.description "Adblock Plus está desactivado, no bloqueará nada en este estado."> -<!ENTITY attachExtensions.label "Adjuntar una lista de e&xtensiones activas al informe por si la causa del problema es un conflicto entre extensiones"> -<!ENTITY issues.nosubscriptions.add.label "Añadir suscripciĂłn de filtros"> -<!ENTITY issues.disabledfilters.enable.label "Activar filtro"> -<!ENTITY issues.override.label "La &configuraciĂłn es correcta, puede seguir con el informe"> -<!ENTITY issues.nosubscriptions.description "Aparentemente usted no está suscrito a ninguna de las listas de filtros ya existentes que eliminan automáticamente el contenido no deseado de los sitios web."> -<!ENTITY typeSelector.falsePositive.description "Seleccione esta opciĂłn si en la página falta contenido importante, se muestra incorrectamente o no funciona adecuadamente. Puede confirmar si el problema lo está provocando Adblock Plus desactivándolo temporalmente."> -<!ENTITY typeSelector.other.label "&Otros problemas"> -<!ENTITY emailComment.label "Le recomendamos que introduzca una direcciĂłn válida de correo electrĂłnico para que podamos contactar si surgen dudas sobre tu informe. TambiĂ©n nos permitirá reconocer tus contribuciones y darles mayor prioridad."> -<!ENTITY issues.whitelist.remove.label "Reactivar Adblock Plus en esta página"> -<!ENTITY outdatedSubscriptions.description "Las siguientes suscripciones de filtros no se han actualizado desde hace más de dos semanas. Por favor, actualĂcelas antes de enviar un informe de error, el problema podrĂa estar ya resuelto."> -<!ENTITY dataCollector.description "Por favor espere un momento mientras Adblock Plus reĂşne los datos necesarios."> -<!ENTITY sendButton.label "E&nviar informe"> -<!ENTITY comment.label "&Comentario (opcional):"> -<!ENTITY sendPage.errorMessage "Un intento de enviar el informe produjo un fallo con cĂłdigo de error "?1?". Por favor, asegĂşrese de que está conectado a Internet y vuelva a intentarlo. Si el problema persiste por favor pida ayuda en el [link]foro de Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Mostrar informes más recientes"> -<!ENTITY commentPage.heading "Comentario"> -<!ENTITY update.start.label "Iniciar actualizaciĂłn ahora"> -<!ENTITY issues.disabledfilters.description "Están desactivados los siguientes filtros, que podrĂan tener algĂşn tipo de efecto sobre la página:"> -<!ENTITY screenshot.description "La misma página puede tener diferente apariencia para diferentes personas. Puede resultar Ăştil para comprender el problema si adjunta una captura de pantalla a su informe. Puede eliminar las partes que contengan informaciĂłn sensible y marcar las zonas en las que se aprecia el problema. Para conseguirlo pulse el botĂłn correspondiente y seleccione con el ratĂłn un área de la imagen."> -<!ENTITY screenshot.attach.label "A&ñadir al informe una imagen de la página"> -<!ENTITY issues.whitelist.description "Adblock Plus está ahora mismo desactivado en la página a la que se refiere el informe. Por favor, reactĂvelo y recargue la página antes de enviar el informe para ayudar en la investigaciĂłn del problema."> -<!ENTITY typeSelector.falseNegative.label "Adblock Pl&us no bloquea un anuncio"> -<!ENTITY typeSelector.heading "Elegir tipo error"> -<!ENTITY anonymity.warning "No podremos comunicar con usted y es probable que le demos una prioridad inferior a su informe."> -<!ENTITY wizard.title "Creador de informes de errores"> -<!ENTITY issues.ownfilters.disable.label "Desactivar filtro"> -<!ENTITY commentPage.description "El campo de texto de la parte inferior le permite introducir un comentario para ayudarnos comprender el problema. Es algo opcional, pero recomendable si el problema no resulta evidente. Puede revisar los datos del informe antes de que se envĂen."> -<!ENTITY comment.lengthWarning "La longitud se su comentario supera los 1.000 caracteres. SĂłlo se enviarán los 1.000 primeros."> -<!ENTITY typeSelector.falseNegative.description "Seleccione esta opciĂłn si se muestra un anuncio a pesar de que Adblock Plus está activado."> -<!ENTITY sendPage.waitMessage "Por favor, espere mientras Adblock Plus envĂa su informe."> -<!ENTITY dataCollector.heading "Bienvenido al creador de informes de errores"> -<!ENTITY screenshot.heading "Adjuntar vista"> -<!ENTITY sendPage.heading "Enviar informe"> -<!ENTITY issues.subscriptionCount.description "Parece que se ha suscrito a demasiadas suscripciones de filtros. Eso no es recomendable porque aumenta mucho la probabilidad de que aparezcan problemas y hace que no se pueda procesar su informe de error porque no puede saberse quĂ© autor de suscripciĂłn de filtros tiene que actuar. Por favor, borre todas las suscripciones que no sean realmente necesarias y compruebe si el problema persiste."> -<!ENTITY screenshot.mark.label "&Marcar el problema"> -<!ENTITY privacyPolicy.label "PolĂtica de privacidad"> -<!ENTITY issues.description "Adblock Plus ha detectado problemas con su configuraciĂłn que podrĂan ser la causa del fallo o que están dificultando la investigaciĂłn del mismo."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sidebar.dtd deleted file mode 100644 index ef28209..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Resaltar los bordes del elemento"> -<!ENTITY address.label "DirecciĂłn"> -<!ENTITY context.open.label "Abrir en nueva pestaña"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Procedencia del filtro:"> -<!ENTITY noitems.label "NingĂşn elemento bloqueable"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamaño:"> -<!ENTITY reattach.label "Unir"> -<!ENTITY search.label "&Buscar:"> -<!ENTITY docDomain.thirdParty "(terceros)"> -<!ENTITY filterSource.label "Origen filtro"> -<!ENTITY tooltip.docDomain.label "Origen del documento:"> -<!ENTITY context.copy.label "Copiar la direcciĂłn del elemento"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Desactivar filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar filtro"> -<!ENTITY context.block.label "Bloquear este elemento"> -<!ENTITY context.enablefilter.label "Reactivar filtro ?1?"> -<!ENTITY detach.label "Separar"> -<!ENTITY whitelisted.label "Página de lista blanca"> -<!ENTITY context.disablefilteronsite.label "Desactivar este filtro en ?1?"> -<!ENTITY detached.title "Adblock Plus: Elementos bloqueables (separado)"> -<!ENTITY docDomain.firstParty "(dominio)"> -<!ENTITY tooltip.type.whitelisted "(en lista blanca)"> -<!ENTITY tooltip.filter.label "Filtro en efecto:"> -<!ENTITY tooltip.filter.disabled "(desactivado)"> -<!ENTITY context.editfilter.label "Editar el filtro en uso"> -<!ENTITY tooltip.type.blocked "(bloqueado)"> -<!ENTITY size.label "Tamaño"> -<!ENTITY context.whitelist.label "Añadir regla de excepciĂłn para el elemento"> -<!ENTITY context.selectAll.label "Seleccionar todo"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Origen documento"> -<!ENTITY tooltip.address.label "DirecciĂłn:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/subscriptionSelection.dtd deleted file mode 100644 index 2b0a803..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-ES/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "A&ñadir tambiĂ©n la suscripciĂłn "?1?"."> -<!ENTITY list.download.failed "Error al recuperar la lista de suscripciones."> -<!ENTITY list.download.retry "Intentar de nuevo"> -<!ENTITY title.label "&TĂtulo de la suscripciĂłn:"> -<!ENTITY list.download.website "Ver página web"> -<!ENTITY supplementMessage "Esta suscripciĂłn de filtros está pensada para usarse junto a la suscripciĂłn "?1?" que aĂşn no ha instalado."> -<!ENTITY viewList.label "Ver filtros"> -<!ENTITY visitHomepage.label "Visitar su página web"> -<!ENTITY addSubscription.label "Añadir suscripciĂłn"> -<!ENTITY dialog.title "Añadir suscripciĂłn de filtros para Adblock Plus"> -<!ENTITY location.label "&UbicaciĂłn de la lista de filtros:"> -<!ENTITY fromWeb.description "Por favor, confirme que quiere añadir está suscripciĂłn de filtros. Puede cambiar su tĂtulo o ubicaciĂłn antes de añadirla."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/composer.dtd deleted file mode 100644 index 00bc242..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "ir al &final de la direcciĂłn"> -<!ENTITY domainRestriction.label "&Restringir al dominio:"> -<!ENTITY collapse.default.no.label "Usar por defecto (no)"> -<!ENTITY firstParty.label "So&lo propietarios"> -<!ENTITY preferences.label "&Mostrar filtros existentes..."> -<!ENTITY pattern.label "Buscar un patrĂłn"> -<!ENTITY thirdParty.label "&Solo terceros"> -<!ENTITY filter.label "&Nuevo filtro:"> -<!ENTITY collapse.label "C&olapso bloqueado"> -<!ENTITY match.warning "El patrĂłn que ha ingresado ya no concuerda con la direcciĂłn a ser Bloqueada/Permitida y no tendrá efecto en la misma."> -<!ENTITY anchor.start.label "&ir al principio de la direcciĂłn"> -<!ENTITY matchCase.label "&Coincidir Mayus/Minus"> -<!ENTITY custom.pattern.label "&Personalizar:"> -<!ENTITY unselectAllTypes.label "Seleccionar ninguno"> -<!ENTITY type.whitelist.label "Regla de e&xcepciĂłn"> -<!ENTITY regexp.warning "El patrĂłn que ha escrito se interpretará como una expresiĂłn regular, la cual no puede ser eficientemente procesada por Adblock Plus y podrĂa ralentizar su experiencia al navegar. Si no tenĂa la intenciĂłn de usar una expresiĂłn regular, agregue un asterisco (*) al final del patrĂłn."> -<!ENTITY dialog.title "Agregar una regla de filtro de Adblock Plus"> -<!ENTITY basic.label "Vista básica"> -<!ENTITY type.filter.label "Filtro de &bloqueo"> -<!ENTITY types.label "Se aplica a tipos:"> -<!ENTITY shortpattern.warning "El patrĂłn que ha ingresado es muy corto para ser optimizado y podrĂa ralentizar su experiencia al navegar. Es recomendable que elija una cadena más larga para este filtro para permitir a Adblock Plus procesar el filtro con mayor eficacia."> -<!ENTITY collapse.yes.label "Si"> -<!ENTITY anchors.label "Solo aceptar patrones:"> -<!ENTITY collapse.default.yes.label "Usar por defecto (si)"> -<!ENTITY domainRestriction.help "Use esta opciĂłn para especificar uno o más dominios separados por una barra (|). El filtro solo se aplicará en dominio(s) seleccionados. Una tilde (~) antes del nombre del dominio indica que el filtro no se aplicará en ese dominio."> -<!ENTITY accept.label "Agregar filtro"> -<!ENTITY options.label "Opciones"> -<!ENTITY disabled.warning "Adblock Plus se encuentra desactivado. Puedes continuar agregando filtros pero no serán aplicados hasta que [link]habilites Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "&ir al principio del nombre de dominio"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Seleccionar todos"> -<!ENTITY advanced.label "Vista Avanzada"> -<!ENTITY pattern.explanation "El patrĂłn puede ser cualquier parte de una direcciĂłn; asteriscos(*) actuan como comodines. El filtro solo se aplicara a direcciones que igualen el patrĂłn proporcionado."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/filters.dtd deleted file mode 100644 index 5e9cc80..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Todos tus filtros personalizados serán reemplazados con el contenido del archivo seleccionado. Deseas continuar con el proceso?"> -<!ENTITY slow.column "Filtros lentos"> -<!ENTITY enabled.column "Habilitado"> -<!ENTITY subscription.lastDownload.checksumMismatch "FallĂł, comprobaciĂłn(checksum) no concuerda"> -<!ENTITY noFiltersInGroup.text "El grupo seleccionado esta vacio"> -<!ENTITY subscription.actions.label "Comportamiento/Acciones"> -<!ENTITY filter.selectAll.label "Seleccionar Todo"> -<!ENTITY backupButton.label "&Salvar/Copia de Seguridad y Restaurar"> -<!ENTITY restore.minVersion.warning "Advertencia: el archivo ha sido creado con una versiĂłn mas actual de Adblock Plus. Deberias actualizar Adblock Plus a la versiĂłn mas reciente antes de restaurar desde este archivo."> -<!ENTITY restore.error "Los datos de archivo no se pudierĂłn procesar, tal vez esta no sea una copia de seguridad de Adblock Plus?"> -<!ENTITY sort.ascending.label "Ordern&ar de la A > Z"> -<!ENTITY sort.label "Ordenar &por"> -<!ENTITY subscription.source.label "Lista de filtros"> -<!ENTITY hitcount.column "&Contador"> -<!ENTITY noFilters.text "Usted no tiene ningĂşn filtro personalizado aĂşn."> -<!ENTITY backup.custom.title "Solo filtros personalizados"> -<!ENTITY subscription.external.label "Actualizado por otro complemento"> -<!ENTITY subscription.delete.label "Eliminar"> -<!ENTITY noGroupSelected.text "Necesitas seleccionar un grupo de filtros antes para que su contenido de filtros se puedan mostrar."> -<!ENTITY filter.cut.label "Cortar"> -<!ENTITY restore.default.label "Restaurar copia de seguridad desde ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Descargando..."> -<!ENTITY subscriptions.tab.label "Suscripciones de Filtro"> -<!ENTITY sort.descending.label "Ordernar de la &Z > A"> -<!ENTITY filters.remove.warning "Realmente deseas quitar todos los filtros seleccionados?"> -<!ENTITY filter.delete.label "Eliminar"> -<!ENTITY addSubscriptionAdd.label "Agregar"> -<!ENTITY viewMenu.label "Vista"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Activado"> -<!ENTITY noSubscriptions.text "Usted no ha agregado ninguna subscripciĂłn de filtros aun. Adblock Plus no bloqueará - nada sin filtros, por favor use "Agregar subscripciĂłn de filtros" para - agregar algunos."> -<!ENTITY subscription.update.label "Actualizar filtros"> -<!ENTITY dialog.title "Preferencias de Filtro de Adblock Plus"> -<!ENTITY addFilter.label "Agregar &filtro"> -<!ENTITY subscription.minVersion.warning "Esta suscripciĂłn de filtro necesita una versiĂłn actualizada de Adblock Plus, debes actualizar tu versiĂłn de Adblock Plus a la más reciente."> -<!ENTITY subscription.lastDownload.invalidURL "FallĂł, no es una direcciĂłn valida"> -<!ENTITY backup.error "Hubo un error escribiendo los filtros en el archivo. Asegurese que el archivo no esta protegido o que no se encuentre en uso por otra aplicaciĂłn."> -<!ENTITY filter.moveUp.label "Mover arriba"> -<!ENTITY addGroup.label "Agregar grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Mostrar/Ocultar filtros"> -<!ENTITY acceptableAds2.label "Permitir algo de publicidad no intrusiva"> -<!ENTITY addSubscriptionOther.label "Agregar una suscripciĂłn diferente"> -<!ENTITY close.label "Cerrar"> -<!ENTITY sort.none.label "&Sin clasificar"> -<!ENTITY filter.actions.label "Comportamiento/AcciĂłn de filtros"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Mover abajo"> -<!ENTITY filter.resetHitCounts.label "Reiniciar estadĂsticas"> -<!ENTITY readMore.label "Leer más"> -<!ENTITY subscription.moveUp.label "Mover arriba"> -<!ENTITY addSubscription.label "&Agregar suscripciĂłn de filtro"> -<!ENTITY subscription.homepage.label "Página de inicio"> -<!ENTITY backup.complete.title "Todos los filtros y suscripciones"> -<!ENTITY restore.own.label "Restaurar copia de seguridad propia"> -<!ENTITY restore.complete.warning "Todas tus preferencias de filtros se reemplazarán con el contenido del archivo seleccionado. Deseas continuar con el proceso?"> -<!ENTITY filters.tab.label "Filtros personalizados"> -<!ENTITY backup.label "Crear nueva copia de seguridad"> -<!ENTITY find.label "&Buscar"> -<!ENTITY subscription.moveDown.label "Mover abajo"> -<!ENTITY subscription.lastDownload.connectionError "FallĂł, La descarga ha fracasado"> -<!ENTITY subscription.lastDownload.success "Éxito"> -<!ENTITY subscription.lastDownload.invalidData "FallĂł, no es una lista de filtros válida"> -<!ENTITY filter.paste.label "Pegar"> -<!ENTITY subscription.disabledFilters.enable "Activar filtros desactivados"> -<!ENTITY lasthit.column "&Ultima visita"> -<!ENTITY subscription.editTitle.label "Editar tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "Algunos filtros en esta suscripciĂłn se encuentran desactivados."> -<!ENTITY filter.column "Regla de &filtro"> -<!ENTITY subscription.lastDownload.label "Ultima descarga:"> -<!ENTITY viewList.label "Ver lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/firstRun.properties deleted file mode 100644 index bc70db1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navega de forma privada desactivando el rastreo, ocultando asĂ tu actividad de compañĂas de publicidad que te rastrearĂan en cada momento. -firstRun_toggle_off=NO -firstRun_feature_tracking=Desactivar el Rastreo -firstRun_feature_malware=Bloquear Malware -firstRun_title=Adblock Plus ha sido instalado -firstRun_toggle_on=SĂŤ -firstRun_acceptableAdsExplanation=Nos gustarĂa fomentar en los sitios web, el uso de publicidad discreta y directa. Es por eso que hemos establecido <a>lineamientos estrictos</a> para identificar anuncios aceptables, que son mostrados bajo las configuraciones predeterminadas. Si aun asĂ deseas bloquear todos los anuncios, puedes <a>desactivar</a> esta opciĂłn en pocos segundos. -firstRun_contributor_credits=Colaboradores -firstRun_dataCorruptionWarning=ÂżSe sigue mostrando esta página? <a>¡Haz clic acá!</a> -firstRun_acceptableAdsHeadline=Anuncios molestos serán bloqueados -firstRun_share=CuĂ©ntale a tus amigos -firstRun_share_headline=<a>AyĂşdanos</a> haciendo el internet un mejor lugar -firstRun_feature_social_description=LibĂ©rate automáticamente de los botones de redes sociales, como el "Me gusta" de Facebook, el cual aparece en páginas web y rastrea tu actividad en lĂnea. -firstRun_filterlistsReinitializedWarning=Parece que un problema provocĂł que todos los filtros fueron removidos y fuimos incapaces de restaurar una copia de seguridad. Por lo tanto tuvimos que restaurar tus filtros y configuraciones de anuncios aceptables. Por favor revisa tu lista de filtros y configuraciĂłn de anuncios aceptables en las <a>Opciones de Adblock Plus</a>. -firstRun_feature_malware_description=Haz tu navegaciĂłn más segura bloqueando dominios maliciosos conocidos. -firstRun_features=Adblock Plus puede hacer más que bloquear anuncios -firstRun_donate=donar -firstRun_donate_label=Apoya nuestro proyecto -firstRun_feature_social=Quitar Botones de Redes Sociales -firstRun_legacySafariWarning=Está utilizando una versiĂłn antigua de Safari no soportada por Adblock Plus, por lo que podrĂa funcionar incorrectamente o afectar a su experiencia de usuario en algunos sitios web. Le recomendamos actualizar a Safari 6.1.1 o superior (para Mac OS X 10.8 Mountain Lion), o a Safari 7.0.1 o superior (para Mac OS X 10.9 Mavericks), o usar la Ăşltima versiĂłn de Mozilla Firefox, Google Chrome u Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/global.properties deleted file mode 100644 index fe253c1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=No hay elementos bloqueables en la página actual -action3_tooltip=Click para activar/desactivar Adblock Plus. -notification_antiadblock_title=ÂżOcultar mensajes dirigidos? -type_label_script=script -filter_elemhide_nocriteria=No hay criterios especĂficos para reconocer el elemento que se oculta -blockingGroup_title=Reglas de Bloqueo de Anuncios -whitelisted_tooltip=Adblock Plus esta desactivado en la página actual. -type_label_stylesheet=estilo de hoja -blocked_count_tooltip=?1? del total de ?2? -type_label_font=fuente -type_label_popup=ventana emergente -filter_regexp_tooltip=Este filtro o bien es una expresiĂłn regular o es demasiado corto para ser optimizado. Demasiados de estos filtros podrian relentizar su experiencia al navegar. -action0_tooltip=Haga clic para abrir el menĂş contextual, click medio para activar/desactivar. -whitelisted_page=Adblock Plus ha sido desactivado para la página actual -remove_group_warning=ÂżRealmente desea eliminar este grupo? -action1_tooltip=Click para abrir/cerrar elementos bloqueables, click medio para activar/desactivar. -type_label_xmlhttprequest=Solicitud XML -active_tooltip=Adblock Plus esta activado, ?1? suscripciĂłn(es) de filtro(s) y ?2? filtro(s) personalizado(s) en uso. -type_label_document=documento -type_label_object_subrequest=Solicitud de objeto -whitelistGroup_title=Reglas de excepciĂłn -disabled_tooltip=Adblock Plus está desactivado. -filter_elemhide_duplicate_id=Solo una ID de el elemento oculto puede ser especificado -type_label_object=objeto -action2_tooltip=Click para abrir las Preferencias, click medio para activar/desactivar. -type_label_subdocument=marco -clearStats_warning=Esto reiniciará todas las estadĂsticas de filtros afectados y desactivará el conteo de accesos de los filtros. ÂżDeseas proceder? -notification_antiadblock_message=Es sabido que este sitio muestra mensajes dirigidos a los usuarios de Adblock Plus. ÂżQuieres que Adblock plus oculte estos mensajes? -blocked_count_addendum=(tambien permitidos: ?1?, ocultos: ?2?) -subscription_invalid_location=La ubicaciĂłn de la lista de filtros no es ni una direcciĂłn URL válida, ni un nombre de archivo válido. -type_label_image=imagen -remove_subscription_warning=ÂżRealmente deseas quitar esta subscripciĂłn? -type_label_other=otro -mobile_menu_enable=ABP: activar -type_label_media=sonido/video -mobile_menu_disable_site=ÂżABP: Deshabilitar en ?1? -elemhideGroup_title=Reglas para Ocultar Elementos -mobile_menu_enable_site=ÂżABP: Habilitar en ?1? -type_label_elemhide=oculto -newGroup_title=Nuevo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/overlay.dtd deleted file mode 100644 index ffa1dc3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&SĂ"> -<!ENTITY notification.button.no "&No"> -<!ENTITY sync.label "&Sincronizar configuraciĂłn de Adblock Plus"> -<!ENTITY whitelist.site.label "Desactivar en ?1?"> -<!ENTITY filters.label "&Preferencias de filtro"> -<!ENTITY disable.label "Desactivado en cualquier lugar"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "Click aquĂ para bloquear este objeto con Adblock Plus"> -<!ENTITY menuitem.label "Pr&eferencias de Adblock Plus"> -<!ENTITY objecttabs.label "Mostrar pestañas sobre Flash y Java"> -<!ENTITY sendReport.label "Reportar problema en esta página"> -<!ENTITY whitelist.page.label "Deshabilitar solo en esta página"> -<!ENTITY context.image.label "Adblock Plus: Bloquear imagen"> -<!ENTITY counthits.label "Contar accesos de &filtro"> -<!ENTITY opensidebar.label "Abrir elementos bloqueables"> -<!ENTITY notification.button.close "&Cerrar"> -<!ENTITY contribute.label "Desactivar con Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock plus"> -<!ENTITY context.frame.label "Adblock Plus: Bloquear marco"> -<!ENTITY blocked.tooltip "Elementos bloqueados en esta pagina:"> -<!ENTITY hideplaceholders.label "&Ocultar marcadores de posiciĂłn de elementos bloqueados"> -<!ENTITY showinstatusbar.label "&Mostrar en la barra de estado"> -<!ENTITY sidebar.title "Elementos bloqueables en la página actual"> -<!ENTITY options.label "&Opciones"> -<!ENTITY context.object.label "Adblock Plus: Bloquear objeto"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Re-habilitar en esta página"> -<!ENTITY filters.tooltip "Filtros mas activos:"> -<!ENTITY closesidebar.label "Cerrar elementos bloqueables"> -<!ENTITY showintoolbar.label "Mostrar barra de &complementos"> -<!ENTITY status.tooltip "Estado:"> -<!ENTITY context.media.label "Adblock Plus: Bloquear sonido/video"> -<!ENTITY subscription.update.label "Actualizar filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sendReport.dtd deleted file mode 100644 index eb5b334..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Deshacer"> -<!ENTITY issues.disabledgroups.description "La siguiente subscripcion/Grupo de filtros se encuentra desactivada, aun asi pueden tener efectos en esta página:"> -<!ENTITY showData.label "Mostrar datos del reporte"> -<!ENTITY typeSelector.falsePositive.label "&Adblock Plus está bloqueando demasiado"> -<!ENTITY issues.change.description "Su configuraciĂłn ha sido cambiada. Por favor recargue la página para probar los cambios y presentar un reporte si el problema no ha sido resuelto por las alteraciones."> -<!ENTITY email.label "Co&rreo electrĂłnico:"> -<!ENTITY issues.openPreferences.label "Abrir preferencias de filtro"> -<!ENTITY sendPage.confirmation "Su reporte ha sido salvado. Puede acceder al mismo en la siguiente direccion:"> -<!ENTITY copyLink.label "&Copiar direcciĂłn del reporte"> -<!ENTITY issues.nofilters.description "Adblock Plus no está bloqueando nada en la página actual. El problema que esta observando es probable que no se encuentre relacionado con Adblock Plus."> -<!ENTITY sendPage.knownIssue "El problema que ha reportado probablemente ya sea conocido. Mas informaciĂłn:"> -<!ENTITY typeSelector.other.description "Seleccione esta opciĂłn si usted sospecha un problema con Adblock Plus especĂficamente en lugar de sus filtros."> -<!ENTITY issues.disabledgroups.enable.label "Activar subscripciĂłn/Grupo de filtros"> -<!ENTITY typeWarning.override.label "&Entiendo y deseo presentar el reporte de todos modos"> -<!ENTITY issues.disabled.enable.label "Activar Adblock Plus"> -<!ENTITY update.fixed.description "Las actualizaciones de sus suscripciones de filtro probablemente resolvieron el problema sobre el que está usted informando. Por favor vuelva a cargar la página y vuelva a intentarlo. Informe nuevamente si el problema persiste."> -<!ENTITY anonymous.label "EnvĂo &AnĂłnimo"> -<!ENTITY reloadButton.label "&Recargar página"> -<!ENTITY recentReports.clear.label "&Quitar todos los reportes"> -<!ENTITY typeSelector.description "Esta ventana lo guiará por pasos, necesarios para el envio de un reporte de problemas de Adblock Plus. Primero, por favor seleccione el tipo de problema que esta experimentando en esta página:"> -<!ENTITY screenshot.remove.label "Q&uitar datos sensitivos/privados"> -<!ENTITY issues.ownfilters.description "Alguno de los filtros aplicados en esta página se encuentran definidos por el usuarios. Por favor desactive los filtros que pueden causar el problema:"> -<!ENTITY update.inProgress.description "AdBlock Plus necesita actualizar sus suscripciones de filtro para asegurarse de que el problema no ha sido resuelto ya. Por favor, espere..."> -<!ENTITY sendPage.retry.label "Enviar otra vez"> -<!ENTITY data.label "Da&tos de Reporte"> -<!ENTITY recentReports.label "Tus reportes recientemente enviados"> -<!ENTITY typeWarning.description "Ha indicado que desea reportar un problema general con Adblock Plus en lugar de un problema con los filtros. Por favor tenga en cuenta que estos problemas son mejor reportados en el [link]Foro de Adblock Plus[/link]. Solo deberia usar el reportero de problemas para complementar una discuciĂłn existente, ya que nadie se percatará de su informe a menos que se les proporcione el enlace a la misma. El enlace generado automáticamente sera proporcionado despuĂ©s de presentar el reporte respectivo."> -<!ENTITY issues.disabled.description "Adblock Plus esta desactivado, no bloqueará nada en su estado actual."> -<!ENTITY attachExtensions.label "A&djuntar una lista de extensiones activas a el repote en caso de que un conflicto de complementos sea la causa del problema"> -<!ENTITY issues.nosubscriptions.add.label "Agregar filtro de suscripciĂłn"> -<!ENTITY issues.disabledfilters.enable.label "Activar filtro"> -<!ENTITY issues.override.label "&La configuraciĂłn es correcta, continue con el reporte"> -<!ENTITY issues.nosubscriptions.description "Usted no parece estar suscrito a ninguna lista de filtro pre-desarrollado que automáticamente quita contenido no deseado de los sitios web."> -<!ENTITY typeSelector.falsePositive.description "Seleccione esta opciĂłn si la página carece de contenido importante, muestra incorrectamente o falla al funcionar como debe. Puede determinar si Adblock Plus es el causante del problema desactivándolo temporalmente."> -<!ENTITY typeSelector.other.label "&Otro problema"> -<!ENTITY emailComment.label "Te sugerimos que ingreses una direcciĂłn válida de correo electrĂłnico para que podamos contactarte si hay preguntas sobre tu informe. TambiĂ©n nos permitirá reconocer tus contribuciones y darles mayor prioridad."> -<!ENTITY issues.whitelist.remove.label "Re-activar Adblock Plus en esta página"> -<!ENTITY outdatedSubscriptions.description "Las siguientes suscripciones de filtro no han sido actualizadas desde hace al menos dos semanas. Por favor, actualĂcelas antes de enviar un informe de error, el problema quizá estĂ© ya resuelto."> -<!ENTITY dataCollector.description "Por favor espere un momento mientras Adblock Plus reĂşne los datos necesarios."> -<!ENTITY sendButton.label "En&viar reporte"> -<!ENTITY comment.label "Come&ntario (opcional):"> -<!ENTITY sendPage.errorMessage "Un intento de enviar el reporte ha fallado con el cĂłdigo de error "?1?". Por favor asegĂşrese de que se encuentra conectado a internet y vuelva a intentarlo. Si el problema persiste por favor solicite asistencia en el [link]Foro de Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Mostrar reportes enviados recientemente"> -<!ENTITY commentPage.heading "Comentar"> -<!ENTITY update.start.label "Iniciar actualizaciĂłn ahora"> -<!ENTITY issues.disabledfilters.description "Los siguientes filtros están desactivados, aun asĂ pueden tener efectos en esta página:"> -<!ENTITY screenshot.description "La misma página puede parecer diferente para cada persona. Puede ayudarnos a entender el problema si adjunta una captura de pantalla a su reporte. Puede quitar partes que contengan informacion sensitiva/privada asi mismo marcar áreas donde el problema se note. Para hacerlo click en el botĂłn correspondiente y seleccione una parte de la imagen con su cursor/puntero."> -<!ENTITY screenshot.attach.label "Adjuntar una &imagen de la página al reporte"> -<!ENTITY issues.whitelist.description "Adblock Plus se encuentra desactivado en la página que esta reportando. Por favor vuelva a activarlo y recargue la página antes de presentar el informe para ayudar a la investigaciĂłn de este problema."> -<!ENTITY typeSelector.falseNegative.label "Ad&block Plus no bloquea una publicidad"> -<!ENTITY typeSelector.heading "Elija tipo de problema"> -<!ENTITY anonymity.warning "No podremos comunicarnos contigo y es probable que le demos una prioridad inferior a tu informe."> -<!ENTITY wizard.title "Reportero de problemas"> -<!ENTITY issues.ownfilters.disable.label "Desactivar filtro"> -<!ENTITY commentPage.description "El campo de texto a continuaciĂłn le permite escribir un comentario para ayudarnos a entender el problema. Este paso es opcional pero recomendado si el problema no es obvio. Puede tambien revisar el reporte de datos antes de que sea enviado."> -<!ENTITY comment.lengthWarning "El tamaño de su comentario excede los 1000 caracteres. Solo los primeros 1000 caracteres seran enviados."> -<!ENTITY typeSelector.falseNegative.description "Seleccione esta opciĂłn si una publicidad continua mostrándose a pesar que Adblock Plus se encuentra activado."> -<!ENTITY sendPage.waitMessage "Por favor espere mientras Adblock Plus envĂa su reporte."> -<!ENTITY dataCollector.heading "Bienvenido al reportero de problemas"> -<!ENTITY screenshot.heading "Adjuntar captura de pantalla"> -<!ENTITY sendPage.heading "Enviar reporte"> -<!ENTITY issues.subscriptionCount.description "Parece que usted se encuentra inscrito en demasiadas suscripciones de filtro. Esta configuraciĂłn no se recomienda porque causará una verosimilitud con problemas mucho mas grandes. Tampoco podemos aceptar su reporte de problemas porque en el mismo no se encuentra claro quĂ© autor de suscripciĂłn de filtro necesita tomar acciones. Por favor quite todo menos las suscripciones realmente necesarias y compruebe si el problema aun persiste."> -<!ENTITY screenshot.mark.label "&Marcar el problema"> -<!ENTITY privacyPolicy.label "PolĂtica de Privacidad"> -<!ENTITY issues.description "Adblock Plus ha detectado problemas con su configuraciĂłn que puede ser la causa de este problema o que podria dificultar la investigaciĂłn del problema."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sidebar.dtd deleted file mode 100644 index a7eb86f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Elementos flash en bordes"> -<!ENTITY address.label "DirecciĂłn"> -<!ENTITY context.open.label "Abrir en Nueva Pestaña"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Fuente del filtro:"> -<!ENTITY noitems.label "No hay elementos bloqueables"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamaño:"> -<!ENTITY reattach.label "Unir"> -<!ENTITY search.label "&Buscar:"> -<!ENTITY docDomain.thirdParty "(terceros)"> -<!ENTITY filterSource.label "Fuente de filtro"> -<!ENTITY tooltip.docDomain.label "Fuente del Documento:"> -<!ENTITY context.copy.label "Copiar direcciĂłn de elementos"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Desactivar filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar filtro"> -<!ENTITY context.block.label "Bloquear este elemento"> -<!ENTITY context.enablefilter.label "Re-Habilitar filtro ?1?"> -<!ENTITY detach.label "Separar"> -<!ENTITY whitelisted.label "Página de lista de Permitidos"> -<!ENTITY context.disablefilteronsite.label "Desactivar este filtro en ?1?"> -<!ENTITY detached.title "Adblock Plus: Elementos bloqueables (Separados)"> -<!ENTITY docDomain.firstParty "(propietario)"> -<!ENTITY tooltip.type.whitelisted "(permitido)"> -<!ENTITY tooltip.filter.label "Filtro en uso:"> -<!ENTITY tooltip.filter.disabled "(desactivado)"> -<!ENTITY context.editfilter.label "Editar filtro en uso"> -<!ENTITY tooltip.type.blocked "(bloqueado)"> -<!ENTITY size.label "Tamaño"> -<!ENTITY context.whitelist.label "Agregar una regla de excepciĂłn para el elemento"> -<!ENTITY context.selectAll.label "Seleccionar todo"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Fuente del documento"> -<!ENTITY tooltip.address.label "DirecciĂłn:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/subscriptionSelection.dtd deleted file mode 100644 index c43540e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/es-MX/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "A&gregar suscripciĂłn de filtro "?1?" tambiĂ©n"> -<!ENTITY list.download.failed "Adblock Plus ha fallado al recuperar la lista de subscripciones."> -<!ENTITY list.download.retry "Intente de nuevo"> -<!ENTITY title.label "&Titulo de la SuscripciĂłn:"> -<!ENTITY list.download.website "Ver sitio web"> -<!ENTITY supplementMessage "Esta suscripciĂłn de filtros está orientada a ser usada con la subscripciĂłn de filtro "?1?" la cual aun no está usando."> -<!ENTITY viewList.label "Ver filtros"> -<!ENTITY visitHomepage.label "Visitar pagina principal"> -<!ENTITY addSubscription.label "Agregar subscripciĂłn"> -<!ENTITY dialog.title "Agregar subscripciĂłn de filtro de Adblock Plus"> -<!ENTITY location.label "&UbicaciĂłn de la lista de filtros:"> -<!ENTITY fromWeb.description "Por favor confirme que desea agregar esta subscripciĂłn de filtro. Usted puede cambiar el titulo de la subscripciĂłn o la localizaciĂłn antes de agregarla."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/composer.dtd deleted file mode 100644 index 5a0ceac..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "aadressi &lõpus"> -<!ENTITY domainRestriction.label "Kehtib ainult domeenis:"> -<!ENTITY collapse.default.no.label "Kasuta vaikeväärtust (ei)"> -<!ENTITY firstParty.label "Ainult &põhilehel"> -<!ENTITY preferences.label "Näita olemasolevaid filtreid..."> -<!ENTITY pattern.label "Otsitav avaldis"> -<!ENTITY thirdParty.label "Ainult &väljaspoolsed"> -<!ENTITY filter.label "Uus filter:"> -<!ENTITY collapse.label "A&henda blokeeritavad:"> -<!ENTITY match.warning "Sisestatud avaldis ei leia aadressist ĂĽhtegi vastet ja seega ei oma sellele mingit mõju."> -<!ENTITY anchor.start.label "aadressi alguses"> -<!ENTITY matchCase.label "&Tõstutundlik"> -<!ENTITY custom.pattern.label "L&oo ise:"> -<!ENTITY unselectAllTypes.label "TĂĽhista valik"> -<!ENTITY type.whitelist.label "&Erandi reegel"> -<!ENTITY regexp.warning "Sisestatud avaldis loetakse regulaaravaldiseks, mida Adblock Plus ei suuda efektiivselt töödelda ja mis võib muuta interneti lehitsemise aeglasemaks. Kui sa tegelikult ei soovinud luua regulaaravaldist, siis lisa selle lõppu tärn (*)."> -<!ENTITY dialog.title "Lisa Adblock Plusi filtreerimisreegel"> -<!ENTITY basic.label "Tavaline vaade"> -<!ENTITY type.filter.label "Blokeeriv filter"> -<!ENTITY types.label "Rakenda tĂĽĂĽpidele:"> -<!ENTITY shortpattern.warning "Sisestatud avaldis on optimeerimiseks liiga lĂĽhike ja võib muuta interneti lehitsemise aeglasemaks. Soovitatav oleks valida selle filtri jaoks pikem string, mida Adblock Plusi töötleb efektiivsemalt."> -<!ENTITY collapse.yes.label "Jah"> -<!ENTITY anchors.label "Otsitav võib olla ainult:"> -<!ENTITY collapse.default.yes.label "Kasuta vaikeväärtust (jah)"> -<!ENTITY domainRestriction.help "Sisesta ĂĽks või enam pĂĽstkriipsuga (|) eraldatud domeeninime. See filter kehtib ainult nendele domeenidele. Tilde (~) domeeninime ees näitab, et seda filtrit ei rakendata antud domeenile."> -<!ENTITY accept.label "Lisa filter"> -<!ENTITY options.label "Valikud"> -<!ENTITY disabled.warning "Adblock Plus on hetkel keelatud olekus. Sa võid lisada filtreid, kuid neid ei rakendu enne, kui [link]lubad Adblock Plusi[/link]."> -<!ENTITY anchor.start.flexible.label "domeeninime alguses"> -<!ENTITY collapse.no.label "Ei"> -<!ENTITY selectAllTypes.label "Vali kõik"> -<!ENTITY advanced.label "Detailne vaade"> -<!ENTITY pattern.explanation "Otsitavaks võib olla aadressi suvaline osa; tärnid (*) toimivad metamärkidena. Filter kehtib ainult aadresside puhul, mis sobivad antud otsingu avaldisega."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/filters.dtd deleted file mode 100644 index 29d8bc5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Kõik su isetehtud filtrid asendatakse valitud faili sisuga. Kas soovid jätkata?"> -<!ENTITY slow.column "A&eglased filtrid"> -<!ENTITY enabled.column "L&ubatud"> -<!ENTITY subscription.lastDownload.checksumMismatch "Nurjus, kontrollsumma ei klapi"> -<!ENTITY noFiltersInGroup.text "Valitud grupp on tĂĽhi"> -<!ENTITY subscription.actions.label "Tegevused"> -<!ENTITY filter.selectAll.label "Vali kõik"> -<!ENTITY backupButton.label "&Varundamine ja taastamine"> -<!ENTITY restore.minVersion.warning "Hoiatus: see fail on loodud uuema Adblock Plus versiooniga. Enne selle taastamist peaksid sa Adblock Plus'i uuendama viimasele versioonile."> -<!ENTITY restore.error "Faili andmeid ei õnnestu töödelda. Kas see on ikka Adblock Plus varundusfail?"> -<!ENTITY sort.ascending.label "A > Z sortimiskord"> -<!ENTITY sort.label "Sortimine"> -<!ENTITY subscription.source.label "Filtrite loetelu"> -<!ENTITY hitcount.column "&Tabamusi"> -<!ENTITY noFilters.text "Sul ei ole ĂĽhtegi isetehtud filtrit."> -<!ENTITY backup.custom.title "Ainult isetehtud filtrid"> -<!ENTITY subscription.external.label "Uuendatud mingi teise lisa poolt"> -<!ENTITY subscription.delete.label "Kustuta"> -<!ENTITY noGroupSelected.text "Enne kui filtreid saab näidata pead valima filtrite grupi."> -<!ENTITY filter.cut.label "Lõika"> -<!ENTITY restore.default.label "Taasta andmed varukoopiast ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Laen alla..."> -<!ENTITY subscriptions.tab.label "Filtrite tellimused"> -<!ENTITY sort.descending.label "Z > A sortimiskord"> -<!ENTITY filters.remove.warning "Kas soovid tõesti eemaldada kõik valitud filtrid?"> -<!ENTITY filter.delete.label "Kustuta"> -<!ENTITY addSubscriptionAdd.label "Lisa"> -<!ENTITY viewMenu.label "Vaade"> -<!ENTITY subscription.lastDownload.unknown "Pole teada"> -<!ENTITY addSubscriptionCancel.label "Loobu"> -<!ENTITY subscription.enabled.label "Lubatud"> -<!ENTITY noSubscriptions.text "Sa ei ole veel lisanud ĂĽhtegi filtrite tellimust. Adblock Plus ei blokeeri midagi ilma filtriteta. Filtrite tellimiseks klõpsa nupul "Lisa filtrite tellimus"."> -<!ENTITY subscription.update.label "Uuenda filtreid"> -<!ENTITY dialog.title "Adblock Plus filtrite sätted"> -<!ENTITY addFilter.label "&Lisa filter"> -<!ENTITY subscription.minVersion.warning "See filtrite tellimus nõuab uuemat Adblock Plus versiooni. Sa peaksid uuendama Adblock Plus'i."> -<!ENTITY subscription.lastDownload.invalidURL "Nurjus, vale aadress"> -<!ENTITY backup.error "Viga filtrite faili kirjutamisel. Kontrolli, et fail ei oleks avatud mingi teise rakenduse poolt ja et fail ei oleks kirjutuskaitstud."> -<!ENTITY filter.moveUp.label "Liiguta ĂĽles"> -<!ENTITY addGroup.label "Lisa filtrite grupp"> -<!ENTITY filter.edit.label "Muuda"> -<!ENTITY subscription.showHideFilters.label "Näita/peida filtreid"> -<!ENTITY acceptableAds2.label "Luba mõned mittepealetĂĽkkivad reklaamid"> -<!ENTITY addSubscriptionOther.label "Lisa muu tellimus"> -<!ENTITY close.label "Sulge"> -<!ENTITY sort.none.label "S&ortimata"> -<!ENTITY filter.actions.label "Filtri tegevused"> -<!ENTITY filter.copy.label "Kopeeri"> -<!ENTITY filter.moveDown.label "Liiguta alla"> -<!ENTITY filter.resetHitCounts.label "Nullista tabamuste statistika"> -<!ENTITY readMore.label "Loe lisaks"> -<!ENTITY subscription.moveUp.label "Liiguta ĂĽles"> -<!ENTITY addSubscription.label "Lisa filtrite tellimus"> -<!ENTITY subscription.homepage.label "Koduleht"> -<!ENTITY backup.complete.title "Kõik filtrid ja tellimused"> -<!ENTITY restore.own.label "Taasta andmed mujalt"> -<!ENTITY restore.complete.warning "Kõik filtrite sätted asendatakse valitud faili sisuga. Kas soovid jätkata?"> -<!ENTITY filters.tab.label "Isetehtud filtrid"> -<!ENTITY backup.label "Loo uus varukoopia"> -<!ENTITY find.label "&Otsi"> -<!ENTITY subscription.moveDown.label "Liiguta alla"> -<!ENTITY subscription.lastDownload.connectionError "Nurjus, allalaadimise viga"> -<!ENTITY subscription.lastDownload.success "Ă•nnestus"> -<!ENTITY subscription.lastDownload.invalidData "Nurjus, vale filtrite nimekiri"> -<!ENTITY filter.paste.label "Aseta"> -<!ENTITY subscription.disabledFilters.enable "Luba keelatud filtrid"> -<!ENTITY lasthit.column "&Viimane tabamus"> -<!ENTITY subscription.editTitle.label "Muuda pealkirja"> -<!ENTITY subscription.disabledFilters.warning "Mõned selle tellimuse filtrid on keelatud."> -<!ENTITY filter.column "Filtri reegel"> -<!ENTITY subscription.lastDownload.label "Viimati alla laaditud:"> -<!ENTITY viewList.label "Vaata loetelu"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/firstRun.properties deleted file mode 100644 index fdc591a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_toggle_off=VĂ„LJAS -firstRun_feature_tracking=Keela Jälgimine -firstRun_title=Adblock Plus on paigaldatud -firstRun_toggle_on=SEES -firstRun_feature_malware=Viiruste blokeerimine -firstRun_feature_social=Eemalde sotsiaalse meedia nuppe -firstRun_acceptableAdsHeadline=TĂĽĂĽtud kuulutused on nĂĽĂĽd blokeeritud -firstRun_share=Räägi oma sõpradele -firstRun_share_headline=<a>Anna meile käsi</a> veebi muutmises paremaks kohaks -firstRun_donate=anneta -firstRun_donate_label=Toeta meie projekti -firstRun_feature_tracking_description=Browse privately by disabling tracking - hiding your tracks from ad companies that would track your every move. -firstRun_acceptableAdsExplanation=We'd like to encourage websites to use straightforward, unobtrusive advertising. That's why we've established <a>strict guidelines</a> to identify acceptable ads, which are shown under default settings. If you still want to block every ad you can <a>disable</a> this in a few seconds. -firstRun_contributor_credits=Contributor Credits -firstRun_dataCorruptionWarning=Does this page keep showing up? <a>Click here!</a> -firstRun_feature_social_description=Automatically rid your browsing experience of social media buttons, such as the Facebook Like, which appear on web pages and track your behavior. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. -firstRun_feature_malware_description=Make your browsing more secure by blocking known malware domains. -firstRun_features=Adblock Plus can do more than block ads -firstRun_legacySafariWarning=You are using an old version of Safari which is not supported by Adblock Plus. It might not work correctly or impair the user experience on some websites. We strongly recommend to either update to Safari 6.1.1 or higher (on OS X 10.8 Mountain Lion), or Safari 7.0.1 or higher (on OS X 10.9 Mavericks), or to use the latest version of Mozilla Firefox, Google Chrome or Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/global.properties deleted file mode 100644 index 7802c1e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Antud lehel ei leidu blokeeritavaid elemente -action3_tooltip=Hiireklõps lubab/keelab Adblock Plusi. -type_label_script=skript -filter_elemhide_nocriteria=Pole antud ĂĽhtegi kriteeriumit peidetava elemendi äratundmiseks -blockingGroup_title=Blokeerivad reeglid -whitelisted_tooltip=Antud lehel on Adblock Plus keelatud. -type_label_stylesheet=laaditabel -blocked_count_tooltip=?1?, elemente kokku ?2? -type_label_font=font -type_label_popup=hĂĽpikaken -filter_regexp_tooltip=Antud filter on kas regulaaravaldis või optimeerimiseks liiga lĂĽhike. Selliste filtrite suur hulk võib muuta interneti lehitsemine aeglaseks. -action0_tooltip=Hiireklõps avab kontekstimenĂĽĂĽ, klõps keskmisel nupul lubab/keelab lisa. -whitelisted_page=Adblock Plus on antud lehel keelatud -remove_group_warning=Kas oled kindel, et soovid seda gruppi kustutada? -action1_tooltip=Hiireklõps avab/sulgeb blokeeritavad elemendid, klõps keskmisel nupul lubab/keelab lisa. -type_label_xmlhttprequest=XML päring -active_tooltip=Adblock Plus on lubatud, kasutusel on ?1? filtrite tellimus(t) ja ?2? isetehtud filtrit. -type_label_document=dokument -type_label_object_subrequest=objekti alampäring -whitelistGroup_title=Erandite reeglid -disabled_tooltip=Adblock Plus on keelatud. -filter_elemhide_duplicate_id=Määratleda saab ainult ĂĽhe peidetava elemendi ID -type_label_object=objekt -action2_tooltip=Hiireklõps avab sätted, klõps keskmisel nupul lubab/keelab lisa. -type_label_subdocument=raam -clearStats_warning=See nullistab kõigi filtrite tabamuste statistika ja keelab filtrite tabamuste loendamise. Kas soovid jätkata? -blocked_count_addendum=(valges nimekirjas: ?1?, peidetud: ?2?) -subscription_invalid_location=Filtrite nimekirja asukoht on kas vigane URL või failinimi. -type_label_image=pilt -remove_subscription_warning=Kas oled kindel, et soovid selle tellimuse eemaldata? -type_label_other=muu -mobile_menu_enable=ABP: Luba -type_label_media=heli/video -mobile_menu_disable_site=ABP: Keela saidil ?1? -elemhideGroup_title=Elemendi peitmise reeglid -mobile_menu_enable_site=ABP: Luba saidil ?1? -type_label_elemhide=peidetud -newGroup_title=Uus filtrite grupp -default_dialog_title=Adblock Plus -notification_antiadblock_title=Hide targeted messages? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/overlay.dtd deleted file mode 100644 index 4750c46..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY sync.label "SĂĽn&kroniseeri Adblock Plus sätted"> -<!ENTITY whitelist.site.label "Keela domeenis ?1?"> -<!ENTITY filters.label "Filtrite sätted"> -<!ENTITY disable.label "Keela kõikjal"> -<!ENTITY objecttab.title "Blokeeri"> -<!ENTITY objecttab.tooltip "Klõpsa siia selle objekti blokeerimiseks Adblock Plusi abil"> -<!ENTITY menuitem.label "Adblock Plusi sätted"> -<!ENTITY objecttabs.label "Näita Flash ja Java objektidel sakke"> -<!ENTITY sendReport.label "&Teata probleemist antud lehel"> -<!ENTITY whitelist.page.label "Keela ainult antud lehel"> -<!ENTITY context.image.label "Adblock Plus: Blokeeri pilt"> -<!ENTITY counthits.label "Loenda &filtrite tabamusi"> -<!ENTITY opensidebar.label "Ava blokeeritavad elemendid"> -<!ENTITY contribute.label "Toeta Adblock Plus'i"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Blokeeri raam"> -<!ENTITY blocked.tooltip "Blokeeritud elemendid antud lehel:"> -<!ENTITY hideplaceholders.label "Peida blokeeritud elementide kohatäitjad"> -<!ENTITY showinstatusbar.label "Näita &olekuribal"> -<!ENTITY sidebar.title "Blokeeritavad elemendid antud lehel"> -<!ENTITY options.label "V&alikud"> -<!ENTITY context.object.label "Adblock Plus: Blokeeri objekt"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Luba uuesti antud lehel"> -<!ENTITY filters.tooltip "Kõige aktiivsemad filtrid:"> -<!ENTITY closesidebar.label "Sulge blokeeritavad elemendid"> -<!ENTITY showintoolbar.label "Nä&ita tööriistade menĂĽĂĽs"> -<!ENTITY status.tooltip "Olek:"> -<!ENTITY context.media.label "Adblock Plus: Blokeeri audio/video"> -<!ENTITY subscription.update.label "Uuenda filtreid"> -<!ENTITY notification.button.yes "&Yes"> -<!ENTITY notification.button.no "&No"> -<!ENTITY notification.button.close "&Close"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sendReport.dtd deleted file mode 100644 index ca6e99a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "TĂĽ&hista"> -<!ENTITY issues.disabledgroups.description "Järgnevad filtrite tellimused/filtrigrupid on keelatud, ent nad võivad siiski veel sellel lehel toimida:"> -<!ENTITY showData.label "Näita teate andmeid"> -<!ENTITY typeSelector.falsePositive.label "Adblock &Plus blokeerib liiga palju"> -<!ENTITY issues.change.description "Seadistust on muudetud. Palun laadi leht uuesti muudatuste testimiseks ja teata probleemist, kui see muudatus ei lahendanud probleemi."> -<!ENTITY email.label "E-&post:"> -<!ENTITY issues.openPreferences.label "Ava filtri sätted"> -<!ENTITY sendPage.confirmation "Su teade on salvestatud. Sa võid sellele ligi pääseda järgneval aadressil:"> -<!ENTITY copyLink.label "&Kopeeri teate link"> -<!ENTITY issues.nofilters.description "Adblock Plus ei blokeeri praegusel lehel midagi. See probleem ei ole tõenäoliselt Adblock Plusiga seotud."> -<!ENTITY sendPage.knownIssue "Seda probleemi tõenäoliselt juba teatakse. Rohkem infot:"> -<!ENTITY typeSelector.other.description "Vali see variant juhul kui sa kahtlustad, et probleem on pigem Adblock Plusis kui selle filtrites."> -<!ENTITY issues.disabledgroups.enable.label "Luba filtrite tellimus/filtrigrupp"> -<!ENTITY typeWarning.override.label "&Ma mõistan ja soovin siiski probleemist teada anda"> -<!ENTITY issues.disabled.enable.label "Luba Adblock Plus"> -<!ENTITY update.fixed.description "Filtrite tellimuste uuendused lahendasid tõenäoliselt selle probleemi, millest sa teatasid. Palun lae leht uuesti ja ĂĽrita uuesti. Teata uuesti, kui probleemid jäid alles."> -<!ENTITY anonymous.label "&AnonĂĽĂĽmne esitamine"> -<!ENTITY reloadButton.label "&Laadi leht uuesti"> -<!ENTITY recentReports.clear.label "&Kustuta kõik teated"> -<!ENTITY typeSelector.description "Antud aknas saab teatada Adblock Plusi probleemidest, tehes läbi vajalikud sammud. Kõigepealt tuleb valida probleemi liik, millega sa antud lehel kokku puutud:"> -<!ENTITY screenshot.remove.label "Eema&lda tundlikud andmed"> -<!ENTITY issues.ownfilters.description "Mõned sellel lehel kehtivad filtrid on loonud kasutaja. Palun keela need filtrid mis võiksid põhjustada seda probleemi:"> -<!ENTITY update.inProgress.description "Adblock Plus peab uuendama filtrite tellimusi, olemaks kindel, et see probleem ei ole juba lahendatud. Palun oota..."> -<!ENTITY sendPage.retry.label "Saada uuesti"> -<!ENTITY data.label "T&eate andmed:"> -<!ENTITY recentReports.label "Sinu viimati esitatud teated"> -<!ENTITY typeWarning.description "Sa märkisid, et soovid teatada Adblock Plusi ĂĽldisest probleemist ja mitte probleemist filtritega. Pane tähele, et selliseid probleeme on kõige parem teatada [link]Adblock Plusi foorumis[/link]. Sa peaksid kasutama probleemist teatamise abivahendit ainult selleks, et täiendada olemasolevat arutelu, sest mitte keegi ei märka su teadet kui sa ei pane selle juurde linki. Automaatselt genereeritud link luuakse peale probleemi edastamist."> -<!ENTITY issues.disabled.description "Adblock Plus on keelatud, see ei blokeeri hetkel midagi."> -<!ENTITY attachExtensions.label "Pa&ne teatele kaasa aktiivsete lisade nimekiri juhuks, kui probleemi põhjuseks on lisade konflikt"> -<!ENTITY issues.nosubscriptions.add.label "Lisa filtrite tellimus"> -<!ENTITY issues.disabledfilters.enable.label "Luba filter"> -<!ENTITY issues.override.label "Antud seadistus &on õige. Jätka aruandmist"> -<!ENTITY issues.nosubscriptions.description "Sa ei paista olevat tellinud ĂĽhtegi filtrite nimekirja, mis eemaldavad automaatselt veebilehtedelt soovimata sisu."> -<!ENTITY typeSelector.falsePositive.description "Vali see variant juhul kui lehel on kaduma läinud oluline sisu, lehte kuvatakse valesti või kui see ei tööta korralikult. Et teha kindlaks, kas Adblock Plus on selle probleemi põhjustaja, võid ta ajutiselt ära keelata."> -<!ENTITY typeSelector.other.label "&Muu probleem"> -<!ENTITY emailComment.label "Me soovitame sul sisestada oma kehtiva meiliaadressi, et saaksime kĂĽsimuste tekkimisel antud teate kohta sinuga ĂĽhendust võtta. Samuti aitab see suurendada sinu teadete prioriteeti."> -<!ENTITY issues.whitelist.remove.label "Luba uuesti Adblock Plus sellel lehel"> -<!ENTITY outdatedSubscriptions.description "Järgmisi filtrite tellimusi ei ole uuendatud vähemalt kahe nädala jooksul. Palun uuenda neid tellimusi enne veaaruande esitamist, sest probleem võib olla juba lahendatud."> -<!ENTITY dataCollector.description "Palun oota mõni hetk kuni Adblock Plus kogub vajalikke andmeid."> -<!ENTITY sendButton.label "S&aada teade"> -<!ENTITY comment.label "&Kommentaar (valikuline):"> -<!ENTITY sendPage.errorMessage "Teate saatmine ebaõnnestus. Veakood "?1?". Palun kontrolli, et su internetiĂĽhendus töötab ja proovi uuesti. Kui see probleem kordub, siis kĂĽsi abi [link]Adblock Plus foorumist[/link]."> -<!ENTITY showRecentReports.label "Näita viimati esitatud teateid"> -<!ENTITY commentPage.heading "Kommenteeri"> -<!ENTITY update.start.label "Alusta kohe uuendamist"> -<!ENTITY issues.disabledfilters.description "Järgnevad filtrid on keelatud, ent nad võivad siiski veel sellel lehel toimida:"> -<!ENTITY screenshot.description "Sama lehekĂĽlg võib erinevatel inimestel paista erinevalt. Teatele ekraanipildi lisamine võib aidata meil probleemist aru saada. Sa võid välja lõigata osad, mis sisaldavad tundlikku informatsiooni ja samuti ära märkida piirkonnad, kus probleem on märgatav. Selle tegemiseks klõpsa vastavale nupule ja vali hiirega pildi osa."> -<!ENTITY screenshot.attach.label "P&ane teatele kaasa pilt lehekĂĽljest"> -<!ENTITY issues.whitelist.description "Adblock Plus on praegu keelatud sinu poolt teatataval lehel. Palun luba see uuesti ja laadi leht uuesti enne teate saatmist, et hõlbustada selle probleemi lahendamist."> -<!ENTITY typeSelector.falseNegative.label "Ad&block Plus ei blokeeri reklaami"> -<!ENTITY typeSelector.heading "Vali probleemi liik"> -<!ENTITY anonymity.warning "Meil ei ole võimalik sinu poole tagasi pöörduda ja tõenäoliselt omistame sellele teatele madamala prioriteedi."> -<!ENTITY wizard.title "Probleemidest teatamine"> -<!ENTITY issues.ownfilters.disable.label "Keela filter"> -<!ENTITY commentPage.description "Järgnevasse tekstivälja saad lisada oma kommentaari, et aidata meil probleemist aru saada. See ei ole kohustuslik, kuid on soovitatav kui probleem ei ole selgelt arusaadav. Sa võid samuti ĂĽle vaadata aruande andmed enne kui need ära saadetakse."> -<!ENTITY comment.lengthWarning "Kommentaari pikkus ĂĽletab 1000 tähemärki. Ă„ra saadetakse ainult esimesed 1000 tähemärki."> -<!ENTITY typeSelector.falseNegative.description "Vali see variant juhul kui reklaami kuvatakse hoolimata sellest, et Adblock Plus on lubatud."> -<!ENTITY sendPage.waitMessage "Palun oota kuni Adblock Plus edastab teadet."> -<!ENTITY dataCollector.heading "Tere tulemast kasutama probleemidest teatamise abivahendit"> -<!ENTITY screenshot.heading "Lisa ekraanipilt"> -<!ENTITY sendPage.heading "Saada teade"> -<!ENTITY issues.subscriptionCount.description "Paistab, et sul on liiga palju filtrite tellimusi. Selline seadistus ei ole soovitatav, sest vigade tekkimise tõenäosus on nĂĽĂĽd palju suurem. Me ei saa ka vastu võta sinu probleemist teatamise aruannet, sest pole selge, millise filtrite tellimuse autor peab selle probleemiga tegelema. Palun kustuta kõik filtrite tellimused ja jäta alles ainult hädavajalikud ning kontrolli, kas probleem on ikka veel alles."> -<!ENTITY screenshot.mark.label "&Märgista probleem"> -<!ENTITY privacyPolicy.label "Privaatsus"> -<!ENTITY issues.description "Adblock Plus on kindlaks teinud probleemid su praeguses seadistuses, mis võivad seda probleemi põhjustada või teha selle teate uurimise keeruliseks."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sidebar.dtd deleted file mode 100644 index 3043e96..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash elemendi piirid"> -<!ENTITY address.label "Aadress"> -<!ENTITY context.open.label "Ava uuel kaardil"> -<!ENTITY type.label "TĂĽĂĽp"> -<!ENTITY tooltip.filterSource.label "Filtri asukoht:"> -<!ENTITY noitems.label "Blokeeritavaid elemendid puuduvad"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Suurus:"> -<!ENTITY reattach.label "Haagi tagasi"> -<!ENTITY search.label "Ot&sing:"> -<!ENTITY docDomain.thirdParty "(väljaspoolt)"> -<!ENTITY filterSource.label "Filtri allikas"> -<!ENTITY tooltip.docDomain.label "Dokumendi allikas:"> -<!ENTITY context.copy.label "Kopeeri elemendi aadress"> -<!ENTITY tooltip.type.label "TĂĽĂĽp:"> -<!ENTITY context.disablefilter.label "Keela filter ?1?"> -<!ENTITY context.copyFilter.label "Kopeeri filter"> -<!ENTITY context.block.label "Blokeeri see element"> -<!ENTITY context.enablefilter.label "Luba taas filter ?1?"> -<!ENTITY detach.label "Haagi lahti"> -<!ENTITY whitelisted.label "LehekĂĽlg on valges nimekirjas"> -<!ENTITY context.disablefilteronsite.label "Keela see filter domeenis ?1?"> -<!ENTITY detached.title "Adblock Plus: Blokeeritavad elemendid (lahti haagitud)"> -<!ENTITY docDomain.firstParty "(põhileht)"> -<!ENTITY tooltip.type.whitelisted "(valges nimekirjas)"> -<!ENTITY tooltip.filter.label "Kehtiv filter:"> -<!ENTITY tooltip.filter.disabled "(keelatud)"> -<!ENTITY context.editfilter.label "Muuda kehtivat filtrit"> -<!ENTITY tooltip.type.blocked "(blokeeritud)"> -<!ENTITY size.label "Suurus"> -<!ENTITY context.whitelist.label "Lisa antud elemendile erandi reegel"> -<!ENTITY context.selectAll.label "Vali kõik"> -<!ENTITY state.label "Olek"> -<!ENTITY docDomain.label "Dokumendi allikas"> -<!ENTITY tooltip.address.label "Aadress:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/subscriptionSelection.dtd deleted file mode 100644 index 082ab98..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/et/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Lisa ka filtrite tellimus "?1?""> -<!ENTITY list.download.failed "Adblock Plusil ei õnnestunud alla laadida tellimuste nimekirja."> -<!ENTITY list.download.retry "Proovi uuesti"> -<!ENTITY title.label "Tellimuse &pealkiri:"> -<!ENTITY list.download.website "KĂĽlasta kodulehte"> -<!ENTITY supplementMessage "See filtrite tellimus on mõeldud kasutamiseks koos filtrite tellimusega "?1?" mida sa veel ei kasuta."> -<!ENTITY viewList.label "Vaata filtreid"> -<!ENTITY visitHomepage.label "KĂĽlasta kodulehte"> -<!ENTITY addSubscription.label "Lisa tellimus"> -<!ENTITY dialog.title "Lisa Adblock Plus filtrite tellimus"> -<!ENTITY location.label "Filtrite nimekirja asukoht:"> -<!ENTITY fromWeb.description "Palun kinnita, et soovid lisada selle filtrite tellimuse. Enne lisamist saad muuta tellimuse pealkirja või asukohta."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/composer.dtd deleted file mode 100644 index ae82d94..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "helbidearen &bukaeran"> -<!ENTITY domainRestriction.label "Mugatu &domeinu honetara:"> -<!ENTITY collapse.default.no.label "Erabili lehenetsitakoa (ez)"> -<!ENTITY firstParty.label "Lehen es&kukoa soilik"> -<!ENTITY preferences.label "&Erakutsi dauden iragazkiak..."> -<!ENTITY pattern.label "Bilatu eredua"> -<!ENTITY thirdParty.label "Ka&npotik jasoa soilik"> -<!ENTITY filter.label "&Iragazki berria:"> -<!ENTITY collapse.label "Ko&lapso blokeatuta:"> -<!ENTITY match.warning "Sartu duzun ereduak ez du blokeatu/desblokeatu nahi duzun helbidearekin bat egiten eta ez du inolako eraginik izango."> -<!ENTITY anchor.start.label "helbidearen &hasieran"> -<!ENTITY matchCase.label "Bereizi letra &Larriak/xeheak"> -<!ENTITY custom.pattern.label "&Pertsonalizatua:"> -<!ENTITY unselectAllTypes.label "Ez aukeratu bat ere ez"> -<!ENTITY type.whitelist.label "&Salbuespen-araua"> -<!ENTITY regexp.warning "Sartu duzun eredua adierazpen erregulartzat hartuko da, Adblock Plusek ezin ditu azkar prozesatu eta honek zure nabigazioa moteldu dezake. Zure asmoa ez bazen adierazpen erregular bat erabiltzea, gehitu izarño bat (*) ereduaren bukaeran."> -<!ENTITY dialog.title "Gehitu Adblock Plus iragazki-araua"> -<!ENTITY basic.label "Oinarrizko ikuspegia"> -<!ENTITY type.filter.label "&Blokeatzeko iragazkia"> -<!ENTITY types.label "Aplikatu mota hauei:"> -<!ENTITY shortpattern.warning "Sartu duzun eredua laburregia da optimizatu ahal izateko eta zure nabigazioa moteldu dezake. Testu kate luzeago bat aukeratzea aholkatzen da Adblock Plusek azkarrago prozesatu dezan."> -<!ENTITY collapse.yes.label "Bai"> -<!ENTITY anchors.label "Onartu eredua soilik:"> -<!ENTITY collapse.default.yes.label "Erabili lehenetsitakoa (bai)"> -<!ENTITY domainRestriction.help "Erabili aukera hau domeinu bat edo gehiago zehazteko marra bertikal batez banatuta (|). Iragazkia aukeratutako domeinuetan erabiliko da soilik. Gehitu tilet bat (~) domeinuaren aurretik domeinu horretan iragazkia ez erabiltzeko."> -<!ENTITY accept.label "Gehitu iragazkia"> -<!ENTITY options.label "Aukerak"> -<!ENTITY disabled.warning "Adblock Plus orain desgaituta dago. Iragazkiak gehitu ditzakezu baina ez dira aplikatuko ez baduzu [link]Adblock Plus gaitzen[/link]."> -<!ENTITY anchor.start.flexible.label "domeinu izenaren &hasieran"> -<!ENTITY collapse.no.label "Ez"> -<!ENTITY selectAllTypes.label "Aukeratu denak"> -<!ENTITY advanced.label "Ikuspegi aurreratua"> -<!ENTITY pattern.explanation "Eredua helbidearen edozein atal izan daiteke; izarñoa (*) komodin lanak egiten ditu, zernahitarako balio du. Iragazkia soilik aplikatuko da ereduarekin bat datozen helbideetan."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/filters.dtd deleted file mode 100644 index 71aabc9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "Zure iragazki pertsonal guztiak aukeratutako fitxategiko edukiarekin ordeztuko dira. Aurrera jarraitu nahi duzu?"> -<!ENTITY slow.column "Iraga&zki motelak"> -<!ENTITY enabled.column "&Gaituta"> -<!ENTITY subscription.lastDownload.checksumMismatch "Errorea; kontrol-baturak ez datoz bat"> -<!ENTITY noFiltersInGroup.text "Aukeratutako taldea hutsik dago"> -<!ENTITY subscription.actions.label "Ekintzak"> -<!ENTITY filter.selectAll.label "Denak aukeratu"> -<!ENTITY backupButton.label "Segu&rtasun kopia eta berrezartzea"> -<!ENTITY restore.minVersion.warning "Oharra: fitxategi hau Adblock Plusen bertsio berriago batekin sortu da. Adblock Plus azken bertsiora eguneratu beharko zenuke fitxategi hau berrezarri aurretik."> -<!ENTITY restore.error "Fitxategiko datuak ezin dira prozesatu, agian ez da Adblock Plus segurtasun kopia bat?"> -<!ENTITY sort.ascending.label "&A > Z ordena"> -<!ENTITY sort.label "Ordenatu honen ara&bera"> -<!ENTITY subscription.source.label "Iragazki zerrenda"> -<!ENTITY hitcount.column "&Bategiteak"> -<!ENTITY noFilters.text "Ez duzu pertsonalizatutako iragazkirik oraindik."> -<!ENTITY backup.custom.title "Iragazki pertsonalak soilik"> -<!ENTITY subscription.external.label "Beste gehigarri batek eguneratua"> -<!ENTITY subscription.delete.label "Ezabatu"> -<!ENTITY noGroupSelected.text "Iragazki talde bat aukeratu behar duzu bere iragazkiak ikusi ahal izateko"> -<!ENTITY filter.cut.label "Moztu"> -<!ENTITY restore.default.label "?1? segurtasun kopiatik berrezarri"> -<!ENTITY subscription.lastDownload.inProgress "Deskargatzen..."> -<!ENTITY subscriptions.tab.label "Iragazki harpidetzak"> -<!ENTITY sort.descending.label "&Z > A ordena"> -<!ENTITY filters.remove.warning "Benetan ezabatu nahi dituzu aukeratutako iragazkiak?"> -<!ENTITY filter.delete.label "Ezabatu"> -<!ENTITY addSubscriptionAdd.label "Gehitu"> -<!ENTITY viewMenu.label "Ikusi"> -<!ENTITY subscription.lastDownload.unknown "Ez erabilgarri"> -<!ENTITY addSubscriptionCancel.label "Utzi bertan behera"> -<!ENTITY subscription.enabled.label "Gaituta"> -<!ENTITY noSubscriptions.text "Ez duzu harpidetzarik gehitu oraindik. Adblock Plusek du ezer blokeatuko iragazkirik gabe; mesedez, erabili "Gehitu iragazki harpidetza" - iragazkiak gehitzeko."> -<!ENTITY subscription.update.label "Eguneratu iragazkiak"> -<!ENTITY dialog.title "Adblock Plus iragazki hobespenak"> -<!ENTITY addFilter.label "Gehitu iraga&zkia"> -<!ENTITY subscription.minVersion.warning "Iragazki harpidetzak Adblock Plus bertsio berria behar du, azken bertsiora eguneratu beharko zenuke Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Huts egin du; ez da helbide baliagarria"> -<!ENTITY backup.error "Iragazkiak fitxategira idazteak errore bat gertatu da. Egiaztatu fitxategian idaztea dagoela eta ez duela beste aplikazio batek blokeatu."> -<!ENTITY filter.moveUp.label "Igo"> -<!ENTITY addGroup.label "Gehitu &talde iragazkia"> -<!ENTITY filter.edit.label "Editatu"> -<!ENTITY subscription.showHideFilters.label "Erakutsi/ezkutatu iragazkiak"> -<!ENTITY acceptableAds2.label "Baimendu publizitate ez &intrusiboa"> -<!ENTITY addSubscriptionOther.label "Gehitu beste harpidetza bat"> -<!ENTITY close.label "Itxi"> -<!ENTITY sort.none.label "Ordenatu &gabe"> -<!ENTITY filter.actions.label "Iragazki ekintzak"> -<!ENTITY filter.copy.label "Kopiatu"> -<!ENTITY filter.moveDown.label "Jaitsi"> -<!ENTITY filter.resetHitCounts.label "Garbitu bategite estatistikak"> -<!ENTITY readMore.label "Gehiago irakurri"> -<!ENTITY subscription.moveUp.label "Igo"> -<!ENTITY addSubscription.label "Geh&itu iragazki harpidetza"> -<!ENTITY subscription.homepage.label "Hasiera orria"> -<!ENTITY backup.complete.title "Iragazki eta harpidetza guztiak"> -<!ENTITY restore.own.label "Segurtasun kopia propioa berrezarri"> -<!ENTITY restore.complete.warning "Zure iragazki hobespen guztiak aukeratutako fitxategiko edukiarekin ordeztuko dira. Aurrera jarraitu nahi duzu?"> -<!ENTITY filters.tab.label "Pertsonalizatutako iragazkiak"> -<!ENTITY backup.label "Sortu segurtasun kopia berria"> -<!ENTITY find.label "&Bilatu"> -<!ENTITY subscription.moveDown.label "Jaitsi"> -<!ENTITY subscription.lastDownload.connectionError "Huts egin du; deskarga errorea"> -<!ENTITY subscription.lastDownload.success "Ongi"> -<!ENTITY subscription.lastDownload.invalidData "Huts egin du; ez da iragazki zerrenda baliagarria"> -<!ENTITY filter.paste.label "Itsatsi"> -<!ENTITY subscription.disabledFilters.enable "Gaitu desgaitutako iragazkiak"> -<!ENTITY lasthit.column "&Azken bategitea"> -<!ENTITY subscription.editTitle.label "Editatu izenburua"> -<!ENTITY subscription.disabledFilters.warning "Harpidetza honetako iragazki batzuk desgaituta daude."> -<!ENTITY filter.column "&Iragazki araua"> -<!ENTITY subscription.lastDownload.label "Azken deskarga:"> -<!ENTITY viewList.label "Ikusi zerrenda"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/firstRun.properties deleted file mode 100644 index 86b4926..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Jarraitzea blokeatuz pribatuki nabigatu - Zure nondik norakoak dena jakin nahi duten publizitate konpainiei ezkutatuz. -firstRun_toggle_off=EZGAITUA -firstRun_feature_tracking=Ezgaitu jarraipena -firstRun_feature_malware=Programa kaltegarriak geldiarazi -firstRun_title=Adblock Plus instalatu da -firstRun_acceptableAdsExplanation=Webguneak publizitate zintzoa eta ez intrusiboa erabiltzera bultzatu nahi ditugu. Horregatik <a>arau zorrotzak</a> ezarri ditugu iragarki onargarriak bereizteko, lehenetsitako hobespenetan daude ikusgai. Iragarki guztiak blokeatu nahi badituzu aukera hau <a>desgaitu</a> dezakezu. -firstRun_toggle_on=GAITUA -firstRun_contributor_credits=Parte-hartzaileen kredituak -firstRun_dataCorruptionWarning=Orri hau behin eta berriro agertzen dela? <a>Egin klik hemen!</a> -firstRun_acceptableAdsHeadline=Iragarki gogaikarriak blokeatuko dira orain -firstRun_share=Esan zure lagunei -firstRun_share_headline=<a>Lagundu gaitzazu</a> web-a hobetzen -firstRun_features=Adblock Plus iragarkiak blokeatzea baino gehiago egin dezake -firstRun_feature_malware_description=Malware domeinuak blokeatuz zure nabigazioa ziurragoa egin. -firstRun_feature_social_description=Automatikoki kendu gizarte sare botoiak webguneetatik, Facebook Like kasu, zure nondik norakoak gordetzen dituzten webguneetan agertu ohi dira. -firstRun_donate=diruz lagundu -firstRun_donate_label=Babestu gure proiektua -firstRun_feature_social=Kendu gizarte-sareetako botoiak -firstRun_legacySafariWarning=Adblock Plus-ekin bateragarria ez den Safari nabigatzailearen bertsio zahar bat erabiltzen ari zara. Agian ez da behar bezala ibiliko, edo webgune batzuen erabilera oztopatuko du. Mesedez Safari 6.11 edo berriagoa den bertsio batetara eguneratu (Mac OS X 10.8 Mountain Lion bertsiotik aurrera eskuragarri dago) edo Safari 7.0.1 (OS X 10.9 Mavericks bertsioan), edo erabili Mozilla Firefox, Google Chrome edo Opera nabigatzaileen azken bertsioa. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/global.properties deleted file mode 100644 index 1dc9c84..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ez dago elementu blokeagarririk uneko orrian -action3_tooltip=Egin klik Adblock Plus gaitzeko/desgaitzeko. -type_label_script=scripta -filter_elemhide_nocriteria=Ez da zehaztu ezkutatu beharreko elementua aurkitzeko irizpiderik -blockingGroup_title=Publizitatea blokeatzeko arauak -whitelisted_tooltip=Adblock Plus orri honetan desgaituta dago. -type_label_stylesheet=estilo orria -blocked_count_tooltip=?1? / ?2? -type_label_font=letra-tipoa -type_label_popup=pop-up leihoa -filter_regexp_tooltip=Iragazki hau adierazpen erregular bat da edo optimizatzeko laburregia da. Honelako iragazki gehiegik nabigazioa motelduko dute. -action0_tooltip=Egin klik testuinguru menua atera dadin; egin erdiko klika gaitzeko/desgaitzeko. -whitelisted_page=Adblock Plus ezgaitu egin da uneko orrirako -remove_group_warning=Ziur talde hau ezabatu nahi duzula? -action1_tooltip=Egin klik elementu blokeagarriak irekitzeko/ixteko; egin erdiko klika gaitzeko/desgaitzeko. -type_label_xmlhttprequest=XML eskakizuna -active_tooltip=Adblock Plus gaituta dago, ?1? iragazki harpidetza eta ?2? iragazki pertsonal erabiliz. -type_label_document=dokumentua -type_label_object_subrequest=objektu azpieskakizuna -whitelistGroup_title=Salbuespen arauak -disabled_tooltip=Adblock Plus ezgaituta dago. -filter_elemhide_duplicate_id=Ezkutatu beharreko elementuaren ID bakarra zehaztu daiteke -type_label_object=objektua -action2_tooltip=Egin klik hobespenak irekitzeko, egin erdiko klika gaitzeko/desgaitzeko. -type_label_subdocument=markoa -clearStats_warning=Honek bategite estatistika guztiak ezabatuko ditu eta iragazkien bategiteak zenbatzeari utziko zaio. Aurrera jarraitu nahi duzu? -blocked_count_addendum=(baita baimenduta: ?1?, ezkutuan: ?2?) -subscription_invalid_location=Iragazki zerrendaren kokagunea ez da balio duen URLa, ezta fitxategi baten izena ere. -type_label_image=irudia -remove_subscription_warning=Ziur harpidetza hau ezabatu nahi duzula? -type_label_other=beste bat -mobile_menu_enable=ABP: Gaitua -type_label_media=audioa/bideoa -mobile_menu_disable_site=ABP: Desgaitua ?1? horretan -elemhideGroup_title=Elementuak ezkutatzeko arauak -mobile_menu_enable_site=ABP: Gaitua ?1? horretan -type_label_elemhide=ezkutuan -newGroup_title=Iragazki talde berria -default_dialog_title=Adblock Plus -notification_antiadblock_title=Hide targeted messages? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/overlay.dtd deleted file mode 100644 index 21efd6c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY sync.label "&Sinkronizatu Adblock Plus ezarpenak"> -<!ENTITY whitelist.site.label "Ezgaitu hemen: ?1?"> -<!ENTITY filters.label "&Iragazki hobespenak"> -<!ENTITY disable.label "Ezgaitu edonon"> -<!ENTITY objecttab.title "Blokeatu"> -<!ENTITY objecttab.tooltip "Egin klik hemen objektu hau Adblock Plusekin blokeatzeko"> -<!ENTITY menuitem.label "Adbloc&k Plus hobespenak"> -<!ENTITY objecttabs.label "Erakutsi &fitxak Flash eta Javan"> -<!ENTITY sendReport.label "Orri hone&tan sortutako arazo bati buruzko txostena egin"> -<!ENTITY whitelist.page.label "Ezgaitu orri honetan soilik"> -<!ENTITY context.image.label "Adblock Plus: Irudia blokeatu"> -<!ENTITY counthits.label "Zenbatu iragazkien &bategiteak"> -<!ENTITY opensidebar.label "Ire&ki elementu blokeagarriak"> -<!ENTITY contribute.label "Adblock Plus-en parte hartu"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Markoa blokeatu"> -<!ENTITY blocked.tooltip "Orri honetan blokeatutako elementuak:"> -<!ENTITY hideplaceholders.label "Ezkutatu blokeatutako elementuen &kokagunea"> -<!ENTITY showinstatusbar.label "Erakutsi &egoera-barran"> -<!ENTITY sidebar.title "Elementu blokeagarriak uneko orrialdean"> -<!ENTITY options.label "&Aukerak"> -<!ENTITY context.object.label "Adblock Plus: Objektua blokeatu"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Bergaitu orri honetan"> -<!ENTITY filters.tooltip "Iragazki aktiboenak:"> -<!ENTITY closesidebar.label "Itxi elementu blo&keagarriak"> -<!ENTITY showintoolbar.label "Erakutsi &tresna-barran"> -<!ENTITY status.tooltip "Egoera:"> -<!ENTITY context.media.label "Adblock Plus: audio/bideoa blokeatu"> -<!ENTITY subscription.update.label "Eguneratu iragazkiak"> -<!ENTITY notification.button.yes "&Yes"> -<!ENTITY notification.button.no "&No"> -<!ENTITY notification.button.close "&Close"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sendReport.dtd deleted file mode 100644 index 91e07fb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "&Desegin"> -<!ENTITY issues.disabledgroups.description "Hurrengo iragazki harpidetzak / iragazki taldeak ezgaituta daude, hala ere orri honetan eragina izan dezakete:"> -<!ENTITY showData.label "Erakutsi txostenaren informazioa"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus gehigarria behar baino gehia&go blokeatzen ari da"> -<!ENTITY issues.change.description "Zure konfigurazioa aldatu da. Mesedez birkargatu orria aldaketak egiaztatzeko eta bidali txostena arazoa konpondu ez bada."> -<!ENTITY email.label "E-&Posta:"> -<!ENTITY issues.openPreferences.label "Ireki iragazki hobespenak"> -<!ENTITY sendPage.confirmation "Zure txostena gorde egin da. Honako helbidean eskuratu dezakezu:"> -<!ENTITY copyLink.label "Ko&piatu txostenaren lotura"> -<!ENTITY issues.nofilters.description "Adblock Plus ez dago ezer blokeatzen oraingo orrian. Ikusten duzun arazoa ziurrenez ez du Adblock Plusekin erlaziorik."> -<!ENTITY sendPage.knownIssue "Aipatu duzun arazoa ziur aski ezaguna da jada. Informazio gehiago:"> -<!ENTITY typeSelector.other.description "Aukeratu hau arazoa Adblock Plus berak duela uste baduzu, eta ez iragazkiek."> -<!ENTITY issues.disabledgroups.enable.label "Gaitu iragazki harpidetza / iragazki taldea"> -<!ENTITY typeWarning.override.label "Ulertzen dut eta txostena bidali na&hi dut hala ere"> -<!ENTITY issues.disabled.enable.label "Gaitu Adblock Plus"> -<!ENTITY update.fixed.description "Baliteke zure iragazki harpidetzak eguneratzeak arazoa konpondu izana. Mesedez birkargatu orria eta berriro saiatu, arazoa berean badirau berriro zapaldu Berri eman botoia."> -<!ENTITY anonymous.label "Bidalketa anonimoa"> -<!ENTITY reloadButton.label "Bi&rkargatu orria"> -<!ENTITY recentReports.clear.label "E&zabatu txosten guztiak"> -<!ENTITY typeSelector.description "Leiho honek Adblock Plus arazo txosten bat bidaltzeko beharrezkoak diren urratsetan zehar gidatuko zaitu. Hasteko, mesedez aukeratu orri honetan pairatzen duzun arazo mota aukeratu:"> -<!ENTITY screenshot.remove.label "Kendu info&rmazio sentsiblea"> -<!ENTITY issues.ownfilters.description "Orri honetan erabilitako iragazki batzuk erabiltzaileak sortutakoak dira. Mesedez ezgaitu arazoa sor lezaketen iragazkiak:"> -<!ENTITY update.inProgress.description "Adblock Plusek zure iragazki harpidetzak eguneratu behar ditu arazoa dagoeneko konponduta dagoen egiaztatzeko. Mesedez itxaron..."> -<!ENTITY sendPage.retry.label "Bidali berriro"> -<!ENTITY data.label "Txostenaren informa&zioa:"> -<!ENTITY recentReports.label "Orain dela gutxi bidalitako txostenak"> -<!ENTITY typeWarning.description "Adblock Plusen arazo orokor, baten txostena egin nahi duzula esan duzu, ez iragazkiena. Jabetu zaitez arazo horien berri emateko hobe dela [link]Adblock Plus forum[/link] foroa erabiltza. Arazoen txosten bidalketa erabili soilik badagoen eztabaida bati eransteko, inork ez duelako zure txostena ikusiko lotura bat ematen ez baduzu. Automatikoki sortutako lotura bat emango zaizu txostena bidali eta gero."> -<!ENTITY issues.disabled.description "Adblock Plus ezgaituta dago, ez du ezer blokeatuko oraingo egoeran."> -<!ENTITY attachExtensions.label "Erant&si gehigarri aktiboen zerrenda bat txostenera hauen arteko konfliktoak arazoa sor balezakete"> -<!ENTITY issues.nosubscriptions.add.label "Gehitu iragazki harpidetza"> -<!ENTITY issues.disabledfilters.enable.label "Gaitu iragazkia"> -<!ENTITY issues.override.label "&Konfigurazioa zuzena da, jarraitu txostenarekin"> -<!ENTITY issues.nosubscriptions.description "Antza denez ez zara harpidetu webguneetatik nahi ez dituzun edukiak automatikoki ezabatzen duten aurrez egindako zerrendetara."> -<!ENTITY typeSelector.falsePositive.description "Aukeratu hau orrian informazio garrantzitsua falta bada, gaizki ikusten bada edo ez badabil behar bezala . - Adblock Plus une batez desgaituz erruduna den egiaztatu dezakezu."> -<!ENTITY typeSelector.other.label "Beste zerba&it"> -<!ENTITY emailComment.label "Eposta helbide zuzen bat idaztea aholkatzen dizugu, zurekin kontaktuan jarri ahal izateko galderarik badugu. Zure parte hartze orokorra antzeman eta lehentasunez tratatzea baimentzen digu ere."> -<!ENTITY issues.whitelist.remove.label "Birgaitu Adblock Plus orri honetan"> -<!ENTITY outdatedSubscriptions.description "Hurrengo iragazki harpidetzak ez dira eguneratu bi astetan gutxienez. Mesedez eguneratu harpidetza hauek txosten bat bidali aurretik, baliteke arazoa jada konponduta egotea."> -<!ENTITY dataCollector.description "Mesedez itxaron Adblock Plusek beharrezko informazioa jaso bitartean."> -<!ENTITY sendButton.label "Txostena &bidali"> -<!ENTITY comment.label "&Iruzkina (aukerazkoa):"> -<!ENTITY sendPage.errorMessage "Txostena bidaltzeko saiakerak huts egin du hurrengo errore kodearekin "?1?". Mesedez egiaztatu Internetera konektatuta zaudela eta saia zaitez berriro. Arazoa ez bada konpontzen eskatu laguntza [link]Adblock Plus forum[/link] foroan."> -<!ENTITY showRecentReports.label "Erakutsi orain dela gutxi bidalitako txostenak"> -<!ENTITY commentPage.heading "Sartu iruzkina"> -<!ENTITY update.start.label "Hasi eguneraketa orain"> -<!ENTITY issues.disabledfilters.description "Hurrego iragazkiak ezgaituta daude, hala ere orri honetan eragina izan dezakete:"> -<!ENTITY screenshot.description "Orri bera ez dute berdin ikusiko pertsona guztiek. Pantaila argazki bat eransteak arazoa ulertzen lagundu ahal digu. Ken ditzakezu Informazio sentsiblea duten atalak eta markatu arazoa nabaria duten atalak. Hori egiteko, egin klik dagokion botoian eta aukeratu zonaldea saguarekin."> -<!ENTITY screenshot.attach.label "Geh&itu irudia txostenera"> -<!ENTITY issues.whitelist.description "Adblock Plus orain desgaituta dago txosnenaren orrian. Mesedez berriz gaitu eta orria birkargatu txostena bidali aurretik arazoaren ikerketa errazteko."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plusek ez du &iragarki bat blokeatzen"> -<!ENTITY typeSelector.heading "Aukeratu arazo mota"> -<!ENTITY anonymity.warning "Ezin izango gara zurekin kontatuan jarri eta ziurrenez lehentasun gutxiago emango diogu txosten honi."> -<!ENTITY wizard.title "Arazoaren txostena bidali da"> -<!ENTITY issues.ownfilters.disable.label "Iragazkia ezgaitu"> -<!ENTITY commentPage.description "Beheko testu eremuak guk arazoa hobeto ulertzeko iruzkin bat sartzea baimentzen dizu. Hau aukerazkoa da baina gomendagarria arazoa begi-bistakoa ez bada. Gainera, txostenaren informazioa gainbegiratu dezakezu bidali aurretik."> -<!ENTITY comment.lengthWarning "Iruzkinak 1000 karaktere baino gehiago ditu. Lehen 1000 karaktereak bidaliko dira soilik."> -<!ENTITY typeSelector.falseNegative.description "Aukeratu hau publizitatea agertzen bada Adblock Plus gaituta egonda ere."> -<!ENTITY sendPage.waitMessage "Mesedez itxaron Adblock Plus zure txostena bidaltzen duen bitartean."> -<!ENTITY dataCollector.heading "Ongi etorri arazoen txosten bidalketara"> -<!ENTITY screenshot.heading "Erantsi pantaila argazkia"> -<!ENTITY sendPage.heading "Bidali txostena"> -<!ENTITY issues.subscriptionCount.description "Antza denez iragazki harpidetza gehiegitara harpidetu zara. hau ez da gomendagarria arazoak izateko aukera geihago suposatzen duelako. Gainera ezin dugu zure txostena onartu ez dagoelako argi zein iragazki egilek egin behar duen ezer. Mesedez ezabatu ezinbestekoak ez diren iragazki harpidetzak eta egiaztatu arazoa oraindik gertatzen den."> -<!ENTITY screenshot.mark.label "Arazoa &markatu"> -<!ENTITY privacyPolicy.label "Pribatutasun politika"> -<!ENTITY issues.description "Adblock Plusek arazo honen errudun izan daitezken edo txosten hau ikerkertzea zaildu dezaketen arazoak aurkitu ditu zure konfigurazioan."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sidebar.dtd deleted file mode 100644 index 9fd57a8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash elementuaren ertzak"> -<!ENTITY address.label "Helbidea"> -<!ENTITY context.open.label "Ireki fitxa berri batean"> -<!ENTITY type.label "Mota"> -<!ENTITY tooltip.filterSource.label "Iragazki iturria:"> -<!ENTITY noitems.label "Ez dago elementu blokeagarririk"> -<!ENTITY filter.label "Iragazkia"> -<!ENTITY tooltip.size.label "Tamaina:"> -<!ENTITY reattach.label "Lotu"> -<!ENTITY search.label "&Bilatu:"> -<!ENTITY docDomain.thirdParty "(kanpo iturria)"> -<!ENTITY filterSource.label "Iragazki iturria"> -<!ENTITY tooltip.docDomain.label "Dokumentuaren iturria:"> -<!ENTITY context.copy.label "Kopiatu elementuaren helbidea"> -<!ENTITY tooltip.type.label "Mota:"> -<!ENTITY context.disablefilter.label "Ezgaitu ?1? iragazkia"> -<!ENTITY context.copyFilter.label "Kopiatu iragazkia"> -<!ENTITY context.block.label "Blokeatu elementu hau"> -<!ENTITY context.enablefilter.label "Gaitu ?1? iragazkia"> -<!ENTITY detach.label "Askatu"> -<!ENTITY whitelisted.label "Onartutako orria"> -<!ENTITY context.disablefilteronsite.label "Ezgaitu iragazki hau ?1? domeinuan"> -<!ENTITY detached.title "Adblock Plus: Elementu blokeagarriak (askatua)"> -<!ENTITY docDomain.firstParty "(lehen eskukoa)"> -<!ENTITY tooltip.type.whitelisted "(onartua)"> -<!ENTITY tooltip.filter.label "Iragazki aktiboa:"> -<!ENTITY tooltip.filter.disabled "(ezgaitua)"> -<!ENTITY context.editfilter.label "Editatu iragazki aktiboa"> -<!ENTITY tooltip.type.blocked "(blokeatuta)"> -<!ENTITY size.label "Tamaina"> -<!ENTITY context.whitelist.label "Gehitu salbuespen-araua elementuarentzat"> -<!ENTITY context.selectAll.label "Aukeratu denak"> -<!ENTITY state.label "Egoera"> -<!ENTITY docDomain.label "Dokumentu iturria"> -<!ENTITY tooltip.address.label "Helbidea:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/subscriptionSelection.dtd deleted file mode 100644 index 0442e3f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/eu/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Ge&hitu "?1?" iragazki harpidetza ere"> -<!ENTITY list.download.failed "Adblock Plusek ezin izan du harpidetza zerrenda eskuratu"> -<!ENTITY list.download.retry "Saiatu berriro"> -<!ENTITY title.label "Harp&idetza izenburua:"> -<!ENTITY list.download.website "Ikusi webgunea"> -<!ENTITY supplementMessage "Iragazki harpidetza hau "?1?" iragazki harpidetzarekin batera erabiltzekoa da eta zuk ez duzu oraindik erabiltzen."> -<!ENTITY viewList.label "Ikusi iragazkiak"> -<!ENTITY visitHomepage.label "Bisitatu hasiera orria"> -<!ENTITY addSubscription.label "Gehitu harpidetza"> -<!ENTITY dialog.title "Gehitu Adblock Plus iragazki harpidetza"> -<!ENTITY location.label "Iragaz&ki zerrendaren kokagunea:"> -<!ENTITY fromWeb.description "Mesedez berretsi iragazki harpidetza hau gehitu nahi duzula. Harpidetza izenburua eta kokagunea aldatu ditzakezu gehitu aurretik."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/composer.dtd deleted file mode 100644 index dc68759..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "در پایا&ن نشانی"> -<!ENTITY domainRestriction.label "Ů…Ř&ŘŻŮŘŻ به دامنه :"> -<!ENTITY collapse.default.no.label "استŮاده پیشŮرض (خیر)"> -<!ENTITY firstParty.label "Ůقط اŮ&لین عضŮ"> -<!ENTITY preferences.label "نمایش پالایه های Ů…ŮجŮŘŻ..."> -<!ENTITY pattern.label "جستج٠برای الگŮŰŚ"> -<!ENTITY thirdParty.label "Ůقط ŘłŮ&مین عضŮ"> -<!ENTITY filter.label "پالایه جدید:"> -<!ENTITY collapse.label "بس&تن مسدŮŘŻ شده ها:"> -<!ENTITY match.warning "الگŮŰŚŰŚ که Ůارد کرده اید دیگر با نشانی که قصد مسدŮŘŻ کردن/اŮزŮدن به Ůهرست ŘłŮŰŚŘŻ آن را داشته اید مطابقت ندارد ٠رŮŰŚ آن تاثیر نمی گزارد."> -<!ENTITY anchor.start.label "در آ&غاز نشانی"> -<!ENTITY matchCase.label "Ů…&طابقت Řالت (بزرگی Ú©ŮÚ†Ú©ŰŚ)"> -<!ENTITY custom.pattern.label "Řł&Ůارشی:"> -<!ENTITY unselectAllTypes.label "انتخاب هیچکدام"> -<!ENTITY type.whitelist.label "قاعده است&ثنا"> -<!ENTITY regexp.warning "الگŮŰŚŰŚ که شما Ůارد کرده اید ŰŚÚ© نŮیسه مرتب ŘŞŮسیر Ů…ŰŚ Ř´ŮŘŻ که نمی ŘŞŮاند به صŮرت بهینه ŘŞŮسط ŮŮŮ‚ تبلیغ شکن پردازش Ř´ŮŘŻ ٠ممکن است مرŮر صŮŘات شمار را کند کند. اگر شما قصد استŮاده کردن از ŰŚÚ© نŮیسه مرتب را نداشته اید، ŰŚÚ© ستار (*) به انتهای الگŮŰŚ Ř®ŮŘŻ اضاŮه کنید."> -<!ENTITY dialog.title "اضاŮه کردن قاعد Ůیلتر ادبلاک پلاس"> -<!ENTITY basic.label "نمایش پایه"> -<!ENTITY type.filter.label "Ůیلتر Ů…&سدŮŘŻ کننده"> -<!ENTITY types.label "اعمال به انŮاع:"> -<!ENTITY shortpattern.warning "الگŮŰŚŰŚ که Ůارد کردید بسیار Ú©Ůتاه تر از آن است که بهینه باشد ٠ممکن است سرعت مرŮر صŮŘات شما را کند کند. ŘŞŮصیه Ů…ŰŚ Ř´ŮŘŻ که جمله Ř·ŮŰŚŮ„ تری را Ůارد کنید که ŮŮŮ‚ تبلیغ شکن بهتر بتŮاند آن را پردازش کند."> -<!ENTITY collapse.yes.label "بله"> -<!ENTITY anchors.label "Ůقط پذیرش الگŮ:"> -<!ENTITY collapse.default.yes.label "استŮاده پیشŮرض (بله)"> -<!ENTITY domainRestriction.help "از این گزینه برای مشخص کردن ŰŚÚ© یا چند دامنه از هم جدا شده ŘŞŮسط نŮار خط (|) استŮاده کنید. پالایه تنها برای دامنه(ها)ŰŚ انتخاب شده اعمال Ů…ŰŚ Ř´ŮŘŻ. علامت Ů…ŘŻ (~) قبل از نام دامنه نشاندهنده آن است که پالایه در آن دامنه اعمال نشŮŘŻ."> -<!ENTITY accept.label "اŮزŮدن Ůیلتر"> -<!ENTITY options.label "گزینه ها"> -<!ENTITY disabled.warning "ŮŮŮ‚ تبلیغ شکن هم اکنŮن غیر Ůعال Ů…ŰŚ یاشد. شما هنŮز Ů…ŰŚ ŘŞŮانید پالایه اضاŮه کنید، اما آنها اعمال نمی Ř´Ůند مگر [link]ŮŮŮ‚ تبلیغ شکن را Ůعال کنید[/link]."> -<!ENTITY anchor.start.flexible.label "در آ&غاز نام دامنه"> -<!ENTITY collapse.no.label "خیر"> -<!ENTITY selectAllTypes.label "انتخاب همه"> -<!ENTITY advanced.label "نمایش پیشرŮته"> -<!ENTITY pattern.explanation "الگ٠می ŘŞŮاند هر قسمتی از نشانی باشد; ستاره (*) بعنŮان نŮیسه عام عمل Ů…ŰŚ کند. پالایه Ůقط به نشانی مطابق الگŮŰŚ ارائه شده اعمال Ů…ŰŚ Ř´ŮŘŻ."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/filters.dtd deleted file mode 100644 index 2f4d957..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Ů…ŰŚŘ®Ůاهید تمامی Ůیلترهای ŘłŮارشی Ř®ŮŘŻ را با Ů…ŘŘŞŮیات Ůایل انتخاب شده جایگزین Ů…ŰŚ Ř´ŮŘŻŘź"> -<!ENTITY slow.column "&نمایش Ůیلترها"> -<!ENTITY enabled.column "Ů&عال‌"> -<!ENTITY subscription.lastDownload.checksumMismatch "نامŮŮŮ‚, عدم تطابق کنترلی"> -<!ENTITY noFiltersInGroup.text "گرŮه انتخاب شده خالی Ů…ŰŚ باشد."> -<!ENTITY subscription.actions.label "اقدامات"> -<!ENTITY filter.selectAll.label "انتخاب همه"> -<!ENTITY backupButton.label "پشتیبان گیری ٠بازیابی (&B)"> -<!ENTITY restore.minVersion.warning "هشدار: این Ůایل با نسخه جدیدتری از برنامه ایجاد شده است. قبل از بازگرداندن از این Ůایل شما باید برنامه را برŮز کنید."> -<!ENTITY restore.error "Ůایل اطلاعات قابل پردازش نیست، شاید این Ůایل پشتیبان برنامه نمی باشد؟"> -<!ENTITY sort.ascending.label "ترتیب ŘرŮŮ &ال٠با از ابتدا"> -<!ENTITY sort.label "مرتب کردن بر ا&ساس"> -<!ENTITY subscription.source.label "لیست Ůیلتر"> -<!ENTITY hitcount.column "بر&Ř®Ůرد ها"> -<!ENTITY noFilters.text "شما هیچ Ůیلتر شخصی ایجاد نکرده اید."> -<!ENTITY backup.custom.title "Ůقط Ůیلتر های ŘłŮارشی"> -<!ENTITY subscription.external.label "با پسŮند دیگری به رŮز شده"> -<!ENTITY subscription.delete.label "ŘذŮ"> -<!ENTITY noGroupSelected.text "شما قبل ازاین که Ůیلترها نمایش داده Ř´Ůند نیاز به انتخاب گرŮه Ůیلتر دارید."> -<!ENTITY filter.cut.label "برش"> -<!ENTITY restore.default.label "بازیابی پشتیبان از ?1?"> -<!ENTITY subscription.lastDownload.inProgress "در Řال دریاŮŘŞ..."> -<!ENTITY subscriptions.tab.label "Ůیلتر زیرنŮŘ´ŘŞ ها"> -<!ENTITY sort.descending.label "&ترتیب ŘرŮ٠ال٠با از انتها"> -<!ENTITY filters.remove.warning "آیا Ůاقعاً Ů…ŰŚ Ř®Ůاهید تمامی Ůیلترهای انتخابی را Řذ٠کنید؟"> -<!ENTITY filter.delete.label "ŘذŮ"> -<!ENTITY addSubscriptionAdd.label "اضاŮه"> -<!ENTITY viewMenu.label "نما"> -<!ENTITY subscription.lastDownload.unknown "(تعری٠نشده)"> -<!ENTITY addSubscriptionCancel.label "لغŮ"> -<!ENTITY subscription.enabled.label "Ůعال شده"> -<!ENTITY noSubscriptions.text "شما هنŮز هیچ اشتراک Ůیلتری را اضاŮه نکردید. Adblock Plus هیچ چیزی را بدŮن Ůیلترها مسدŮŘŻ نمی کند, لطŮا با استŮاده از "اŮزŮدن اشتراک Ůیلتر" چند Ůیلتر اضاŮه کنید."> -<!ENTITY subscription.update.label "به رŮز رسانی Ůیلتر"> -<!ENTITY dialog.title "تنظیمات Ůیلتر Adblock Plus"> -<!ENTITY addFilter.label "اŮزŮدن Ůیلتر (&d)"> -<!ENTITY subscription.minVersion.warning "این Ůیلتر اشتراک نیاز به نسخه جدید برنامه دارد، شما باید برنامه را به آخرین نگارش به رŮز کنید."> -<!ENTITY subscription.lastDownload.invalidURL "نامŮŮق، نشانی معتبر نیست"> -<!ENTITY backup.error "خطایی هنگام نŮشتن Ůیلتر به Ůایل دیده Ř´ŘŻ. اطمینان Řاصل کنید که Ůایل نسبت به نŮشتن ŘŮاظت شده نیست ٠یا ŘŞŮسط برنامه کاربردی دیگری استŮاده نمی Ř´ŮŘŻ."> -<!ENTITY filter.moveUp.label "Řرکت به بالا"> -<!ENTITY addGroup.label "اŮزŮدن گرŮه Ůیلتر"> -<!ENTITY filter.edit.label "Ůیرایش"> -<!ENTITY subscription.showHideFilters.label "نمایش/پنهان کردن Ůیلترها"> -<!ENTITY acceptableAds2.label "اجازه دادن به تبلیغات ناخŮاسته (&i)"> -<!ENTITY addSubscriptionOther.label "ŰŚÚ© اشتراک ديگر اضاŮه کنید"> -<!ENTITY close.label "بستن"> -<!ENTITY sort.none.label "نا Ů…&رتب"> -<!ENTITY filter.actions.label "اقدامات Ůیلتر"> -<!ENTITY filter.copy.label "رŮنŮŘ´ŘŞ"> -<!ENTITY filter.moveDown.label "Řرکت به پایین"> -<!ENTITY filter.resetHitCounts.label "تنظیم مجدد آمار"> -<!ENTITY readMore.label "بیشتر بخŮانید"> -<!ENTITY subscription.moveUp.label "Řرکت به بالا"> -<!ENTITY addSubscription.label "اضاŮه کردن اشتراک Ůیلتر (&f)"> -<!ENTITY subscription.homepage.label "صŮŘه اصلی"> -<!ENTITY backup.complete.title "تمام Ůیلترها ٠اشتراک ها"> -<!ENTITY restore.own.label "بازیابی پشتیبان Ř®ŮŘŻ"> -<!ENTITY restore.complete.warning "تمام تنظیمات Ůیلتر با Ů…ŘŘŞŮیات Ůایل انتخاب شده جایگزین Ů…ŰŚ Ř´ŮŘŻ. Ů…ŰŚ Ř®Ůاهید انجام دهید؟"> -<!ENTITY filters.tab.label "Ůیلترهای ŘłŮارشی"> -<!ENTITY backup.label "نسخه پشتیبان جدید بسازید"> -<!ENTITY find.label "یاŮتن (&n)"> -<!ENTITY subscription.moveDown.label "Řرکت به پایین"> -<!ENTITY subscription.lastDownload.connectionError "نامŮŮق، Ůرآیند دریاŮŘŞ شکست Ř®Ůرد"> -<!ENTITY subscription.lastDownload.success "Ů…ŮŮŮ‚"> -<!ENTITY subscription.lastDownload.invalidData "نامŮŮق، Ůهرست پالایه ها نامعتبر است"> -<!ENTITY filter.paste.label "جای گذاری"> -<!ENTITY subscription.disabledFilters.enable "Ůعال کردن Ůیلتر های غیر Ůعال"> -<!ENTITY lasthit.column "آخرین برخ&Ůرد"> -<!ENTITY subscription.editTitle.label "Ůیرایش عنŮان"> -<!ENTITY subscription.disabledFilters.warning "برخی از Ůیلترها برای این اشتراک غیر Ůعال Ů…ŰŚ باشد."> -<!ENTITY filter.column "&Ů‚Ůاعد Ůیلتر"> -<!ENTITY subscription.lastDownload.label "آخرین دریاŮŘŞ:"> -<!ENTITY viewList.label "مشاهده لیست"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/firstRun.properties deleted file mode 100644 index 0ee991a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=با غیر Ůعال کردن ردیابی با امنیت کامل به ÚŻŘ´ŘŞ ٠گذار اینترنتی بپردازید ŮŘ®ŮŘŻ را از شرکت هایی که Ů…ŰŚ ŘŞŮانند هر Ů„Řظه زیر نظر داشته باشند Ů…Ř®ŮŰŚ کنید. -firstRun_toggle_off=خامŮŘ´ -firstRun_feature_tracking=غیر Ůعال کردن ردیابی -firstRun_feature_malware=مسدŮŘŻ کردن نرم اŮزارهای مخرب -firstRun_title=Adblock Plus با Ů…ŮŮقیت نصب Ř´ŘŻ -firstRun_toggle_on=رŮشن -firstRun_acceptableAdsExplanation=من Ů…ŰŚ Ř®Ůاهم Ůب سایت ها را ŘŞŘ´ŮŰŚŮ‚ کنم تا از تبلیغات درست Ů Řسابی بدŮن مزاŘŮ…ŘŞ استŮاده کنند. این دلیل ساختن <a> دستŮرالعمل های دقیق </a> است تا بتŮاند تبلیغات قابل قبŮŮ„ را بپذیرد ٠آن ها را به شما نشان دهد ŘŚ تبلیغاتی که در شرایط استاندارد صدق کنند. اگر شما Ů…ŰŚ Ř®Ůاهید هر تبلیغی را از هر صŮŘه ای مسدŮŘŻ کنید Ů…ŰŚ ŘŞŮانید آن را در عرض چند ثانیه <a>غیر Ůعال</a> کنید. -firstRun_contributor_credits=اعتبار نŮیسندگان -firstRun_dataCorruptionWarning=آیا این صŮŘه در Řال رŮŰŚŘŞ نگه داشته شده؟ <a>اینجا کلیک کن!</a> -firstRun_acceptableAdsHeadline=تبلیغات آزار دهنده در Řال Řاضر مسدŮŘŻ Ř®Ůاهد Ř´ŘŻ -firstRun_share=به ŘŻŮستان Ř®ŮŘŻ بگŮŰŚŰŚŘŻ -firstRun_share_headline=<a>بیایید</a> اینترنت را بهتر کنیم -firstRun_feature_social_description=به Ř·Ůر Ř®Ůدکار مانند like در ŮŰŚŘł بŮÚ© ŘŚ تجربه Ůبگردی از رسانه های اجتماعی را بŮرستید Ů Ůضعیت کارهای Ř®ŮŘŻ را دنبال کنید. -firstRun_filterlistsReinitializedWarning=به نظر Ů…ŰŚ رسد که ناشی از Ů…ŮضŮŘą همه Ůیلتر به Řذ٠می Ř´ŮŘŻ ٠ما قادر به بازگرداندن پشتیبان. بنابراین ما مجبŮر به تنظیم مجدد Ůیلتر ٠تنظیمات تبلیغات قابل قبŮŮ„. لطŮا لیست Ůیلتر ٠تنظیمات تبلیغات قابل قبŮŮ„ در <a>Adblock پلاس گزینه های</a> Ř®ŮŘŻ را. -firstRun_feature_malware_description=مرŮر Ř®ŮŘŻ رابا مسدŮŘŻ کردن دامنه های مخرب شناخته شده امن تر کنید. -firstRun_features=Adblock Plus Ů…ŰŚ ŘŞŮاند تبلیغات بیشتری را مسدŮŘŻ کند -firstRun_donate=Ú©Ů…Ú© مالی -firstRun_donate_label=پرŮÚه ما را Řمایت کنید -firstRun_feature_social=Řذ٠دکمه های رسانه های اجتماعی -firstRun_legacySafariWarning=شما در Řال Řاضر از ي٠نسخه قديمي تر مرŮرگر Safari استŮاده Ů…ŮŠŮنيد Ůه ŘŞŮسط Adblock Plus پشتيباني نميشŮŘŻ. اين Ů…ŮضŮŘą اŘتمال دارد بر رŮŮŠ تجربه Ůب گردي Ůاربر تأثير منŮŮŠ گذاشته ٠يا باعث درست عمل نŮردن پلاگين Ř´ŮŘŻ. ما Ů‚Ůياً ŘŞŮصيه Ů…ŮŠ Ůنيم Ůه مرŮرگر Ř®ŮŘŻ را به Safari 6.1.1 يا بالاتربه رŮز رساني Ůنيد (براي نسخه Mountain Lion ŮرÚن OS X 10.8 در سيستم عامل Ů…Ůينتاش)ŘŚ ٠يا به رŮز رساني به Safari 7.0.1 (براي نسخه Mavericks ŮرÚن OS X 10.9 در سيستم عامل Ů…Ůينتاش). ٠يا اينŮه ازآخرين ŮرÚن مرŮرگرهايي مانند: Google Chrome ŘŚMozilla Firefox ٠يا Opera استŮاده Ůنيد. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/global.properties deleted file mode 100644 index 6ada4e9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ů…Ůرد مسدŮŘŻ شده ای در این صŮŘه Ů…ŮجŮŘŻ نیست -action3_tooltip=برای Ůعال یا غیرŮعال‌کردن Adblock Plus کلیک کنید. -notification_antiadblock_title=آیا مایلید پیام های هدŮمند برای کاربران Adblock Plus را Ů…Ř®ŮŰŚ نمایید؟ -type_label_script=نŮیسه -filter_elemhide_nocriteria=هیچ ضابطه ای برای شناسایی عناصری که Ů…ŰŚ بایست پنهان Ř´Ůند مشخص نشد. -blockingGroup_title=Ů‚Ůانین مسدŮŘŻ کردن تبلیغ -whitelisted_tooltip=Adblock Plus برای این صŮŘه غیرŮعال شده است. -type_label_stylesheet=Ř´ŰŚŮه نامه (stylesheet) -blocked_count_tooltip=?1? از میان ?2? -type_label_font=قلم -type_label_popup=پنجره پاپ آپ -filter_regexp_tooltip=این Ůیلتر یا نŮشته مرتب است یا این که خیلی Ú©Ůچکتر از آن است که ŰŚÚ© Ůیلتر مناسب باشد. تعداد زیادی از این نŮشته ها Ů…ŰŚ ŘŞŮاند سرعت مرŮرگر شما را کاهش دهد. -action0_tooltip=برای نمایش Ůهرست کلیک کنید. کلیک-Ůسط برای Ůعال یا غیرŮعال کردن است. -whitelisted_page=Adblock Plus برای صŮŘه جاری غیرŮعال شده است. -remove_group_warning=Ůاقعا Ů…ŰŚ Ř®Ůاهید این گرŮه را Řذ٠کنید؟ -action1_tooltip=برای ÚŻŘ´Ůدن یا بستن Ů…Ůارد مسدŮŘŻ شده کلیک کنید. کلیک-Ůسط برای Ůعال یا غیرŮعال کردن است. -type_label_xmlhttprequest=XML Ř®Ůاسته شده -active_tooltip=ŮŮŮ‚ تبلیغ شکن یا Adblock Plus Ůعال است, ?1? اشتراک(های) Ůیلتر Ů ?2? Ůیلتر(ها)ŰŚ ŘłŮارشی در Řال استŮاده هستند. -type_label_document=سند -type_label_object_subrequest=اشیاء زیرخŮاسته -whitelistGroup_title=Ů‚Ůانین استثنا -disabled_tooltip=Adblock Plus غیرŮعال است. -filter_elemhide_duplicate_id=Ůقط ŰŚÚ© شناسه از عنصری که قرار است پنهان Ř´ŮŘŻ را Ů…ŰŚ ŘŞŮان مشخص کرد. -type_label_object=شیء -action2_tooltip=برای ÚŻŘ´Ůدن ترجیŘات کلیک کنید. کلیک-Ůسط برای Ůعال یا غیرŮعال کردن است. -type_label_subdocument=قابک -clearStats_warning=این کار تمام آمار ها را پاک کرده ٠آمارگیری را Ů…ŘŞŮق٠می کند. آیا مایل به ŘŞŮق٠هستید؟ -notification_antiadblock_message=این سایت پیام های هدŮمند برای کاربران Adblock Plus نشان Ů…ŰŚ دهد. آیا مایلید که Adblock Plus پیام های هدŮمند را از ŘŻŰŚŘŻ شما Ů…Ř®ŮŰŚ کند؟ -blocked_count_addendum=(همچنین Ůهرست ŘłŮŰŚŘŻ: ?1?, پنهان: ?2?) -subscription_invalid_location=مکان Ůارد شده برای Ůهرست Ůیلترها نامعتبر است. -type_label_image=تصŮیر -remove_subscription_warning=آیا برای Řذ٠اشتراک مطمئن هستید؟ -type_label_other=دیگر -mobile_menu_enable=ABP: Ůعال -type_label_media=چند رسانه ای -mobile_menu_disable_site=ABP: غیر Ůعال کردن در ?1? -elemhideGroup_title=Ů‚Ůانبن اختŮا عناصر -mobile_menu_enable_site=ABP: Ůعال کردن در ?1? -type_label_elemhide=پنهان -newGroup_title=گرŮه Ůیلتر جدید -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/overlay.dtd deleted file mode 100644 index c2a0e52..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "ب&له"> -<!ENTITY notification.button.no "&نه"> -<!ENTITY sync.label "همگام سازی تن&ظیمات Adblock Plus"> -<!ENTITY whitelist.site.label "غیرŮعال در ?1?"> -<!ENTITY filters.label "& تنظیمات Ůیلتر"> -<!ENTITY disable.label "غیر Ůعال کردن در همه جا"> -<!ENTITY objecttab.title "مسدŮŘŻ کردن"> -<!ENTITY objecttab.tooltip "جهت مسدŮŘŻ کردن با Adblock Plus اینجا کلیک کنید"> -<!ENTITY menuitem.label "ترجیŘات ŮŮŮ‚ ŘŞ&بلیغ شکن (Adblock Plus)"> -<!ENTITY objecttabs.label "نمایش زبانه در Ů…Ůارد Ůلش Ů &جاŮا"> -<!ENTITY sendReport.label "گزارش Ů…Ř´Ú©Ů„ در این &صŮŘه"> -<!ENTITY whitelist.page.label "غیرŮعال Ůقط در این صŮŘه"> -<!ENTITY context.image.label "Adblock Plus: سد تصاŮیر"> -<!ENTITY counthits.label "شمارش &تعداد Ůیلتر شده ها"> -<!ENTITY opensidebar.label "باز کردن Ů…Ůارد &قابل مسدŮŘŻ سازی"> -<!ENTITY notification.button.close "&بستن"> -<!ENTITY contribute.label "Ú©Ů…Ú© کردن به Adblock Plus"> -<!ENTITY toolbarbutton.label "ŮŮŮ‚ تبلیغ شکن یا Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus:سد قابک"> -<!ENTITY blocked.tooltip "Ů…Ůارد رد شده در این صŮŘه:"> -<!ENTITY hideplaceholders.label "پنهان کردن &متغیرها از عناصر مسدŮŘŻ شده"> -<!ENTITY showinstatusbar.label "نمایش در ن&Ůار Ůضعیت"> -<!ENTITY sidebar.title "Ů…Ůارد قابل مسدŮŘŻ شدن در صŮŘه جاری"> -<!ENTITY options.label "&گزینه ها"> -<!ENTITY context.object.label "Adblock Plus: سد شیء"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Ůعال شدن مجدد در این صŮŘه"> -<!ENTITY filters.tooltip "Ůعال ترین Ůیلترها:"> -<!ENTITY closesidebar.label "بستن Ů…Ůارد &قابل مسدŮŘŻ سازی"> -<!ENTITY showintoolbar.label "نمایش در نŮار ا&بزار"> -<!ENTITY status.tooltip "Ůضعیت:"> -<!ENTITY context.media.label "Adblock Plus: سد داده های چند رسانه ای"> -<!ENTITY subscription.update.label "به رŮز رسانی Ůیلتر"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sendReport.dtd deleted file mode 100644 index d8c2300..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "&برگشت"> -<!ENTITY issues.disabledgroups.description "اشتراک های Ůیلتر / دسته های Ůیلتر رŮبر٠غیر Ůعال هستند، آنها ممکن است هنŮز رŮŰŚ صŮŘه تاثیر داشته باشند:"> -<!ENTITY showData.label "نمایش داده های گزارش"> -<!ENTITY typeSelector.falsePositive.label "ŮŮŮ‚ تبلیغ شکن بیش از &ŘŘŻ Ů…Ůارد را مسدŮŘŻ Ů…ŰŚ کند."> -<!ENTITY issues.change.description "پیکربندی شما تغییر یاŮŘŞ. لطŮا صŮŘه را برای بررسی تغییرات تازه سازی کنید ٠اگر هنŮز با ŮجŮŘŻ تغییرات انجام شده Ů…Ř´Ú©Ů„ پابرجا بŮŘŻ اقدام به ارسال گزارش کنید."> -<!ENTITY email.label "Ůľ&ست الکترŮنیکی:"> -<!ENTITY issues.openPreferences.label "باز کردن تنظیمات Ůیلتر"> -<!ENTITY sendPage.confirmation "گزارش شما ذخیره Ř´ŘŻ. شما Ů…ŰŚ ŘŞŮانید در نشانی زیر به آن دسترسی پیدا کنید:"> -<!ENTITY copyLink.label "رŮ&نŮŘ´ŘŞ از پیŮند گزارش"> -<!ENTITY issues.nofilters.description "ŮŮŮ‚ تبلیغ شکن هیچ Ů…Ůردی را در صŮŘه جاری مسدŮŘŻ نکرده. مشکلی که شما مشاهده کرده اید به اŘتمال زیاد به ŮŮŮ‚ تبلیغ شکن ربطی ندارد."> -<!ENTITY sendPage.knownIssue "گزارشی که شما ارسال کردید هم اکنŮن شناخته شده است. اطلاعات بیشتر:"> -<!ENTITY typeSelector.other.description "اگر شما Ů…Ř´Ú©ŮÚ© هستید که این Ů…Ř´Ú©Ů„ از Ř®ŮŘŻ ŮŮŮ‚ تبلیغ شکن Ů…ŰŚ باشد نه از Ůیلترها، این گزینه را انتخاب کنید."> -<!ENTITY issues.disabledgroups.enable.label "Ůعال سازی اشتراک های Ůیلتر / دسته های Ůیلتر"> -<!ENTITY typeWarning.override.label "من Ů…ŘŞŮ&جه هستم Ů Ů…ŰŚ Ř®Ůاهم که گزارش را در هر صŮرت ارسال کنم"> -<!ENTITY issues.disabled.enable.label "Ůعال کردن ŮŮŮ‚ تبلیغ شکن"> -<!ENTITY update.fixed.description "به رŮز رسانی های Ůیلتر اŘتمالاً مشکلی را که شما گزارش داده اید را ŘŮ„ کرده. لطŮاً ŘŻŮباره صŮŘه را باز کنید،اگر Ů…Ř´Ú©Ů„ ŘŮ„ نشد ŘŻŮباره رŮŰŚ دکمه گزارش کلیک کنید."> -<!ENTITY anonymous.label "ا&رسال ناشناس"> -<!ENTITY reloadButton.label "تا&زه سازی صŮŘه"> -<!ENTITY recentReports.clear.label "پاک کردن تمامی &گزارشات"> -<!ENTITY typeSelector.description "این پنجره شما را برای ارائه ŰŚÚ© گزارش خطا ŮŮŮ‚ تبلیغ شکن راهنمایی Ů…ŰŚ کند. ابتدا نŮŘą مشکلی را که در این صŮŘه با آن رŮبر٠هستید را انتخاب کنید:"> -<!ENTITY screenshot.remove.label "&پاک کردن داده های Řساس"> -<!ENTITY issues.ownfilters.description "بعضی از پالایه های اعمالی در صŮŘه ŘŞŮسط کاربر تعری٠شده اند. لطŮا پالایه های که ممکن است باعث برŮز Ů…Ř´Ú©Ů„ Ř´ŮŘŻ را غیرŮعال کنید:"> -<!ENTITY update.inProgress.description "Adblock Plus باید اشتراکات Ůیلتر را بررسی نماید تا مطمئن Ř´ŮŘŻ Ů…Ř´Ú©Ů„ ŘŮ„ شده است. لطŮاً منتظر بمانید..."> -<!ENTITY sendPage.retry.label "ارسال مجدد"> -<!ENTITY data.label "داده های &گزارش:"> -<!ENTITY recentReports.label "گزارشات به تازگی ارسال شده شما"> -<!ENTITY typeWarning.description "شما Ů…ŰŚ Ř®Ůاهید که مشکلی کلی در Ů…Ůرد ŮŮŮ‚ تبلیغ شکن را گزارش دهید به جای اینکه مشکلی در رابطه با Ůیلتر گزارش دهید. لطŮا ŘŞŮجه داشته باشید که این Ř·Ůر مسائل بهتر است در [link]تالار ÚŻŮتمان ŮŮŮ‚ تبلیغ شکن[/link] بŘŘ« Ř´Ůند. شما باید Ůقط در صŮرتی از گزارش گر مشکلات استŮاده کنید که Ů…Ú©Ů…Ů„ بŘŘ« Ů…ŮجŮŘŻ باشد, Ú†Ůنکه (در تالار ÚŻŮتمان) هیچ Ú©Řł به گزارش شما ŘŞŮجه نمی کند مگر این که برای آن ŰŚÚ© پیŮند ارائه کنید. Ůقتی که گزارش را ارسال Ů…ŰŚ کنید پیŮند به Ř·Ůر Ř®Ůدکار ساخته ٠مهیا Ů…ŰŚ Ř´ŮŘŻ."> -<!ENTITY issues.disabled.description "ŮŮŮ‚ تبلیغ شکن هم اکنŮن غیرŮعال است. در این Ůضعیت هیچ Ů…Ůردی را مسدŮŘŻ نمی کند."> -<!ENTITY attachExtensions.label "ضمیمه کردن Ůهرستی ا&ز اŮزŮنه ها به گزارش در Ů…Ůاردی که اŮزŮنه های دیگر باعث ایجاد Ů…Ř´Ú©Ů„ باشند."> -<!ENTITY issues.nosubscriptions.add.label "اŮزŮدن اشتراک Ůیلتر"> -<!ENTITY issues.disabledfilters.enable.label "Ůعال کردن Ůیلتر"> -<!ENTITY issues.override.label "تنظیمات &پیکربندی صŘŰŚŘ Ř§ŘłŘŞŘŚ ادامه گزارش"> -<!ENTITY issues.nosubscriptions.description "شما در هیچ Ůهرست پالایه پیش ساخته ای مشترک نشده اید که به Ř·Ůر Ř®ŮŘŻ کار Ů…ŘŘŞŮای ناخŮاسته را پاک Ů…ŰŚ کنند."> -<!ENTITY typeSelector.falsePositive.description "اگر صŮŘه خالی از Ů…ŘŘŞŮای مهم Ů…ŰŚ Ř´ŮŘŻ یا نادرست نمایش داده Ů…ŰŚ Ř´ŮŘŻ یا Ů…ŮŮŮ‚ به عملکرد درست نیست این گزینه را انتخاب کنید."> -<!ENTITY typeSelector.other.label "سایر مشکلا&ŘŞ"> -<!ENTITY emailComment.label "ما شما را ŘŞŘ´ŮŰŚŮ‚ Ů…ŰŚ کنیم که ŰŚÚ© آدرس ایمیل معتبر از Ř®ŮŘŻ Ůارد کنید تا اگر ŘłŮالی بŮŘŻ ما بتŮانیم در آینده با شما ارتباط برقرار کنیم -در Ů…Ůرد گزارش شما. این به ما اجازه Ů…ŰŚ دهد که میزان همکاری شما را بسنجیم ٠اŮŮ„ŮŰŚŘŞ کار شما به مراŘŮ„ بالاتر برسد."> -<!ENTITY issues.whitelist.remove.label "Ůعال کردن مجدد ŮŮŮ‚ تبلیغ شکن در این صŮŘه"> -<!ENTITY outdatedSubscriptions.description "اشتراک Ůیلتر زیر برای Řداقل د٠هŮته به رŮز نشده است. لطŮاً این اشتراک را قبل از ارسال گزارش به رŮز کنید, شاید Ů…Ř´Ú©Ů„ ŘŮ„ Ř´ŮŘŻ."> -<!ENTITY dataCollector.description "لطŮا برای چند Ů„Řظه صبر کنید تا ŮŮŮ‚ تبلیغ شکن داده های درخŮاستی شما را جمع آŮری کند."> -<!ENTITY sendButton.label "ارسا&Ů„ گزارش"> -<!ENTITY comment.label "ن&ظر (اختیاری):"> -<!ENTITY sendPage.errorMessage "تلاش برای ارسال گزارش شکست Ř®Ůرد، شماره خطا "?1?". لطŮا مطمئن Ř´ŮŰŚŘŻ که به اینترنت متصل هستید ٠مجددا سعی کنید. اگر Ů…Ř´Ú©Ů„ همچنان ادامه دارد Ů…ŰŚ ŘŞŮانید در [link]تالار ÚŻŮتمان ŮŮŮ‚ تبلیغ شکن[/link] در Ř®Ůاست Ú©Ů…Ú© کنید."> -<!ENTITY showRecentReports.label "نمایش گزارشات ارسال شده اخیر"> -<!ENTITY commentPage.heading "Ůارد کردن نظر"> -<!ENTITY update.start.label "در Řال به رŮز رسانی"> -<!ENTITY issues.disabledfilters.description "Ůیلترهای رŮبر٠غیر Ůعال هستند، آنها ممکن است هنŮز رŮŰŚ صŮŘه تاثیر داشته باشند:"> -<!ENTITY screenshot.description "صŮŘات مشابه امکان دارد برای هر Ůرد به صŮرتی نامشابه نمایش داده Ř´Ůند. ضمیمه کردن ŰŚÚ© تصŮیر Ů…ŰŚ ŘŞŮاند Ú©Ů…Ú© زیادی در Ůهم Ů…Ř´Ú©Ů„ به ما بکند. شما Ů…ŰŚ ŘŞŮانید بخش هایی که ŘاŮŰŚ اطلاعات Řساس Ů…ŰŚ باشد را پاک کنید ٠همچنین بخش هایی که Ů…Ř´Ú©Ů„ در آنها نمŮدار شده را علامت گزاری کنید. برای این کار کلید متناظر را کلیک کنید ٠بخشی از تصŮیر را با Ů…ŮŘ´Ůاره انتخاب کنید."> -<!ENTITY screenshot.attach.label "اŮزŮدن ŘŞ&صŮیر صŮŘه به گزارش"> -<!ENTITY issues.whitelist.description "ŮŮŮ‚ تبلیغ شکن هم اکنŮن رŮŰŚ صŮŘه ای که شما در Ů…Ůرد آن گزارش Ů…ŰŚ دهید غیر Ůعال است. ابتدا آن را ŘŻŮباره Ůعال کنید ٠پس از تازه سازی صŮŘه، Ů…Ř´Ú©Ů„ را مجددا بررسی کنید."> -<!ENTITY typeSelector.falseNegative.label "ŮŮŮ‚ تبلیغ شکن &هیچ تبلیغی را مسدŮŘŻ نمی کند."> -<!ENTITY typeSelector.heading "انتخاب نŮŘą اشکال"> -<!ENTITY anonymity.warning "ما قادر نخŮاهیم بŮŘŻ که ŘŻŮباره بیاییم ٠اŘتمالاً این گزارش را در اŮŮ„ŮŰŚŘŞ های پایین تر قرار Ů…ŰŚ دهیم."> -<!ENTITY wizard.title "گزارش گر اشکالات"> -<!ENTITY issues.ownfilters.disable.label "غیر Ůعال کردن Ůیلتر"> -<!ENTITY commentPage.description "جعبه متن زیر به شما اجازه Ů…ŰŚ دهد که نظر Ř®ŮŘŻ را برای Ú©Ů…Ú© به درک ما در Ů…Ůرد Ů…Ř´Ú©Ů„ Ůارد کنید. این Ů…Ůرد اختیاری Ů…ŰŚ باشد Ůلی در صŮرتی که Ů…Ř´Ú©Ů„ آشکار نیست ŘŞŮصیه Ů…ŰŚ Ř´ŮŘŻ. شما همچنین Ů…ŰŚ ŘŞŮانید قبل از ارسال گزارش داده ها را بررسی کنید."> -<!ENTITY comment.lengthWarning "ŘŘŻ اکثر Ř·ŮŮ„ نظر 1000 Řر٠می باشد. Ůقط 1000 Řر٠اŮلی Ůرستاده Ů…ŰŚ Ř´ŮŘŻ."> -<!ENTITY typeSelector.falseNegative.description "اگر تبلیغات همچنان مشاهده Ů…ŰŚ Ř´Ůند با ŮجŮŘŻ این که ŮŮŮ‚ تبلیغ شکن Ůعال است این گزینه را انتخاب کنید"> -<!ENTITY sendPage.waitMessage "لطŮا صبر کنید تا ŮŮŮ‚ تبلیغ شکن گزارش شما را ارسال کند."> -<!ENTITY dataCollector.heading "به گزارشگر اشکالات Ř®ŮŘ´ آمدید"> -<!ENTITY screenshot.heading "اŮزŮدن تصŮیر از صŮŘه"> -<!ENTITY sendPage.heading "ارسال گزارش"> -<!ENTITY issues.subscriptionCount.description "به نظر Ů…ŰŚ رسد که شما در اشتراک های بسیار زیادی عض٠هستید. این عمل ŘŞŮصیه نمی Ř´ŮŘŻ زیرا که شانس ایجاد Ů…Ř´Ú©Ů„ بیشتر Ů…ŰŚ Ř´ŮŘŻ. بنابرین ما نمی ŘŞŮانیم گزارش های شما را قبŮŮ„ کنیم چرا که معلŮŮ… نیست که کدام اشتراک Ůیلتر نیاز به بررسی دارد. لطŮا همه آنها را به جز اشتراک های Ůاقعا لازم Řذ٠کنید ٠سپس امتŘان کنید که آیا این مسئله هنŮز هم پس از آن رخ Ů…ŰŚ دهد."> -<!ENTITY screenshot.mark.label "&علامت گزاری Ů…Ř´Ú©Ů„"> -<!ENTITY privacyPolicy.label "سیاست ŘŮظ اسرار"> -<!ENTITY issues.description "ŮŮŮ‚ تبلیغ شکن مشکلی را در پیکربندی های شما پیدا کرده که ممکن است Ů…Ř´Ú©Ů„ شما ناشی از آن باشد ٠یا این که ممکن است در رسیدگی به Ů…Ř´Ú©Ů„ شما اشکال ایجاد کند."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sidebar.dtd deleted file mode 100644 index 757ed0a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "مرز های اقلام Ůلش"> -<!ENTITY address.label "نشانی"> -<!ENTITY context.open.label "ÚŻŘ´Ůدن در زبانه نŮ"> -<!ENTITY type.label "نŮŘą"> -<!ENTITY tooltip.filterSource.label "متن Ůیلتر:"> -<!ENTITY noitems.label "هیچ Ů…Ůرد قابل انسدادی نیست"> -<!ENTITY filter.label "Ůیلتر"> -<!ENTITY tooltip.size.label "اندازه:"> -<!ENTITY reattach.label "Ůصل کردن ŘŻŮباره"> -<!ENTITY search.label "جستجŮ:"> -<!ENTITY docDomain.thirdParty "(شخص ثالث)"> -<!ENTITY filterSource.label "منبع Ůیلتر"> -<!ENTITY tooltip.docDomain.label "منبع نŮشتار:"> -<!ENTITY context.copy.label "کپی آدرس Ů…Ůرد"> -<!ENTITY tooltip.type.label "نŮŘą:"> -<!ENTITY context.disablefilter.label "غیر Ůعال کردن Ůیلتر ?1?"> -<!ENTITY context.copyFilter.label "رŮنŮŘ´ŘŞ Ůیلتر"> -<!ENTITY context.block.label "مسدŮŘŻ کردن این Ů…Ůرد"> -<!ENTITY context.enablefilter.label "Ůعال کردن Ůیلتر ?1?"> -<!ENTITY detach.label "قطع کردن"> -<!ENTITY whitelisted.label "صŮŘه Ůهرست ŘłŮŰŚŘŻ"> -<!ENTITY context.disablefilteronsite.label "غیر Ůعال کردن این Ůیلتر در ?1?"> -<!ENTITY detached.title "ŮŮŮ‚ تبلیغ شکن: Ů…Ůارد قابل انسداد (قطع شده)"> -<!ENTITY docDomain.firstParty "(شخص اŮŮ„)"> -<!ENTITY tooltip.type.whitelisted "(در Ůهرست ŘłŮŰŚŘŻ)"> -<!ENTITY tooltip.filter.label "Ůیلترهای مؤثر:"> -<!ENTITY tooltip.filter.disabled "(غیر Ůعال)"> -<!ENTITY context.editfilter.label "Ůیرایش Ůیلتر مؤثر"> -<!ENTITY tooltip.type.blocked "(مسدŮŘŻ شده)"> -<!ENTITY size.label "اندازه"> -<!ENTITY context.whitelist.label "اŮزŮدن قانŮن استثنا برای این Ů…Ůرد"> -<!ENTITY context.selectAll.label "انتخاب همه"> -<!ENTITY state.label "Ůضعیت"> -<!ENTITY docDomain.label "منبع نŮشتار"> -<!ENTITY tooltip.address.label "نشانی:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/subscriptionSelection.dtd deleted file mode 100644 index 18f3a61..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fa/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "اŮزŮدن اشتراک Ůیلتر "?1?" هم&چنین"> -<!ENTITY list.download.failed "ŮŮŮ‚ تبلیغ شکن Ů…ŮŮŮ‚ نشد که Ůهرست اشتراکات را بازیابی کند."> -<!ENTITY list.download.retry "تلاش مجدد"> -<!ENTITY title.label "عنŮان ا&شتراک:"> -<!ENTITY list.download.website "دیدن پایگاه ŘŞŘŘŞ شبکه"> -<!ENTITY supplementMessage "این اشتراک Ůیلتر به معنی آن است که با اشتراک Ůیلتر "?1?" استŮاده Ů…ŰŚ Ř´ŮŘŻ که شما هنŮز در آن مشترک نشده اید."> -<!ENTITY viewList.label "دیدن Ůیلترها"> -<!ENTITY visitHomepage.label "بازدید از صŮŘه خانگی"> -<!ENTITY addSubscription.label "اŮزŮدن اشتراک"> -<!ENTITY dialog.title "اŮزŮدن اشتراک پالایه ŮŮŮ‚ تبلیغ شکن"> -<!ENTITY location.label "نشانی &Ůهرست Ůیلترها:"> -<!ENTITY fromWeb.description "لطŮا تایید کنید که قصد اŮزŮدن این اشتراک Ůیلتر را دارید. شما Ů…ŰŚ ŘŞŮانید قبل از اŮزŮدن، نام ٠مسیر اشتراک را تغییر دهید."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/composer.dtd deleted file mode 100644 index 2713052..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "osoitteen &lopussa"> -<!ENTITY domainRestriction.label "R&ajoita verkkotunnukseen:"> -<!ENTITY collapse.default.no.label "Käytä oletusta (ei)"> -<!ENTITY firstParty.label "Va&in sivun ylläpitäjän"> -<!ENTITY preferences.label "&Näytä nykyiset suodattimet..."> -<!ENTITY pattern.label "Merkkijonon löytäminen"> -<!ENTITY thirdParty.label "Vain &muiden kuin sivun ylläpitäjän"> -<!ENTITY filter.label "Uusi &suodatin:"> -<!ENTITY collapse.label "&Romahduta estetyt:"> -<!ENTITY match.warning "Syöttämäsi merkkijono ei enää täsmää estettävän/sallittavan osoitteen kanssa; se ei vaikuta kyseiseen osoitteeseen."> -<!ENTITY anchor.start.label "osoi&tteen alussa"> -<!ENTITY matchCase.label "&Huomioi kirjainkoko"> -<!ENTITY custom.pattern.label "&Oma muokkaus:"> -<!ENTITY unselectAllTypes.label "Ă„lä valitse mitään"> -<!ENTITY type.whitelist.label "&Sallimisehto"> -<!ENTITY regexp.warning "Syöttämäsi merkkijono tulkitaan säännölliseksi lausekkeeksi. Monet säännölliset lausekkeet saattavat hidastaa selailua. Jos tarkoituksena ei ollut käyttää säännöllistä lauseketta, lisää tähtimerkki (*) lauseen loppuun."> -<!ENTITY dialog.title "Lisää Adblock Plus -suodatusehto"> -<!ENTITY basic.label "Perusnäkymä"> -<!ENTITY type.filter.label "&Estävä suodatin"> -<!ENTITY types.label "Käytä tyypeissä:"> -<!ENTITY shortpattern.warning "Syöttämäsi merkkijono on liian lyhyt optimoitavaksi. Useat tällaiset merkkijonot saattavat hidastaa selailua. On suositeltavaa, että valitset tälle suodattimelle pidemmän merkkijonon."> -<!ENTITY collapse.yes.label "Kyllä"> -<!ENTITY anchors.label "Hyväksy merkkijono vain:"> -<!ENTITY collapse.default.yes.label "Käytä oletusta (kyllä)"> -<!ENTITY domainRestriction.help "Määrittele yksi tai useampia verkkotunnuksia "|"-merkilla eroteltuna. Suodatin on käytössä vain näissä verkkotunnuksissa. Suodatinta ei käytetä verkkotunnuksella, jos sen edessä on "~"-merkki."> -<!ENTITY accept.label "Lisää suodatin"> -<!ENTITY options.label "Asetukset"> -<!ENTITY disabled.warning "Adblock Plus on tällä hetkellä poistettu käytöstä. Voit silti lisätä suodattimia mutta ne otetaan käyttöön vasta kun, [link]otat Adblockin Plussan käyttöön[/link]."> -<!ENTITY anchor.start.flexible.label "verkko&tunnuksen alussa."> -<!ENTITY collapse.no.label "Ei"> -<!ENTITY selectAllTypes.label "Valitse kaikki"> -<!ENTITY advanced.label "Edistyneempi näkymä"> -<!ENTITY pattern.explanation "Merkkijono voi olla mikä tahansa osoitteen osa. Tähtimerkki (*) toimii jokerimerkkinä. Suodatin toimii vain osoitteissa, joita merkkijono vastaa."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/filters.dtd deleted file mode 100644 index 5535b40..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Kaikki omat suodattimet korvataan valitun tiedoston sisällöllä. Haluatko varmasti jatkaa?"> -<!ENTITY slow.column "&Hitaat suodattimet"> -<!ENTITY enabled.column "Kä&ytössä"> -<!ENTITY subscription.lastDownload.checksumMismatch "Epäonnistui, tarkistussumma ei täsmää"> -<!ENTITY noFiltersInGroup.text "Valittu ryhmä on tyhjä"> -<!ENTITY subscription.actions.label "Toiminnot"> -<!ENTITY filter.selectAll.label "Valitse kaikki"> -<!ENTITY backupButton.label "&Varmuuskopioi ja palauta"> -<!ENTITY restore.minVersion.warning "Varoitus: tiedosto on luotu uudemmalla Adblock Plussan versiolla. Ennen kuin palautat tästä tiedostosta, on suositeltavaa päivittää uusimpaan Adblock Plussan versioon."> -<!ENTITY restore.error "Tiedoston tietoja ei voida käsitellä. Ehkä tämä ei ole Adblock Plus -varmuuskopiotiedosto?"> -<!ENTITY sort.ascending.label "&A > Z lajittelu"> -<!ENTITY sort.label "Lajitt&eluperuste"> -<!ENTITY subscription.source.label "Suodatintilaus"> -<!ENTITY hitcount.column "&Osumat"> -<!ENTITY noFilters.text "Omia suodattimia ei ole vielä."> -<!ENTITY backup.custom.title "Vain omat suodattimet"> -<!ENTITY subscription.external.label "Toisen laajennuksen päivättävä"> -<!ENTITY subscription.delete.label "Poista"> -<!ENTITY noGroupSelected.text "Suodatinryhmä on valittava, ennen kuin sen suodattimia voidaan näyttää."> -<!ENTITY filter.cut.label "Leikkaa"> -<!ENTITY restore.default.label "Palauta varmuuskopio: ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Lataa..."> -<!ENTITY subscriptions.tab.label "Suodatintilaukset"> -<!ENTITY sort.descending.label "&Z > A lajittelu"> -<!ENTITY filters.remove.warning "Haluatko varmasti poistaa kaikki valitut suodattimet?"> -<!ENTITY filter.delete.label "Poista"> -<!ENTITY addSubscriptionAdd.label "Lisää"> -<!ENTITY viewMenu.label "Näytä"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Peruuta"> -<!ENTITY subscription.enabled.label "Käytössä"> -<!ENTITY noSubscriptions.text "Suodatintilauksia ei ole vielä lisätty. Adblock Plus ei estä mitään - ilman suodattimia. Käytä "Lisää suodatintilaus" -painiketta lisätäksesi - joitakin."> -<!ENTITY subscription.update.label "Päivitä suodattimet"> -<!ENTITY dialog.title "Adblock Plus -suodatinasetukset"> -<!ENTITY addFilter.label "&Lisää suodatin"> -<!ENTITY subscription.minVersion.warning "Tämä suodatintilaus vaatii uudemman Adblock Plus -version, on suositeltavaa päivittää uusimpaan Adblock Plussan versioon."> -<!ENTITY subscription.lastDownload.invalidURL "Epäonnistui, kelvoton osoite"> -<!ENTITY backup.error "Tapahtui virhe kirjoitettaessa suodattimia tiedostoon. Varmista että tiedosto ei ole kirjoitussuojattu tai jonkin muun ohjelman käytössä."> -<!ENTITY filter.moveUp.label "Siirrä ylös"> -<!ENTITY addGroup.label "Li&sää suodatinryhmä"> -<!ENTITY filter.edit.label "Muokkaa"> -<!ENTITY subscription.showHideFilters.label "Näytä/piilota suodattimet"> -<!ENTITY acceptableAds2.label "S&alli osa ei-häiritsevästä mainonnasta"> -<!ENTITY addSubscriptionOther.label "Lisää jokin muu tilaus"> -<!ENTITY close.label "Sulje"> -<!ENTITY sort.none.label "Ei &lajiteltu"> -<!ENTITY filter.actions.label "Suodatintoiminnot"> -<!ENTITY filter.copy.label "Kopioi"> -<!ENTITY filter.moveDown.label "Siirrä alas"> -<!ENTITY filter.resetHitCounts.label "Nollaa osumatilastot"> -<!ENTITY readMore.label "Lue lisää"> -<!ENTITY subscription.moveUp.label "Siirrä ylös"> -<!ENTITY addSubscription.label "L&isää suodatintilaus"> -<!ENTITY subscription.homepage.label "Kotisivu"> -<!ENTITY backup.complete.title "Kaikki suodattimet ja tilaukset"> -<!ENTITY restore.own.label "Palauta oma varmuuskopio"> -<!ENTITY restore.complete.warning "Kaikki suodatinasetukset korvataan valitun tiedoston sisällöllä. Haluatko varmasti jatkaa?"> -<!ENTITY filters.tab.label "Omat suodattimet"> -<!ENTITY backup.label "Luo uusi varmuuskopio"> -<!ENTITY find.label "&Etsi"> -<!ENTITY subscription.moveDown.label "Siirrä alas"> -<!ENTITY subscription.lastDownload.connectionError "Epäonnistui, latausvirhe"> -<!ENTITY subscription.lastDownload.success "Onnistui"> -<!ENTITY subscription.lastDownload.invalidData "Epäonnistui, kelvoton suodatinlista"> -<!ENTITY filter.paste.label "Liitä"> -<!ENTITY subscription.disabledFilters.enable "Ota käytöstä poistetut suodattimet käyttöön"> -<!ENTITY lasthit.column "&Viimeisin osuma"> -<!ENTITY subscription.editTitle.label "Muokkaa otsikkoa"> -<!ENTITY subscription.disabledFilters.warning "Jotkin tämän suodatintilauksen suodattimista on poistettu käytössä."> -<!ENTITY filter.column "&Suodatusehto"> -<!ENTITY subscription.lastDownload.label "Viimeisin lataus:"> -<!ENTITY viewList.label "Näytä lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/firstRun.properties deleted file mode 100644 index 3e6d9bb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Selaa yksityisesti estämällä seuraaminen - piilota jälkesi mainosyhtiöiltä, jotka muuten seuraavat jokaista liikettäsi. -firstRun_toggle_off=OFF -firstRun_feature_tracking=Seuraamisen estäminen -firstRun_feature_malware=Haittaohjelmien estäminen -firstRun_title=Adblock Plus on asennettu -firstRun_toggle_on=ON -firstRun_acceptableAdsExplanation=Kannustamme verkkosivuja käyttämään yksinkertaisia mainoksia, jotka eivät häiritse. Tämän vuoksi olemme luoneet <a>tiukat ohjesäännöt</a> hyväksyttävien mainosten tunnistamiseksi, jotka näytetään oletusasetuksilla. Jos silti haluat estää kaikki mainokset, voit ottaa tämän <a>pois käytöstä</a> käden käänteessä. -firstRun_contributor_credits=Avustajat: -firstRun_dataCorruptionWarning=Näetkö tämän sivun koko ajan? <a>Napsauta tätä!</a> -firstRun_acceptableAdsHeadline=Häiritsevät mainokset estetään -firstRun_share=Kerro ystävillesi -firstRun_share_headline=<a>Auta meitä</a> tekemään verkosta parempi paikka -firstRun_feature_social_description=Poista sivustoilta automaattisesti sosiaalisen median painikkeet, kuten Facebookin tykkää -painikkeet, jotka seuraavat verkkokäyttäytymistäsi. -firstRun_filterlistsReinitializedWarning=Näyttäisi siltä, että ongelman takia kaikki suodattimet on poistettu ja niiden palauttaminen varmuuskopiosta epäonnistui. Tämän vuoksi kaikki suodattimien ja hyväksyttävien mainoksien asetukset on palautettu alkuarvoihin. Tarkasta suodatinlistat ja hyväksyttävien mainosten asetukset <a>Adblock Plussan asetuksista</a>. -firstRun_feature_malware_description=Tee selaimestasi turvallisempi estämällä verkko-osoitteita, joiden tiedetään sisältävän haitallisia ohjelmia. -firstRun_features=Adblock Plus voi tehdä muutakin kuin vain estää mainoksia -firstRun_donate=lahjoita -firstRun_donate_label=Tue projektiamme -firstRun_feature_social=Sosiaalisen median painikkeiden poistaminen -firstRun_legacySafariWarning=Käytössäsi on Safarin vanha versio, jota Adblock Plus ei tue. Se ei välttämättä toimi oikein tai saattaa heikentää joidenkin sivustojen käyttökokemusta. Suosittelemme vahvasti päivittämään Safari 6.1.1:een tai uudempaan (OSX 10.8 Mountain Lion), tai Safari 7.0.1:een tai uudempaan (OSX 10.9 Mavericks), tai käyttämään Mozilla Firefoxin, Google Chromen tai Operan uusinta versiota. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/global.properties deleted file mode 100644 index 843c5e6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ei estettäviä elementtejä avoimella sivulla -action3_tooltip=Napsauttamalla Adblock Plus otetaan käyttöön/poistetaan käytöstä. -notification_antiadblock_title=Piilotetaanko kohdennetut viestit? -type_label_script=komento -filter_elemhide_nocriteria=Piilotettavaa elementtiä määrittelevää tunnistetta ei annettu -blockingGroup_title=Estoehdot -whitelisted_tooltip=Adblock Plus on poistettu käytöstä tämänhetkisellä sivustolla. -type_label_stylesheet=tyyliohje -blocked_count_tooltip=?1? / ?2? -type_label_font=kirjaisin -type_label_popup=ponnahdusikkuna -filter_regexp_tooltip=Tämä suodatin on joko säännöllinen lauseke tai liian lyhyt optimoitavaksi. Liian monta tällaista suodatinta saattaa hidastaa selailuasi. -action0_tooltip=Napsautus avaa ponnahdusvalikon. Keskinapsautus ottaa käyttöön/poistaa käytöstä. -whitelisted_page=Adblock Plus on poistettu käytöstä avoimella sivulla -remove_group_warning=Haluatko varmasti poistaa tämän ryhmän? -action1_tooltip=Napsautus avaa/sulkee elementtilistan. Keskinapsautus ottaa käyttöön/poistaa käytöstä. -type_label_xmlhttprequest=XML-pyyntö -active_tooltip=Adblock Plus on aktiivinen, ?1? kpl suodatintilauksia ja ?2? kpl omia suodattimia käytössä. -type_label_document=dokumentti -type_label_object_subrequest=objektin alipyyntö -whitelistGroup_title=Poikkeusehdot -disabled_tooltip=Adblock Plus ei ole käytössä. -filter_elemhide_duplicate_id=Piilotettavalle elementille voidaan määritellä vain yksi tunniste (ID) -type_label_object=objekti -action2_tooltip=Napsautus avaa asetukset. Keskinapsautus ottaa käyttöön/poistaa käytöstä. -type_label_subdocument=kehys -clearStats_warning=Tämä nollaa kaikki osumatilastot ja poistaa osumien laskemisen käytöstä. Haluatko jatkaa? -notification_antiadblock_message=Tämän sivun tiedetään näyttäneen kohdennettuja viestejä Adblock Plussan käyttäjille. Haluatko, että Adblock Plus piilottaa kohdennetut viestit? -blocked_count_addendum=(sallituja: ?1?, piilotettuja: ?2?) -subscription_invalid_location=Suodatinlistan sijainti on joko kelvoton osoite tai tiedoston nimi. -type_label_image=kuva -remove_subscription_warning=Haluatko varmasti poistaa tämän tilauksen? -type_label_other=muu -mobile_menu_enable=ABP: Ota käyttöön -type_label_media=ääni/video -mobile_menu_disable_site=ABP: Ei käytössä osoitteessa ?1? -elemhideGroup_title=Elementtien piilotusehdot -mobile_menu_enable_site=ABP: Käytä osoitteessa ?1? -type_label_elemhide=piilotettu -newGroup_title=Uusi suodatinryhmä -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/overlay.dtd deleted file mode 100644 index a123135..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Kyllä"> -<!ENTITY notification.button.no "&Ei"> -<!ENTITY sync.label "&Synkronoi Adblock Plussan asetukset"> -<!ENTITY whitelist.site.label "Ei käytössä osoitteessa ?1?"> -<!ENTITY filters.label "&Suodatinasetukset"> -<!ENTITY disable.label "Poista käytöstä kaikkialla"> -<!ENTITY objecttab.title "Estä"> -<!ENTITY objecttab.tooltip "Estä tämä objekti Adblock Plussalla"> -<!ENTITY menuitem.label "A&dblock Plus - Asetukset"> -<!ENTITY objecttabs.label "&Korvake Flashin ja Javan yhteydessä"> -<!ENTITY sendReport.label "Raportoi onge&lma tällä sivulla"> -<!ENTITY whitelist.page.label "Ei käytössä tällä sivulla"> -<!ENTITY context.image.label "Adblock Plus: Estä kuva"> -<!ENTITY counthits.label "&Laske suodattimen osumat"> -<!ENTITY opensidebar.label "Näytä &elementit"> -<!ENTITY notification.button.close "&Sulje"> -<!ENTITY contribute.label "Avusta Adblock Plussaa"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Estä kehys"> -<!ENTITY blocked.tooltip "Tämän sivun estetyt elementit:"> -<!ENTITY hideplaceholders.label "P&iilota elementit, jotka sisältävät estettyjä elementtejä"> -<!ENTITY showinstatusbar.label "&Näytä tilarivillä"> -<!ENTITY sidebar.title "Estettävät elementit avoimella sivulla"> -<!ENTITY options.label "&Valinnat"> -<!ENTITY context.object.label "Adblock Plus: Estä kohde"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Ota tämä sivu uudestaan käyttöön"> -<!ENTITY filters.tooltip "Aktiivisimmat suodattimet:"> -<!ENTITY closesidebar.label "Sulj&e elementit"> -<!ENTITY showintoolbar.label "Nä&ytä työkalupalkilla"> -<!ENTITY status.tooltip "Tila:"> -<!ENTITY context.media.label "Adblock Plus: Estä ääni/kuva"> -<!ENTITY subscription.update.label "Päivitä suodattimet"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sendReport.dtd deleted file mode 100644 index 8c58fdc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "K&umoa"> -<!ENTITY issues.disabledgroups.description "Seuraavat suodatintilaukset / suodatinryhmät ovat poistettu käytöstä mutta niillä saatta silti olla vaikutusta tällä sivulla:"> -<!ENTITY showData.label "Näytä raportin tiedot"> -<!ENTITY typeSelector.falsePositive.label "Adb&lock Plus estää liikaa"> -<!ENTITY issues.change.description "Asetuksia on muutettu. Päivitä sivu testataksesi muutokset ja raportoi, jos muutokset eivät ratkaisseet ongelmaa."> -<!ENTITY email.label "Sä&hköposti:"> -<!ENTITY issues.openPreferences.label "Avaa suodatinasetukset"> -<!ENTITY sendPage.confirmation "Rapotti on tallennettu. Se löytyy tästä osoitteesta:"> -<!ENTITY copyLink.label "&Kopioi raportin linkki"> -<!ENTITY issues.nofilters.description "Adblock Plus ei estä mitään tällä sivulla. Kohdattu ongelma on todennäköisesti riippumaton Adblock Plussasta."> -<!ENTITY sendPage.knownIssue "Raportoimasi ongelma on todennäköisesti jo tiedossa. Lisätietoa:"> -<!ENTITY typeSelector.other.description "Valitse tämä vaihtoehto, jos epäilet ongelman olevan ennemminkin Adblock Plussassa kuin sen suodattimissa."> -<!ENTITY issues.disabledgroups.enable.label "Ota suodatintilaus / suodatinlista käyttöön"> -<!ENTITY typeWarning.override.label "&Ymmärrän ja haluan silti raportoida"> -<!ENTITY issues.disabled.enable.label "Ota Adblock Plus käyttöön tällä sivulla"> -<!ENTITY update.fixed.description "Suodatintilausten päivitykset todennäköisesti ratkaisivat raportoitavan ongelman. Päivitä sivusto ja yritä uudelleen. Mikäli ongelma säilyy, raportoi se."> -<!ENTITY anonymous.label "&Lähetä nimettömänä"> -<!ENTITY reloadButton.label "&Päivitä sivu"> -<!ENTITY recentReports.clear.label "Poista kaikki &raportit"> -<!ENTITY typeSelector.description "Tämä ikkuna ohjeistaa tarvittavat vaiheet Adblockin Plussan ongelmaraportin lähettämiseksi. Aluksi valitse onhelmatyyppi, jollaisen koet tällä sivulla:"> -<!ENTITY screenshot.remove.label "&Poista arkaluontoista tietoa"> -<!ENTITY issues.ownfilters.description "Osa tämän sivun suodattimista on käyttäjän määrittelemiä. Poista käytöstä suodattimet, jotka saattavat aiheuttaa ongelmia:"> -<!ENTITY update.inProgress.description "Adblock Plussan pitää päivittää suodatintilaukset varmistaakseen, että ongelmaa ei ole jo ratkottu. Odota hetki..."> -<!ENTITY sendPage.retry.label "Lähetä uudelleen"> -<!ENTITY data.label "Raportin tie&dot:"> -<!ENTITY recentReports.label "Näytä viimeksi lähetemäsi raportit"> -<!ENTITY typeWarning.description "Olet antanut ymmärtää halukkuutesi raportoida yleisestä virheestä Adblock Plussassa suodattimien sijaan. Huomaa että tällaiset raportit olisi parasta jättää [link]Adblock Plussan foorumeille[/link]. Ongelmaraportteria tulisi käyttää vain täydentämään olevassa olevaa keskutelua, sillä kukaan ei huomioi raporttiasi, jos et anna siihen linkitystä. Rapotoidessa annetaan automaattisesti luotu linkki."> -<!ENTITY issues.disabled.description "Adblock Plus on poissa käytöstö tällä sivulla, se ei estä mitään."> -<!ENTITY attachExtensions.label "L&iitä lista aktiivisista laajennuksista rapottiin siltä varalta, että jokin niistä on ongelma syy"> -<!ENTITY issues.nosubscriptions.add.label "Lisää suodatintilaus"> -<!ENTITY issues.disabledfilters.enable.label "Ota suodatin käyttöön"> -<!ENTITY issues.override.label "Asetukset ovat oikein, &jatka raportoimista"> -<!ENTITY issues.nosubscriptions.description "Näyttäisi siltä, että et ole tilannut yhtään valmiiksi tehtyä suodatinlistaa, jotka poistavat automaattisesti sivuilta epämieluisaa sisältöä."> -<!ENTITY typeSelector.falsePositive.description "Valitse tämä vaihtoehto, jos sivulta puuttu olennaista sisältöä tai se näkyy väärin. Voit päätellä onko Adblock Plus syy ongelmaan ottamalla sen väliaikaisesti pois kaytöstä."> -<!ENTITY typeSelector.other.label "&Muu ongelma"> -<!ENTITY emailComment.label "On suositeltavaa antaa voimassa oleva sähköpostiosoite, jotta sinuun voidaan ottaa yhteyttä raporttiin liittyvissä kysymyksissä. Tämä mahdollistaa myös avustuksiesi tunnistamisen ja priorisoinnin korkeammalle."> -<!ENTITY issues.whitelist.remove.label "Ota Adblock Plus uudestaan käyttöön tällä sivulla"> -<!ENTITY outdatedSubscriptions.description "Seuraavia suodatintilauksia ei ole päivitetty ainakaan kahteen viikkoon. Päivitä nämä tilaukset ennen raportin lähettämistä, sillä ongelma on saattaanut jo ratketa."> -<!ENTITY dataCollector.description "Odota hetki, kun Adblock Plus kerää tarvittavia tietoja."> -<!ENTITY sendButton.label "&Lähetä raportti"> -<!ENTITY comment.label "Kommentti (&valinnainen):"> -<!ENTITY sendPage.errorMessage "Raportin lähettäminen epäonnistui virhekoodilla "?1?". Varmista että olet yhteydessä Internettiin ja yritä uudelleen. Mikäli ongelma ei katoa, pyydä apua osoitteesta [link]Adblock Plus forum[/link]."> -<!ENTITY showRecentReports.label "Näytä viimeksi lähetetyt raportit"> -<!ENTITY commentPage.heading "Lisää kommentti"> -<!ENTITY update.start.label "Aloita päivittäminen nyt"> -<!ENTITY issues.disabledfilters.description "Seuraavat suodattimet on poistettu käytöstä mutta niillä saatta silti olla vaikutusta tällä sivulla:"> -<!ENTITY screenshot.description "Sama sivu saattaa näyttää erilaiselta eri ihmisillä. Ongelman ymmärtämistä saattaa helpottaa, jos liität raporttiisi kuvakaappauksen. Voit myös poistaa arkaluontoista tietoa tai merkitä ongelman kannalta huomattavia kohtia. Tehdäksesi tämän napsauta vastaava painiketta ja valitse kuvan kohta hiirellä."> -<!ENTITY screenshot.attach.label "&Liitä sivun kuva raporttiin"> -<!ENTITY issues.whitelist.description "Adblock Plus on tällä hetkellä poistettu käytöstä sivulla, jota olet raportoimassa. Ota se käyttöön ja ennen raportointia päivitä sivu. Tämä auttaa rapotin tutkimista."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus &ei estä mainosta"> -<!ENTITY typeSelector.heading "Valitse ongelman tyyppi"> -<!ENTITY anonymity.warning "Sinuun ei voida ottaa yhteyttä ja todennäköisesti priorisoimme raportin alemmas."> -<!ENTITY wizard.title "Ongelman raportointi"> -<!ENTITY issues.ownfilters.disable.label "Poista suodatin käytöstä"> -<!ENTITY commentPage.description "Alla olevaan tekstikenttään voit syöttää kommentin (englanniksi) helpottaaksesi meitä ymmärtämään ongelman. Tämä vaihe on valinnainen mutta suositeltava, jos ongelma ei ole ilmiselvä. Voit myös käydä läpi raportin tiedot ennen sen lähettämistä."> -<!ENTITY comment.lengthWarning "Kommentin pituus ylittää 1000 merkkiä. Vain ensimmäiset 1000 merkkiä lähetetään."> -<!ENTITY typeSelector.falseNegative.description "Valitse tämä vaihtoehto, jos mainos näkyy vaikka Adblock Plus on käytössä."> -<!ENTITY sendPage.waitMessage "Odota, Adblock Plus lähettää raporttia."> -<!ENTITY dataCollector.heading "Tervetuloa ongelman raportoijaan"> -<!ENTITY screenshot.heading "Liitä kuvakaappaus"> -<!ENTITY sendPage.heading "Raportin lähettäminen"> -<!ENTITY issues.subscriptionCount.description "Näyttäisi siltä, että liian monta suodatintilausta on tilattuna. Tällainen järjestely ei ole suositeltavaa, sillä se nostaa ongelmien todennäköisyyttä. Emme voi hyväksyä ongelmaraporttia, koska jää epäselväksi kenen suodatintilauksen tekijän on ryhdyttävä korjaustoimiin. Poista kaikki paitsi välttämättömät suodatintilaukset ja kokeile esiintyykö ongelma yhä."> -<!ENTITY screenshot.mark.label "&Merkkaa ongelma"> -<!ENTITY privacyPolicy.label "Yksityisyyskäytäntö"> -<!ENTITY issues.description "Adblock Plus on havainnut ongelmia asetuksissa, jotka saattavat aiheuttaa tämän ongelman tai tehdä raportin tutkimisesta vaikeaa."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sidebar.dtd deleted file mode 100644 index 5a6c4d0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Välkytä reunoja"> -<!ENTITY address.label "Osoite"> -<!ENTITY context.open.label "Avaa uuteen välilehteen"> -<!ENTITY type.label "Tyyppi"> -<!ENTITY tooltip.filterSource.label "Suodattimen lähde:"> -<!ENTITY noitems.label "Ei estettäviä elementtejä"> -<!ENTITY filter.label "Suodatin"> -<!ENTITY tooltip.size.label "Koko:"> -<!ENTITY reattach.label "Kiinnitä"> -<!ENTITY search.label "&Etsi:"> -<!ENTITY docDomain.thirdParty "(kolmas osapuoli)"> -<!ENTITY filterSource.label "Suodattimen lähde"> -<!ENTITY tooltip.docDomain.label "Dokumentin lähde:"> -<!ENTITY context.copy.label "Kopioi osoite"> -<!ENTITY tooltip.type.label "Tyyppi:"> -<!ENTITY context.disablefilter.label "Poista käytöstä suodatin: ?1?"> -<!ENTITY context.copyFilter.label "Kopioi suodatin"> -<!ENTITY context.block.label "Estä elementti"> -<!ENTITY context.enablefilter.label "Palauta suodatin: ?1?"> -<!ENTITY detach.label "Irrota"> -<!ENTITY whitelisted.label "Sallittu sivu"> -<!ENTITY context.disablefilteronsite.label "Poista tämä suodatin käytöstä osoiteessa ?1?"> -<!ENTITY detached.title "Adblock Plus: Estettävien elementtien lista (irrotettu)"> -<!ENTITY docDomain.firstParty "(ensimmäinen osapuoli)"> -<!ENTITY tooltip.type.whitelisted "(sallittu)"> -<!ENTITY tooltip.filter.label "Vaikuttava suodatin:"> -<!ENTITY tooltip.filter.disabled "(poistettu käytöstä)"> -<!ENTITY context.editfilter.label "Muokkaa suodatinta"> -<!ENTITY tooltip.type.blocked "(estetty)"> -<!ENTITY size.label "Koko"> -<!ENTITY context.whitelist.label "Lisää poikkeusehto"> -<!ENTITY context.selectAll.label "Valitse kaikki"> -<!ENTITY state.label "Tila"> -<!ENTITY docDomain.label "Dokumentin lähde"> -<!ENTITY tooltip.address.label "Osoite:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/subscriptionSelection.dtd deleted file mode 100644 index 694748c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fi/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Lisää myös suodatintilaus "?1?""> -<!ENTITY list.download.failed "Suodatinlistan noutaminen epäonnistui."> -<!ENTITY list.download.retry "Yritä uudestaan"> -<!ENTITY title.label "Tilauksen nimi:"> -<!ENTITY list.download.website "Näytä verkkosivu"> -<!ENTITY supplementMessage "Tämä suodatintilaus on tarkoitettu käytettäväksi yhdessä suodatintilauksen "?1?" kanssa, jota et vielä käytä."> -<!ENTITY viewList.label "Näytä suodattimet"> -<!ENTITY visitHomepage.label "Vieraile kotisivulla"> -<!ENTITY addSubscription.label "Lisää suodatintilaus"> -<!ENTITY dialog.title "Lisää Adblock Plus -suodatintilaus"> -<!ENTITY location.label "Suodatinlistan sijainti:"> -<!ENTITY fromWeb.description "Vahvista tämän suodatintilauksen lisääminen. Voit muuttaa tilauksen nimeä tai sijaintia ennen sen lisäämistä."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/composer.dtd deleted file mode 100644 index 285f961..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "e&n fin d'adresse"> -<!ENTITY domainRestriction.label "Restrein&dre au domaine :"> -<!ENTITY collapse.default.no.label "Utiliser le comportement par dĂ©faut (non)"> -<!ENTITY firstParty.label "Provenant unique&ment du mĂŞme domaine"> -<!ENTITY preferences.label "&Afficher les filtres existants…"> -<!ENTITY pattern.label "Proposition de motifs"> -<!ENTITY thirdParty.label "Provenan&t uniquement d'autres domaines"> -<!ENTITY filter.label "Nouveau &filtre :"> -<!ENTITY collapse.label "&RĂ©utiliser l'espace de l'Ă©lĂ©ment filtrĂ© :"> -<!ENTITY match.warning "Le motif que vous avez saisi ne correspondra plus Ă l'adresse devant ĂŞtre bloquĂ©e/autorisĂ©e et n'aura plus aucun effet sur elle."> -<!ENTITY anchor.start.label "en dĂ©b&ut d'adresse"> -<!ENTITY matchCase.label "Sensible Ă la &casse"> -<!ENTITY custom.pattern.label "&PersonnalisĂ© :"> -<!ENTITY unselectAllTypes.label "Ne rien sĂ©lectionner"> -<!ENTITY type.whitelist.label "Règle d'e&xception"> -<!ENTITY regexp.warning "Le motif que vous avez indiquĂ© sera interprĂ©tĂ© comme une expression rĂ©gulière qui ne peut ĂŞtre traitĂ©e efficacement par Adblock Plus et ralentira votre navigation. Si vous ne souhaitiez pas utiliser d'expression rĂ©gulière, veuillez ajouter un * Ă la fin du motif."> -<!ENTITY dialog.title "Ajouter une règle de filtrage Adblock Plus"> -<!ENTITY basic.label "Affichage standard"> -<!ENTITY type.filter.label "Filtre &bloquant"> -<!ENTITY types.label "Appliquer aux types suivants :"> -<!ENTITY shortpattern.warning "Le motif que vous avez indiquĂ© est trop court pour ĂŞtre optimisĂ© et ralentira votre navigation. Nous vous recommandons de choisir une chaĂ®ne de caractères plus longue pour ce filtre afin de permettre Ă Adblock Plus de le traiter plus efficacement."> -<!ENTITY collapse.yes.label "Oui"> -<!ENTITY anchors.label "Accepter le motif uniquement :"> -<!ENTITY collapse.default.yes.label "Utiliser le comportement par dĂ©faut (oui)"> -<!ENTITY domainRestriction.help "SpĂ©cifiez un ou plusieurs domaines sĂ©parĂ©s par le symbole « | », le filtre ne s'appliquera alors qu'aux domaines indiquĂ©s. Le symbole « ~ » prĂ©cĂ©dant un nom de domaine signifie que le filtre ne devra pas ĂŞtre appliquĂ© Ă ce domaine."> -<!ENTITY accept.label "Ajouter le filtre"> -<!ENTITY options.label "Options"> -<!ENTITY disabled.warning "Adblock Plus est actuellement dĂ©sactivĂ©e. Vous pouvez continuer Ă ajouter des filtres mais ils ne seront pas appliquĂ©s tant que vous n'aurez pas [link]activĂ© Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "a&u dĂ©but du nom de domaine"> -<!ENTITY collapse.no.label "Non"> -<!ENTITY selectAllTypes.label "Tout sĂ©lectionner"> -<!ENTITY advanced.label "Affichage avancĂ©"> -<!ENTITY pattern.explanation "Le motif peut ĂŞtre une partie de l'adresse ; le symbole * jouant le rĂ´le de joker. Le filtre ne sera appliquĂ© qu'aux adresses coĂŻncidant avec le motif."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/filters.dtd deleted file mode 100644 index 6583fd9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Tous vos filtres personnalisĂ©s seront remplacĂ©s par le contenu du fichier sĂ©lectionnĂ©. Voulez-vous continuer ?"> -<!ENTITY slow.column "Fi&ltres lents"> -<!ENTITY enabled.column "A&ctivĂ©"> -<!ENTITY subscription.lastDownload.checksumMismatch "Échec, le checksum ne correspond pas !"> -<!ENTITY noFiltersInGroup.text "Le groupe sĂ©lectionnĂ© est vide."> -<!ENTITY subscription.actions.label "Actions"> -<!ENTITY filter.selectAll.label "Tout sĂ©lectionner"> -<!ENTITY backupButton.label "&Sauvegarde et restauration"> -<!ENTITY restore.minVersion.warning "Attention : le fichier a Ă©tĂ© créé avec une nouvelle version d'Adblock Plus. Vous devriez mettre Ă jour et passer Ă la dernière version d'Adblock Plus avant de restaurer vos donnĂ©es avec ce fichier."> -<!ENTITY restore.error "Les donnĂ©es de ce fichier ne peuvent ĂŞtre traitĂ©es, il est possible qu'il ne s'agisse pas d'un fichier de donnĂ©es d'Adblock Plus."> -<!ENTITY sort.ascending.label "Ordre de &A > Z"> -<!ENTITY sort.label "&Trier par"> -<!ENTITY subscription.source.label "Liste de filtres"> -<!ENTITY hitcount.column "Co&mpteur"> -<!ENTITY noFilters.text "Vous n'avez pas encore de filtres personnalisĂ©s."> -<!ENTITY backup.custom.title "Uniquement les filtres personnalisĂ©s"> -<!ENTITY subscription.external.label "Mis Ă jour par une autre extension"> -<!ENTITY subscription.delete.label "Supprimer"> -<!ENTITY noGroupSelected.text "Vous devez choisir un groupe de filtres avant de pouvoir afficher ses filtres."> -<!ENTITY filter.cut.label "Couper"> -<!ENTITY restore.default.label "Restaurer la sauvegarde du ?1?"> -<!ENTITY subscription.lastDownload.inProgress "TĂ©lĂ©chargement en cours…"> -<!ENTITY subscriptions.tab.label "Abonnements Ă des filtres"> -<!ENTITY sort.descending.label "Ordre de &Z > A"> -<!ENTITY filters.remove.warning "Souhaitez-vous vraiment supprimer tous les filtres sĂ©lectionnĂ©s ?"> -<!ENTITY filter.delete.label "Supprimer"> -<!ENTITY addSubscriptionAdd.label "Ajouter"> -<!ENTITY viewMenu.label "Affichage"> -<!ENTITY subscription.lastDownload.unknown "Inconnu"> -<!ENTITY addSubscriptionCancel.label "Annuler"> -<!ENTITY subscription.enabled.label "ActivĂ©"> -<!ENTITY noSubscriptions.text "Vous n'avez pas encore ajoutĂ© d'abonnement. Adblock Plus ne bloquera rien sans filtres, veuillez utiliser « Ajouter un abonnement » pour en ajouter."> -<!ENTITY subscription.update.label "Mettre Ă jour les filtres"> -<!ENTITY dialog.title "PrĂ©fĂ©rences Adblock Plus"> -<!ENTITY addFilter.label "Ajouter u&n filtre"> -<!ENTITY subscription.minVersion.warning "Cet abonnement nĂ©cessite une version plus rĂ©cente d'Adblock Plus, vous devriez installer la dernière version d'Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Échec, ceci n'est pas une adresse valide !"> -<!ENTITY backup.error "Une erreur s'est produite lors de l'Ă©criture des filtres dans le fichier. Assurez-vous que ce fichier n'est pas protĂ©gĂ© en Ă©criture ou utilisĂ© par une autre application."> -<!ENTITY filter.moveUp.label "Monter"> -<!ENTITY addGroup.label "Ajouter un &groupe de filtres"> -<!ENTITY filter.edit.label "Modifier"> -<!ENTITY subscription.showHideFilters.label "Afficher/masquer les filtres"> -<!ENTITY acceptableAds2.label "Autor&iser certaines publicitĂ©s non-intrusives"> -<!ENTITY addSubscriptionOther.label "Ajouter un autre abonnement"> -<!ENTITY close.label "Fermer"> -<!ENTITY sort.none.label "&Non triĂ©"> -<!ENTITY filter.actions.label "Actions sur filtre"> -<!ENTITY filter.copy.label "Copier"> -<!ENTITY filter.moveDown.label "Descendre"> -<!ENTITY filter.resetHitCounts.label "RĂ©initialiser le compteur"> -<!ENTITY readMore.label "En apprendre davantage"> -<!ENTITY subscription.moveUp.label "Monter"> -<!ENTITY addSubscription.label "S'abonner Ă la liste de &filtres"> -<!ENTITY subscription.homepage.label "Page d'accueil"> -<!ENTITY backup.complete.title "Tous les filtres et abonnements"> -<!ENTITY restore.own.label "Restaurer une sauvegarde personnelle"> -<!ENTITY restore.complete.warning "Toutes vos prĂ©fĂ©rences pour les filtres seront remplacĂ©es par le contenu du fichier sĂ©lectionnĂ©. Voulez-vous continuer ?"> -<!ENTITY filters.tab.label "Filtres personnalisĂ©s"> -<!ENTITY backup.label "CrĂ©er une nouvelle sauvegarde"> -<!ENTITY find.label "Re&chercher"> -<!ENTITY subscription.moveDown.label "Descendre"> -<!ENTITY subscription.lastDownload.connectionError "Échec, erreur lors du tĂ©lĂ©chargement !"> -<!ENTITY subscription.lastDownload.success "RĂ©ussie"> -<!ENTITY subscription.lastDownload.invalidData "Échec, ceci n'est pas une liste de filtres valide !"> -<!ENTITY filter.paste.label "Coller"> -<!ENTITY subscription.disabledFilters.enable "Activer les filtres dĂ©sactivĂ©s"> -<!ENTITY lasthit.column "&Dernière utilisation"> -<!ENTITY subscription.editTitle.label "Modifier le nom"> -<!ENTITY subscription.disabledFilters.warning "Certains filtres de cet abonnement sont dĂ©sactivĂ©s."> -<!ENTITY filter.column "Règle de &filtrage"> -<!ENTITY subscription.lastDownload.label "Dernière mise Ă jour :"> -<!ENTITY viewList.label "Afficher la liste"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/firstRun.properties deleted file mode 100644 index ddc8c7b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Naviguer incognito en dĂ©sactivant le suivi, en masquant vos traces aux publicistes qui traqueraient vos faits et gestes. -firstRun_toggle_off=INACTIF -firstRun_feature_tracking=DĂ©sactiver l'espionnage -firstRun_feature_malware=Blocage des logiciels malveillants -firstRun_title=Adblock Plus a Ă©tĂ© installĂ©e -firstRun_toggle_on=ACTIF -firstRun_acceptableAdsExplanation=Nous aimerions encourager les sites Web Ă utiliser de la publicitĂ© honnĂŞte et discrète. C'est pourquoi nous avons Ă©tabli <a>des lignes directrices strictes</a> afin d'identifier les annonces acceptables, par dĂ©faut. Si vous souhaitez tout de mĂŞme bloquer toutes les publicitĂ©s, vous pouvez <a>dĂ©sactiver</a> cela dans les paramètres en quelques secondes. -firstRun_contributor_credits=CrĂ©dits des contributeurs -firstRun_dataCorruptionWarning=Cette page s'affiche-t-elle encore ? <a>Cliquez ici !</a> -firstRun_acceptableAdsHeadline=Les pubs seront Ă prĂ©sent bloquĂ©es -firstRun_share=Parlez-en Ă vos amis -firstRun_share_headline=<a>Donnez-nous un coup de main</a> Ă rendre le Web meilleur -firstRun_feature_social_description=Se dĂ©barrasser automatiquement des boutons de rĂ©seaux sociaux tels que les « J'aime » Facebook qui apparaissent sur les pages Web et suivent votre comportement. -firstRun_filterlistsReinitializedWarning=Il semblerait qu'Ă cause d'un problème, tous les filtres aient Ă©tĂ© supprimĂ©s et que nous n'ayons Ă©tĂ© en mesure de rĂ©tablir une sauvegarde. C'est pourquoi nous avons Ă©tĂ© contraints de rĂ©initialiser vos filtres et les paramètres des publicitĂ©s acceptables. Veuillez vĂ©rifier vos listes de filtres et les paramètres de publicitĂ©s acceptables dans les <a>options d'Adblock Plus</a>. -firstRun_feature_malware_description=Rendre votre navigation plus sĂ©curisĂ©e en bloquant les domaines malveillants connus. -firstRun_features=Adblock Plus peut faire plus que bloquer les pubs -firstRun_donate=Faire un don -firstRun_donate_label=Soutenir notre projet -firstRun_feature_social=Supprimer les boutons des rĂ©seaux sociaux -firstRun_legacySafariWarning=Vous utilisez une vieille version de Safari incompatible avec Adblock Plus. Elle pourra ne pas bien fonctionner ou nuire Ă l'expĂ©rience utilisateur sur certains sites Web. Nous recommandons fortement de mettre Ă jour Safari, soit vers la version 6.1.1 ou supĂ©rieure (sur OS X 10.8 Mountain Lion), soit vers la version 7.0.1 ou supĂ©rieure (sur OS X 10.9 Mavericks) ou d'utiliser la dernière version de Mozilla Firefox, Google Chrome ou Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/global.properties deleted file mode 100644 index 351b82d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Aucun Ă©lĂ©ment filtrable sur cette page -action3_tooltip=Cliquez pour activer/dĂ©sactiver Adblock Plus. -notification_antiadblock_title=Cacher les messages ciblĂ©s ? -type_label_script=script -filter_elemhide_nocriteria=Aucun critère spĂ©cifiĂ© pour reconnaĂ®tre l'Ă©lĂ©ment Ă masquer -blockingGroup_title=Règles de blocage de publicitĂ©s -whitelisted_tooltip=Adblock Plus est dĂ©sactivĂ©e pour cette page. -type_label_stylesheet=feuille de styles -blocked_count_tooltip=?1? bloquĂ©s sur ?2? -type_label_font=police -type_label_popup=FenĂŞtre popup -filter_regexp_tooltip=Ce filtre est soit une expression rĂ©gulière, soit trop court pour ĂŞtre optimisĂ©. Un excès de ce genre de filtres pourrait ralentir votre navigation. -action0_tooltip=Cliquez pour afficher le menu contextuel, clic du milieu pour activer/dĂ©sactiver. -whitelisted_page=Adblock Plus a Ă©tĂ© dĂ©sactivĂ©e pour cette page -remove_group_warning=Souhaitez-vous vraiment supprimer ce groupe ? -action1_tooltip=Cliquez pour ouvrir/fermer la liste des Ă©lĂ©ments filtrables, clic du milieu pour activer/dĂ©sactiver. -type_label_xmlhttprequest=requĂŞte XML -active_tooltip=Adblock Plus est active, ?1? abonnement(s) et ?2? filtre(s) personnel(s) utilisĂ©(s). -type_label_document=document -type_label_object_subrequest=sous-requĂŞte objet -whitelistGroup_title=Règles d'exceptions -disabled_tooltip=Adblock Plus est dĂ©sactivĂ©e. -filter_elemhide_duplicate_id=Il n'est possible de spĂ©cifier qu'une ID de l'Ă©lĂ©ment Ă masquer -type_label_object=objet -action2_tooltip=Cliquez pour ouvrir les prĂ©fĂ©rences, clic du milieu pour activer/dĂ©sactiver. -type_label_subdocument=cadre -clearStats_warning=Cela va remettre Ă zĂ©ro les statistiques d'utilisation de filtre et dĂ©sactiver le comptage d'utilisation de filtre. Souhaitez-vous vraiment faire cela ? -notification_antiadblock_message=Ce site est connu pour afficher des messages destinĂ©s aux utilisateurs d'Adblock Plus. Voulez-vous qu'Adblock Plus cache ces messages ? -blocked_count_addendum=(Ă©galement en liste blanche : ?1?, masquĂ©(s) : ?2?) -subscription_invalid_location=L'adresse indiquant l'emplacement de la liste de filtres n'est ni une URL valide, ni un nom de fichier valide. -type_label_image=image -remove_subscription_warning=Souhaitez-vous vraiment supprimer cet abonnement ? -type_label_other=autre -mobile_menu_enable=ABP : Activer -type_label_media=audio/vidĂ©o -mobile_menu_disable_site=ABP : DĂ©sactiver pour ?1? -elemhideGroup_title=Règles de masquage d'Ă©lĂ©ments -mobile_menu_enable_site=ABP : Activer pour ?1? -type_label_elemhide=masquĂ© -newGroup_title=Nouveau groupe de filtres -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/overlay.dtd deleted file mode 100644 index c07c593..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Oui"> -<!ENTITY notification.button.no "&Non"> -<!ENTITY sync.label "S&ynchroniser les paramètres d'Adblock Plus"> -<!ENTITY whitelist.site.label "DĂ©sactiver pour ?1?"> -<!ENTITY filters.label "PrĂ©&fĂ©rences de filtre"> -<!ENTITY disable.label "DĂ©sactiver partout"> -<!ENTITY objecttab.title "Bloquer"> -<!ENTITY objecttab.tooltip "Cliquer ici afin qu'Adblock Plus bloque cet objet"> -<!ENTITY menuitem.label "PrĂ©fĂ©rences d'Ad&block Plus"> -<!ENTITY objecttabs.label "Afficher une Ă©tiquette pour Flash et &Java"> -<!ENTITY sendReport.label "&Signaler un problème sur cette page"> -<!ENTITY whitelist.page.label "DĂ©sactiver pour cette page uniquement"> -<!ENTITY context.image.label "Bloquer l'image avec Adblock Plus"> -<!ENTITY counthits.label "Co&mpter la frĂ©quence d'utilisation de filtre"> -<!ENTITY opensidebar.label "Ouvrir la liste des Ă©lĂ©&ments filtrables"> -<!ENTITY notification.button.close "&Fermer"> -<!ENTITY contribute.label "Contribuer Ă Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Bloquer le cadre avec Adblock Plus"> -<!ENTITY blocked.tooltip "ÉlĂ©ments bloquĂ©s sur cette page :"> -<!ENTITY hideplaceholders.label "RĂ©&utiliser l'espace laissĂ© par les Ă©lĂ©ments bloquĂ©s"> -<!ENTITY showinstatusbar.label "Afficher da&ns la barre d'Ă©tat"> -<!ENTITY sidebar.title "ÉlĂ©ments filtrables dans la page courante"> -<!ENTITY options.label "&Options"> -<!ENTITY context.object.label "Bloquer l'objet avec Adblock Plus"> -<!ENTITY context.removeWhitelist.label "Activer Ă nouveau Adblock Plus pour cette page"> -<!ENTITY filters.tooltip "Filtres les plus utilisĂ©s :"> -<!ENTITY closesidebar.label "Fer&mer la liste des Ă©lĂ©ments filtrables"> -<!ENTITY showintoolbar.label "Afficher dans la barre d'&outils"> -<!ENTITY status.tooltip "État :"> -<!ENTITY context.media.label "Bloquer les vidĂ©os/audios avec Adblock Plus"> -<!ENTITY subscription.update.label "Mettre Ă jour les filtres"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sendReport.dtd deleted file mode 100644 index ee5069b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "A&nnuler"> -<!ENTITY issues.disabledgroups.description "Les abonnements/groupes de filtres suivants sont dĂ©sactivĂ©s, ils ne peuvent pas encore avoir d'effet sur cette page :"> -<!ENTITY showData.label "Afficher les donnĂ©es du signalement"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus bloque &trop"> -<!ENTITY issues.change.description "Votre configuration a Ă©tĂ© modifiĂ©e. Veuillez actualiser la page pour tester les modifications et soumettez un signalement si le problème n'a pas Ă©tĂ© rĂ©solu en effectuant cette modification."> -<!ENTITY email.label "&Courriel :"> -<!ENTITY issues.openPreferences.label "Ouvrir les prĂ©fĂ©rences de filtre"> -<!ENTITY sendPage.confirmation "Votre signalement a Ă©tĂ© envoyĂ©. Vous pouvez y accĂ©der Ă l'adresse suivante :"> -<!ENTITY copyLink.label "Co&pier le lien du signalement"> -<!ENTITY issues.nofilters.description "Adblock Plus ne bloque rien sur la page courante. Le problème que vous observez n'est probablement pas Ă mettre en relation avec Adblock Plus."> -<!ENTITY sendPage.knownIssue "Le problème que vous signalez est probablement dĂ©jĂ connu. Davantage d'informations :"> -<!ENTITY typeSelector.other.description "Choisissez cette option si vous pensez qu'Adblock Plus elle-mĂŞme est la cause du problème plutĂ´t que ses filtres."> -<!ENTITY issues.disabledgroups.enable.label "Activer l'abonnement/le groupe de filtres"> -<!ENTITY typeWarning.override.label "Je comprend&s et souhaite soumettre le signalement tout de mĂŞme"> -<!ENTITY issues.disabled.enable.label "Activer Adblock Plus"> -<!ENTITY update.fixed.description "Les mises Ă jour de vos abonnements de filtres ont probablement rĂ©solu le problème que vous avez signalĂ©. Veuillez recharger la page et rĂ©essayer, appuyez Ă nouveau sur « Signaler » si le problème persiste."> -<!ENTITY anonymous.label "Soumission &anonyme"> -<!ENTITY reloadButton.label "&Actualiser la page"> -<!ENTITY recentReports.clear.label "&Supprimer tous les signalements"> -<!ENTITY typeSelector.description "Cette fenĂŞtre vous guidera Ă travers les Ă©tapes nĂ©cessaires Ă la soumission d'un problème Adblock Plus. Dans un premier temps, veuillez choisir le type de problème rencontrĂ© sur cette page :"> -<!ENTITY screenshot.remove.label "&Supprimer les donnĂ©es sensibles"> -<!ENTITY issues.ownfilters.description "Certains des filtres utilisĂ©s sur cette page ont Ă©tĂ© dĂ©finis par l'utilisateur. Veuillez dĂ©sactiver les filtres qui ont pu avoir Ă©tĂ© Ă l'origine du problème :"> -<!ENTITY update.inProgress.description "Adblock Plus doit mettre Ă jour vos abonnements de filtres pour s'assurer que le problème n'a pas dĂ©jĂ Ă©tĂ© rĂ©solu. Veuillez patienter…"> -<!ENTITY sendPage.retry.label "Envoyer Ă nouveau"> -<!ENTITY data.label "&DonnĂ©es du signalement :"> -<!ENTITY recentReports.label "Vos signalements rĂ©cemment soumis"> -<!ENTITY typeWarning.description "Vous avez indiquĂ© que vous voulez signaler un problème gĂ©nĂ©ral concernant Adblock Plus plutĂ´t qu'un problème de filtres. Veuillez prendre note que ce type de problèmes est plutĂ´t signalĂ© dans le [link]forum d'Adblock Plus[/link]. Vous devriez utiliser la soumission de signalement uniquement pour ajouter un point Ă une discussion existante, puisque personne n'en prendra connaissance Ă moins que vous leur fournissiez le lien pointant vers la discussion. Le lien automatiquement gĂ©nĂ©rĂ© sera fourni après la soumission du signalement."> -<!ENTITY issues.disabled.description "Adblock Plus est dĂ©sactivĂ©e, elle ne bloquera rien dans cet Ă©tat."> -<!ENTITY attachExtensions.label "Joindre une liste d'e&xtensions actives au signalement au cas oĂą il y aurait un problème de conflit d'extension"> -<!ENTITY issues.nosubscriptions.add.label "Ajouter un abonnement"> -<!ENTITY issues.disabledfilters.enable.label "Activer le filtre"> -<!ENTITY issues.override.label "La &configuration est correcte, poursuivre le signalement"> -<!ENTITY issues.nosubscriptions.description "Vous ne semblez pas ĂŞtre abonnĂ© Ă une liste de filtres prĂ©dĂ©finis qui suppriment automatiquement des contenus indĂ©sirables de sites Web."> -<!ENTITY typeSelector.falsePositive.description "Choisissez cette option si le contenu de la page est sĂ©vèrement tronquĂ©, est mal affichĂ© ou ne fonctionne pas correctement. Vous pouvez vĂ©rifier si Adblock Plus en est la cause en la dĂ©sactivant temporairement."> -<!ENTITY typeSelector.other.label "&Autre problème"> -<!ENTITY emailComment.label "Nous vous encourageons Ă saisir un courriel valide afin que nous puissions vous contacter pour toute question concernant votre signalement. Cela nous permettra Ă©galement de reconnaĂ®tre vos contributions et de les traiter prioritairement."> -<!ENTITY issues.whitelist.remove.label "Activer Ă nouveau Adblock Plus sur cette page"> -<!ENTITY outdatedSubscriptions.description "Les abonnements de filtres suivants n'ont pas Ă©tĂ© mis Ă jour depuis au moins deux semaines. Veuillez mettre Ă jour ces abonnements avant de signaler un problème, il se pourrait qu'il ait dĂ©jĂ Ă©tĂ© rĂ©solu."> -<!ENTITY dataCollector.description "Veuillez patienter quelques instants pendant qu'Adblock Plus rĂ©unit les donnĂ©es nĂ©cessaires."> -<!ENTITY sendButton.label "Envo&yer le signalement"> -<!ENTITY comment.label "&Commentaire (facultatif) :"> -<!ENTITY sendPage.errorMessage "Une tentative d'envoi du signalement a Ă©chouĂ© avec le code erreur « ?1? ». Veuillez vĂ©rifier que vous ĂŞtes bien connectĂ© Ă Internet et rĂ©essayer. Si le problème persiste, veuillez demander assistance dans le [link]forum d'Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Afficher les signalements soumis rĂ©cemment"> -<!ENTITY commentPage.heading "Commentaire"> -<!ENTITY update.start.label "Mettre Ă jour maintenant"> -<!ENTITY issues.disabledfilters.description "Les filtres suivants sont dĂ©sactivĂ©s, ils ne peuvent pas encore avoir d'effet sur cette page :"> -<!ENTITY screenshot.description "La mĂŞme page peut s'afficher diffĂ©remment pour diffĂ©rentes personnes. Cela pourrait ĂŞtre utile de joindre une copie d'Ă©cran Ă votre signalement. Vous pouvez enlever les parties contenant des informations sensibles et mettre en Ă©vidence les zones oĂą le problème est visible. Pour cela, cliquez sur le bouton correspondant et sĂ©lectionnez une zone de l'image avec votre souris."> -<!ENTITY screenshot.attach.label "&Joindre une image de la page au signalement"> -<!ENTITY issues.whitelist.description "Adblock Plus est actuellement dĂ©sactivĂ©e sur la page que vous signalez. Veuillez l'activer Ă nouveau et actualiser la page avant de soumettre le signalement pour qu'une recherche de solutions soit entamĂ©e."> -<!ENTITY typeSelector.falseNegative.label "Ad&block Plus ne bloque pas une publicitĂ©"> -<!ENTITY typeSelector.heading "Choisir le type de problème"> -<!ENTITY anonymity.warning "Nous ne serons pas en mesure de vous recontacter et votre signalement ne sera probablement pas traitĂ© prioritairement."> -<!ENTITY wizard.title "Signalement de problèmes"> -<!ENTITY issues.ownfilters.disable.label "DĂ©sactiver le filtre"> -<!ENTITY commentPage.description "Le champ ci-dessous vous permet de saisir un commentaire pour nous aider Ă comprendre le problème. Cette Ă©tape est facultative mais recommandĂ©e si le problème n'est pas Ă©vident Ă dĂ©tecter. Vous pouvez Ă©galement revoir les donnĂ©es du signalement avant l'envoi."> -<!ENTITY comment.lengthWarning "Votre commentaire comporte plus de 1000 caractères. Seuls les 1000 premiers caractères seront envoyĂ©s."> -<!ENTITY typeSelector.falseNegative.description "Choisissez cette option si une publicitĂ© est tout de mĂŞme affichĂ©e bien qu'Adblock Plus soit activĂ©e."> -<!ENTITY sendPage.waitMessage "Veuillez patienter pendant qu'Adblock Plus soumet votre signalement."> -<!ENTITY dataCollector.heading "Bienvenue dans l'assistant de signalement de problèmes"> -<!ENTITY screenshot.heading "Joindre une copie d'Ă©cran"> -<!ENTITY sendPage.heading "Envoyer le signalement"> -<!ENTITY issues.subscriptionCount.description "Il semblerait que vous soyez abonnĂ©(e) Ă trop de listes de filtres. Cette configuration n'est pas recommandĂ©e car elle augmentera la probabilitĂ© de rencontrer des problèmes. Nous ne pouvons Ă©galement pas accepter votre signalement parce qu'il ne sera pas facile de dĂ©finir quel auteur d'abonnement devra entreprendre quelque chose. Veuillez supprimer tous les abonnements exceptĂ©s ceux qui sont absolument nĂ©cessaires et vĂ©rifier si le problème se produit encore."> -<!ENTITY screenshot.mark.label "&Mettre en Ă©vidence le problème"> -<!ENTITY privacyPolicy.label "Politique de confidentialitĂ©"> -<!ENTITY issues.description "Adblock Plus a dĂ©tectĂ© que votre configuration est mal paramĂ©trĂ©e, cela pourrait ĂŞtre la cause du problème ou rendra la recherche de solution au signalement difficile."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sidebar.dtd deleted file mode 100644 index ffdafff..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Faire clignoter les bordures de l'Ă©lĂ©ment"> -<!ENTITY address.label "Adresse"> -<!ENTITY context.open.label "Ouvrir dans un nouvel onglet"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Source du filtre :"> -<!ENTITY noitems.label "Aucun Ă©lĂ©ment filtrable"> -<!ENTITY filter.label "Filtre"> -<!ENTITY tooltip.size.label "Taille :"> -<!ENTITY reattach.label "Rattacher"> -<!ENTITY search.label "&Rechercher :"> -<!ENTITY docDomain.thirdParty "(tierce partie)"> -<!ENTITY filterSource.label "Source du filtre"> -<!ENTITY tooltip.docDomain.label "Source du document :"> -<!ENTITY context.copy.label "Copier l'adresse de l'Ă©lĂ©ment"> -<!ENTITY tooltip.type.label "Type :"> -<!ENTITY context.disablefilter.label "DĂ©sactiver le filtre ?1?"> -<!ENTITY context.copyFilter.label "Copier le filtre"> -<!ENTITY context.block.label "Bloquer cet Ă©lĂ©ment"> -<!ENTITY context.enablefilter.label "RĂ©activer le filtre ?1?"> -<!ENTITY detach.label "DĂ©tacher"> -<!ENTITY whitelisted.label "Page dans la liste blanche"> -<!ENTITY context.disablefilteronsite.label "DĂ©sactiver ce filtre pour ?1?"> -<!ENTITY detached.title "Adblock Plus : Ă©lĂ©ments filtrables (dĂ©tachĂ©)"> -<!ENTITY docDomain.firstParty "(première partie)"> -<!ENTITY tooltip.type.whitelisted "(autorisĂ©e)"> -<!ENTITY tooltip.filter.label "Filtre utilisĂ© :"> -<!ENTITY tooltip.filter.disabled "(dĂ©sactivĂ©)"> -<!ENTITY context.editfilter.label "Modifier le filtre actif"> -<!ENTITY tooltip.type.blocked "(bloquĂ©e)"> -<!ENTITY size.label "Taille"> -<!ENTITY context.whitelist.label "Ajouter Ă la liste blanche"> -<!ENTITY context.selectAll.label "Tout sĂ©lectionner"> -<!ENTITY state.label "État"> -<!ENTITY docDomain.label "Source du document"> -<!ENTITY tooltip.address.label "Adresse :"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/subscriptionSelection.dtd deleted file mode 100644 index 56b935b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fr/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "&Ajouter Ă©galement l'abonnement « ?1? »"> -<!ENTITY list.download.failed "Adblock Plus n'a pu rĂ©cupĂ©rer la liste des abonnements."> -<!ENTITY list.download.retry "Essayer Ă nouveau"> -<!ENTITY title.label "&Nom de l'abonnement :"> -<!ENTITY list.download.website "Afficher le site Web"> -<!ENTITY supplementMessage "Cet abonnement est prĂ©vu pour ĂŞtre utilisĂ© avec l'abonnement "?1?" que vous n'utilisez pas encore."> -<!ENTITY viewList.label "Afficher les filtres"> -<!ENTITY visitHomepage.label "Se rendre au site Web"> -<!ENTITY addSubscription.label "Ajouter l'abonnement"> -<!ENTITY dialog.title "Ajouter un abonnement Ă une liste de filtres Adblock Plus"> -<!ENTITY location.label "&Emplacement de la liste :"> -<!ENTITY fromWeb.description "Veuillez confirmer que vous souhaitez ajouter cet abonnement. Vous pouvez modifier le titre ou l'emplacement de l'abonnement avant de l'ajouter."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/composer.dtd deleted file mode 100644 index 79d4830..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "oan it ein fan it a&dres"> -<!ENTITY domainRestriction.label "Behein ta do&mein"> -<!ENTITY collapse.default.no.label "BrĂ»k standert (nee)"> -<!ENTITY firstParty.label "Allinnich earst diel"> -<!ENTITY preferences.label "&Toan besteande filters..."> -<!ENTITY pattern.label "Sykje nei patroan"> -<!ENTITY thirdParty.label "&Allinnich tredde diel"> -<!ENTITY filter.label "Nije filter:"> -<!ENTITY collapse.label "Blokkearre ynklappe:"> -<!ENTITY match.warning "It patroan dy't jo opjĂ»n hawwe is net lyk oan it adres om te blokkearjen/wytlisten en sil gjin effekt op it hawwe."> -<!ENTITY anchor.start.label "oan it begjin fan it adres"> -<!ENTITY matchCase.label "&Haadlettergefoelich"> -<!ENTITY custom.pattern.label "&Oanpast:"> -<!ENTITY unselectAllTypes.label "Selektearje neat"> -<!ENTITY type.whitelist.label "&UtsĂ»nderingsrigel"> -<!ENTITY regexp.warning "It patroan dy't jo opjĂ»n hawwe sil ynterpretearre wurde as reguliere ekspresje. In protte reguliere ekspresjes kinne it sneupjen fertrage. As jo net fan plan wienen om reguliere ekspresje te brĂ»ken, foegje in symboal * ta oan it ein fan it patroan."> -<!ENTITY dialog.title "Foegje Adblock Plus filterrigel ta"> -<!ENTITY basic.label "Basisbyld"> -<!ENTITY type.filter.label "Blokkearfilter"> -<!ENTITY types.label "Tapasse op types:"> -<!ENTITY shortpattern.warning "It patroan dy't jo opjĂ»n hawwe is te koart om te optimalisearjen, in protte reguliere ekspresje kinne it sneupjen fertrage. It wurdt oanret dat jo in langere Ăştdrukking kieze foar dit filter."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Akseptearje allinnich patroan:"> -<!ENTITY collapse.default.yes.label "BrĂ»k standert (ja)"> -<!ENTITY domainRestriction.help "Spesifisearje ien of mear domeinen skieden troch it symboal "|", it filter sil allinnich op dizze domeinen tapast wurden. It symboal "~" foar in domeinnamme betsjut dat it filter net tapast wurde moat op dat domein."> -<!ENTITY accept.label "Filter tafoegje"> -<!ENTITY options.label "Opsjes"> -<!ENTITY disabled.warning "Adblock Plus is op dit stuit Ăştskeakele. Jo kinne noch hieltyd filters tafoegje, mar dy sille net earder aktyf wĂŞze as jo [link]Adblock Plus ynskeakelje[/link]."> -<!ENTITY anchor.start.flexible.label "oan it begjin fan de domeinnamme"> -<!ENTITY collapse.no.label "Nee"> -<!ENTITY selectAllTypes.label "Selektearje alles"> -<!ENTITY advanced.label "Avansearre byld"> -<!ENTITY pattern.explanation "It patroan kin elk part fan it adres wĂŞze, symboal * wurket as joker. It filter sil allinnich tapast wurde op adressen neffens it patroan."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/filters.dtd deleted file mode 100644 index 3ef491d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Alle foarkearen fan dyn eigen filters wurde ferfangen troch de data fan it selekteare bestand. Troch gean?"> -<!ENTITY slow.column "Lan&gsame filters"> -<!ENTITY enabled.column "Yns&keakele"> -<!ENTITY subscription.lastDownload.checksumMismatch "Mislearre, checksum komt net oerien"> -<!ENTITY noFiltersInGroup.text "Dizze groep is leech."> -<!ENTITY subscription.actions.label "Akties"> -<!ENTITY filter.selectAll.label "Selekt alles"> -<!ENTITY backupButton.label "&Feilich sette en werom sette"> -<!ENTITY restore.minVersion.warning "Warskouwing: Dit bestand is makke my in nije fersy fan Adblock Plus. Update dyn eigen Adblock Plus foardast dit bestand brĂ»kst."> -<!ENTITY restore.error "De data in dit bestand koe net brĂ»kt wurde. Miskien is it gjin Adblock Plus backup bestand?"> -<!ENTITY sort.ascending.label "A > Z sortearoarder"> -<!ENTITY sort.label "Sortearje op"> -<!ENTITY subscription.source.label "Filterlist"> -<!ENTITY hitcount.column "&Hits"> -<!ENTITY noFilters.text "Do hast noch gjin eigen filters."> -<!ENTITY backup.custom.title "Allinnich oanpasse filters"> -<!ENTITY subscription.external.label "Fernijd troch in oar Ăştwreiding"> -<!ENTITY subscription.delete.label "furt goaie"> -<!ENTITY noGroupSelected.text "Do moast yn filter groep selektere foardast it filter sjen kist."> -<!ENTITY filter.cut.label "Knippe"> -<!ENTITY restore.default.label "Backup werom sette fan ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Ynlade..."> -<!ENTITY subscriptions.tab.label "Filterabonneminten"> -<!ENTITY sort.descending.label "Z > A sortearoarder"> -<!ENTITY filters.remove.warning "Wolst echt alle filters furt smite?"> -<!ENTITY filter.delete.label "Fuortsmite"> -<!ENTITY addSubscriptionAdd.label "Tafoegje"> -<!ENTITY viewMenu.label "Byld"> -<!ENTITY subscription.lastDownload.unknown "n.f.t."> -<!ENTITY addSubscriptionCancel.label "Annulearje"> -<!ENTITY subscription.enabled.label "Ynskeakele"> -<!ENTITY noSubscriptions.text "Jo hawwe gjin ien filter tafoege. Adblock Plus sil neat blokkearje - sĂ»nder filters, brĂ»k "Filterabonnemint tafoegje" om - ta te foegjen."> -<!ENTITY subscription.update.label "Update filters"> -<!ENTITY dialog.title "Adblock Plus Filterfoarkarren"> -<!ENTITY addFilter.label "Tafoegje"> -<!ENTITY subscription.minVersion.warning "Dit filter abonnemint had in nijere fersy fan Adblok Plus nedich. Update dyn Adblock nar de nijste fersy."> -<!ENTITY subscription.lastDownload.invalidURL "Mislearre, gjin jildich adres"> -<!ENTITY backup.error "Der wy in probleem my it skriuwen fan de filters. Soarch der foar dast it wol skriuwe meist en dat it net troch in oar programma brĂ»kt wurdt."> -<!ENTITY filter.moveUp.label "Omheech"> -<!ENTITY addGroup.label "Filter groep tafoege"> -<!ENTITY filter.edit.label "feroarje"> -<!ENTITY subscription.showHideFilters.label "Sjen/Ferstopje filters"> -<!ENTITY acceptableAds2.label "Let sommige net skreauwende advertinsjes ta"> -<!ENTITY addSubscriptionOther.label "In oar abonnemint tafoegje"> -<!ENTITY close.label "sluten"> -<!ENTITY sort.none.label "&Net sortearre"> -<!ENTITY filter.actions.label "Filter aksjes"> -<!ENTITY filter.copy.label "Kopiearje"> -<!ENTITY filter.moveDown.label "Omleech"> -<!ENTITY filter.resetHitCounts.label "Reset statistysken"> -<!ENTITY readMore.label "LĂŞs mear"> -<!ENTITY subscription.moveUp.label "omheech"> -<!ENTITY addSubscription.label "Filterabonnemint tafoegje"> -<!ENTITY subscription.homepage.label "Startside"> -<!ENTITY backup.complete.title "Alle filters en abonneminten"> -<!ENTITY restore.own.label "Eigen backup werom sette"> -<!ENTITY restore.complete.warning "Alle filter foarkearen wurde ferfangen troch de data fan it selekteare bestand. Troch gean?"> -<!ENTITY filters.tab.label "Oanpaste filters"> -<!ENTITY backup.label "Meitsje nije backup"> -<!ENTITY find.label "Sykje"> -<!ENTITY subscription.moveDown.label "omleech"> -<!ENTITY subscription.lastDownload.connectionError "Mislearre, ynlaadprobleem"> -<!ENTITY subscription.lastDownload.success "Slagge"> -<!ENTITY subscription.lastDownload.invalidData "Mislearre, gjin jildige filterlist"> -<!ENTITY filter.paste.label "Plakke"> -<!ENTITY subscription.disabledFilters.enable "Set filters oan"> -<!ENTITY lasthit.column "LĂŞste hit"> -<!ENTITY subscription.editTitle.label "Namme oanpasse"> -<!ENTITY subscription.disabledFilters.warning "Sommige filters in dit abonnemint stean Ăşt."> -<!ENTITY filter.column "Filterrigel"> -<!ENTITY subscription.lastDownload.label "LĂŞste ynlaad:"> -<!ENTITY viewList.label "Lyst sjen"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/firstRun.properties deleted file mode 100644 index 98c1128..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Ynternette mear privaat troch it Ăştsetten fan tracking. Ferstopje dyn surf gedrach fan reklame bedriuwen dy't dy graach in de gaten wolle hâlde. -firstRun_toggle_off=Ăşt -firstRun_feature_tracking=Folgje Ăşt -firstRun_feature_malware=Troep blokkeare -firstRun_title=Adblock is no ynstalleare -firstRun_acceptableAdsExplanation=Wy wolle graach dat websiden simpele net skreauwende advertinsjes brĂ»ke. Derom hawwe wy <a>stringe regels</a> om akseptabele advertinsjes te werkennen. Dit stiet Ă»nder standert settings. Ast noch steeds alle advertinsjes blokkeare wolst, dan kist dat <a>Ăšt sette</a> yn in pear sekonden. -firstRun_toggle_on=Oan -firstRun_contributor_credits=Meiwurker Nammen -firstRun_dataCorruptionWarning=Bliuwst dizze side sjen? <a>Klik hjir!</a> -firstRun_acceptableAdsHeadline=ferfelende advertinsjes wurde no tsjin hâlden -firstRun_share=sis it tsjin freonen -firstRun_share_headline=<a>Jou Ăşs in hantsje</a> om it web in moaiere plak te meitsjen -firstRun_features=Adblock kin mear dwaan dan advertinsjes stopje -firstRun_feature_malware_description=Meitsje dyn browser mear feiliger troch it blokkearen fan bekende rotsoai domeinen. -firstRun_feature_social_description=Meitsje dyn ynternetten moaier en helje automatysk de knoppen furt as de Facebook Like, dy't op websiden stean om dyn gedrach by te hâlden. -firstRun_donate=Donneare -firstRun_donate_label=Support Ăşs projekt -firstRun_feature_social=Sociale Media knop fuorthelje -firstRun_legacySafariWarning=Do brĂ»kst in âlde fersy fan Safari dy net mear troch Adblock Plus understeunt wurdt. Miskien wurket it net goed of liket it soms wat raar. Wij adviseare om Safari 6.1.1 of heger (op OS X 10.8 Mountain Lion), of Safari 7.0.1 of heger (op OS X 10.9 Mavericks) te brĂ»ken, of de lĂŞste fersy van Mozilla Firefox, Google Chrome of Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/global.properties deleted file mode 100644 index 6e5bfc1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Gjin blokkearbere Ă»nderdielen op dizze side -action3_tooltip=Klik om Adblock Plus yn/Ăşt te skeakeljen. -type_label_script=skript -filter_elemhide_nocriteria=Gjin kritearia spesifisearre om it te ferstoppen elemint te Ă»ntdekken -blockingGroup_title=Blokkearregels tafoegje -whitelisted_tooltip=Adblock Plus is ynskeakele mar stiet Ăşt foar dizze side. -type_label_stylesheet=stylside -blocked_count_tooltip=?1? fan de ?2? -type_label_font=lettertype -type_label_popup=pop-up finster -filter_regexp_tooltip=Dit filter is of in reguliere ekspresje of te koart om optimalisearre te wurden. Te folle fan dizze filters kinne it sneupjen fertrage. -action0_tooltip=Klik om it kontekst-menu te iepenjen, midden-klik om yn/Ăşt te skeakeljen. -whitelisted_page=Adblock Plus is Ăştskeakele foar dizze side -remove_group_warning=Wolst do dizze groep echt furt helje? -action1_tooltip=Klik om blokkearbere Ă»nderdielen te iepenjen/sluten, midden-klik om yn/Ăşt te skeakeljen. -type_label_xmlhttprequest=XML fersyk -active_tooltip=Adblock Plus is ynskeakele, ?1? filter abonnemint(en) en ?2? oanpaste filter(s) yn gebrĂ»k. -type_label_document=dokumint -type_label_object_subrequest=objekt subfersyk -whitelistGroup_title=UtsĂ»nderingsregels -disabled_tooltip=Adblock Plus is Ăştskeakele. -filter_elemhide_duplicate_id=Der kin allinnich ien ID fan it te ferstoppen elemint spesifisearre wurde -type_label_object=objekt -action2_tooltip=Klik om foarkarren te iepenjen, midden-klik om yn/Ăşt te skeakeljen. -type_label_subdocument=dielfinster -clearStats_warning=Dit sil alle filterhitstatistiken opnij ynstelle en it tellen fan filterhits Ăştskeakelje. Wolle jo trochgean? -blocked_count_addendum=(ek wytliste: ?1?, ferstoppe: ?2?) -subscription_invalid_location=Dizze lokaasje foar in filterlist is gjin jildige URL of gjin jildige bestânsnamme. -type_label_image=Ă´fbylding -remove_subscription_warning=Witte jo seker dat jo dit abonnemint fuortsmite wolle? -type_label_other=oars -mobile_menu_enable=ABP: Oan sette -type_label_media=audio/fideo -mobile_menu_disable_site=ABP: Ăšt sette op ?1? -elemhideGroup_title=Elemint ferstopregels -mobile_menu_enable_site=ABP: Oan sette op ?1? -type_label_elemhide=ferstoppe -newGroup_title=Nije filtergroep -default_dialog_title=Adblock Plus -notification_antiadblock_title=Hide targeted messages? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/overlay.dtd deleted file mode 100644 index 57e9f9e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ja"> -<!ENTITY notification.button.no "&Nee"> -<!ENTITY sync.label "Sync Adblock Plus opsjes"> -<!ENTITY whitelist.site.label "Utskeakelje op ?1?"> -<!ENTITY filters.label "Filterfoarkarren"> -<!ENTITY disable.label "Oeral Ăştskeakelje"> -<!ENTITY objecttab.title "Blokkearje"> -<!ENTITY objecttab.tooltip "Klik hjir om dit objekt te blokkearjen mei Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus"> -<!ENTITY objecttabs.label "LjepblĂŞden sjen li&tte op Flash en Java"> -<!ENTITY sendReport.label "Rapportearje probleem op dizze side"> -<!ENTITY whitelist.page.label "Allinnich op dizze side Ăştskeakelje"> -<!ENTITY context.image.label "Ofbylding blokkearje"> -<!ENTITY counthits.label "Tel filterhits"> -<!ENTITY opensidebar.label "&Blokkearbere Ă»nderdielen iepenje"> -<!ENTITY notification.button.close "&SlĂ»te"> -<!ENTITY contribute.label "Donearje oan Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Dielfinster blokkearje"> -<!ENTITY blocked.tooltip "Blokkearre Ă»nderdielen:"> -<!ENTITY hideplaceholders.label "Ferstop placeholders fan blokkearre eleminten"> -<!ENTITY showinstatusbar.label "Toane yn steatbalke"> -<!ENTITY sidebar.title "Blokkearbere Ă»nderdelen op dizze side"> -<!ENTITY options.label "Opsjes"> -<!ENTITY context.object.label "Objekt blokkearje"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: opnij ynskeakelje op dizze side"> -<!ENTITY filters.tooltip "Meast aktive filters:"> -<!ENTITY closesidebar.label "&Blokkearbere Ă»nderdielen slute"> -<!ENTITY showintoolbar.label "To&ane yn arkbalke"> -<!ENTITY status.tooltip "Steat:"> -<!ENTITY context.media.label "Adblock Plus: Blokkearje audio/fideo"> -<!ENTITY subscription.update.label "Update filters"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sendReport.dtd deleted file mode 100644 index a4cdc9c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Ă›ngedien meitsje"> -<!ENTITY issues.disabledgroups.description "De folgjende filterabonneminten/filtergroepen binne Ăştskeakele, dochs it kin wĂŞze dat se effekt hawwe op dizze side:"> -<!ENTITY showData.label "Toan rapportgegevens"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokkearret te &folle"> -<!ENTITY issues.change.description "Jo konfiguraasje is wizige. Laad de side op 'e nij om de wizigings te testen en in rapport te stjoeren as it probleem net oplost is."> -<!ENTITY email.label "E-mail:"> -<!ENTITY issues.openPreferences.label "Iepenje filteropsjes"> -<!ENTITY sendPage.confirmation "Jo rapport is bewarre. Jo kinne it besjen op it folgjende adres:"> -<!ENTITY copyLink.label "&Kopiearje rapportkeppeling"> -<!ENTITY issues.nofilters.description "Adblock Plus blokkearret no neat op dizze side. It probleem dat jo sjogge hat wierskienlik neat fan dwaan mei Adblock Plus."> -<!ENTITY sendPage.knownIssue "It probleem dat jo rapportearre hawwe is miskien al bekend. Mear ynformaasje:"> -<!ENTITY typeSelector.other.description "Selektearje dizze opsje as jo tinke dat it in probleem mei Adblock Plus sels is yn stee fan syn filters."> -<!ENTITY issues.disabledgroups.enable.label "Filterabonnemint / filtergroep ynskeakelje"> -<!ENTITY typeWarning.override.label "Ik &begryp it en wol it rapport wol ynstjoere"> -<!ENTITY issues.disabled.enable.label "Adblock Plus ynskeakelje"> -<!ENTITY update.fixed.description "De updates foar dyn abonneminten losse dyn probleem wierskynlik op. Laad de webside opnij. Hast dan noch steed yn probleem, rapportearje it dan."> -<!ENTITY anonymous.label "Anonym Bydrage"> -<!ENTITY reloadButton.label "Side opnij &lade"> -<!ENTITY recentReports.clear.label "&Smyt alle rapporten fuort"> -<!ENTITY typeSelector.description "Dit finster sil jo begeliede troch de stappen nedich foar it yntsjinjen fan in Adblock Plus probleemrapport. Earst, selektearje it type probleem wat jo tsjinkommen binne op dizze side:"> -<!ENTITY screenshot.remove.label "Sensitive &gegevens fuortsmite"> -<!ENTITY issues.ownfilters.description "Sommige fan de filters tapast op dizze side binne brĂ»ker-definiearre. Skeakel de filters Ăşt dy't miskien dit probleem feroarsake hawwe:"> -<!ENTITY update.inProgress.description "Adblock Plus moat dyn filter abonnemint bywurkje om der seker fan te wĂŞzen dat er noch gjin oplossing bekend is. Wacht efkes..."> -<!ENTITY sendPage.retry.label "Ferstjoer op 'e nij"> -<!ENTITY data.label "&Rapportgegevens:"> -<!ENTITY recentReports.label "Jo resint ynstjoerde rapporten"> -<!ENTITY typeWarning.description "Jo hawwe oanjĂ»n dat jo in algemien probleem mei Adblock Plus rapportearej wolle yn stee fan in probleem mei de filters. It is it bĂŞste dat jo soksoartige fan problemen rapportearje yn it [link]Adblock Plus foarum[/link]. Jo soene allinnich dizze rapportearder brĂ»ke moatte as tafoeging oan in besteande diskusje, oars sil net ien jo rapport sjen Ăştsein as jo in keppeling opjouwe. De automatysk generearre keppeling sil jĂ»n wurde as it rapport ynstjoerd is."> -<!ENTITY issues.disabled.description "Adblock Plus is Ăştskeakele, it sil no neat blokkearje."> -<!ENTITY attachExtensions.label "Foegje in list mei aktive Ăştwreidings ta oan it ra&pport foar it gefal as in tafoeging it probleem feroarsaket"> -<!ENTITY issues.nosubscriptions.add.label "Foegje filterabonnemint ta"> -<!ENTITY issues.disabledfilters.enable.label "Filter ynskeakelje"> -<!ENTITY issues.override.label "De &konfiguraasje is korrekt, fierder mei it rapport"> -<!ENTITY issues.nosubscriptions.description "It liket der op dat jo net abonnearre binne op ien fan de yn-it-foar makke filterlisten dy't automatysk net-winske ynhâld fan websteeĂ«n fuortsmyt."> -<!ENTITY typeSelector.falsePositive.description "Selektearje dizze opsje as de side wichtige ynhâld mist, net goed toant wurd of net goed funksjonearret. Jo kinne Ăştfine oft Adblock Plus de oarsaak is fan it probleem troch it tydlik Ăşt te skeakeljen."> -<!ENTITY typeSelector.other.label "O&ar probleem"> -<!ENTITY emailComment.label "It soe moai wĂŞze ast in goed mail adres kist opjaan sa dat wy kontakt my die kinne opnimme as der fragen binne oer dyn rapport. It jout Ăşs ek de mooglikheid om minsken te werkennen en mear prioriteit te jaan."> -<!ENTITY issues.whitelist.remove.label "Skeakel Adblock Plus op dizze side wer yn"> -<!ENTITY outdatedSubscriptions.description "De folgjende filters binne al in tiid net bywurke. Wurkje dizze by foardast in rapport ynstjoerst. Miskien is it al oplost."> -<!ENTITY dataCollector.description "In amerijke wylst Adblock Plus de nedige gegevens sammelt."> -<!ENTITY sendButton.label "&Ferstjoer rapport"> -<!ENTITY comment.label "&Kommentaar (opsjoneel):"> -<!ENTITY sendPage.errorMessage "It is net slagge om it rapport te ferstjoeren, flaterkoade "?1?". WĂŞs wis dat jo ferbĂ»n binne mei it ynternet en probearje nochris. As it probleem bliuwt freegje dan assistinsje yn it [link]Adblock Plus foarum[/link]."> -<!ENTITY showRecentReports.label "Toan resint ynstjoerde rapporten"> -<!ENTITY commentPage.heading "Kommentaar"> -<!ENTITY update.start.label "No bywurkje"> -<!ENTITY issues.disabledfilters.description "De folgjende filters binne Ăştskeakele, dochs it kin wĂŞze dat se effekt hawwe op dizze side:"> -<!ENTITY screenshot.description "Deselde side kin der ferskillend Ăştsjen foar ferskillende minsken. It kin Ăşs helpe om it probleem te begripen as jo in skerĂ´fdruk meistjoere. Jo kinne seksjes mei sensitive ynformaasje fuortsmite en ek Ă»nderdielen markearje dĂŞr't it probleem te sjen is. Om dat te dwaan klik de knop en selektearje in seksje fan de Ă´fbylding mei jo mĂ»s."> -<!ENTITY screenshot.attach.label "Foegje in Ă´fbylding ta oan it rapport"> -<!ENTITY issues.whitelist.description "Adblock Plus is no Ăştskeakele op de side dy't jo rapportearje. Skeakel it yn en laad de side op 'e nij eardat it rapport ynstjoerd wurd om it Ă»ndersyk fan dit probleem te helpen."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus blokkearret in advertinsje net"> -<!ENTITY typeSelector.heading "Selektearje probleemtype"> -<!ENTITY anonymity.warning "We kinnen dy gjin kommentaar jaan en sille wierskynlik in leage prioriteit oan dyn rapport jaan."> -<!ENTITY wizard.title "Probleemrapportearder"> -<!ENTITY issues.ownfilters.disable.label "Filter Ăştskeakelje"> -<!ENTITY commentPage.description "It tekstfjild hjirĂ»nder jout de mooglikheid om kommentaar te jaan. Dizze stap is opsjoneel, mar oanrikkemandearre as it in frjemd probleem is. Jo kinne ek de gegevens besjen eardat it ferstjoerd wurd."> -<!ENTITY comment.lengthWarning "De lingte fan jo kommentaar hat mear as 1000 karakters. Allinnich de earste 1000 karakters sille ferstjoerd wurde."> -<!ENTITY typeSelector.falseNegative.description "Selektearje dizze opsje as in advertinsje toant wurd wylst Adblock Plus ynskeakele is."> -<!ENTITY sendPage.waitMessage "Wachtsje wylst Adblock Plus jo rapport ynstjoerd."> -<!ENTITY dataCollector.heading "Wolkom by de probleemrapportearder"> -<!ENTITY screenshot.heading "SkermĂ´fdruk tafoegje"> -<!ENTITY sendPage.heading "Ferstjoer rapport"> -<!ENTITY issues.subscriptionCount.description "It liket as jo abonnearre binne op te folle filters. Dizze opset is net oanrikkemandearre omdat it wierskienlik faker problemen feroarsaakje kin. Wy kinne ek jo probleemrapport net akseptearje omdat it net dĂşdlik is hokker filterabonnemint auteur aksje Ă»ndernimme moat. Helje alle net needsaaklike filters fuort en test oft de problemen wer barre."> -<!ENTITY screenshot.mark.label "Markearje it probleem"> -<!ENTITY privacyPolicy.label "Privacybelied"> -<!ENTITY issues.description "Adblock Plus hat problemen Ă»ntdekt mei jo konfiguraasje dy't miskien ferantwurdlik binne foar dit probleem of sil it sier meitsje om it te Ă»ndersykjen."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sidebar.dtd deleted file mode 100644 index 4280a2d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Lit rannen knipperje"> -<!ENTITY address.label "Adres"> -<!ENTITY context.open.label "Iepen yn in nij ljepblĂŞd"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Filterboarne:"> -<!ENTITY noitems.label "Gjin blokkearbere items"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Grutte:"> -<!ENTITY reattach.label "FĂŞstmeitsje"> -<!ENTITY search.label "Sykje:"> -<!ENTITY docDomain.thirdParty "(tredde partij)"> -<!ENTITY filterSource.label "Filterboarne"> -<!ENTITY tooltip.docDomain.label "Dokumintboarne:"> -<!ENTITY context.copy.label "Kopiearje"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY context.disablefilter.label "Filter Ăştskeakelje ?1?"> -<!ENTITY context.copyFilter.label "Filter kopiearje"> -<!ENTITY context.block.label "Blokkearje dit item"> -<!ENTITY context.enablefilter.label "Filter ynskeakelje ?1?"> -<!ENTITY detach.label "Losmeitsje"> -<!ENTITY whitelisted.label "Tastiene side"> -<!ENTITY context.disablefilteronsite.label "Skeakel dit filter Ăşt op ?1?"> -<!ENTITY detached.title "Adblock Plus: Blokkearbere Ă»nderdielen (los)"> -<!ENTITY docDomain.firstParty "(earste partij)"> -<!ENTITY tooltip.type.whitelisted "(tastien)"> -<!ENTITY tooltip.filter.label "Tapast filter:"> -<!ENTITY tooltip.filter.disabled "(Ăştskeakele)"> -<!ENTITY context.editfilter.label "Bewurkje tapaste filter"> -<!ENTITY tooltip.type.blocked "(blokkearre)"> -<!ENTITY size.label "Grutte"> -<!ENTITY context.whitelist.label "Meitsje in ĂştsĂ»nderingsrigel foar dit Ă»nderdiel"> -<!ENTITY context.selectAll.label "Selektearje alles"> -<!ENTITY state.label "Steat"> -<!ENTITY docDomain.label "Dokumintboarne"> -<!ENTITY tooltip.address.label "Adres:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/subscriptionSelection.dtd deleted file mode 100644 index 374db56..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/fy-NL/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "&Filterabonnemint "?1?" ek tafoegje"> -<!ENTITY list.download.failed "It is Adblock Plus net slagge om de list mei abonneminten te krijen."> -<!ENTITY list.download.retry "Op 'e nij besykje"> -<!ENTITY title.label "A&bonnemintnamme:"> -<!ENTITY list.download.website "Toan webstee"> -<!ENTITY supplementMessage "Dit filterabonnemint is bedoeld om brĂ»kt te wurden mei it filterabonnemint "?1?" dy't jo no noch net brĂ»ke."> -<!ENTITY viewList.label "Toan filters"> -<!ENTITY visitHomepage.label "Besykje thĂşsside"> -<!ENTITY addSubscription.label "Abonnemint tafoegje"> -<!ENTITY dialog.title "Foegje Adblock Plus filterabonnemint ta"> -<!ENTITY location.label "Fi&lterlist lokaasje:"> -<!ENTITY fromWeb.description "Befestigje asjobleaft dat jo dit filterabonnemint tafoegje wolle. Jo kinne de abonneminttitel of lokaasje wizigje foardat jo it tafoegje."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/composer.dtd deleted file mode 100644 index fb550c7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "ao final &do enderezo"> -<!ENTITY domainRestriction.label "&Restrinxir ao dominio:"> -<!ENTITY collapse.default.no.label "Uso por defecto (non)"> -<!ENTITY firstParty.label "SĂł de or&ixe"> -<!ENTITY preferences.label "Amo&sar os filtros existentes..."> -<!ENTITY pattern.label "Buscar unha pauta"> -<!ENTITY thirdParty.label "SĂł de &terceiros"> -<!ENTITY filter.label "&Filtro novo:"> -<!ENTITY collapse.label "Pr&egar bloqueados:"> -<!ENTITY match.warning "A pauta que inseriches non coincide co enderezo que queres bloquear ou pĂłr na lista branca, polo que non terá efecto ningĂşn."> -<!ENTITY anchor.start.label "ao come&zo do enderezo"> -<!ENTITY matchCase.label "&Caso coincidente"> -<!ENTITY custom.pattern.label "&Personalizado:"> -<!ENTITY unselectAllTypes.label "Non marcar ningĂşn"> -<!ENTITY type.whitelist.label "E&xcepciĂłn"> -<!ENTITY regexp.warning "A pauta que inseriches interprĂ©tase como unha expresiĂłn regular, e de usares moitas poderĂase facer máis lenta a navegaciĂłn. Se non tes a intenciĂłn de utilizar expresiĂłns regulares, engade un sĂmbolo * ao final da pauta."> -<!ENTITY dialog.title "Engadir regra de filtrado do Adblock Plus"> -<!ENTITY basic.label "Vista básica"> -<!ENTITY type.filter.label "Filtro de &bloqueo"> -<!ENTITY types.label "Aplicar aos tipos:"> -<!ENTITY shortpattern.warning "A pauta que inseriches Ă© demasiado curta como para ser optimizada, e de haber moitas asĂ poderĂase retardar a navegaciĂłn. Recomendámosche escoller unha cadea máis longa para este filtro."> -<!ENTITY collapse.yes.label "Si"> -<!ENTITY anchors.label "Aceptar sĂł a pauta:"> -<!ENTITY collapse.default.yes.label "Uso por defecto (si)"> -<!ENTITY domainRestriction.help "Especifica un ou máis dominios separándoos polo sĂmbolo "|". O filtro sĂł se aplicará nestes dominios. O sĂmbolo "~" antes dun nome de dominio significa que o filtro non debe aplicarse sobre o devandito dominio."> -<!ENTITY accept.label "Engadir filtro"> -<!ENTITY options.label "OpciĂłns"> -<!ENTITY disabled.warning "O Adblock Plus agora mesmo está desactivado. AĂnda podes engadir os filtros, mais non se aplicarán a menos que [link]actives o Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "ao come&zo do nome do dominio"> -<!ENTITY collapse.no.label "Non"> -<!ENTITY selectAllTypes.label "Marcar todos"> -<!ENTITY advanced.label "Vista avanzada"> -<!ENTITY pattern.explanation "A pauta pode ser calquera parte do enderezo, o sĂmbolo * Ăşsase como comodĂn. O filtro sĂł se aplicará Ăłs enderezos que coincidan coa pauta."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/filters.dtd deleted file mode 100644 index 23e3259..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "TĂłdalos os teus filtros persoalizados serán cambiados polo contido do arquivo que seleccionaches. Estás seguro?"> -<!ENTITY slow.column "Filtros le&ntos"> -<!ENTITY enabled.column "A&ctivada"> -<!ENTITY subscription.lastDownload.checksumMismatch "Erro: a proba do "checksum" seica non cadrou ben"> -<!ENTITY noFiltersInGroup.text "Seica o grupo que seleccionaches está baleiro."> -<!ENTITY subscription.actions.label "AcciĂłns"> -<!ENTITY filter.selectAll.label "Seleccionalo Todo"> -<!ENTITY backupButton.label "&Copia de Seguridade e RecuperaciĂłn"> -<!ENTITY restore.minVersion.warning "Ollo: este arquivo foi creado cunha versiĂłn máis moderna do Adblock Plus. Debes actualizar a tĂşa versiĂłn antes de recuperar o arquivo."> -<!ENTITY restore.error "Os datos do arquivo non puideron ser procesados, seica este arquivo non Ă© unha copia de seguridade do Adblock Plus?"> -<!ENTITY sort.ascending.label "Orden&ar do "A" ao "Z""> -<!ENTITY sort.label "&Ordenar por"> -<!ENTITY subscription.source.label "Lista dos filtros"> -<!ENTITY hitcount.column "&Veces usado"> -<!ENTITY noFilters.text "Seica aĂnda non tes feito ningĂşn filtro persoalizado."> -<!ENTITY backup.custom.title "SĂł filtros persoalizados"> -<!ENTITY subscription.external.label "Actualizado por outro complemento"> -<!ENTITY subscription.delete.label "Borrar"> -<!ENTITY noGroupSelected.text "Precisas de seleccionar un grupo antes de que se podan amosar os filtros."> -<!ENTITY filter.cut.label "Cortar"> -<!ENTITY restore.default.label "Recuperar a copia de seguridade do ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Baixando..."> -<!ENTITY subscriptions.tab.label "SuscriciĂłns aos filtros"> -<!ENTITY sort.descending.label "Ordenar do "&Z" ao "A""> -<!ENTITY filters.remove.warning "De verdade que queres eliminar tĂłdolos filtros que seleccionaches?"> -<!ENTITY filter.delete.label "Borrar"> -<!ENTITY addSubscriptionAdd.label "Engadir"> -<!ENTITY viewMenu.label "Ver"> -<!ENTITY subscription.lastDownload.unknown "Non disponible"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Activado"> -<!ENTITY noSubscriptions.text "AĂnda non engadiches ningunha suscriciĂłn. O Adblock Plus non che bloqueará nada se non tes filtros, por favor dalle a "Engadir suscripciĂłn Ăłs filtros" para engadir algĂşn."> -<!ENTITY subscription.update.label "Actualizar os filtros"> -<!ENTITY dialog.title "Preferencias dos filtros do Adblock Plus"> -<!ENTITY addFilter.label "Enga&dir filtro"> -<!ENTITY subscription.minVersion.warning "Esta suscripciĂłn ao filtro precisa dunha versiĂłn máis moderna do Adblock Plus. DeberĂas baixarte a Ăşltima versiĂłn."> -<!ENTITY subscription.lastDownload.invalidURL "Erro: enderezo non válido"> -<!ENTITY backup.error "Seica houbo un erro ao escribir os filtros no arquivo. Mira a ver se o arquivo non está protexido contra a escritura ou está sendo uso por outro programa."> -<!ENTITY filter.moveUp.label "Subir para arriba"> -<!ENTITY addGroup.label "En&gadir grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Amosar/agochar os filtros"> -<!ENTITY acceptableAds2.label "Perm&itir publicidade non invasiva"> -<!ENTITY addSubscriptionOther.label "Engadir outra subscriciĂłn"> -<!ENTITY close.label "Pechar"> -<!ENTITY sort.none.label "Dei&xalo todo atrapallado"> -<!ENTITY filter.actions.label "AcciĂłns dos filtros"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Baixar para abaixo"> -<!ENTITY filter.resetHitCounts.label "Resetear as estatĂsticas de uso"> -<!ENTITY readMore.label "Ler máis"> -<!ENTITY subscription.moveUp.label "Subir para arriba"> -<!ENTITY addSubscription.label "Engadir subscriciĂłn de &filtros"> -<!ENTITY subscription.homepage.label "Páxina"> -<!ENTITY backup.complete.title "TĂłdolos filtros e suscriciĂłns"> -<!ENTITY restore.own.label "Recuperar a copia de seguridade propia"> -<!ENTITY restore.complete.warning "TĂłdalas as tĂşas preferencias serán cambiadas polo contido do arquivo que seleccionaches. Estás seguro?"> -<!ENTITY filters.tab.label "Filtros persoalizados"> -<!ENTITY backup.label "Facer unha nova copia de seguridade"> -<!ENTITY find.label "Busca&r"> -<!ENTITY subscription.moveDown.label "Baixar para abaixo"> -<!ENTITY subscription.lastDownload.connectionError "Erro: fallo na descarga"> -<!ENTITY subscription.lastDownload.success "Valeu"> -<!ENTITY subscription.lastDownload.invalidData "Erro: lista de filtros non válida"> -<!ENTITY filter.paste.label "Pegar"> -<!ENTITY subscription.disabledFilters.enable "Activar os filtros inactivos"> -<!ENTITY lasthit.column "Ăš&ltimo uso"> -<!ENTITY subscription.editTitle.label "Editar o tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "AlgĂşns filtros desta suscriciĂłn estanche desactivados."> -<!ENTITY filter.column "Regra de &filtro"> -<!ENTITY subscription.lastDownload.label "Baixado o:"> -<!ENTITY viewList.label "QuĂ© publicidade?"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/firstRun.properties deleted file mode 100644 index bb33050..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navega de xeito privado Ăł desactivar o seguemento - agochando as tĂşas trazas das compañĂas de publicidade que doutro xeito rexistrarĂan os teus movementos. -firstRun_toggle_off=DESACTIVADO -firstRun_feature_tracking=Desactivar o seguimento -firstRun_feature_malware=Bloquear malware -firstRun_title=O Adblock Plus foiche instalado -firstRun_toggle_on=ACTIVADO -firstRun_acceptableAdsExplanation=Queremos animar ás páxinas web para que empreguen a publicidade dun xeito mais directo e non invasivo. É polo que fixemos unhas <a>regras moi estrictas</a> co fin de identificar a publicidade aceptable, a cal Ă© mostrada coas opciĂłns por defecto. Se aĂnda queres bloquear tĂłdala publicidade, podes <a>desactivar</a> isto deseguido. -firstRun_contributor_credits=Coa colaboraciĂłn de... -firstRun_dataCorruptionWarning=Segue a aparecer a páxina esta? <a>Fai click aquĂ!</a> -firstRun_acceptableAdsHeadline=A partir de agora os anuncios anoxantes seranche bloqueados -firstRun_share=CĂłntalle Ăłs teus amigos -firstRun_share_headline=<a>BĂłtanos unha man</a> para facer da rede un sitio mellor -firstRun_feature_social_description=Eliminar de xeito automático os botĂłns de redes sociais como o "gĂşstame" do Facebook, que aparecen nás páxinas web e rexistran o teu comportamento. -firstRun_filterlistsReinitializedWarning=Semella que un problema facĂa que tĂłdolos filtros fosen borrados e imposibles de restaurar. Polo tanto, tivemos que resetear os filtros e a configuraciĂłn da "Publicidade Aceptable". Por favor bĂłtalle un ollo á tua lista de filtros e á configuraciĂłn de "Publicidade Aceptable" nas <a>opciĂłns do Adblock Plus</a>. -firstRun_feature_malware_description=Fai mais seguro o teu navegador Ăł bloquear dominios con "malware". -firstRun_features=O Adblock Plus faiche mais cousas que bloquear publicidade -firstRun_donate=fai unha doazĂłn -firstRun_donate_label=Apoia Ăł noso proxecto -firstRun_feature_social=Eliminar os botĂłns das redes sociais -firstRun_legacySafariWarning=Estás a empregar unha versiĂłn vella do Safari que xa non está mantida polo Adblock Plus. PoderĂa non funcionar correctamente ou alterar a experiencia do usuario nalgunhas webs. Aconsellámosche que ou ben actualices Ăł Safari 6.1.1 ou superior (no OS X 10.8 Mountain Lion), ou Ăł Safari 7.0.1 ou superior (no OSX 10.9 Mavericks), ou empregues a Ăşltima versiĂłn do Mozilla Firefox, do Google Chrome ou do Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/global.properties deleted file mode 100644 index 2fbc69c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Non che hai elementos bloqueables nesta páxina -action3_tooltip=Preme para activar/desactivar o Adblock Plus. -notification_antiadblock_title=Agochar mensaxes dirixidas? -type_label_script=script -filter_elemhide_nocriteria=Non se especificaron criterios para recoñecer o elemento que se quere agochar -blockingGroup_title=Reglas de bloqueo de publicidade -whitelisted_tooltip=O Adblock Plus está activo mais está desactivado nesta páxina. -type_label_stylesheet=folla de estilo -blocked_count_tooltip=?1? de ?2? -type_label_font=fonte -type_label_popup=Xanela emerxente -filter_regexp_tooltip=Este filtro Ă© ben unha expresiĂłn regular ben Ă© demasiado curto para ser optimizado. Se tes moitos filtros asĂ, o navegador pode volverse máis lento. -action0_tooltip=Preme para abrir o menĂş contextual, e click no medio para activar/desactivar. -whitelisted_page=O Adblock Plus foi desactivado nesta páxina -remove_group_warning=É verdade que queres borrar este grupo? -action1_tooltip=Preme para abrir/pechar elementos bloqueables, e click no medio para activar/desactivar. -type_label_xmlhttprequest=solicitude XML -active_tooltip=O Adblock Plus está activo, ?1? o filtro de suscriciĂłn(s) ?2? e o(s) filtro(s) persoalizado(s) están en uso. -type_label_document=documento -type_label_object_subrequest=sub-solicitude de obxecto -whitelistGroup_title=ExcepciĂłns -disabled_tooltip=O Adblock Plus está desactivado. -filter_elemhide_duplicate_id=SĂł pode especificarse un ID do elemento que se quere agochar -type_label_object=obxecto -action2_tooltip=Preme para abrir as preferencias, e click no medio para activar/desactivar. -type_label_subdocument=marco -clearStats_warning=Isto vai resetear as estatĂsticas dos filtros e a desactivar a contabilidade do uso dos filtros. Estás seguro que o queres facer? -notification_antiadblock_message=Este sitio Ă© coñecido por amosar mensaxes dirixidas Ăłs usuarios do Adblock Plus. Queres que o Adblock plus agoche estas mensaxes dirixidas? -blocked_count_addendum=(tamĂ©n na Lista Branca: ?1?, agochados: ?2?) -subscription_invalid_location=Esa localizaciĂłn da lista de filtros non Ă© nin unha URL válida nin un nome de arquivo válido. -type_label_image=imaxe -remove_subscription_warning=De seguro de que queres darche de baixa nesta subscriciĂłn? -type_label_other=outro -mobile_menu_enable=ABP - Activar -type_label_media=audio/vĂdeo -mobile_menu_disable_site=ABP - Desactivar en ?1? -elemhideGroup_title=Reglas ao agochar elementos -mobile_menu_enable_site=ABP - Activar en ?1? -type_label_elemhide=agochado -newGroup_title=Novo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/overlay.dtd deleted file mode 100644 index 7a68f62..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&SĂ"> -<!ENTITY notification.button.no "&Non"> -<!ENTITY sync.label "Sin&cronizar as opciĂłns do Adblock Plus"> -<!ENTITY whitelist.site.label "Desactivar en ?1?"> -<!ENTITY filters.label "Pre&ferencias dos filtros"> -<!ENTITY disable.label "Desactivar en tĂłdalas páxinas"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "Fai click aquĂ para bloquear este obxecto co Adblock Plus"> -<!ENTITY menuitem.label "Preferencias do Ad&block Plus"> -<!ENTITY objecttabs.label "Amo&sar os separadores en Flash e Java"> -<!ENTITY sendReport.label "&Informar dun problema nesta páxina"> -<!ENTITY whitelist.page.label "Desactivar sĂł nesta páxina"> -<!ENTITY context.image.label "ABP - Bloquear a imaxe"> -<!ENTITY counthits.label "Co&ntabilizar as veces que se usa cada filtro"> -<!ENTITY opensidebar.label "A&brir temas bloqueables"> -<!ENTITY notification.button.close "&Pechar"> -<!ENTITY contribute.label "Apoquinar Ăł Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "ABP - Bloquear o marco"> -<!ENTITY blocked.tooltip "Elementos bloqueados nesta páxina:"> -<!ENTITY hideplaceholders.label "Agochar o espacio deixado po&los elementos bloqueados"> -<!ENTITY showinstatusbar.label "Amosar na barra d&e estado"> -<!ENTITY sidebar.title "Temas bloqueables na páxina actual"> -<!ENTITY options.label "&OpciĂłns"> -<!ENTITY context.object.label "ABP - Bloquear o obxecto"> -<!ENTITY context.removeWhitelist.label "ABP - Reactivado nesta páxina"> -<!ENTITY filters.tooltip "Filtros máis activos:"> -<!ENTITY closesidebar.label "Pechar temas &bloqueables"> -<!ENTITY showintoolbar.label "Amosar na barra &Ferramentas"> -<!ENTITY status.tooltip "Estado:"> -<!ENTITY context.media.label "ABP - Bloquear o audio/vĂdeo"> -<!ENTITY subscription.update.label "Actualizar os filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sendReport.dtd deleted file mode 100644 index e2c4b96..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Desfacer"> -<!ENTITY issues.disabledgroups.description "As seguintes suscriciĂłns/grupos de filtros están desactivadas, pero poderĂan aĂnda ter efecto nesta páxina:"> -<!ENTITY showData.label "Amosar os datos do informe"> -<!ENTITY typeSelector.falsePositive.label "Seica o Adblock Plus está a bloquear de &máis"> -<!ENTITY issues.change.description "A tĂşa configuraciĂłn cambiou. Tenta recargar a páxina para probar os cambios e envĂa un informe se o problema aĂnda asĂ non foi arranxado."> -<!ENTITY email.label "E-&mail:"> -<!ENTITY issues.openPreferences.label "Abrir as preferencias dos filtros"> -<!ENTITY sendPage.confirmation "O teu informe foi gardado. Podes acceder a Ă©l no seguinte enderezo:"> -<!ENTITY copyLink.label "&Copiar ligazĂłn ao informe"> -<!ENTITY issues.nofilters.description "O Adblock Plus non está a bloquear nada na páxina da que informas. Seica o problema que observaches non ten relaciĂłn co Adblock Plus."> -<!ENTITY sendPage.knownIssue "O problema do que informas Ă© coñecido. Máis informaciĂłn:"> -<!ENTITY typeSelector.other.description "Escolle esta opciĂłn se sospeitas que o que che da problemas Ă© o Adblock Plus e non os seus filtros."> -<!ENTITY issues.disabledgroups.enable.label "Activar suscriciĂłn/grupos de filtros"> -<!ENTITY typeWarning.override.label "Comprendido, pero aĂnda a&sĂ quero mandar o informe"> -<!ENTITY issues.disabled.enable.label "Activar o Adblock Plus"> -<!ENTITY update.fixed.description "Se cadra a actualizaciĂłn dos filtros resolveu o problema do que informabas. Tenta recargar a páxina e se o problema mantense, dalle de novo a Informar."> -<!ENTITY anonymous.label "Informe &anĂłnimo"> -<!ENTITY reloadButton.label "&Recargar a páxina"> -<!ENTITY recentReports.clear.label "Bo&rrar tĂłdolos informes"> -<!ENTITY typeSelector.description "Esta xanela vaiche guiar a travĂ©s dos pasos necesarios para a presentaciĂłn dun informe de problema no Adblock Plus. Primeiro, selecciona o tipo de problema que atopaches nesta páxina:"> -<!ENTITY screenshot.remove.label "&Borrar informaciĂłn persoal"> -<!ENTITY issues.ownfilters.description "AlgĂşns dos filtros que se aplican nesta páxina foron definidos polo usuario. Desactiva os filtros que poidan ter causado o problema:"> -<!ENTITY update.inProgress.description "O Adblock Plus precisa de actualizar as tĂşas suscriciĂłns para estar seguros de que este tema aĂnda non fora resolto. Acouga un intre..."> -<!ENTITY sendPage.retry.label "Mandar de novo"> -<!ENTITY data.label "Datos do in&forme:"> -<!ENTITY recentReports.label "Informes que mandaches fai pouco"> -<!ENTITY typeWarning.description "Indicaches que queres informar dun problema co Adblock Plus e non cos filtros. Ten en conta que estos temas Ă© mellor comentalos na [link]conferencia do Adblock Plus[/link]. SĂł deberĂas usar o xerador de informes de problemas para aportar a unha discusiĂłn xa existente, xa que ninguĂ©n verá o teu informe a non ser que inclĂşas a ligazĂłn Ăł mesmo. A ligazĂłn xerada automáticamente serache dada tras mandar o reporte."> -<!ENTITY issues.disabled.description "O Adblock Plus estache desactivado e non vai facer nada mentres o manteñas deste xeito."> -<!ENTITY attachExtensions.label "Engadir Ăł informe unha lista das e&xtensiĂłns activas, por se unha incompatibilidade con outra extensiĂłn Ă© a causa do problema"> -<!ENTITY issues.nosubscriptions.add.label "Engadir suscriciĂłn de filtro"> -<!ENTITY issues.disabledfilters.enable.label "Activar filtro"> -<!ENTITY issues.override.label "A &configuraciĂłn está ben, podes continuar tranquilo co informe"> -<!ENTITY issues.nosubscriptions.description "Non semellas estar suscrito a ningunha lista de filtros, as cales bloquean automáticamente contido non deseado nas páxinas."> -<!ENTITY typeSelector.falsePositive.description "Selecciona esta opciĂłn se a páxina non ten contido importante, se Ă©sta amĂłsase incorrectamente ou non funciona correctamente. Podes determinar se Adblock Plus Ă© a causa do problema desactivándoo temporalmente."> -<!ENTITY typeSelector.other.label "Ou&tro problema"> -<!ENTITY emailComment.label "Recomenámosche que poñas un e-mail válido, para que deste xeito poidamos contactar contigo se temos algunha pregunta sobre o teu informe. Isto tamĂ©n nos permite recoñecer as tĂşas contribuciĂłns e darlles unha prioridade mais alta."> -<!ENTITY issues.whitelist.remove.label "Reactivar o Adblock Plus nesta páxina"> -<!ENTITY outdatedSubscriptions.description "As seguintes suscriciĂłns de filtros non foron actualizadas en alomenos dĂşas semanas. Tenta actualizalas antes de mandarnos un informe, xa que o problema poderĂa estar xa arranxado."> -<!ENTITY dataCollector.description "Agarda un intre mentres Adblock Plus reĂşne os datos necesarios."> -<!ENTITY sendButton.label "Ma&ndar o informe"> -<!ENTITY comment.label "&Comentario (opcional):"> -<!ENTITY sendPage.errorMessage "O intento de envio fallou co cĂłdigo de erro "?1?". Por favor asegurate que estás conectado a Internet e volta a intentalo. Se segue o problema, pide axuda na [link]conferencia do Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Amosar os informes que mandaches fai pouco"> -<!ENTITY commentPage.heading "Comentar"> -<!ENTITY update.start.label "Comezar coa actualizaciĂłn"> -<!ENTITY issues.disabledfilters.description "Os seguintes filtros están desactivados, aĂnda que poderĂan ter efecto nesta páxina:"> -<!ENTITY screenshot.description "A mesma páxina pode parecer diferente segĂşn quen a mire. Para axudarnos a comprender o problema, estarĂa ben se nos mandases un pantallazo no teu informe. Podes borrar as partes da imaxe que teñan informaciĂłn privada e tamĂ©n salientar as partes na que o problema Ă© visible. Para facer isto, fai click co botĂłn correspondente e selecciona unha parte da imaxe co rato."> -<!ENTITY screenshot.attach.label "Engadir un pan&tallazo Ăł informe"> -<!ENTITY issues.whitelist.description "Tes desactivado o Adblock Plus na páxina da que informas. Por favor reactĂvao e dalle a recargar a páxina antes de mandar o informe para axudarnos a investigar o problema."> -<!ENTITY typeSelector.falseNegative.label "O Ad&block Plus non está a bloquear ningĂşn elemento"> -<!ENTITY typeSelector.heading "Selecciona o tipo de problema"> -<!ENTITY anonymity.warning "Non poderemos responderche, polo que lle daremos unha prioridade máis baixa."> -<!ENTITY wizard.title "Xerador de informes de problemas"> -<!ENTITY issues.ownfilters.disable.label "Desactivar filtro"> -<!ENTITY commentPage.description "O campo de texto xusto debaixo permĂteche comentar o problema. Este paso Ă© opcional pero o recomendamos se o problema non che Ă© claro. Poderás revisar os datos do informe antes de envialo."> -<!ENTITY comment.lengthWarning "O teu comentario ten mais de 1000 caracteres, e sĂł os primeiros 1000 serán enviados."> -<!ENTITY typeSelector.falseNegative.description "Escolla esta opciĂłn se aparece publicidade aĂnda a pesar de estar activado o Adblock Plus."> -<!ENTITY sendPage.waitMessage "Agarda namentres o Adblock Plus manda o teu informe."> -<!ENTITY dataCollector.heading "Benvido ao Xerador de Informes de Problemas"> -<!ENTITY screenshot.heading "Engadir pantallazo"> -<!ENTITY sendPage.heading "Mandar o informe"> -<!ENTITY issues.subscriptionCount.description "Seica tes suscriciĂłns de máis. Isto non Ă© nada recomendable, xa que aumenta a posibilidade de erro. Tampouco aceptamos o teu informe xa que non está claro cal Ă© a suscripciĂłn que está a causar o problema. Tenta eliminar os filtros que non sexan necesarios e olla se aĂnda segues a ter o problema."> -<!ENTITY screenshot.mark.label "&Marcar o problema"> -<!ENTITY privacyPolicy.label "PolĂtica de privacidade"> -<!ENTITY issues.description "Adblock Plus detectou uns problemiñas coa tĂşa configuraciĂłn que poderĂan ser a causa deste erro ou facer a investigaciĂłn do problema mais difĂcil."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sidebar.dtd deleted file mode 100644 index f32368a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Salientar os bordos do elemento"> -<!ENTITY address.label "Enderezo"> -<!ENTITY context.open.label "Abrir nunha lapela nova"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Fonte do filtro:"> -<!ENTITY noitems.label "Non che hai temas bloqueables"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamaño:"> -<!ENTITY reattach.label "Unir de novo"> -<!ENTITY search.label "&Procurar:"> -<!ENTITY docDomain.thirdParty "(terceiros)"> -<!ENTITY filterSource.label "Fonte do filtro"> -<!ENTITY tooltip.docDomain.label "Documento fonte:"> -<!ENTITY context.copy.label "Copiar o enderezo do elemento"> -<!ENTITY tooltip.type.label "Tipo"> -<!ENTITY context.disablefilter.label "Desactivar o filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar o filtro"> -<!ENTITY context.block.label "Bloquear este elemento"> -<!ENTITY context.enablefilter.label "Activar o filtro ?1?"> -<!ENTITY detach.label "Separar"> -<!ENTITY whitelisted.label "Páxina da Lista Branca"> -<!ENTITY context.disablefilteronsite.label "Desactivar este filtro en ?1?"> -<!ENTITY detached.title "Adblock Plus: Temas bloqueables (separados)"> -<!ENTITY docDomain.firstParty "(orixinal)"> -<!ENTITY tooltip.type.whitelisted "(engadido á lista branca)"> -<!ENTITY tooltip.filter.label "Filtro activo:"> -<!ENTITY tooltip.filter.disabled "(desactivado)"> -<!ENTITY context.editfilter.label "Editar o filtro activo"> -<!ENTITY tooltip.type.blocked "(bloqueado)"> -<!ENTITY size.label "Tamaño"> -<!ENTITY context.whitelist.label "Engadir excepciĂłn para este elemento"> -<!ENTITY context.selectAll.label "Seleccionalo todo"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Documento fonte"> -<!ENTITY tooltip.address.label "Enderezo:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/subscriptionSelection.dtd deleted file mode 100644 index 5664d19..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/gl/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Engadir tamĂ©n a &suscriciĂłn de filtro "?1?""> -<!ENTITY list.download.failed "Fallo na recuperaciĂłn da lista de suscriciĂłns."> -<!ENTITY list.download.retry "TĂ©ntao de novo"> -<!ENTITY title.label "&TĂtulo da suscriciĂłn:"> -<!ENTITY list.download.website "Ver páxina web"> -<!ENTITY supplementMessage "Esta suscriciĂłn de filtro está feita para ser usada en conxunto coa suscriciĂłn de filtro "?1?" que aĂnda non engadiches."> -<!ENTITY viewList.label "Ver os filtros"> -<!ENTITY visitHomepage.label "Visita a páxina de inicio"> -<!ENTITY addSubscription.label "Engadir suscriciĂłn"> -<!ENTITY dialog.title "Engadir a suscriciĂłn aos filtros do Adblock Plus"> -<!ENTITY location.label "&LocalizaciĂłn da lista dos Filtros:"> -<!ENTITY fromWeb.description "Por favor, confirma que queres engadir esta suscriciĂłn de filtro. Podes cambiar o tĂtulo ou a situaciĂłn da suscriciĂłn antes de engadila."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/composer.dtd deleted file mode 100644 index bad38a4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "&בסוף הכתובת"> -<!ENTITY domainRestriction.label "&הגבלה לשם מרחב:"> -<!ENTITY collapse.default.no.label "שימוש בברירת מחדל (ל×)"> -<!ENTITY firstParty.label "צד-ר×שון (יוצר) בלבד"> -<!ENTITY preferences.label "&הצגת ×”×ž×ˇ× × ×™×ť הקיימים..."> -<!ENTITY pattern.label "חיפוש ×חר דפוס"> -<!ENTITY thirdParty.label "&צד-שלישי בלבד"> -<!ENTITY filter.label "&×ž×ˇ× ×ź חדש:"> -<!ENTITY collapse.label "&צמצום החסומים:"> -<!ENTITY match.warning "הדפוס שהוזן ××™× × ×• תו×ם יותר לכתובת החסימה/הרשימות ×”×ś×‘× ×•×Ş ו××™× × ×• משפיע עוד."> -<!ENTITY anchor.start.label "&בתחילת הכתובת"> -<!ENTITY matchCase.label "&הת×מת ×ותיות גדולות/×§×× ×•×Ş"> -<!ENTITY custom.pattern.label "&מות×ם:"> -<!ENTITY unselectAllTypes.label "×ś× ×ś×‘×—×•×¨ דבר"> -<!ENTITY type.whitelist.label "&חוק חריג"> -<!ENTITY regexp.warning "הדפוס שהוזן יפורש כבי×וי רגיל. בי×ויים רגילים רבים עשויים לה×× ×ת הגלישה. ×ם ×ין ×›×•×•× ×” להשתמש בבי×ויים רגילים, יש להוסיף ×ת הסמל * בסוף ×”×Ş×‘× ×™×Ş."> -<!ENTITY dialog.title "הוספת חוק ×ˇ×™× ×•×ź Adblock Plus"> -<!ENTITY basic.label "תצוגה בסיסית"> -<!ENTITY type.filter.label "&×ž×ˇ× ×ź חסימה"> -<!ENTITY types.label "החלה על הסוגים:"> -<!ENTITY shortpattern.warning "הדפוס שהוזן קצר מדי בכדי להיות יעיל, דפוסים רבים מסוג ×–×” עשויים לה×× ×ת הגלישה. מומלץ לבחור מחרוזת ×רוכה יותר ×ś×ž×ˇ× ×ź ×–×”."> -<!ENTITY collapse.yes.label "כן"> -<!ENTITY anchors.label "הסכמה לדפוס בלבד:"> -<!ENTITY collapse.default.yes.label "שימוש בברירת מחדל (כן)"> -<!ENTITY domainRestriction.help "מרחב ×חד ×ו יותר מופרדים על ידי הסמל "|", ×”×ž×ˇ× ×ź ×™×פשר מרחבים ×לו בלבד. הסמל "~" ×ś×¤× ×™ שם המרחב משמעותו ×©×ž×ˇ× ×ź ×–×” ×ž× ×•×רל על מרחב ×–×”."> -<!ENTITY accept.label "הוספת ×ž×ˇ× ×ź"> -<!ENTITY options.label "×פשרויות"> -<!ENTITY disabled.warning "Adblock Plus ×ž× ×•×רל כרגע. × ×™×Ş×ź עדיין להוסיף ×ž×ˇ× × ×™×ť לרשימה, ×בל הם ×ś× ×™×—×•×ś×• ××ś× ×ם [link]Adblock Plus מ×פשר [/link]."> -<!ENTITY anchor.start.flexible.label "&בתחילת שם המתחם"> -<!ENTITY collapse.no.label "ל×"> -<!ENTITY selectAllTypes.label "בחירת הכל"> -<!ENTITY advanced.label "תצוגה מתקדמת"> -<!ENTITY pattern.explanation "הדפוס יכול להיות כל חלק מהכתובת, סמל * משמש כתו חופשי ש×חריו יכול ×ś×‘×•× ×›×ś תו ×חר. ×”×ž×ˇ× ×ź יכול להחיל רק על כתובות המת×ימות ×ś×Ş×‘× ×™×Ş."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/filters.dtd deleted file mode 100644 index 54dfd2f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "כל ×”×ž×ˇ× × ×™×ť ×”×ישיים שלך יוחלפו בתוכן הקובץ ×”× ×‘×—×¨. ×”×ם להמשיך?"> -<!ENTITY slow.column "&×ž×ˇ× × ×™×ť ××יים"> -<!ENTITY enabled.column "&מ×פשר"> -<!ENTITY subscription.lastDownload.checksumMismatch "× ×›×©×ś, ביקורת הסיכום ×ś×Ş×§×™× ×•×Ş ×ś× ×”×Ş×ימה בצורה ×ובה"> -<!ENTITY noFiltersInGroup.text "הקבוצה ×”× ×‘×—×¨×Ş ריקה"> -<!ENTITY subscription.actions.label "פעולות"> -<!ENTITY filter.selectAll.label "בחירת הכל"> -<!ENTITY backupButton.label "&גיבוי ושחזור"> -<!ENTITY restore.minVersion.warning "×זהרה: הקובץ × ×•×¦×¨ על-ידי גרסה חדשה יותר של Adblock Plus. כדי לשדרג לגרסה ×”××—×¨×•× ×” של Adblock Plus ×ś×¤× ×™ שחזור מקובץ ×–×”."> -<!ENTITY restore.error "×ś× × ×™×Ş×ź לעבד המידע בקובץ. ×ולי ×–×” ×ś× ×§×•×‘×Ą גיבוי של Adblock Plus?"> -<!ENTITY sort.ascending.label "&מיון מ- × > עד ת"> -<!ENTITY sort.label "&מיון לפי"> -<!ENTITY subscription.source.label "רשימת ×ž×ˇ× × ×™×ť"> -<!ENTITY hitcount.column "&לחיצות"> -<!ENTITY noFilters.text "עדיין ×ś× ×”×•×ˇ×¤×• ×ž×ˇ× × ×™×ť ×ישיים."> -<!ENTITY backup.custom.title "×ž×ˇ× × ×™×ť מות×מים בלבד"> -<!ENTITY subscription.external.label "התעדכן על ידי הרחבה ×חרת"> -<!ENTITY subscription.delete.label "מחיקה"> -<!ENTITY noGroupSelected.text "צריך לבחור קבוצת ×ˇ×™× ×•×ź ×ś×¤× ×™ ×©×”×ž×ˇ× × ×™×ť שלה יוצגו."> -<!ENTITY filter.cut.label "גזירה"> -<!ENTITY restore.default.label "שחזור הגיבוי מ- ?1?"> -<!ENTITY subscription.lastDownload.inProgress "מוריד..."> -<!ENTITY subscriptions.tab.label "הרשמות ×ž×ˇ× × ×™×ť"> -<!ENTITY sort.descending.label "&מיון מ- ת > עד ×"> -<!ENTITY filters.remove.warning "×”×ם להסיר ×ת כל ×”×ž×ˇ× × ×™×ť ×”× ×‘×—×¨×™×ť?"> -<!ENTITY filter.delete.label "מחיקה"> -<!ENTITY addSubscriptionAdd.label "הוספה"> -<!ENTITY viewMenu.label "תצוגה"> -<!ENTITY subscription.lastDownload.unknown "×ś× ×–×ž×™×ź"> -<!ENTITY addSubscriptionCancel.label "בי×ול"> -<!ENTITY subscription.enabled.label "מ×פשר"> -<!ENTITY noSubscriptions.text "עדיין ×ś× ×”×•×ˇ×¤×Ş הרשמות ×ś×ž×ˇ× × ×™×ť. Adblock Plus ×ś× ×™×—×ˇ×•×ť דבר ×ś×ś× ×ž×ˇ× × ×™×ť, ×× × ×”×©×Ş×ž×©×• ב-"הוספת הרשמה ×ś×ž×ˇ× × ×™×ť" להוספת ×ž×ˇ× × ×™×ť."> -<!ENTITY subscription.update.label "עדכון ×ž×ˇ× × ×™×ť"> -<!ENTITY dialog.title "העדפות ×ˇ×™× ×•×ź Adblock Plus"> -<!ENTITY addFilter.label "&הוספת ×ž×ˇ× ×ź"> -<!ENTITY subscription.minVersion.warning "הרשמת ×ž×ˇ× × ×™×ť ×–×ת דורשת גרסה חדשה יותר של Adblock Plus, צריך לשדרג לגרסה ×”××—×¨×•× ×” של Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "× ×›×©×ś, הכתובת שגויה"> -<!ENTITY backup.error "×ירעה שגי××” ברשימת ×”×ž×ˇ× × ×™×ť לקובץ. יש ×ś×•×•×“× ×›×™ הקובץ ×ś× ×ž×•×’×ź לכתיבה ×ו בשימוש על-ידי יישום ×חר."> -<!ENTITY filter.moveUp.label "×”×–×–×” מעלה"> -<!ENTITY addGroup.label "הוספת &קבוצת ×ˇ×™× ×•×ź"> -<!ENTITY filter.edit.label "עריכה"> -<!ENTITY subscription.showHideFilters.label "הצגת/הסתרת ×ž×ˇ× × ×™×ť"> -<!ENTITY acceptableAds2.label "&×פשור קצת פרסום ×ś× ×¤×•×ś×©× ×™"> -<!ENTITY addSubscriptionOther.label "הוספת הרשמה ×חרת"> -<!ENTITY close.label "סגירה"> -<!ENTITY sort.none.label "&×ś× ×ž×ž×•×™×ź"> -<!ENTITY filter.actions.label "פעולות ×ž×ˇ× ×ź"> -<!ENTITY filter.copy.label "העתקה"> -<!ENTITY filter.moveDown.label "×”×–×–×” מ××”"> -<!ENTITY filter.resetHitCounts.label "×יפוס ס××יס×יקות לחיצה"> -<!ENTITY readMore.label "×ś×§×¨×•× ×˘×•×“"> -<!ENTITY subscription.moveUp.label "×”×–×–×” מעלה"> -<!ENTITY addSubscription.label "&הוספת הרשמת ×ž×ˇ× ×ź"> -<!ENTITY subscription.homepage.label "עמוד בית"> -<!ENTITY backup.complete.title "כל ×”×ž×ˇ× × ×™×ť וההרשמות"> -<!ENTITY restore.own.label "שחזור גיבוי משלי"> -<!ENTITY restore.complete.warning "כל הגדרות ×”×ž×ˇ× × ×™×ť שלך יוחלפו בתוכן הקובץ ×”× ×‘×—×¨. ×”×ם להמשיך?"> -<!ENTITY filters.tab.label "×ž×ˇ× × ×™×ť מות×מים"> -<!ENTITY backup.label "יצירת גיבוי חדש"> -<!ENTITY find.label "&חיפוש"> -<!ENTITY subscription.moveDown.label "×”×–×–×” מ××”"> -<!ENTITY subscription.lastDownload.connectionError "× ×›×©×ś, ההורדה × ×›×©×ś×”"> -<!ENTITY subscription.lastDownload.success "הצליח"> -<!ENTITY subscription.lastDownload.invalidData "× ×›×©×ś, רשימת ×”×ž×ˇ× × ×™×ť ×ś× ×—×•×§×™×Ş"> -<!ENTITY filter.paste.label "הדבקה"> -<!ENTITY subscription.disabledFilters.enable "×פשר ×ž×ˇ× × ×™×ť ×ž× ×•×רלים"> -<!ENTITY lasthit.column "&לחיצה ××—×¨×•× ×”"> -<!ENTITY subscription.editTitle.label "עריכת הכותרת"> -<!ENTITY subscription.disabledFilters.warning "כמה ×ž×”×ž×ˇ× × ×™×ť בהרשמה ×–×ת ×ž× ×•×רלים."> -<!ENTITY filter.column "חוק &×ˇ×™× ×•×ź"> -<!ENTITY subscription.lastDownload.label "הורדה ××—×¨×•× ×”:"> -<!ENTITY viewList.label "הצגת רשימה"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/firstRun.properties deleted file mode 100644 index b1b4799..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=גלשו ב×× ×•× ×™×ž×™×•×Ş בעזרת × ×רול מעקב - הסתרת עקבותיכם מחברות המודעות ×שר עוקבות ×חר כל פעולה שלכם. -firstRun_toggle_off=מכובה -firstRun_feature_tracking=× ×רול מעקב -firstRun_feature_malware=חסימת ×Ş×•×›× ×•×Ş ×–×“×•× ×™×•×Ş -firstRun_title=Adblock Plus הותקן -firstRun_acceptableAdsExplanation=×× ×—× ×• רוצים לעודד ×תרים להשתמש בפרסום ×¤×©×•× ×•×ś× ×‘×•×ś×. ×–×ת מדוע ×‘×™×ˇ×ˇ× ×• <a>קווים ×ž× ×—×™×ť × ×•×§×©×™×ť</a> כדי לזהות מודעות מתקבלות, ×שר מופיעות בהגדרות ברירת המחדל. ×ם ×‘×¨×¦×•× ×›×ť לחסום בכל ×–×ת ×ת כל המודעות × ×™×Ş×ź <a>×ś× ×רל</a> ×–×ת במספר ×©× ×™×•×Ş. -firstRun_toggle_on=מופעל -firstRun_contributor_credits=קרדי×ים לתורמים -firstRun_dataCorruptionWarning=עמוד ×–×” ממשיך להופיע ? <a>לחצו ×›×ן!</a> -firstRun_acceptableAdsHeadline=מודעות מציקות ייחסמו מעכשיו -firstRun_share=ספרו לחבריכם ומשפחתכם -firstRun_share_headline=<a>×Ş× ×• ×ś× ×• יד</a> בהפיכת הרשת למקום ×וב יותר -firstRun_features=Adblock Plus יכול לעשות יותר מרק לחסום פרסומות -firstRun_feature_malware_description=הפכו ×ת הגלישה שלכם למ×וב×חת יותר על ידי חסימת ×תרים המכילים ×Ş×•×›× ×” ×–×“×•× ×™×Ş. -firstRun_feature_social_description=שחררו ×ו×ומ×ית ×ת חווית הגלישה שלכם מכפתורי מדיה חברתית, כגון Facebook Like, ×שר מופיעים בעמודי ××™× ××¨× × ×•×ž× ×Ş×¨×™×ť ×ת ×”×Ş× ×”×’×•×Ş×›×ť. -firstRun_donate=תרומה -firstRun_donate_label=תמיכה ×‘×¤×¨×•×™×§× ×©×ś× ×• -firstRun_feature_social=הסרת כפתורי מדיה חברתיים -firstRun_legacySafariWarning=×”× ×›×ť משתמשים בגירסה ×™×©× ×” של Safari ×©×ś× × ×Ş×ž×›×Ş על ידי Adblock Plus. ×–×” עלול ×ś× ×ś×˘×‘×•×“ כר×וי ×ו לשבש ×ת חווית המשתמש בחלק מה×תרים. ×× ×• ממליצים לכם לעדכן ×ת Safari לגרסה 6.1.1 ומעלה (OS X 10.8 Mountain Lion) ×ו Safari 7.0.1 ומעלה (OS X 10.9 Mavericks) ×ו להשתמש בגרסה ×”××—×¨×•× ×” של Mozilla Firefox, Google Chrome or Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/global.properties deleted file mode 100644 index eee273a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=×ין פרי×ים לחסימה בעמוד ×”× ×•×›×—×™ -action3_tooltip=לחיצה כדי ל×פשר/×ś× ×רל ×ת Adblock Plus. -notification_antiadblock_title=הסתרת הודעות ×ž×•×›×•×•× ×•×Ş? -type_label_script=×Ş×ˇ×¨×™× -filter_elemhide_nocriteria=×ś× ×¦×•×™×ź קרי×ריון לזיהוי ×”××ś×ž× × ×©×™×•×ˇ×Ş×¨ -blockingGroup_title=כללי חסימת מודעות -whitelisted_tooltip=Adblock Plus עובד ×בל ×”×•× ×ž× ×•×רל בעמוד ×”× ×•×›×—×™. -type_label_stylesheet=×ˇ×’× ×•×ź -blocked_count_tooltip=?1? מתוך ?2? -type_label_font=גופן -type_label_popup=חלון קופץ -filter_regexp_tooltip=×ž×ˇ× ×ź ×–×” ×”×•× ×‘×™×וי רגיל ×ו קצר מדי מכדי להיות מי×בי. יותר מדי ×ž×ˇ× × ×™×ť מסוג ×–×” יכולים לה×× ×ת הגלישה. -action0_tooltip=לחיצה כדי להציג ×ת ×Ş×¤×¨×™× ×”×ś×—×¦×ź ×”×™×ž× ×™, לחיצה ×מצעית כדי ל×פשר/×ś× ×רל. -whitelisted_page=Adblock Plus ×ž× ×•×רל עבור העמוד ×”× ×•×›×—×™ -remove_group_warning=×”×ם ב×מת ×‘×¨×¦×•× ×š להסיר קבוצה זו? -action1_tooltip=לחיצה כדי לפתוח/לסגור ×ת רשימת הפרי×ים לחסימה, לחיצה ×מצעית כדי ל×פשר/×ś× ×רל. -type_label_xmlhttprequest=בקשת XML -active_tooltip=Adblock Plus מ×פשר, ?1? הרשמת(ות) ×ž×ˇ× × ×™×ť ו ?2? ×ž×ˇ× ×ź(ים) מות×מים בשימוש. -type_label_document=מסמך -type_label_object_subrequest=תת-דרישת ××•×‘×™×™×§× -whitelistGroup_title=כללים חריגים -disabled_tooltip=Adblock Plus ×ž× ×•×רל. -filter_elemhide_duplicate_id=רק זהות ×חת של ×”××ś×ž× × ×©×™×•×ˇ×Ş×¨ × ×™×Ş× ×Ş לציון -type_label_object=××•×‘×™×™×§× -action2_tooltip=לחיצה כדי לפתוח ×ת המ××¤×™×™× ×™×ť, לחיצה ×מצעית כדי ל×פשר/×ś× ×רל. -type_label_subdocument=מסגרת -clearStats_warning=×–×” ×™×פס ×ת כל ס××יס×יקות הלחיצה של ×”×ž×ˇ× × ×™×ť ×•×™× ×רל ×ת ×ž× ×™×™×Ş הלחיצה של ×”×ž×ˇ× ×ź. ×”×ם להמשיך? -notification_antiadblock_message=×תר ×–×” ידוע בהצגת הודעות ×ž×›×•×•× ×•×Ş למשתמשי Adblock Plus. ×”×ם ×‘×¨×¦×•× ×›×ť ש-Adblock Plus יסתיר הודעות ×ž×•×›×•×•× ×•×Ş? -blocked_count_addendum=(גם כן ברשימת המורשים: ?1?, מוסתר: ?2?) -subscription_invalid_location=מיקום רשימת ×”×ˇ×™× ×•×ź ××™× × ×• כתובת ×תר חוקית ×•×ś× ×©×ť קובץ חוקי. -type_label_image=×Ş×ž×•× ×” -remove_subscription_warning=×”×ם להסיר ×ת ההרשמה ×”×–×ת? -type_label_other=×חר -mobile_menu_enable=ABP: מ×פשר -type_label_media=×ודיו/ויד×ו -mobile_menu_disable_site=ABP: ×ž× ×רל ב-?1? -elemhideGroup_title=כללי הסתרת ××ś×ž× ×ים -mobile_menu_enable_site=ABP: מ×פשר ב-?1? -type_label_elemhide=מוסתר -newGroup_title=קבוצת ×ž×ˇ× × ×™×ť חדשה -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/overlay.dtd deleted file mode 100644 index 96b0652..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&כן"> -<!ENTITY notification.button.no "&ל×"> -<!ENTITY sync.label "&×ˇ× ×›×¨×•×ź הגדרות Adblock Plus"> -<!ENTITY whitelist.site.label "× ×רול ב-?1?"> -<!ENTITY filters.label "&העדפות ×ˇ×™× ×•×ź"> -<!ENTITY disable.label "× ×רול בכל מקום"> -<!ENTITY objecttab.title "חסימה"> -<!ENTITY objecttab.tooltip "לחיצה ×›×ן לחסימת ×¤×¨×™× ×–×” עם Adblock Plus"> -<!ENTITY menuitem.label "&העדפות Adblock Plus"> -<!ENTITY objecttabs.label "הצגת &×ś×©×•× ×™×•×Ş על פל×ש וג'×ווה"> -<!ENTITY sendReport.label "&דיווח על בעיה בעמוד ×–×”"> -<!ENTITY whitelist.page.label "× ×רול בעמוד ×”×–×” בלבד"> -<!ENTITY context.image.label "Adblock Plus: חסימת ×Ş×ž×•× ×”"> -<!ENTITY counthits.label "×ž× ×” &לחיצות ×ž×ˇ× ×ź"> -<!ENTITY opensidebar.label "&פתיחת רשימת הפרי×ים לחסימה"> -<!ENTITY notification.button.close "&סגירה"> -<!ENTITY contribute.label "תרום ל-Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: חסימת מסגרת (פריים)"> -<!ENTITY blocked.tooltip "פרי×ים חסומים בעמוד ×–×”:"> -<!ENTITY hideplaceholders.label "הסתרת &×ž×¦×™×™× ×™ מקום של ××ś×ž× ×ים חסומים"> -<!ENTITY showinstatusbar.label "&הצגה בשורת המצב"> -<!ENTITY sidebar.title "פרי×ים לחסימה בעמוד ×”× ×•×›×—×™"> -<!ENTITY options.label "&×פשרויות"> -<!ENTITY context.object.label "Adblock Plus: חסימת פרי×"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: מ×פשר מחדש בעמוד ×–×”"> -<!ENTITY filters.tooltip "×”×ž×ˇ× × ×™×ť הפעילים ביותר:"> -<!ENTITY closesidebar.label "&סגירת הרשימה של הפרי×ים לחסימה"> -<!ENTITY showintoolbar.label "&הצגה בסרגל הכלים"> -<!ENTITY status.tooltip "מצב:"> -<!ENTITY context.media.label "Adblock Plus: חסימת וויד×ו/×ודיו"> -<!ENTITY subscription.update.label "עדכון ×ž×ˇ× × ×™×ť"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sendReport.dtd deleted file mode 100644 index 7a042c1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "&בי×ול"> -<!ENTITY issues.disabledgroups.description "קבוצות ההרשמה/×”×ž×ˇ× × ×™×ť הב×ות ×ž× ×•×רלות, לפי שעה ×ולי יש להם השפעה על עמוד ×–×”:"> -<!ENTITY showData.label "הצגת מידע של הדיווח"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus חוסם יותר &מדי"> -<!ENTITY issues.change.description "התצורה שלכם ×©×•× ×Ş×”. יש ×ś×¨×˘× ×ź ×ת העמוד כדי לבחון ×ת ×”×©×™× ×•×™×™×ť ולהזין דיווח ×ם הבעיה ×ś× × ×¤×Ş×¨×” בעקבות ×”×©×™× ×•×™."> -<!ENTITY email.label "&דו×"ל:"> -<!ENTITY issues.openPreferences.label "פתיחת העדפות ×ˇ×™× ×•×ź"> -<!ENTITY sendPage.confirmation "הדיווח שלכם × ×©×ž×¨. × ×™×Ş×ź לגשת ×ליו בכתובת הב××”:"> -<!ENTITY copyLink.label "&העתקת הקישור לדיווח"> -<!ENTITY issues.nofilters.description "Adblock Plus ×ś× ×—×•×ˇ×ť דבר בעמוד ×”× ×•×›×—×™. הבעיה ×שר ×ž×‘×—×™× ×™×ť קרוב לווד××™ ××™× × ×” קשורה ל-Adblock Plus."> -<!ENTITY sendPage.knownIssue "הבעיה שדווחה קרוב לווד××™ שידועה כבר. מידע × ×•×ˇ×Ł:"> -<!ENTITY typeSelector.other.description "בחירת ×פשרות זו בחשד לבעיה עם Adblock Plus עצמו ×•×ś× ×‘×ž×ˇ× × ×™×ť שלו."> -<!ENTITY issues.disabledgroups.enable.label "×פשור ההרשמה/קבוצת ×”×ž×ˇ× × ×™×ť"> -<!ENTITY typeWarning.override.label "×× ×™ &מבין ורוצה לשלוח ×ת הדיווח בכל ×–×ת"> -<!ENTITY issues.disabled.enable.label "×פשור Adblock Plus"> -<!ENTITY update.fixed.description "×פשרי שעדכון הרשמות ×”×ž×ˇ× × ×™×ť שלכם יפתור ×ת הבעיה שדווחה. ×× × ×¨×˘× × ×• ×ת העמוד ×•× ×ˇ×• שוב, לחצו על דיווח שוב ×ם הבעיה × ×©×רת."> -<!ENTITY anonymous.label "הגשה &×× ×•× ×™×ž×™×Ş"> -<!ENTITY reloadButton.label "&×¨×˘× ×•×ź העמוד"> -<!ENTITY recentReports.clear.label "&הסרת כל הדיווחים"> -<!ENTITY typeSelector.description "חלון ×–×” ידריך ×תכם דרך הצעדים הדרושים ×ś×”×–× ×Ş דיווח בעיה עבור Adblock Plus. ר×שית, ×× × ×‘×—×¨×• ×ת סוג הבעיה ×שר ×תם חווים בעמוד ×–×”:"> -<!ENTITY screenshot.remove.label "&הסרת מידע רגיש"> -<!ENTITY issues.ownfilters.description "חלק ×ž×”×ž×ˇ× × ×™×ť שחלים על עמוד ×–×” הם מוגדרי-משתמש. יש ×ś× ×רל ×ת ×”×ž×ˇ× × ×™×ť ×שר ×ולי הם הגורמים לבעיה:"> -<!ENTITY update.inProgress.description "Adblock Plus צריך לעדכן ×ת הרשמות ×”×ž×ˇ× × ×™×ť כדי ×ś×•×•×“× ×©×”×‘×˘×™×” ×ś× × ×¤×Ş×¨×” כבר. ×× × ×× × ×”×ž×Ş×™× ×•..."> -<!ENTITY sendPage.retry.label "שלח שוב"> -<!ENTITY data.label "&מידע הדיווח:"> -<!ENTITY recentReports.label "דיווחים ××—×¨×•× ×™×ť שלך ×©× ×©×ś×—×•"> -<!ENTITY typeWarning.description "×¦×™×™× ×Ş×ť ש×תם ×ž×˘×•× ×™×™× ×™×ť לדווח על בעיה כללית עם Adblock Plus מ×שר בעיה עם ×”×ž×ˇ× × ×™×ť. שימו לב שבעיות ×›×לו עדיף לדווח ב[link]פורום Adblock Plus[/link]. יש להשתמש במדווח הבעיות רק ×‘× ×•×ˇ×Ł לדיון קיים, כיוון ש×ף ×חד ×ś× ×™×©×™×ť לב לדיווח שלכם ××ś× ×ם יסופק קישור ×ליו. הקישור ×©× ×•×¦×¨ ×ו×ומ×ית יסופק ל×חר ×”×–× ×Ş הדיווח."> -<!ENTITY issues.disabled.description "Adblock Plus ×ž× ×•×רל, ×–×” ×ś× ×™×—×ˇ×•×ť דבר במצב ×”× ×•×›×—×™."> -<!ENTITY attachExtensions.label "סיפוח רשימת &ההרחבות הפעילות ×ל הדיווח במקרה ×•× ×™×’×•×“ תוספות ×”×•× ×”×’×•×¨×ť לבעיה"> -<!ENTITY issues.nosubscriptions.add.label "הוספת הרשמת ×ž×ˇ× ×ź"> -<!ENTITY issues.disabledfilters.enable.label "×פשור ×ž×ˇ× ×ź"> -<!ENTITY issues.override.label "&התצורה × ×›×•× ×”, ×פשר להמשיך עם הדיווח"> -<!ENTITY issues.nosubscriptions.description "× ×¨××” ש××™× ×›×ť רשומים לשום ×ž×ˇ× ×ź שהוכן מר×ש ×שר מופיע ברשימה שמסיר ×ו×ומ×ית תוכן ×ś× ×¨×¦×•×™ מ×תרי ××™× ××¨× ×."> -<!ENTITY typeSelector.falsePositive.description "בחר ב×פשרות זו ×ם חסר בעמוד תוכן חשוב ×ו שמוצג בצורה ×ś× × ×›×•× ×” ×ו כושל לתפקד כר×וי. × ×™×Ş×ź לקבוע ×”×ם Adblock Plus ×”×•× ×”×’×•×¨×ť לבעיה על ידי × ×רולו ×–×ž× ×™×Ş."> -<!ENTITY typeSelector.other.label "בעיה &×חרת"> -<!ENTITY emailComment.label "×× ×• ממליצים להזין כתובת דו×"ל תקפה, כך ×©× ×•×›×ś ליצור ×יתך קשר ×ם קיימות ש×לות לגבי הדוח שלך. -כמו כן, כתובתך ת×פשר ×ś× ×• לזהות ×ת תרומותייך ולתעדף ×ותן בצורה גבוהה יותר."> -<!ENTITY issues.whitelist.remove.label "×פשור מחדש של Adblock Plus בעמוד ×–×”"> -<!ENTITY outdatedSubscriptions.description "הרשמות ×”×ž×ˇ× × ×™×ť הב×ות ×ś× ×˘×•×“×›× ×• לפחות שבועיים. ×× × ×˘×“×›× ×• הרשמות ×לו ×ś×¤× ×™ שליחת הדיווח, יכול להיות שהבעיה × ×¤×Ş×¨×” כבר."> -<!ENTITY dataCollector.description "×× × ×”×ž×Ş×™× ×• מספר רגעים עד ×שר Adblock Plus ×™×סוף ×ת המידע הדרוש."> -<!ENTITY sendButton.label "&שליחת דיווח"> -<!ENTITY comment.label "&הערה (×ś× ×—×•×‘×”):"> -<!ENTITY sendPage.errorMessage "× ×›×©×ś × ×™×ˇ×™×•×ź השליחה של הדיווח עם קוד השגי××” "?1?". ×× × ×•×•×“×ו ש×תם מחוברים ל××™× ××¨× × ×•× ×ˇ×• שוב. ×ם הבעיה × ×ž×©×›×Ş, ×× × ×‘×§×©×• סיוע ב[link]פורום Adblock Plus[/link]LL."> -<!ENTITY showRecentReports.label "הצגת הדיווחים ×”××—×¨×•× ×™×ť ×©× ×©×ś×—×•"> -<!ENTITY commentPage.heading "×”×–× ×Ş תגובה"> -<!ENTITY update.start.label "התחל לעדכן כעת"> -<!ENTITY issues.disabledfilters.description "×”×ž×ˇ× × ×™×ť הב×ים ×ž× ×•×רלים, לפי שעה ×ולי יש להם השפעה על עמוד ×–×”:"> -<!ENTITY screenshot.description "עמוד ×–×”×” יכול להר×ות ×©×•× ×” ל×× ×©×™×ť ×©×•× ×™×ť. ×ם תצורף ×Ş×ž×•× ×Ş מסך לדיווח, ×–×” ×ולי יעזור ×ś× ×• להבין ×ת הבעיה. × ×™×Ş×ź להסיר חלקים המכילים מידע רגיש וכמו כן לסמן ×זורים שבהם הבעיה ×ž×•×‘×—× ×Ş. כדי לעשות ×–×ת יש ללחוץ על כפתור ההתכתבות ולבחור עם העכבר חלק ×ž×”×Ş×ž×•× ×”."> -<!ENTITY screenshot.attach.label "&צרף ×Ş×ž×•× ×Ş דף לדיווח"> -<!ENTITY issues.whitelist.description "Adblock Plus ×ž× ×•×רל כעת בעמוד ×שר מדווח. יש ל×פשר ×ותו מחדש ×•×ś×¨×˘× ×ź ×ת העמוד ×ś×¤× ×™ ×”×–× ×Ş הדיווח על ×ž× ×Ş לסייע בחקירת בעיה זו."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus ××™× × ×• חוסם &פרסומות"> -<!ENTITY typeSelector.heading "בחירת סוג הבעיה"> -<!ENTITY anonymity.warning "×ś× × ×•×›×ś לחזור ×ליך, וסביר ×©× ×Ş×˘×“×Ł ×ת הדוח בצורה × ×ž×•×›×” יותר."> -<!ENTITY wizard.title "מדווח הבעיות"> -<!ENTITY issues.ownfilters.disable.label "× ×רול ×ž×ˇ× ×ź"> -<!ENTITY commentPage.description "שדה ×”××§×ˇ× ×©×ž×Ş×—×Ş מ×פשר ×”×–× ×Ş תגובה כדי לסייע ×ś× ×• ×‘×”×‘× ×Ş הבעיה. צעד ×–×” ××™× × ×• בגדר חובה ×ך מומלץ ×ם הבעיה ××™× × ×” ×ž×•×‘× ×Ş מ×ליה. × ×™×Ş×ź גם לסקור ×ת × ×Ş×•× ×™ הדיווח ×ś×¤× ×™ ×©×”×•× × ×©×ś×—."> -<!ENTITY comment.lengthWarning "×ורך ההודעה חרג מ-1000 תווים. רק 1000 התווים הר××©×•× ×™×ť ישלחו."> -<!ENTITY typeSelector.falseNegative.description "בחירת ×פשרות זו ×ם מוצגת פרסומת למרות ש-Adblock Plus מ×פשר."> -<!ENTITY sendPage.waitMessage "×× × ×”×ž×Ş×™× ×• בזמן ש-Adblock Plus מזין ×ת הדיווח שלכם."> -<!ENTITY dataCollector.heading "ברוכים הב×ים למדווח הבעיות"> -<!ENTITY screenshot.heading "צירוף צילום מסך"> -<!ENTITY sendPage.heading "שליחת דיווח"> -<!ENTITY issues.subscriptionCount.description "× ×¨××” ש×תם רשומים ליותר מדי הרשמות ×ž×ˇ× × ×™×ť. מערך ×–×” ××™× × ×• מומלץ מכיוון שזה יגרום לסיכוי לבעיות להיות הרבה יותר גבוה. ×× ×—× ×• גם ×ś× × ×•×›×ś לקבל ×ת דיווחי הבעיות שלכם מכיוון ×©×ś× ×‘×¨×•×¨ ××™×–×” מחבר הרשמות ×ž×ˇ× ×ź צריך ×ś× ×§×•× ×‘×¤×˘×•×ś×”. ×× × ×”×ˇ×™×¨×• ×ת כל הרשמות ×”×ž×ˇ× × ×™×ť ×¤×¨× ×ś×לו שב×מת × ×—×•×¦×•×Ş ובדקו ×”×ם ××– הבעיה עדיין מתרחשת."> -<!ENTITY screenshot.mark.label "&סמן ×ת הבעיה"> -<!ENTITY privacyPolicy.label "הצהרת פר×יות"> -<!ENTITY issues.description "Adblock Plus ×–×™×”×” בעיות עם התצורה שלכם ש×ולי ×חר×ית לבעיה זו ×ו שיגרום לחקירת הדיווח לקשה."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sidebar.dtd deleted file mode 100644 index 3cac07a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "גבולות ×¤×¨×™× ×”×¤×ś×ש"> -<!ENTITY address.label "כתובת"> -<!ENTITY context.open.label "פתיחה ×‘×ś×©×•× ×™×Ş חדשה"> -<!ENTITY type.label "סוג"> -<!ENTITY tooltip.filterSource.label "מקור ×ž×ˇ× ×ź"> -<!ENTITY noitems.label "×ין פרי×ים ×”× ×™×Ş× ×™×ť לחסימה"> -<!ENTITY filter.label "×ž×ˇ× ×ź"> -<!ENTITY tooltip.size.label "גודל:"> -<!ENTITY reattach.label "חיבור"> -<!ENTITY search.label "&חיפוש:"> -<!ENTITY docDomain.thirdParty "(צד שלישי)"> -<!ENTITY filterSource.label "מקור ×”×ž×ˇ× ×ź"> -<!ENTITY tooltip.docDomain.label "מקור המסמך:"> -<!ENTITY context.copy.label "העתקת כתובת הפרי×"> -<!ENTITY tooltip.type.label "סוג:"> -<!ENTITY context.disablefilter.label "× ×רול ×”×ž×ˇ× ×ź ?1?"> -<!ENTITY context.copyFilter.label "העתקת ×”×ž×ˇ× ×ź"> -<!ENTITY context.block.label "חסימת ×¤×¨×™× ×–×”"> -<!ENTITY context.enablefilter.label "×פשור ×”×ž×ˇ× ×ź מחדש ?1?"> -<!ENTITY detach.label "הפרדה"> -<!ENTITY whitelisted.label "העמוד × ×ž×¦× ×‘×¨×©×™×ž×” ×”×ś×‘× ×”"> -<!ENTITY context.disablefilteronsite.label "× ×רול ×ž×ˇ× ×ź ×–×” ב ?1?"> -<!ENTITY detached.title "(פרי×ים לחסימה (מופרד :Adblock Plus"> -<!ENTITY docDomain.firstParty "(צד ר×שון)"> -<!ENTITY tooltip.type.whitelisted "(ברשימה ×”×ś×‘× ×”)"> -<!ENTITY tooltip.filter.label "השפעת ×”×ž×ˇ× ×ź:"> -<!ENTITY tooltip.filter.disabled "(×ž× ×•×רל)"> -<!ENTITY context.editfilter.label "עריכת ×”×ž×ˇ× ×ź שמשפיע"> -<!ENTITY tooltip.type.blocked "(חסום)"> -<!ENTITY size.label "גודל"> -<!ENTITY context.whitelist.label "הוספת כלל חריג עבור פרי×"> -<!ENTITY context.selectAll.label "בחירת הכל"> -<!ENTITY state.label "מצב"> -<!ENTITY docDomain.label "מקור המסמך"> -<!ENTITY tooltip.address.label "כתובת:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/subscriptionSelection.dtd deleted file mode 100644 index eaa7959..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/he/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "הוספת &הרשמת ×”×ž×ˇ× × ×™×ť "?1?" גם כן"> -<!ENTITY list.download.failed "Adblock Plus × ×›×©×ś ב×חזור רשימת ההרשמות."> -<!ENTITY list.download.retry "× ×ˇ×” ×©× ×™×Ş"> -<!ENTITY title.label "&כותרת ההרשמה:"> -<!ENTITY list.download.website "הצגת ×”×תר"> -<!ENTITY supplementMessage "×ž×ˇ× ×ź הרשמה ×–×” × ×•×˘×“ לשימוש עם ×ž×ˇ× ×ź ההרשמה "?1?" ×שר ×ś× × ×˘×©×” בו שימוש עדיין."> -<!ENTITY viewList.label "הצגת ×ž×ˇ× × ×™×ť"> -<!ENTITY visitHomepage.label "ביקור ב×תר הבית"> -<!ENTITY addSubscription.label "הוספת הרשמה"> -<!ENTITY dialog.title "הוספת הרשמת ×ž×ˇ× × ×™×ť ל-Adblock Plus"> -<!ENTITY location.label "מיקום רשימת &×”×ž×ˇ× × ×™×ť:"> -<!ENTITY fromWeb.description "יש ×ś×•×•×“× ×”×•×ˇ×¤×Ş ×ž×ˇ× ×ź הרשמה ×–×”. × ×™×Ş×ź ×ś×©× ×•×Ş ×ת כותרת ×ו מיקום ההרשמה ×ś×¤× ×™ הוספתה."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/composer.dtd deleted file mode 100644 index 5f131ff..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "&na kraju adrese"> -<!ENTITY domainRestriction.label "OgraniÄŤi na &domenu:"> -<!ENTITY collapse.default.no.label "Koriati uobiÄŤajeno (ne)"> -<!ENTITY firstParty.label "Samo od p&rve strane"> -<!ENTITY preferences.label "Pri&kaĹľi postojeće filtere..."> -<!ENTITY pattern.label "TraĹľi ponavljajući uzorak"> -<!ENTITY thirdParty.label "Samo od &treće strane"> -<!ENTITY filter.label "Novi &filter:"> -<!ENTITY collapse.label "&SaĹľeti blokirano:"> -<!ENTITY match.warning "Uneseni uzorak više se ne poklapa sa adresom za blokeiranje/odblokiranje i neće imati nikakvog utjecaja na nju."> -<!ENTITY anchor.start.label "na &poÄŤetku adrese"> -<!ENTITY matchCase.label "ToÄŤan i&zraz"> -<!ENTITY custom.pattern.label "Prila&goÄ‘eno:"> -<!ENTITY unselectAllTypes.label "Odaberi ništa"> -<!ENTITY type.whitelist.label "Prav&ilo iznimke"> -<!ENTITY regexp.warning "Uzorak koji ste unijeli biti će protumaÄŤen kao obiÄŤni izraz kojeg Adblock Plus ne moĹľe efikasno obraditi i moĹľe usporiti vaše surfanje. Ako niste namjeravali koristiti obiÄŤni izraz, dodajte asterisk (*) na kraju uzorka."> -<!ENTITY dialog.title "Dodaj Adblock Plus pravilo filtera"> -<!ENTITY basic.label "Osnovni pregled"> -<!ENTITY type.filter.label "&Blokirani filter"> -<!ENTITY types.label "Primjeniti na vrste:"> -<!ENTITY shortpattern.warning "Uneseni uzorak je prekratak za optimizaciju i moĹľe usporiti vaše surfanje. PreporuÄŤamo da odaberete duĹľi niz za ovaj filter kako biste omogućili da Adblock Plus efikasnije obradi taj filter."> -<!ENTITY collapse.yes.label "Da"> -<!ENTITY anchors.label "Prihvati samo uzorak:"> -<!ENTITY collapse.default.yes.label "Koristi uobiÄŤajeno (da)"> -<!ENTITY domainRestriction.help "Koristite ovu mogućnost za odabir jedne ili više domena odvojenih okomitom linijom (|). Filter će biti primjenjen samo na odabrane domene. Tilda (~) prije naziva domene pokazuje da filter neće biti primjenjen na toj domeni."> -<!ENTITY accept.label "Dodaj filter"> -<!ENTITY options.label "Mogućnosti"> -<!ENTITY disabled.warning "Adblock Plus je trenutno onemogućen. MoĹľete dodavati filtere ali oni se neće primjenjivati ako ne [link]omogućite Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "na &poÄŤetku naziva domene"> -<!ENTITY collapse.no.label "Ne"> -<!ENTITY selectAllTypes.label "Odaberi sve"> -<!ENTITY advanced.label "Napredni pregled"> -<!ENTITY pattern.explanation "Uzorak moĹľe biti bilo koji dio adrese, asterisk (*) sluĹľi kao zamjena. Filter će biti samo primjenjen na adrese koje se podudaraju sa naznaÄŤenim uzorkom."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/filters.dtd deleted file mode 100644 index efbb24b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Svi vaši prilagoÄ‘eni filteri biti će zamijenjene sadrĹľajem odabrane datoteke. Ĺ˝elite li nastaviti?"> -<!ENTITY slow.column "Spori filteri (&w)"> -<!ENTITY enabled.column "O&mogućeno"> -<!ENTITY subscription.lastDownload.checksumMismatch "Neuspješno, neusklaÄ‘enost checksum-a."> -<!ENTITY noFiltersInGroup.text "Odabrana grupa je prazna."> -<!ENTITY subscription.actions.label "Radnje"> -<!ENTITY filter.selectAll.label "Odaberi sve"> -<!ENTITY backupButton.label "&Sigurnosne kopije i vraćanje"> -<!ENTITY restore.minVersion.warning "Upozorenje: datoteka je stvorena novijom inaÄŤicom Adblock Plus-a. Trebali biste aĹľurirati na posljednju inaÄŤicu Adblock Plus-a prije vraćanja ove datoteke."> -<!ENTITY restore.error "Podaci datoteka ne mogu biti obraÄ‘eni, moĹľda to nije Adblock Plus datoteka sigurnosne kopije?"> -<!ENTITY sort.ascending.label "&A > Z red slaganja"> -<!ENTITY sort.label "Po&sloĹľiti po"> -<!ENTITY subscription.source.label "Popis filtera"> -<!ENTITY hitcount.column "Pogoci (&H)"> -<!ENTITY noFilters.text "Još nemate prilagoÄ‘enih filtera."> -<!ENTITY backup.custom.title "Samo prilagoÄ‘eni filteri"> -<!ENTITY subscription.external.label "AĹľurirano drugim prikljuÄŤkom"> -<!ENTITY subscription.delete.label "Obriši"> -<!ENTITY noGroupSelected.text "Morate odabrati grupu filtera prije nego filteri mogu biti prikazani."> -<!ENTITY filter.cut.label "IzreĹľi"> -<!ENTITY restore.default.label "Vrati sigurnosnu kopiju od ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Preuzimanje..."> -<!ENTITY subscriptions.tab.label "Pretplate filtera"> -<!ENTITY sort.descending.label "&Z > A red slaganja"> -<!ENTITY filters.remove.warning "Sigurno Ĺľelite ukloniti sve odabrane filtere?"> -<!ENTITY filter.delete.label "Obriši"> -<!ENTITY addSubscriptionAdd.label "Dodaj"> -<!ENTITY viewMenu.label "Pogledaj"> -<!ENTITY subscription.lastDownload.unknown "nepoznato"> -<!ENTITY addSubscriptionCancel.label "Poništi"> -<!ENTITY subscription.enabled.label "Omogućen"> -<!ENTITY noSubscriptions.text "Još niste dodali nijednu pretplatu filtera. Adblock Plus neće blokirati - ništa bez filtera, molim koristite "Dodaj pretplatu filtera" za - dodavanje filtera."> -<!ENTITY subscription.update.label "AĹľuriraj filtere"> -<!ENTITY dialog.title "Adblock Plus postavke filtera"> -<!ENTITY addFilter.label "&Dodaj filter"> -<!ENTITY subscription.minVersion.warning "Ova pretplata filtera zahtijeva noviju inaÄŤicu Adblock Plus-a, aĹľurirajte na posljednju Adblock Plus inaÄŤicu."> -<!ENTITY subscription.lastDownload.invalidURL "Neuspješno, neispravna adresa"> -<!ENTITY backup.error "Dogodila se greška pri zapisivanja filtera u datoteku. Pobrinite se da datoteka nije postavljena na -samo ÄŤitanje- ili ju koristi druga aplikacija."> -<!ENTITY filter.moveUp.label "Pomakni gore"> -<!ENTITY addGroup.label "Dodaj &grupu filtera"> -<!ENTITY filter.edit.label "Uredi"> -<!ENTITY subscription.showHideFilters.label "PrikaĹľi/sakrij filtere"> -<!ENTITY acceptableAds2.label "Dopust&i neke nenametljive reklame"> -<!ENTITY addSubscriptionOther.label "Dodaj drugu pretplatu"> -<!ENTITY close.label "Zatvori"> -<!ENTITY sort.none.label "&NeposloĹľeno"> -<!ENTITY filter.actions.label "Radnje filtera"> -<!ENTITY filter.copy.label "Kopiraj"> -<!ENTITY filter.moveDown.label "Pomakni gore"> -<!ENTITY filter.resetHitCounts.label "Vrati na poÄŤetno statistiku pogodaka"> -<!ENTITY readMore.label "ProÄŤitaj više"> -<!ENTITY subscription.moveUp.label "Pomakni gore"> -<!ENTITY addSubscription.label "Dodaj pretplatu &filtera"> -<!ENTITY subscription.homepage.label "PoÄŤetna stranica"> -<!ENTITY backup.complete.title "Svi filteri i pretplate"> -<!ENTITY restore.own.label "Vratite vlastitu sigurnosnu kopiju"> -<!ENTITY restore.complete.warning "Sve vaše postavke filtera biti će zamijenjene sadrĹľajem odabrane datoteke. Ĺ˝elite li nastaviti?"> -<!ENTITY filters.tab.label "PrilagoÄ‘eni filteri"> -<!ENTITY backup.label "Stvori novu sigurnosnu kopiju"> -<!ENTITY find.label "&TraĹľi"> -<!ENTITY subscription.moveDown.label "Pomakni dolje"> -<!ENTITY subscription.lastDownload.connectionError "Neuspješno, greška preuzimanja"> -<!ENTITY subscription.lastDownload.success "Uspješno"> -<!ENTITY subscription.lastDownload.invalidData "Neuspješno, neispravan popis filtera"> -<!ENTITY filter.paste.label "Zalijepi"> -<!ENTITY subscription.disabledFilters.enable "Omogući onemogućene filtere"> -<!ENTITY lasthit.column "Pos&ljednji pogodak"> -<!ENTITY subscription.editTitle.label "Uredi naziv"> -<!ENTITY subscription.disabledFilters.warning "Neki filteri u ovoj pretplati su onemogućeni."> -<!ENTITY filter.column "Pravilo &filtera"> -<!ENTITY subscription.lastDownload.label "Zadnje preuzimanje:"> -<!ENTITY viewList.label "Pogledaj popis"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/firstRun.properties deleted file mode 100644 index dad411a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Surfajte privatno tako što ćete onemogućiti praćenje - skrivanjem od reklamnih kompanija koje prate vaš svaki pokret. -firstRun_toggle_off=ISKLJUÄŚI -firstRun_feature_tracking=Onemogućavanje praćenja -firstRun_feature_malware=Blokiranje malwara -firstRun_title=Adblock Plus je instaliran -firstRun_toggle_on=UKLJUÄŚI -firstRun_acceptableAdsExplanation=Ĺ˝elimo podupirati web stranice da koriste pošteno, nenametljivo reklamiranje. Zato smo uspostavili <a>toÄŤne smjernice</a> za prepoznavanje reklama, koje su prikazane prema uobiÄŤajenim postavkama. Ako još uvijek Ĺľelite blokirati svaku reklamu to moĹľete <a>onemogućiti</a> za nekoliko sekuondis. -firstRun_contributor_credits=Zasluge doprinositelja -firstRun_dataCorruptionWarning=Nastavlja li se ova stranica pojavljivati? <a>Kliknite ovdje!</a> -firstRun_acceptableAdsHeadline=Naporni oglasi će sada biti blokirani -firstRun_share=Recite svojim prijateljima -firstRun_share_headline=<a>Pomognite nam</a> pri stvaranju Interneta boljim mjestom -firstRun_feature_social_description=Automatski oslobodite svoje surfanje internetom od napornih tipki društvenih mreĹľa poput Facebook 'SviÄ‘a mi se' tipke, koji se pojavljuju na web stranicama i prati vaše ponašanje. -firstRun_filterlistsReinitializedWarning=Izgleda da je greška uzrokovala uklanjanje svih filtra, a mi smo u nemogućnosti da ih vratimo. Zato smo postavili na poÄŤetne postavke vaših filtra i prihvatljivih reklama. Provjerite postavke vaših popisa filtra i prihvatljivih reklama u <a>Adblock Plus mogućnostima</a>. -firstRun_feature_malware_description=UÄŤinite vaše surfanje Internetom sigurnijim blokiranjem poznatih malvare domena. -firstRun_features=Adblock Plus moĹľe uÄŤiniti mnogo više nego samo blokirati reklame -firstRun_donate=donirajte -firstRun_donate_label=PodrĹľite naš projekt -firstRun_feature_social=Uklanjanje tipki društvenih mreĹľa -firstRun_legacySafariWarning=Koristite stariju inaÄŤicu Safarija koja ne podrĹľava Adblock Plus. MoĹľda neće ispravno raditi ili moĹľe narušiti korisniÄŤko iskustvo na nekim web stranicama. Stoga vam preporuÄŤamo nadogradnju na Safari 6.1.1 ili noviju inaÄŤicu (dostupnu za Mac OS X 10.8 Mountain Lion), ili Safari 7.0.1 ili noviju inaÄŤicu (za OS X 10.9 Mavericks), ili koristite najnoviju inaÄŤicu Mozilla Firefoxa, Google Chroma ili Opere. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/global.properties deleted file mode 100644 index 4e368c9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Na trenutnoj stranici nema stavki koje se mogu blokirati -action3_tooltip=Kliknite za omogućavanje/onemogućavanje Adblock Plus-a. -notification_antiadblock_title=Sakrij ciljane poruke? -type_label_script=skripta -filter_elemhide_nocriteria=Nema kriterija za prepoznavanje elementa koji će biti skriven -blockingGroup_title=Ad Blocking pravila -whitelisted_tooltip=Adblock Plus je onemogućen na trenutnoj stranici. -type_label_stylesheet=stil -blocked_count_tooltip=?1? od ?2? -type_label_font=slovo -type_label_popup=skoÄŤni prozor -filter_regexp_tooltip=Ovaj filter je ili regularan izraz ili je prekatak za optimizacju. Previše ovakvih filtera vam moĹľe usporiti surfanje. -action0_tooltip=Kliknite za otvaranje kontekstnog izbornika, srednji klik za omogućavanje/onemogućavanje. -whitelisted_page=Adblock Plus je onemogućen za trenutnu stranicu -remove_group_warning=Ĺ˝elite li stvarno ukloniti ovu grupu? -action1_tooltip=Kliknite za otvaranje/zatvaranje blokiranih stavki, srednji klik za omogućavanje/onemogućavanje. -type_label_xmlhttprequest=XML zahtjev -active_tooltip=Adblock Plus je omogućen, ?1? pretplata na filtere i ?2? prilagoÄ‘enih filtera je u upotrebi. -type_label_document=dokument -type_label_object_subrequest=podzahtjev objekta -whitelistGroup_title=Pravila iznimka -disabled_tooltip=Adblock Plus je onemogućen. -filter_elemhide_duplicate_id=Samo jedan ID elementa za skrivanje moĹľe biti odabran. -type_label_object=objekt -action2_tooltip=Kliknite za otvaranje postavki, srednji klik za omogućavanje/onemogućavanje. -type_label_subdocument=okvir -clearStats_warning=Ovo će poništiti svu statistiku pogodaka filtera i onemogućiti brojanje pogodaka filtera. Ĺ˝elite li nastaviti? -notification_antiadblock_message=Za ovu stranicu je poznato da prikazuje ciljane poruke Adblock Plus korisnicima. Ĺ˝elite li da Adblock Plus sakrije ciljane poruke? -blocked_count_addendum=(dopušteni: ?1?, skriveni: ?2?) -subscription_invalid_location=Lokacija popisa filtera nije niti valjana web adresa niti naziv datoteke. -type_label_image=slika -remove_subscription_warning=Ĺ˝elite li stvarno ukloniti ovu pretplatu? -type_label_other=drugi -mobile_menu_enable=ABP: Omogući -type_label_media=zvuÄŤni/video zapisi -mobile_menu_disable_site=ABP: Onemogući na ?1? -elemhideGroup_title=Pravila elementa sakrivanja -mobile_menu_enable_site=ABP: Omogući na ?1? -type_label_elemhide=skriveno -newGroup_title=Nova grupa filtera -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/overlay.dtd deleted file mode 100644 index cf53e9f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Da"> -<!ENTITY notification.button.no "&Ne"> -<!ENTITY sync.label "Sinkroniziraj Adblo&ck Plus postavke"> -<!ENTITY whitelist.site.label "Onemogući na ?1?"> -<!ENTITY filters.label "Postavke &filtera"> -<!ENTITY disable.label "Onemogući posvuda"> -<!ENTITY objecttab.title "Blokiraj"> -<!ENTITY objecttab.tooltip "Kliknite ovdje za blokiranje ovog objekta s Adblock Plus-om"> -<!ENTITY menuitem.label "Ad&block Plus postavke"> -<!ENTITY objecttabs.label "Pri&kaĹľi kartice s Flashom i Javom"> -<!ENTITY sendReport.label "P&rijavite problem na ovoj stranici"> -<!ENTITY whitelist.page.label "Onemogući samo na ovoj stranici"> -<!ENTITY context.image.label "Blokiraj sliku s Adblock Plus-om"> -<!ENTITY counthits.label "Broji pogodke fil&tera"> -<!ENTITY opensidebar.label "Otvori &blokirane stavke"> -<!ENTITY notification.button.close "&Zatvori"> -<!ENTITY contribute.label "Doprinesite Adblock Plus-u"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Blokiraj okvir s Adblock Plus-om"> -<!ENTITY blocked.tooltip "Blokirane stavke na ovoj stranici:"> -<!ENTITY hideplaceholders.label "Sakrij rezervirana mjesta b&lokiranih elemenata"> -<!ENTITY showinstatusbar.label "PrikaĹľi u &statusnoj traci"> -<!ENTITY sidebar.title "Stavke koje se mogu blokirati na trenutnoj stranici"> -<!ENTITY options.label "M&ogućnosti"> -<!ENTITY context.object.label "Blokiraj objekt s Adblock Plus-om"> -<!ENTITY context.removeWhitelist.label "Ponovno omogući na ovoj stranici Adblock Plus"> -<!ENTITY filters.tooltip "Najaktivniji filteri:"> -<!ENTITY closesidebar.label "Zatvori &blokirane stavke"> -<!ENTITY showintoolbar.label "Prik&aĹľi u alatnoj traci"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Blokiraj audio/video s Adblock Plus-om"> -<!ENTITY subscription.update.label "AĹľuriraj filtere"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sendReport.dtd deleted file mode 100644 index 61195b8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sendReport.dtd +++ /dev/null @@ -1,102 +0,0 @@ -<!ENTITY screenshot.undo.label "&Vrati"> -<!ENTITY issues.disabledgroups.description "Sljedeća pretplata filtera / grupe filtera su onemogućene, koje moĹľda - utjeÄŤu na ovu stranicu:"> -<!ENTITY showData.label "PrikaĹľi podatke izvješća"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus prev&iše blokira"> -<!ENTITY issues.change.description "Vaše postavke su promijenjene. Ponovno uÄŤitajte stranicu za testiranje promjena - i pošaljite izvješće ako problem nije't riješen testiranjem promjene."> -<!ENTITY email.label "&E-pošta:"> -<!ENTITY issues.openPreferences.label "Otvori postavke filtera"> -<!ENTITY sendPage.confirmation "Vaše izvješće je spremljeno. MoĹľete mu pristupiti na sljedećoj adresi:"> -<!ENTITY copyLink.label "Kopiraj povezni&cu izvješća"> -<!ENTITY issues.nofilters.description "Adblock Plus ništa ne blokira na ovoj trenutnoj stranici. Problem koji ste - opazili zacijelo nije povezan s Adblock Plus-om."> -<!ENTITY sendPage.knownIssue "Problem koji ste prijavili već je poznat. Više informacija:"> -<!ENTITY typeSelector.other.description "Odaberite ovu mogućnost ako mislite da je problem sa Adblock Plus-om, - a ne sa filterima."> -<!ENTITY issues.disabledgroups.enable.label "Omogući pretplatu filtera / grupe filtera"> -<!ENTITY typeWarning.override.label "Razumijem i ipak Ĺľelim podnije&ti izvješće"> -<!ENTITY issues.disabled.enable.label "Omogući Adblock Plus"> -<!ENTITY update.fixed.description "AĹľuriranje vaših pretplata na filtere je vjerovatno riješila problem koji ste - prijavljivali. Ponovno uÄŤitajte stranicu i pokušajte ponovno, pritisnite Prijavi ponovno ako - problem nije rješen."> -<!ENTITY anonymous.label "&Anoniman prijavak"> -<!ENTITY reloadButton.label "Ponovno uÄŤitaj st&ranicu"> -<!ENTITY recentReports.clear.label "&Ukloni sva izvješća"> -<!ENTITY typeSelector.description "Ovaj prozor će vas voditi kroz korake potrebne za prijavu Adblock - Plus izvještaja problema. Prvo odaberite vrstu problema koju ste doĹľivjeli - na ovoj stranici:"> -<!ENTITY screenshot.remove.label "&Ukloni osjetljive podatke"> -<!ENTITY issues.ownfilters.description "Neki od filtera primjenjenih na ovoj stranici je definirao korisnik. Onemogućite - filtere koji moĹľda uzrokuju problem:"> -<!ENTITY update.inProgress.description "Adblock Plus treba aĹľurirati vaše pretplate na filtere kako bi bili sigurni da - problem već nije riješen. PriÄŤekajte..."> -<!ENTITY sendPage.retry.label "Pošalji ponovno"> -<!ENTITY data.label "&Podaci izvješća:"> -<!ENTITY recentReports.label "Vaša nedavno podnesena izvješća"> -<!ENTITY typeWarning.description "NaznaÄŤili ste da Ĺľelite prijaviti općeniti problem sa Adblock Plus-om a ne - problem sa filterima. Takav problem najbolje je prijaviti - na [link]Adblock Plus forumu[/link]. Trebali biste koristiti prijavu problema - za dopunu postojeće rasprave, jer nitko neće zapaziti vaše izvješće - osim ako im ne date poveznicu na to izvješće. Automatski generirana poveznica - biti će dostupna nakon prijave izvješća."> -<!ENTITY issues.disabled.description "Adblock Plus je onemogućen, neće ništa blokirati u ovom trenutnom stanju."> -<!ENTITY attachExtensions.label "Dodaj popis aktivnih dodataka u izvješće u sluÄŤaju da je dodatak &razlog problema"> -<!ENTITY issues.nosubscriptions.add.label "Dodaj pretplatu filtera"> -<!ENTITY issues.disabledfilters.enable.label "Omogući filter"> -<!ENTITY issues.override.label "P&ostavke su ispravne, nastavi s podnošenjem izvješća"> -<!ENTITY issues.nosubscriptions.description "ÄŚini se da niste pretplaćeni na nijedan od unaprijed izraÄ‘enih popisa filtera koji - automatski uklanjaju neĹľeljeni sadrĹľaj sa web stranica."> -<!ENTITY typeSelector.falsePositive.description "Odaberite ovu mogućnost ako stranica vaĹľan sadrĹľaj prikazuje neispravno ili - ne radi ispravno. MoĹľete odrediti da li Adblock Plus uzrokuje - taj problem, tako da ga privremeno onemogućite."> -<!ENTITY typeSelector.other.label "Os&tali problemi"> -<!ENTITY emailComment.label "Molimo vas da upišete valjanu adresu e-pošte, da vas moĹľemo kontaktirati ako ćemo imati pitanja o vašem izvješću problema. To će nam isto tako omogućiti da prepoznamo vaš doprinos i damo mu veći prioritet."> -<!ENTITY issues.whitelist.remove.label "Ponovno omogućite Adblock Plus na ovoj stranici"> -<!ENTITY outdatedSubscriptions.description "Sljedeće pretplate na filtere nisu aĹľurirane najmanje dva tjedna. - AĹľurirajte ove pretplate prije slanja prijave, problem je moĹľda - već riješen."> -<!ENTITY dataCollector.description "PriÄŤekajte nekoliko minuta dok Adblock Plus prikuplja potrebne podatke."> -<!ENTITY sendButton.label "Poša&lji izvješće"> -<!ENTITY comment.label "&Komentar (neobavezno):"> -<!ENTITY sendPage.errorMessage "Neuspjelo slanje izvješća sa greškom "?1?". Provjerite jeste li - spojeni na internet i pokušajte ponovno. Ako se problem ponovi zatraĹľite - pomoć na [link]Adblock Plus forumu[/link]."> -<!ENTITY showRecentReports.label "PrikaĹľi nedavno podnesena izvješća"> -<!ENTITY commentPage.heading "Dodaj komentar"> -<!ENTITY update.start.label "Pokreni aĹľuriranje sada"> -<!ENTITY issues.disabledfilters.description "Sljedeći filteri su onemogućeni, koji moĹľda utjeÄŤu na ovu stranicu:"> -<!ENTITY screenshot.description "Ista stranica moĹľe izgledati drugaÄŤije svakoj osobi. To nam moĹľe pomoći - u razumijevanju problema ako priloĹľite snimku zaslona u izvješće. MoĹľete uklonit - dio koji sadrĹľi osjetljive informacije i oznaÄŤiti podruÄŤje gdje je - problem uoÄŤen. Da bi to uÄŤinili kliknite na odgovarajuću tipku i odaberite - odabrani dio slike mišem."> -<!ENTITY screenshot.attach.label "PriloĹľi&te sliku stranice u izvješće"> -<!ENTITY issues.whitelist.description "Adblock Plus je trenutno onemogućen na stranici za koju šaljete izvješće. Ponovno ga omogućite - i uÄŤitajte stranicu prije podnošenja izvješća za pomoć u istraĹľivanju of - ovog problema."> -<!ENTITY typeSelector.falseNegative.label "Adblo&ck Plus ne blokira reklame"> -<!ENTITY typeSelector.heading "Odaberite vrstu problema"> -<!ENTITY anonymity.warning "Nećemo vas moći kontaktirati i najvjerojatnije izvješće problema će imati niĹľi prioritet."> -<!ENTITY wizard.title "Izvještaj problema"> -<!ENTITY issues.ownfilters.disable.label "Onemogući filter"> -<!ENTITY commentPage.description "Polje teksta ispod omogućuje vam dodavanje komentara, što nam olakšava razumijenvanje problema. - Ovaj korak je neobevezan ali preporuÄŤljiv ako problem nije jasan. - Provjerite ovo izvješće prije nego što ga pošaljete."> -<!ENTITY comment.lengthWarning "Duljina vašeg komentara je veća od 1000 znakova. Samo prvih 1000 znakova biti će poslano."> -<!ENTITY typeSelector.falseNegative.description "Odaberite ovu mogućnost ako su reklame prikazane iako - je Adblock Plus omogućen."> -<!ENTITY sendPage.waitMessage "PriÄŤekajte dok Adblock Plus prijavljuje vaše izvješće."> -<!ENTITY dataCollector.heading "Dobrodošli u izvještaj problema"> -<!ENTITY screenshot.heading "PriloĹľite snimak zaslona"> -<!ENTITY sendPage.heading "Pošalji izvješće"> -<!ENTITY issues.subscriptionCount.description "ÄŚini se da ste pretplaćeni na previše filter pretplata. Ovakvo - podešavanje nije preporuÄŤeno zato jer će povećati vjerojatnost - za nastanak problema. Ne moĹľemo prihvatiti vaš izvještaj problema zato it - jer nije jasno koji autor filtera pretplate mora pogledat problem. Uklonite - sve osim stvarno neophodnih filter pretplata i testirajte je li - se problem još pojavljuje."> -<!ENTITY screenshot.mark.label "OznaÄŤite proble&m"> -<!ENTITY privacyPolicy.label "Pravila privatnosti"> -<!ENTITY issues.description "Adblock Plus je otkrio problem sa vašim postavkama koje su moĹľda odgovorne - za ovaj problem ili će istraĹľiti poteškoću izvještaja."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sidebar.dtd deleted file mode 100644 index 6d885c7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Osvijetli granice stavke"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "Otvori u novoj kartici"> -<!ENTITY type.label "Vrsta"> -<!ENTITY tooltip.filterSource.label "Izvor filtera:"> -<!ENTITY noitems.label "Nema stavki za blokiranje"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "VeliÄŤina:"> -<!ENTITY reattach.label "Ponovno spoji"> -<!ENTITY search.label "&PretraĹľi:"> -<!ENTITY docDomain.thirdParty "(treća strana)"> -<!ENTITY filterSource.label "Izvor filtera"> -<!ENTITY tooltip.docDomain.label "Izvor dokumenta:"> -<!ENTITY context.copy.label "Kopiraj adresu stavke"> -<!ENTITY tooltip.type.label "Vrsta:"> -<!ENTITY context.disablefilter.label "Onemogućiti filter ?1?"> -<!ENTITY context.copyFilter.label "Kopiraj filter"> -<!ENTITY context.block.label "Blokiraj ovu stavku"> -<!ENTITY context.enablefilter.label "Ponovno omogućiti filter ?1?"> -<!ENTITY detach.label "Odvoji"> -<!ENTITY whitelisted.label "Stranica koja je na dopuštenom popisu"> -<!ENTITY context.disablefilteronsite.label "Onemogućiti ovaj filter na ?1?"> -<!ENTITY detached.title "Adblock Plus: stavke za blokiranje (odvojene)"> -<!ENTITY docDomain.firstParty "(prva strana)"> -<!ENTITY tooltip.type.whitelisted "(na dozvoljenom popisu)"> -<!ENTITY tooltip.filter.label "Filter u upotrebi:"> -<!ENTITY tooltip.filter.disabled "(onemogućen)"> -<!ENTITY context.editfilter.label "Uredi filter u upotrebi"> -<!ENTITY tooltip.type.blocked "(blokiran)"> -<!ENTITY size.label "VeliÄŤina"> -<!ENTITY context.whitelist.label "Dodaj pravilo izuzimanja za stavku"> -<!ENTITY context.selectAll.label "Odaberi sve"> -<!ENTITY state.label "Status"> -<!ENTITY docDomain.label "Izvor dokumenta"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/subscriptionSelection.dtd deleted file mode 100644 index 1ad21bb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hr/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "TakoÄ‘er &dodajte pretplatu na filter "?1?""> -<!ENTITY list.download.failed "Adblock Plus nije uspio preuzeti popis pretplata."> -<!ENTITY list.download.retry "Pokušajte ponovno"> -<!ENTITY title.label "Naslov &pretplate:"> -<!ENTITY list.download.website "Pogledaj stranicu"> -<!ENTITY supplementMessage "Ova pretplata na filter je namjenjena korištenju sa pretplatom na filter "?1?" koju još ne koristite."> -<!ENTITY viewList.label "Pogledaj filtere"> -<!ENTITY visitHomepage.label "Posjetite poÄŤetnu stranicu"> -<!ENTITY addSubscription.label "Dodaj pretplatu"> -<!ENTITY dialog.title "Dodaj Adblock Plus pretplate filtera"> -<!ENTITY location.label "Lokaci&ja popisa filtera:"> -<!ENTITY fromWeb.description "Potvrdite Ĺľelite li dodati ovu pretplatu na filter. MoĹľete promijeniti naziv ili lokaciju pretplate prije nego što je dodate."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/composer.dtd deleted file mode 100644 index c0234a0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na kĂłn&cu adresy"> -<!ENTITY domainRestriction.label "Wob&mjezować na domenu:"> -<!ENTITY collapse.default.no.label "Standard wuĹľiwać (nÄ›)"> -<!ENTITY firstParty.label "&JenoĹľ prÄ›ni bok"> -<!ENTITY preferences.label "&Eksistowace filtry pokazać…"> -<!ENTITY pattern.label "Muster pytać"> -<!ENTITY thirdParty.label "JenoĹľ &tĹ™eći bok"> -<!ENTITY filter.label "Nowy &filter:"> -<!ENTITY collapse.label "Zabl&okowane faĹ‚dować:"> -<!ENTITY match.warning "Muster, kotryĹľ sće zapodaĹ‚, wjace adresy njewotpowÄ›duje, kotraĹľ ma so blokować/do běłeje lisćiny pĹ™ewzać a njezmÄ›je Ĺľadyn wuskutk na nju."> -<!ENTITY anchor.start.label "na spoÄŤatku a&dresy"> -<!ENTITY matchCase.label "&Wulkopisanje wobkedĹşbować"> -<!ENTITY custom.pattern.label "&SwĂłjski:"> -<!ENTITY unselectAllTypes.label "Ĺ˝adyn wubrać"> -<!ENTITY type.whitelist.label "W&uwzaćne prawidĹ‚o"> -<!ENTITY regexp.warning "Muster, kotryĹľ sće zapodaĹ‚, budĹşe so jako regularny wuraz interpretować, kotryĹľ njehodĹşi so pĹ™ez Adblock Plus skutkownje pĹ™edźěłać a mĂłhĹ‚ waš wobhladowak spomałšić. Jeli nochceće regularny wuraz wuĹľiwać, pĹ™idajće hwěžku (*) ke kĂłncej mustra."> -<!ENTITY dialog.title "Filtrowe prawidĹ‚o Adblock Plus pĹ™idać"> -<!ENTITY basic.label "ZakĹ‚adny napohlad"> -<!ENTITY type.filter.label "&Blokowanski filter"> -<!ENTITY types.label "NaĹ‚oĹľić na typy:"> -<!ENTITY shortpattern.warning "Muster, kotryĹľ sće zapodaĹ‚, je za optimowanje pĹ™ekrĂłtko a mĂłhĹ‚ waš wobhladowak spomałšić. PoruÄŤa so, zo wubjerjeće dlěši znamješkowy rjećazk za tutĂłn filter, zo byšće Adblock Plus dowoliĹ‚, filter bĂłle skutkownje pĹ™edźěłaĹ‚."> -<!ENTITY collapse.yes.label "Haj"> -<!ENTITY anchors.label "JenoĹľ muster akceptować:"> -<!ENTITY collapse.default.yes.label "Standard wuĹľiwać (haj)"> -<!ENTITY domainRestriction.help "WuĹľijće tutu opciju, zo byšće jednu domenu abo wjacore domeny podaĹ‚, kotreĹľ pĹ™ez wertikalnu smuĹľku (|) wotdźělić. Filter budĹşe so jenoĹľ na wubrane domeny naĹ‚oĹľować. Tilda (~) pĹ™ed domenowym mjenom podawa, zo filter njebudĹşe so na tu domenu naĹ‚oĹľować."> -<!ENTITY accept.label "Filter pĹ™idać"> -<!ENTITY options.label "Opcije"> -<!ENTITY disabled.warning "Adblock Plus je tuchwilu znjemóžnjeny. Móžeće hišće filtry pĹ™idać, ale njebudu so naĹ‚oĹľować, chibazo [link]zmóžnjeće Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "na spoÄŤatku &domenoweho mjena"> -<!ENTITY collapse.no.label "NÄ›"> -<!ENTITY selectAllTypes.label "Wšě wubrać"> -<!ENTITY advanced.label "Rozšěrjeny napohlad"> -<!ENTITY pattern.explanation "Muster móže dźěl adresy być; hwěžki (*) funguja jako zastupowace symbole. Filter budĹşe so jenoĹľ na adresy naĹ‚oĹľować, kotreĹľ podatemu mustrej wotpowÄ›duja."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/filters.dtd deleted file mode 100644 index 18f33fa..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Wšě waše swĂłjske filtry budu so pĹ™ez wobsah wubraneje dataje narunować. Chceće pokroÄŤować?"> -<!ENTITY slow.column "P&omaĹ‚e filtry"> -<!ENTITY enabled.column "Z&móžnjeny"> -<!ENTITY subscription.lastDownload.checksumMismatch "NjeporadĹşiĹ‚o, wopaÄŤna kontrolna suma"> -<!ENTITY noFiltersInGroup.text "Wubrana skupina je prĂłzdna."> -<!ENTITY subscription.actions.label "Akcije"> -<!ENTITY filter.selectAll.label "Wšo wubrać"> -<!ENTITY backupButton.label "&ZawÄ›sćić a wobnowić"> -<!ENTITY restore.minVersion.warning "Warnowanje: Dataja je so pĹ™ez nowšu wersiju Adblock Plus wutworiĹ‚a. Wy měł na najnowšu wersiju Adblock Plus aktualizować, prjedy haÄŤ tutu dataju wobnowiće."> -<!ENTITY restore.error "Daty dataje njedadĹşa so pĹ™edźěłać, je móžno, zo wona zawÄ›sćenska dataja Adblock Plus njeje?"> -<!ENTITY sort.ascending.label "Porj&ad A > Z"> -<!ENTITY sort.label "&SortÄ›rować po"> -<!ENTITY subscription.source.label "Filtrowa lisćina"> -<!ENTITY hitcount.column "&WotpowÄ›dniki"> -<!ENTITY noFilters.text "Nimaće hišće Ĺľane swĂłjske filtry."> -<!ENTITY backup.custom.title "JenoĹľ swĂłjske filtry"> -<!ENTITY subscription.external.label "PĹ™ez druhe rozšěrjenje zaktualizowany"> -<!ENTITY subscription.delete.label "Zhašeć"> -<!ENTITY noGroupSelected.text "Dyrbiće filtrowu skupinu wubrać, prjedy haÄŤ filtry dadĹşa so zwobraznić."> -<!ENTITY filter.cut.label "WutĹ™ihać"> -<!ENTITY restore.default.label "ZawÄ›sćensku kopiju wot ?1? wobnowić"> -<!ENTITY subscription.lastDownload.inProgress "Sćahuje so…"> -<!ENTITY subscriptions.tab.label "Filtrowe abonementy"> -<!ENTITY sort.descending.label "Porjad &Z > A"> -<!ENTITY filters.remove.warning "Chceće woprawdĹşe wšě wubrane filtry wotstronić?"> -<!ENTITY filter.delete.label "Zhašeć"> -<!ENTITY addSubscriptionAdd.label "PĹ™idać"> -<!ENTITY viewMenu.label "Napohlad"> -<!ENTITY subscription.lastDownload.unknown "NiÄŤo k dispoziciji"> -<!ENTITY addSubscriptionCancel.label "PĹ™etorhnyć"> -<!ENTITY subscription.enabled.label "Zmóžnjeny"> -<!ENTITY noSubscriptions.text "Njejsće hišće Ĺľane filtrowe abonementy pĹ™idaĹ‚. Adblock Plus njebudĹşe bjez filtrow niÄŤo blokować, prošu wuĹľijće "Filtrowy abonement pĹ™idać", zo byšće filter pĹ™idaĹ‚."> -<!ENTITY subscription.update.label "Filtry aktualizować"> -<!ENTITY dialog.title "Adblock Plus - filtrowe nastajenja"> -<!ENTITY addFilter.label "Filter pĹ™i&dać"> -<!ENTITY subscription.minVersion.warning "TutĂłn filtrowy abonement wuĹľaduje sej nowšu wersiju Adblock Plus, wy měł na najnowšu wersiju Adblock Plus aktualizować."> -<!ENTITY subscription.lastDownload.invalidURL "NjeporadĹşiĹ‚o, Ĺľana pĹ‚aćiwa adresa"> -<!ENTITY backup.error "PĹ™i pisanju filtrow do dataje je zmylk wustupiĹ‚. ZawÄ›sćće, zo dataja njeje pĹ™ećiwo pisanju škitana abo so pĹ™ez druhi program njewuĹľiwa."> -<!ENTITY filter.moveUp.label "Horje"> -<!ENTITY addGroup.label "Filtrowu &skupinu pĹ™idać"> -<!ENTITY filter.edit.label "Wobdźěłać"> -<!ENTITY subscription.showHideFilters.label "Filtry pokazać/schować"> -<!ENTITY acceptableAds2.label "&NjenadbÄ›hawe wabjenje dowolić"> -<!ENTITY addSubscriptionOther.label "Druhi abonement pĹ™idać"> -<!ENTITY close.label "ZaÄŤinić"> -<!ENTITY sort.none.label "Njeso&rtÄ›rowany"> -<!ENTITY filter.actions.label "Filtrowe akcije"> -<!ENTITY filter.copy.label "KopÄ›rować"> -<!ENTITY filter.moveDown.label "Dele"> -<!ENTITY filter.resetHitCounts.label "Statistiku wróćo stajić"> -<!ENTITY readMore.label "Dalše informacije"> -<!ENTITY subscription.moveUp.label "Horje"> -<!ENTITY addSubscription.label "&Filtrowy abonement pĹ™idać"> -<!ENTITY subscription.homepage.label "Startowa strona"> -<!ENTITY backup.complete.title "Wšě filtry a abonementy"> -<!ENTITY restore.own.label "SwĂłjsku zawÄ›sćensku kopiju wobnowić"> -<!ENTITY restore.complete.warning "Wšě waše filtrowe nastajenja budu so pĹ™ez wobsah wubraneje dataje narunować. Chceće pokroÄŤować?"> -<!ENTITY filters.tab.label "SwĂłjske filtry"> -<!ENTITY backup.label "Nowu zawÄ›sćensku kopiju wutworić"> -<!ENTITY find.label "&Pytać"> -<!ENTITY subscription.moveDown.label "Dele"> -<!ENTITY subscription.lastDownload.connectionError "NjeporadĹşiĹ‚o, sćahowanski zmylk"> -<!ENTITY subscription.lastDownload.success "WuspÄ›ch"> -<!ENTITY subscription.lastDownload.invalidData "NjeporadĹşiĹ‚o, Ĺľana pĹ‚aćiwa filtrowa lisćina"> -<!ENTITY filter.paste.label "Zasunyć"> -<!ENTITY subscription.disabledFilters.enable "Znjemóžnjene filtry zmóžnić"> -<!ENTITY lasthit.column "&Posledni wotpowÄ›dnik"> -<!ENTITY subscription.editTitle.label "Titul wobdźěłać"> -<!ENTITY subscription.disabledFilters.warning "NÄ›kotre filtry w tutym abonemenće su znjemóžnjene."> -<!ENTITY filter.column "&Filtrowe prawidĹ‚o"> -<!ENTITY subscription.lastDownload.label "Poslednje sćehnjenje:"> -<!ENTITY viewList.label "Lisćinu pokazać"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/firstRun.properties deleted file mode 100644 index de870d3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=PĹ™ehladujće priwatnje znjemóžnjejo slÄ›dowanje resp. chowajo swoje slÄ›dy pĹ™ed wabjenskimi pĹ™edewzaćemi, kotreĹľ bychu rady kóždy z wašich pohibow slÄ›dowali. -firstRun_toggle_off=WUPINJENY -firstRun_feature_tracking=SlÄ›dowanje znjemóžnić -firstRun_feature_malware=Ĺ kĂłdnu softwaru blokować -firstRun_title=Adblock Plus je so instalowaĹ‚ -firstRun_acceptableAdsExplanation=Bychmy rady websydĹ‚a pozbudĹşili, sprawne, decentne wabjenje wuĹľiwać. Tohodla smy <a>krute smÄ›rnicy</a> postajili, zo bychmy akceptabelne wabjenje identifikowali, kotreĹľ so w standardnych nastajenjach pokazuje. Jeli chceće najebać toho wšo wabjenje blokować, móžeće jo wob maĹ‚o sekundow <a>znjemóžnić</a>. -firstRun_toggle_on=ZAPINJENY -firstRun_contributor_credits=DĹşakprajenje sobuskutkowacym -firstRun_dataCorruptionWarning=Pokazuje so tuta strona dale? <a>Klikńće tu!</a> -firstRun_acceptableAdsHeadline=Mjerzaca reklama budĹşe so nÄ›tko blokować -firstRun_share=Informujće swojich pĹ™ećelow -firstRun_share_headline=<a>Podajće nam ruku</a>, zo bychmy web k lÄ›pšemu mÄ›stnu ÄŤinili -firstRun_features=Adblock Plus móže wjace ÄŤinić haÄŤ wabjenje blokować -firstRun_feature_malware_description=ÄŚińće swoje pĹ™ehladowanje wÄ›sćiše blokujo znate domeny zĹ‚omyslneje softwary. -firstRun_feature_social_description=Wotstrońće swoju pĹ™ehladowansku aktiwitu z tłóčatkow socialnych medijow, kaĹľ na pĹ™. tłóčatka "Lubi so mi" na Facebooku, kotreĹľ so na webstronach jewja a waše zadĹşerĹľenje slÄ›duja. -firstRun_donate=darić -firstRun_donate_label=PodpÄ›rajće naš projekt -firstRun_feature_social=Tłóčatka za socialne medije wotstronić -firstRun_legacySafariWarning=WuĹľiwaće staru wersiju Safari, kotraĹľ se pĹ™ez Adblock Plus njepodpÄ›ruje. WĂłn njebudĹşe snano korektnje fungować abo wuĹľiwarske doĹľiwjenje na wÄ›stach websydĹ‚ach kazyć. PoruÄŤujemy wuraznje, zo pak aktualizujeće na Safari 6.1.1 abo wyši (k dispoziciji za Mac OS X 10.8 Lion) abo na Safari 7.0.1 abo wyši (na OS X 10.9 Mavericks) pak wuĹľiwaće najnowšu wersiju Mozilla Firefox, Google Chrome abo Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/global.properties deleted file mode 100644 index 71491fe..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ĺ˝ane blokujomne zapiski na tutej stronje -action3_tooltip=Klikńće, zo byšće Adblock Plus zmóžniĹ‚/znjemóžniĹ‚. -notification_antiadblock_title=Cilowe zdźělenki schować? -type_label_script=skript -filter_elemhide_nocriteria=Ĺ˝ane kriterije podate, zo by element spĂłznaĹ‚o, kotryĹľ ma so schować -blockingGroup_title=PrawidĹ‚a za blokowanje reklamy -whitelisted_tooltip=Adblock Plus je na tutej stronje znjemóžnjeny. -type_label_stylesheet=stilowa pĹ™edĹ‚oha -blocked_count_tooltip=?1? z ?2? -type_label_font=pismo -type_label_popup=wuskakowace wokno -filter_regexp_tooltip=TutĂłn filter je pak regularny wuraz pak pĹ™ekrĂłtko za optimizowanje. PĹ™ewjele tutych filtrow mĂłhĹ‚o waš wobhladowak spomałšić. -action0_tooltip=Klikńće, zo byšće kontekstowy meni zwobrazniĹ‚, klikńće ze srjedĹşnej tastu myše, zo by zmóžniĹ‚o/znjemóžniĹ‚o. -whitelisted_page=Adblock Plus je so za tutu stronu znjemóžniĹ‚ -remove_group_warning=Chceće tutu skupinu woprawdĹşe wotstronić? -action1_tooltip=Klikńće, zo byšće blokujomne zapiski woÄŤiniĹ‚/zaÄŤiniĹ‚, klikńće ze srjedĹşnej tastu myše, zo by zmóžniĹ‚o/znjemóžniĹ‚o. -type_label_xmlhttprequest=XML-naprašowanje -active_tooltip=Adblock Plus je zmóžnjeny, ?1? filtrowe abonementy a ?2? swĂłjske filtry so wuĹľiwaja. -type_label_document=dokument -type_label_object_subrequest=objektowe naprašowanje -whitelistGroup_title=Wuwzaćne prawidĹ‚a -disabled_tooltip=Adblock Plus je znjemóžnjeny. -filter_elemhide_duplicate_id=JenoĹľ jedyn ID elementa, kotryĹľ ma so schować, hodĹşi so podać -type_label_object=objekt -action2_tooltip=Klikńće, zo byšće nastajenja woÄŤiniĹ‚, klikńće ze srjedĹşnej tastu myše, zo by zmóžniĹ‚o/znjemóžniĹ‚o. -type_label_subdocument=wobĹ‚uk -clearStats_warning=To staji wšu filtrowu statistiku wróćo a znjemóžni liÄŤenje filtrowych wotpowÄ›dnikow. Chceće pokoroÄŤować? -notification_antiadblock_message=Tute sydĹ‚o je za to znate, zo cilowe zdźělenki za wuĹľiwarjow Adblock Plus pokazuje. Chceće, zo Adblock Plus cilowe zdźělenki chowa? -blocked_count_addendum=(teĹľ w běłej lisćinje: ?1?, schowane: ?2?) -subscription_invalid_location=MÄ›stno filtroweje lisćiny njeje ani pĹ‚aćiwy URL ani pĹ‚aćiwe datajowe mjeno. -type_label_image=wobraz -remove_subscription_warning=Chceće woprawdĹşe tutĂłn abonement wotstronić? -type_label_other=druhi -mobile_menu_enable=ABP: Zmóžnić -type_label_media=awdio/widejo -mobile_menu_disable_site=ABP: Na ?1? znjemóžnić -elemhideGroup_title=PrawidĹ‚a za schowanje elementow -mobile_menu_enable_site=ABP: Na ?1? zmóžnić -type_label_elemhide=schowany -newGroup_title=Nowa filtrowa skupina -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/overlay.dtd deleted file mode 100644 index 1b480b2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Haj"> -<!ENTITY notification.button.no "&NÄ›"> -<!ENTITY sync.label "Nastajenja Adblo&ck Plus synchronizować"> -<!ENTITY whitelist.site.label "Na ?1? znjemóžnić"> -<!ENTITY filters.label "&Filtrowe nastajenja"> -<!ENTITY disable.label "WšudĹşe znjemóžnić"> -<!ENTITY objecttab.title "Blokować"> -<!ENTITY objecttab.tooltip "Klikńće sem, zo byšće tutĂłn objekt z pomcu Adblock Plus blokowaĹ‚"> -<!ENTITY menuitem.label "Na&stajenja Adblock Plus"> -<!ENTITY objecttabs.label "Rajtarki wo Flash a Ja&va pokazać"> -<!ENTITY sendReport.label "&Problem na tutej stronje zdźělić"> -<!ENTITY whitelist.page.label "JenoĹľ na tutej stronje znjemóžnić"> -<!ENTITY context.image.label "Adblock Plus: Wobraz blokować"> -<!ENTITY counthits.label "&Filtrowe wotpowÄ›dniki liÄŤić"> -<!ENTITY opensidebar.label "Blo&kujomne elementy woÄŤinić"> -<!ENTITY notification.button.close "&ZaÄŤinić"> -<!ENTITY contribute.label "K Adblock Plus pĹ™inošować"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: WobĹ‚uk blokować"> -<!ENTITY blocked.tooltip "Zablokowane elementy na tutej stronje:"> -<!ENTITY hideplaceholders.label "&MÄ›stodĹşerĹľićele zablokowanych elementow schować"> -<!ENTITY showinstatusbar.label "W &statusowej lajsće pokazać"> -<!ENTITY sidebar.title "Blokujomne elementy na aktualnej stronje"> -<!ENTITY options.label "&Opcije"> -<!ENTITY context.object.label "Adblock Plus: Objekt blokować"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Na tutej stronje zaso zmóžnić"> -<!ENTITY filters.tooltip "Najaktiwniše filtry:"> -<!ENTITY closesidebar.label "Blo&kujomne elementy zaÄŤinić"> -<!ENTITY showintoolbar.label "W gratowej &lajsće pokazać"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Awdio/Widejo blokować"> -<!ENTITY subscription.update.label "Filtry aktualizować"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sendReport.dtd deleted file mode 100644 index 00a413b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Cofnyć"> -<!ENTITY issues.disabledgroups.description "SlÄ›dowace filtrowe abonementy/filtrowe skupiny su znjemóžnjene, najebać toho mĂłhli wuskutk na tutu stronu měć:"> -<!ENTITY showData.label "Daty zdźělenki pokazać"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus pĹ™e&wjele blokuje"> -<!ENTITY issues.change.description "Waša konfiguracija je so zmÄ›niĹ‚a. Prošu zaÄŤitajće stronu znowa, zo byšće zmÄ›ny testowaĹ‚ a wotpĂłsćelće zdźělenje, jeli problem njeje so pĹ™ez zmÄ›ny rozrisaĹ‚."> -<!ENTITY email.label "E-&mejl:"> -<!ENTITY issues.openPreferences.label "Filtrowe nastajenja woÄŤinić"> -<!ENTITY sendPage.confirmation "Waša zdźělenka je so skĹ‚adowaĹ‚a. Móžeš pod slÄ›dowacej adresu na njo pĹ™istup měć:"> -<!ENTITY copyLink.label "&Wotkaz zdźělenki kopÄ›rować"> -<!ENTITY issues.nofilters.description "Adblock Plus na aktualnej stronje niÄŤo njeblokuje. Problem, kotryĹľ sće zwÄ›sćiĹ‚, najskerje z Adblock Plus ÄŤinić nima."> -<!ENTITY sendPage.knownIssue "Problem, kotryĹľ sće zdźěliĹ‚, je hiĹľo znaty. Dalše informacije:"> -<!ENTITY typeSelector.other.description "Wubjerće tutu opciju, jeli skerje na problem z Adblock Plus samym haÄŤ z jeho filtrami tukaće."> -<!ENTITY issues.disabledgroups.enable.label "Filtrowy abonement/filtrowu skupinu zmóžnić"> -<!ENTITY typeWarning.override.label "Ro&zumju a chcu zdźělenje najebać toho pĂłsĹ‚ać"> -<!ENTITY issues.disabled.enable.label "Adblock Plus zmóžnić"> -<!ENTITY update.fixed.description "Aktualizacije za waše filtrowe abonementy su najskerje problem rozrisali, kotryĹľ sće zdźěliĹ‚. Prošu zaÄŤitajće stronu znowa, spytajće hišće raz a klikńće zaso na 'Hišće raz pĂłsĹ‚ać', jeli problem hišće wobsteji."> -<!ENTITY anonymous.label "&Anonymne sĹ‚anje"> -<!ENTITY reloadButton.label "&Stronu znowa zaÄŤitać"> -<!ENTITY recentReports.clear.label "Wšě &zdźělenki wotstronić"> -<!ENTITY typeSelector.description "Tute wokno budĹşe wam pĹ™ez kroki wjesć, kotreĹľ su trÄ›bne za sĹ‚anje wopisanja problemow Adblock Plus. Wubjerće prošu najprjedy druĹľinu problema, na kotryĹľ sće na tutej stronje storÄŤiĹ‚:"> -<!ENTITY screenshot.remove.label "&DowÄ›rne daty wotstronić"> -<!ENTITY issues.ownfilters.description "NÄ›kotre filtry, kotreĹľ so na tutu stronu naĹ‚oĹľuja, su wot wuĹľiwarja definowane. Prošu znjemóžńće filtry, kotreĹľ mĂłhli problem zawinować:"> -<!ENTITY update.inProgress.description "Adblock Plus dyrbi waše filtrowe abonementy aktualizować, zo by zawÄ›sćiĹ‚, zo problem njeje so hišće rozrisaĹ‚. Prošu ÄŤakajće..."> -<!ENTITY sendPage.retry.label "Hišće raz pĂłsĹ‚ać"> -<!ENTITY data.label "Da&ty zdźělenki:"> -<!ENTITY recentReports.label "Waše njedawno pĂłsĹ‚ane zdźělenki"> -<!ENTITY typeWarning.description "Sće podaĹ‚, zo maće skerje powšitkowny problem z Adblock Plus haÄŤ problem z filtrami. Prošu dĹşiwajće na to, zo tajke problemy mÄ›li so najlÄ›pje w [link]forumje Adblock Plus[/link] zdźělić. Wy měł jenoĹľ problemowy rozuprawnik wuĹľiwać, zo byšće eksistowacu diskusiju wudospoĹ‚niĹ‚, dokelĹľ nichtĂł waše zdźělenje k wÄ›domje njewozmje, chibazo byšće wotkaz na njo dodaĹ‚. Awtomatisce wutworjeny wotkaz so po sĹ‚anju zdźělenja doda."> -<!ENTITY issues.disabled.description "Adblock Plus je znjemóžnjeny, w jeho tuchwilnym stawje niÄŤo njeblokuje."> -<!ENTITY attachExtensions.label "Lisćinu aktiwnych &rozšěrjenjow k zdźělence pĹ™ipowÄ›snyć, jeli konflikt z rozšěrjenjom je pĹ™iÄŤina problema"> -<!ENTITY issues.nosubscriptions.add.label "Filtrowy abonement pĹ™idać"> -<!ENTITY issues.disabledfilters.enable.label "Filter zmóžnić"> -<!ENTITY issues.override.label "&Konfiguracija je korektna, ze zdźělenjom pokroÄŤować"> -<!ENTITY issues.nosubscriptions.description "Zda so, zo njejĹ›ce Ĺľane hotowe lisćiny filtrow abonowaĹ‚, kotreĹľ njewitany wobsah z websydĹ‚o awtomatisce wotstronjeja."> -<!ENTITY typeSelector.falsePositive.description "Wubjerće tutu opciju, jeli stronje waĹľny wobsah faluje, so strona wopak zwobraznja abo porjadnje njefunguje. Móžeće zwÄ›sćić, haÄŤ Adblock Plus je wina na tutym problemje, hdyĹľ jĂłn nachwilu znjemóžnjeće."> -<!ENTITY typeSelector.other.label "Dr&uhi problem"> -<!ENTITY emailComment.label "PoruÄŤamy was, pĹ‚aćiwu e-mejlowu adresu zapodać, zo bychmy mĂłhli z wami do zwiska stajić, jeli su prašenja wo wašej rozprawje. BudĹşe nam teĹľ zmóžnić, waše pĹ™inoški pĹ™ipĂłznać a jim wyšu prioritu dać."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus na tutej stronje zaso zmóžnić"> -<!ENTITY outdatedSubscriptions.description "SlÄ›dowace filtrowe abonementy njejsu so wot znajmjeńša dweju njedĹşelow zaktualizowali. Prošu zaktualizujće tute abonementy, prjedy haÄŤ pĂłsćeleš zdźělenku. Problem mĂłhĹ‚ potom hiĹľo rozrisany być."> -<!ENTITY dataCollector.description "Prošu poÄŤakńće, mjeztym zo Adblock Plus trÄ›bne daty hromadĹşi."> -<!ENTITY sendButton.label "Zdźě&lenku pĂłsĹ‚ać"> -<!ENTITY comment.label "&Komentar (opcionalny):"> -<!ENTITY sendPage.errorMessage "Pospyt, zdźělenku pĂłsĹ‚ać, je so ze zmylkowym kodom "?1?" njeporadĹşiĹ‚. Prošu zawÄ›sćće, zo sće z internetom zwjazany a spytajće hišće raz. Jeli problem dale eksistuje, poprošće prošu w [link]forumje Adblock Plus[/link] wo pomoc."> -<!ENTITY showRecentReports.label "Njedawno pĂłsĹ‚ane zdźělenki"> -<!ENTITY commentPage.heading "Komentar zapodać"> -<!ENTITY update.start.label "Aktualizaciju nÄ›tko startować"> -<!ENTITY issues.disabledfilters.description "SlÄ›dowace filtry su znjemóžnjene, najebać toho mĂłhli wuskutk na tutu stronu měć:"> -<!ENTITY screenshot.description "Samsna strona móže rozdźělnje za rozdźělnych ludĹşi wupadać. Móže nam pomhać, problem rozumić, jeli k wašej zdźělence foto wobrazowki pĹ™ipowÄ›snjeće. Móžeće wotrÄ›zki wotstronić, kotreĹľ sensibelne informacije wobsahuje kaĹľ teĹľ wobĹ‚uki markÄ›rować, hdĹşeĹľ so problem pokazuje. Zo byšće to ÄŤiniĹ‚, klikńće na wotpowÄ›dne tłóčatko a wubjerće wotrÄ›zk wobraza ze swojej myšu."> -<!ENTITY screenshot.attach.label "Wo&braz strony k zdźělence pĹ™ipowÄ›snyć"> -<!ENTITY issues.whitelist.description "Adblock Plus je tuchwilu na stronje, wo kotrejĹľ rozprawjeće, znjemóžnjeny. Prošu zmóžńće jĂłn znowa a zaÄŤitajće stronu, prjedy haÄŤ zdźělenku wotpĂłsćeleće, zo byšće analyzowanje tutoho problema podpÄ›raĹ‚."> -<!ENTITY typeSelector.falseNegative.label "Ad&block Plus wabjenje njeblokuje"> -<!ENTITY typeSelector.heading "Problemowy typ wubrać"> -<!ENTITY anonymity.warning "Njemóžemy so zaso na was wobroćić a damy najskerje wašej rozprawje nisku prioritu."> -<!ENTITY wizard.title "Problemowy rozprawnik"> -<!ENTITY issues.ownfilters.disable.label "Filter znjemóžnić"> -<!ENTITY commentPage.description "Tekstowe polo deleka zmóžnja wam, komentar zapodać, zo byšće nam pomhaĹ‚, problem rozumić. TutĂłn krok je opcionalny, ale poruÄŤa so, jeli problem woÄŤiwidny njeje. Móžeće teĹľ daty zdźělenki pĹ™epruwować, prjedy haÄŤ so sćele."> -<!ENTITY comment.lengthWarning "DoĹ‚hosć wašeho komentar pĹ™ekroÄŤuje 1000 znamješkow. JenoĹľ prÄ›nje 1000 znamješkow budu so sĹ‚ać."> -<!ENTITY typeSelector.falseNegative.description "Wubjerće tutu opciju, jeli wabjenje so zwobraznjuje, haÄŤrunjeĹľ Adblock Plus je zmóžnjeny."> -<!ENTITY sendPage.waitMessage "Prošu poÄŤakńće, doniĹľ Adblock Plus wašu zdźělenku njewotesyĹ‚a."> -<!ENTITY dataCollector.heading "Witajće do problemoweho rozprawnika"> -<!ENTITY screenshot.heading "Foto wobrazowki pĹ™ipowÄ›snyć"> -<!ENTITY sendPage.heading "Zdźělenku pĂłsĹ‚ać"> -<!ENTITY issues.subscriptionCount.description "Zda so, zo sće pĹ™ewjele filtrowych abonementow abonowaĹ‚. Tute nastajenje so njeporuÄŤa, dokelĹľ prawdĹşepodobnosć problemow jara zwyši. Ani njemóžemy waš problemowe wopisanje akceptować, dokelĹľ je njejasnje, kotry awtor filtroweho abonementa ma jednać. Prošu wotstrońće wšě nimo woprawdĹşe trÄ›bnych filtrowych abonementow a testujće, haÄŤ problem dale wustupuje."> -<!ENTITY screenshot.mark.label "&Problem markÄ›rować"> -<!ENTITY privacyPolicy.label "PrawidĹ‚a priwatnosće"> -<!ENTITY issues.description "Adblock Plus je problemy z wašej konfiguraciju wotkryĹ‚, kotreĹľ mĂłhli na tutĂłn problem wina być abo analyzowanje problema poćeĹľuja."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sidebar.dtd deleted file mode 100644 index 71d6ef1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Ramiki elementa pokazać"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "W nowym rajtarku woÄŤinić"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "ŽórĹ‚o filtra:"> -<!ENTITY noitems.label "Ĺ˝ane blokujomne elementy"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Wulkosć:"> -<!ENTITY reattach.label "Zaso pĹ™ipowÄ›snyć"> -<!ENTITY search.label "&Pytać:"> -<!ENTITY docDomain.thirdParty "(tĹ™eći bok)"> -<!ENTITY filterSource.label "ŽórĹ‚o filtrow"> -<!ENTITY tooltip.docDomain.label "ŽórĹ‚o dokumenta:"> -<!ENTITY context.copy.label "Adresu elementa kopÄ›rować"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Filter ?1? znjemóžnić"> -<!ENTITY context.copyFilter.label "Filter kopÄ›rować"> -<!ENTITY context.block.label "TutĂłn element blokować"> -<!ENTITY context.enablefilter.label "Filter ?1? zaso zmóžnić"> -<!ENTITY detach.label "WotpowÄ›snyć"> -<!ENTITY whitelisted.label "Strona w běłej lisćinje"> -<!ENTITY context.disablefilteronsite.label "TutĂłn filter na ?1? znjemóžnić"> -<!ENTITY detached.title "Adblock Plus: Blokujomne elementy (wotpowÄ›snjene)"> -<!ENTITY docDomain.firstParty "(prÄ›ni bok)"> -<!ENTITY tooltip.type.whitelisted "(w běłej lisćinje)"> -<!ENTITY tooltip.filter.label "Aktiwny filter:"> -<!ENTITY tooltip.filter.disabled "(znjemóžnjeny)"> -<!ENTITY context.editfilter.label "Aktiwny filter wobdźěłać"> -<!ENTITY tooltip.type.blocked "(zablokowany)"> -<!ENTITY size.label "Wulkosć"> -<!ENTITY context.whitelist.label "Wuwzaćne prawidĹ‚o za element pĹ™idać"> -<!ENTITY context.selectAll.label "Wšitko wubrać"> -<!ENTITY state.label "Staw"> -<!ENTITY docDomain.label "ŽórĹ‚o dokumenta"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/subscriptionSelection.dtd deleted file mode 100644 index 80511a2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hsb/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Filtrowy a&bonement "?1?" teĹľ pĹ™idać"> -<!ENTITY list.download.failed "Adblock Plus njemóžeše lisćiny abonementow wotwoĹ‚ać."> -<!ENTITY list.download.retry "Hišće raz spytać"> -<!ENTITY title.label "&Titul abonementa:"> -<!ENTITY list.download.website "WebsydĹ‚o sej wobhladać"> -<!ENTITY supplementMessage "TutĂłn filtrowy abonement je za to mysleny, so z filtrowym abonementom "?1?" wuĹľiwać, kotryĹľ hišće njewuĹľiwaće."> -<!ENTITY viewList.label "Filtry sej wobhladać"> -<!ENTITY visitHomepage.label "Startowu stronu wopytać"> -<!ENTITY addSubscription.label "Abonement pĹ™idać"> -<!ENTITY dialog.title "Filtrowy abonement Adblock Plus pĹ™idać"> -<!ENTITY location.label "&MÄ›stno filtroweje lisćiny:"> -<!ENTITY fromWeb.description "Prošu wobkrućće, zo chceće tutĂłn filtrowy abonement pĹ™idać. Móžeće titul abo mÄ›stno abonementa zmÄ›nić, prjedy haÄŤ jĂłn pĹ™idaće."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/composer.dtd deleted file mode 100644 index 6292ed7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "a cĂm &vĂ©gĂ©n"> -<!ENTITY domainRestriction.label "Korlá&tozás tartományra:"> -<!ENTITY collapse.default.no.label "AlapĂ©rtelmezett (nem)"> -<!ENTITY firstParty.label "Csak &belsĹ‘ cĂmhez"> -<!ENTITY preferences.label "&MeglĂ©vĹ‘ szűrĹ‘k megjelenĂtĂ©se..."> -<!ENTITY pattern.label "Minta"> -<!ENTITY thirdParty.label "Csak kĂĽlsĹ‘ cĂm&hez"> -<!ENTITY filter.label "Ăš&j szűrĹ‘:"> -<!ENTITY collapse.label "Bl&okkolt elem összecsukása:"> -<!ENTITY match.warning "A megadott minta nem egyezik a blokkolt/engedĂ©lyezett cĂmek listájával, Ăgy annak használata nem jár eredmĂ©nnyel."> -<!ENTITY anchor.start.label "a cĂm &elejĂ©n"> -<!ENTITY matchCase.label "K&is- Ă©s nagy betűk megkĂĽlönböztetĂ©se"> -<!ENTITY custom.pattern.label "E&gyedi:"> -<!ENTITY unselectAllTypes.label "KijelölĂ©s törlĂ©se"> -<!ENTITY type.whitelist.label "&KivĂ©telszabály"> -<!ENTITY regexp.warning "A megadott minta reguláris kifejezĂ©skĂ©nt fog szerepelni. Sok ilyen kifejezĂ©s lassĂthatja a böngĂ©szĂ©st. Ha nem akar használni ilyen kifejezĂ©seket, a minta vĂ©gĂ©re Ărja a * jelet."> -<!ENTITY dialog.title "Adblock Plus szűrĹ‘szabály hozzáadása"> -<!ENTITY basic.label "Alap nĂ©zet"> -<!ENTITY type.filter.label "BlokkolĂł &szűrĹ‘"> -<!ENTITY types.label "Alkalmazás tĂpusokra:"> -<!ENTITY shortpattern.warning "A megadott minta nem optimalizálhatĂł, mert tĂşl rövid. Sok ilyen minta lassĂthatja a böngĂ©szĂ©st. Ajánlott ehhez a szűrĹ‘höz egy hosszabb karakterlánc használata."> -<!ENTITY collapse.yes.label "Igen"> -<!ENTITY anchors.label "Minta elfogadása csak:"> -<!ENTITY collapse.default.yes.label "AlapĂ©rtelmezett (igen)"> -<!ENTITY domainRestriction.help "Adjon meg egy vagy több tartományt a "|" jellel elválasztva, a szűrĹ‘ csak ezeken a tartományokon lesz alkalmazva. A "~" jellel a tartománynĂ©v elejĂ©n letilthatja a szűrĹ‘ használatát az adott tartományon."> -<!ENTITY accept.label "SzűrĹ‘ hozzáadása"> -<!ENTITY options.label "BeállĂtások"> -<!ENTITY disabled.warning "Az Adblock Plus jelenleg le van tiltva. SzűrĹ‘ket hozzáadhat, de azok nem fognak működni, amĂg nem [link]engedĂ©lyezi az Adblock Plust[/link]."> -<!ENTITY anchor.start.flexible.label "a tartománynĂ©v &elejĂ©n"> -<!ENTITY collapse.no.label "Nem"> -<!ENTITY selectAllTypes.label "Minden kijelölĂ©se"> -<!ENTITY advanced.label "HaladĂł nĂ©zet"> -<!ENTITY pattern.explanation "A minta lehet egy webcĂm bármely rĂ©sze, amelyben a * szimbĂłlum helyettesĂtĹ‘ karakterkĂ©nt szerepelhet. A szűrĹ‘ csak azokra cĂmekre lesz alkalmazva, amelyekre a minta illeszkedik."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/filters.dtd deleted file mode 100644 index 5059863..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Az összes saját szűrĹ‘je le lesz cserĂ©lve a kiválasztott fájlban lĂ©vĹ‘kre. Biztosan folytatni szeretnĂ©?"> -<!ENTITY slow.column "&LassĂş szűrĹ‘k"> -<!ENTITY enabled.column "&EngedĂ©lyezve"> -<!ENTITY subscription.lastDownload.checksumMismatch "Sikertelen, Ă©rvĂ©nytelen ellenĹ‘rzĹ‘ összeg"> -<!ENTITY noFiltersInGroup.text "A kiválasztott csoport ĂĽres."> -<!ENTITY subscription.actions.label "Műveletek"> -<!ENTITY filter.selectAll.label "Az összes kijelölĂ©se"> -<!ENTITY backupButton.label "&Biztonsági mentĂ©s Ă©s visszaállĂtás"> -<!ENTITY restore.minVersion.warning "FigyelmeztetĂ©s: a fájlt az Adblock Plus Ăşjabb verziĂłjával kĂ©szĂĽlt. FrissĂtsen az Adblock Plus legĂşjabb verziĂłjára, mielĹ‘tt visszaállĂtaná ezt a fájlt."> -<!ENTITY restore.error "A fájlt nem sikerĂĽlt feldolgozni, lehetsĂ©ges, hogy nem egy Adblock Plus biztonsági mentĂ©st tartalmaz."> -<!ENTITY sort.ascending.label "RendezĂ©s &A > Z"> -<!ENTITY sort.label "&RendezĂ©s"> -<!ENTITY subscription.source.label "SzűrĹ‘ lista"> -<!ENTITY hitcount.column "&Találatok"> -<!ENTITY noFilters.text "Nincsenek saját szűrĹ‘k."> -<!ENTITY backup.custom.title "Csak saját szűrĹ‘k"> -<!ENTITY subscription.external.label "Másik kiterjesztĂ©s frissĂti"> -<!ENTITY subscription.delete.label "TörlĂ©s"> -<!ENTITY noGroupSelected.text "Ki kell választania egy szűrĹ‘ csoportot a benne lĂ©vĹ‘ szűrĹ‘k megjelenĂtĂ©sĂ©hez."> -<!ENTITY filter.cut.label "Kivágás"> -<!ENTITY restore.default.label "VisszaállĂtás ?1?-i állapotra"> -<!ENTITY subscription.lastDownload.inProgress "LetöltĂ©s..."> -<!ENTITY subscriptions.tab.label "KĂĽlsĹ‘ szűrĹ‘k"> -<!ENTITY sort.descending.label "RendezĂ©s &Z > A"> -<!ENTITY filters.remove.warning "Biztosan eltávolĂtja az összes kiválasztott szűrĹ‘t?"> -<!ENTITY filter.delete.label "TörlĂ©s"> -<!ENTITY addSubscriptionAdd.label "Hozzáadás"> -<!ENTITY viewMenu.label "NĂ©zet"> -<!ENTITY subscription.lastDownload.unknown "ismeretlen"> -<!ENTITY addSubscriptionCancel.label "MĂ©gse"> -<!ENTITY subscription.enabled.label "EngedĂ©lyezve"> -<!ENTITY noSubscriptions.text "Nincs felvĂ©ve egyetlen kĂĽlsĹ‘ szűrĹ‘t sem. Az Adblock Plus nem fog semmit szűrni szűrĹ‘k nĂ©lkĂĽl. KĂ©rem használja a "KĂĽlsĹ‘ szűrĹ‘ felvĂ©tele" funkciĂłt Ăşj szűrĹ‘k felvĂ©telĂ©hez."> -<!ENTITY subscription.update.label "SzűrĹ‘k frissĂtĂ©se"> -<!ENTITY dialog.title "Adblock Plus szűrĹ‘ beállĂtások"> -<!ENTITY addFilter.label "SzűrĹ‘ &hozzáadása"> -<!ENTITY subscription.minVersion.warning "A kĂĽlsĹ‘ szűrĹ‘ Ăşjabb Adblock Plus verziĂłhoz kĂ©szĂĽlt, frissĂtenie kell az Adblock Plust a legĂşjabb verziĂłra."> -<!ENTITY subscription.lastDownload.invalidURL "Sikertelen, Ă©rvĂ©nytelen cĂm"> -<!ENTITY backup.error "Hiba törtĂ©nt a szűrĹ‘k fájlba mentĂ©sekor. EllenĹ‘rizze, hogy a fájl nem ĂrásvĂ©dett vagy nem használja-e egy másik alkalmazás."> -<!ENTITY filter.moveUp.label "Mozgatás fel"> -<!ENTITY addGroup.label "SzűrĹ‘ &csoport felvĂ©tele"> -<!ENTITY filter.edit.label "SzerkesztĂ©s"> -<!ENTITY subscription.showHideFilters.label "SzűrĹ‘k megjelenĂtĂ©se/elrejtĂ©se"> -<!ENTITY acceptableAds2.label "NĂ©hány nem &tolakodĂł hirdetĂ©s engedĂ©lyezĂ©se"> -<!ENTITY addSubscriptionOther.label "KĂĽlsĹ‘ szűrĹ‘ hozzáadása"> -<!ENTITY close.label "Bezárás"> -<!ENTITY sort.none.label "Ren&dezetlen"> -<!ENTITY filter.actions.label "SzűrĹ‘ műveletek"> -<!ENTITY filter.copy.label "Másolás"> -<!ENTITY filter.moveDown.label "Mozgatás le"> -<!ENTITY filter.resetHitCounts.label "Találati statisztika törlĂ©se"> -<!ENTITY readMore.label "Mi ez?"> -<!ENTITY subscription.moveUp.label "Mozgatás fel"> -<!ENTITY addSubscription.label "KĂĽl&sĹ‘ szűrĹ‘ hozzáadása"> -<!ENTITY subscription.homepage.label "Honlap"> -<!ENTITY backup.complete.title "Az összes szűrĹ‘ Ă©s feliratkozás"> -<!ENTITY restore.own.label "Saját mentĂ©s visszaállĂtása"> -<!ENTITY restore.complete.warning "Az összes szűrĹ‘ beállĂtása le lesz cserĂ©lve a kiválasztott fájlban lĂ©vĹ‘kre. Biztosan folytatni szeretnĂ©?"> -<!ENTITY filters.tab.label "Saját szűrĹ‘k"> -<!ENTITY backup.label "Ăšj biztonsági mentĂ©s"> -<!ENTITY find.label "&KeresĂ©s"> -<!ENTITY subscription.moveDown.label "Mozgatás le"> -<!ENTITY subscription.lastDownload.connectionError "Sikertelen, letöltĂ©si hiba"> -<!ENTITY subscription.lastDownload.success "Sikeres"> -<!ENTITY subscription.lastDownload.invalidData "Sikertelen, Ă©rvĂ©nytelen szűrĹ‘lista"> -<!ENTITY filter.paste.label "BeillesztĂ©s"> -<!ENTITY subscription.disabledFilters.enable "Letiltott szűrĹ‘k engedĂ©lyezĂ©se"> -<!ENTITY lasthit.column "&UtolsĂł találat"> -<!ENTITY subscription.editTitle.label "CĂm szerkesztĂ©se"> -<!ENTITY subscription.disabledFilters.warning "NĂ©hány szűrĹ‘ ebben a listában le van tiltva."> -<!ENTITY filter.column "&SzűrĹ‘ szabály"> -<!ENTITY subscription.lastDownload.label "LegutĂłbb letöltve:"> -<!ENTITY viewList.label "Lista megtekintĂ©se"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/firstRun.properties deleted file mode 100644 index 8a3d609..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=BöngĂ©sszen privátban azáltal, hogy letiltja a követĂ©st - elrejtheti nyomait a reklámcĂ©gek elĹ‘l, amelyek egyĂ©bkĂ©nt figyelnĂ©k minden lĂ©pĂ©sĂ©t. -firstRun_toggle_off=KIKAPCSOLVA -firstRun_feature_tracking=KövetĂ©s letiltása -firstRun_feature_malware=RosszindulatĂş kĂłdok blokkolása -firstRun_title=Sikeresen telepĂtette az Adblock Plus-t -firstRun_toggle_on=BEKAPCSOLVA -firstRun_acceptableAdsExplanation=SzeretnĂ©nk arra biztatni a weboldalakat, hogy egyĂ©rtelmű, nem tolakodĂł hirdetĂ©seket használjanak. EzĂ©rt hoztunk lĂ©tre <a>szigorĂş irányelveket</a>, amelyek segĂtsĂ©gĂ©vel azonosĂthatĂłk az elfogadhatĂł hirdetĂ©sek, amelyek az alapbeállĂtások között találhatĂłk meg. Ha ennek ellenĂ©re minden hirdetĂ©st <a>blokkolni</a> szeretne, ezt továbbra is megteheti mindössze nĂ©hány másodperc alatt. -firstRun_contributor_credits=HozzájárulĂłk nĂ©vsora -firstRun_dataCorruptionWarning=ĂllandĂłan megjelenik ez az oldal? <a>Kattintson ide!</a> -firstRun_acceptableAdsHeadline=A bosszantĂł hirdetĂ©sek mostantĂłl blokkolva lesznek -firstRun_share=Mondja el barátainak -firstRun_share_headline=<a>SegĂtsen nekĂĽnk</a> jobb hellyĂ© tenni a világhálĂłt -firstRun_feature_social_description=Automatikusan szabaduljon meg a közössĂ©gi mĂ©diával kapcsolatos gomboktĂłl, mint pĂ©ldául a facebook "Tetszik" gombja, amelyek a weboldalakon jelennek meg Ă©s figyelik az Ă–n szokásait. -firstRun_filterlistsReinitializedWarning=Egy hiba miatt az összes szűrĹ‘ eltávolĂtásra kerĂĽlt Ă©s a biztonsági másolatot sem sikerĂĽlt visszaállĂtani. Az összes szűrĹ‘ Ă©s az elfogadhatĂł hirdetĂ©sek beállĂtásai alapállapotba kerĂĽltek. KĂ©rem ellenĹ‘rizze a szűrĹ‘ listákat Ă©s az elfogadhatĂł hirdetĂ©sek beállĂtásait az <a>Adblock Plus opciĂł</a> közt. -firstRun_feature_malware_description=Tegye a böngĂ©szĂ©st biztonságosabbá azáltal, hogy letiltja az ismert malware cĂmeket. -firstRun_features=Az Adblock Plus a reklámok blokkolásánál többre is kĂ©pes -firstRun_donate=adományozás -firstRun_donate_label=A projekt támogatása -firstRun_feature_social=KözössĂ©gi oldalak gombjainak eltávolĂtása -firstRun_legacySafariWarning=A Safari egy rĂ©gi verziĂłját használja, amelyet nem támogat az Adblock Plus. LehetsĂ©ges, hogy nem fog megfelelĹ‘en működni vagy lelassĂtja a működĂ©st egyes weboldalakon. ErĹ‘sen ajánlott frissĂteni a Safari 6.1.1-es (Mac OS X 10.8 Mountain Lion operáciĂłs rendszeren) , vagy a Safari 7.0.1-es Ă©s Ăşjabb verziĂłira (OS X 10.9 Maverics operáciĂłs rendszertĹ‘l) vagy használja a Mozilla Firefox, Google Chrome vagy Opera legĂşjabb verziĂłját. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/global.properties deleted file mode 100644 index 3b32ac6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Nincsenek blokkolhatĂł elemek az aktuális oldalon. -action3_tooltip=Kattintson ide az Adblock Plus ki/bekapcsolásához. -notification_antiadblock_title=CĂ©lzott ĂĽzenetek elrejtĂ©se -type_label_script=szkript -filter_elemhide_nocriteria=Nincs megadva feltĂ©tel az elrejtendĹ‘ elemre -blockingGroup_title=Reklám szűrĹ‘ szabályok -whitelisted_tooltip=Az Adblock be van kapcsolva, de a szűrĂ©s le van tiltva az aktuális oldalon. -type_label_stylesheet=stĂluslap -blocked_count_tooltip=?1?/?2? -type_label_font=betűtĂpus -type_label_popup=felugrĂł ablak -filter_regexp_tooltip=Ez a szűrĹ‘ vagy reguláris kifejezĂ©s vagy tĂşl rövid az optimalizáciĂłhoz. TĂşl sok ilyen szűrĹ‘ lelassĂthatja a böngĂ©szĂ©st. -action0_tooltip=Kattintson ide a környezeti menĂĽhöz, közĂ©psĹ‘ gombbal a ki/bekapcsoláshoz. -whitelisted_page=Az Adblock Plus le van tiltva az aktuális oldalon -remove_group_warning=Biztosan eltávolĂtja ezt a csoportot? -action1_tooltip=Kattintson ide a blokkolhatĂł elemek megnyitásához/bezárásához, közĂ©psĹ‘ gombbal a ki/bekapcsoláshoz. -type_label_xmlhttprequest=XML kĂ©rĂ©s -active_tooltip=Az Adblock Plus aktĂv, ?1? szűrĹ‘(k) Ă©s ?2? saját szűrĹ‘(k) van használatban. -type_label_document=dokumentum -type_label_object_subrequest=objektum alkĂ©rĂ©s -whitelistGroup_title=KivĂ©tel szabályok -disabled_tooltip=Az Adblock Plus ki van kapcsolva. -filter_elemhide_duplicate_id=Csak egy ID-ját lehet megadni az elrejtendĹ‘ elemnek -type_label_object=objektum -action2_tooltip=Kattintson ide a beállĂtások megnyitásához, közĂ©psĹ‘ gombbal a ki/bekapcsoláshoz. -type_label_subdocument=keret -clearStats_warning=Ezzel letörli az összes találati statisztikát Ă©s letiltja a mentĂ©sĂĽket. Biztosan folytatja? -notification_antiadblock_message=Ezen az oldalon cĂ©lzott ĂĽzeneteket jelenĂtenek meg az Adblock Plus felhasználĂłinak. SzeretnĂ©, ha az Adblock Plus elrejtenĂ© ezeket az ĂĽzeneteket? -blocked_count_addendum=(fehĂ©r listán: ?1?, rejtett: ?2?) -subscription_invalid_location=A megadott kĂĽlsĹ‘ szűrĹ‘t tartalmazĂł cĂm helytelen, vagy hibás fájlnevet tartalmaz. -type_label_image=kĂ©p -remove_subscription_warning=ValĂłban el kĂvánja távolĂtani ezt a szűrĹ‘t? -type_label_other=egyĂ©b -mobile_menu_enable=ABP: EngedĂ©lyezĂ©s -type_label_media=hang/videĂł -mobile_menu_disable_site=ABP: Letiltja itt: ?1? -elemhideGroup_title=Elem elrejtĂ©si szabályok -mobile_menu_enable_site=ABP: EngedĂ©lyezi itt: ?1? -type_label_elemhide=rejtett -newGroup_title=Ăšj szűrĹ‘ csoport -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/overlay.dtd deleted file mode 100644 index f60fae1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Igen"> -<!ENTITY notification.button.no "&Nem"> -<!ENTITY sync.label "Adblock Plus beállĂtások s&zinkronizálása"> -<!ENTITY whitelist.site.label "SzűrĂ©s tiltása itt: ?1?"> -<!ENTITY filters.label "SzűrĹ‘ &beállĂtások"> -<!ENTITY disable.label "Letiltás mindenhol"> -<!ENTITY objecttab.title "Blokkolás"> -<!ENTITY objecttab.tooltip "Kattintson ide a blokkoláshoz (Adblock Plus)"> -<!ENTITY menuitem.label "Ad&block Plus beállĂtások"> -<!ENTITY objecttabs.label "&FĂĽlek megjelenĂtĂ©se Java Ă©s Flash objektumoknál"> -<!ENTITY sendReport.label "Hibás webhel&y bejelentĂ©se"> -<!ENTITY whitelist.page.label "SzűrĂ©s tiltása csak ezen az aloldalon"> -<!ENTITY context.image.label "KĂ©p blokkolása"> -<!ENTITY counthits.label "&SzűrĹ‘ találati statisztika mentĂ©se"> -<!ENTITY opensidebar.label "BlokkolhatĂł ob&jektumok megjelenĂtĂ©se"> -<!ENTITY notification.button.close "&Bezárás"> -<!ENTITY contribute.label "KözreműködĂ©s az Adblock Plus-hoz"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Keret blokkolása"> -<!ENTITY blocked.tooltip "Blokkolt objektumok ezen az oldalon:"> -<!ENTITY hideplaceholders.label "Letiltott elemek &helyĹ‘rzĹ‘inek elrejtĂ©se"> -<!ENTITY showinstatusbar.label "Megje&lenĂtĂ©s az állapotsoron"> -<!ENTITY sidebar.title "BlokkolhatĂł objektumok"> -<!ENTITY options.label "&OpciĂłk"> -<!ENTITY context.object.label "Objektum blokkolása"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Ăšjra-engedĂ©lyezĂ©s ezen az oldalon"> -<!ENTITY filters.tooltip "LegaktĂvabb szűrĹ‘k:"> -<!ENTITY closesidebar.label "BlokkolhatĂł ob&jektumok elrejtĂ©se"> -<!ENTITY showintoolbar.label "M&egjelenĂtĂ©s az eszköztáron"> -<!ENTITY status.tooltip "Ăllapot:"> -<!ENTITY context.media.label "Adblock Plus: videĂł/audiĂł blokkolása"> -<!ENTITY subscription.update.label "SzűrĹ‘k frissĂtĂ©se"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sendReport.dtd deleted file mode 100644 index e9477ed..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Visszavonás"> -<!ENTITY issues.disabledgroups.description "Az alábbi szűrĹ‘ listák/csoportok le vannak tiltva, de hatással lehetnĂ©nek az alábbi oldalra:"> -<!ENTITY showData.label "JelentĂ©s adatainak megtekintĂ©se"> -<!ENTITY typeSelector.falsePositive.label "Az Adblock Plus &tĂşl sok mindent letilt"> -<!ENTITY issues.change.description "A konfiguráciĂł megváltozott. KĂ©rem töltse Ăşjra az oldalt Ă©s prĂłbálja ki a változásokat Ă©s csak akkor kĂĽldje el a jelentĂ©st, ha a mĂłdosĂtások hatására nem szűnt meg a problĂ©ma."> -<!ENTITY email.label "&Email:"> -<!ENTITY issues.openPreferences.label "SzűrĹ‘ beállĂtások megnyitása"> -<!ENTITY sendPage.confirmation "Az Ă–n jelentĂ©se el lett mentve. Az alábbi cĂmen Ă©rheti el a kĂ©sĹ‘bbiekben:"> -<!ENTITY copyLink.label "JelentĂ©s &cĂmĂ©nek másolása"> -<!ENTITY issues.nofilters.description "Az Adblock Plus jelenleg nem blokkol semmit az aktuális oldalon. A tapasztalt hibajelensĂ©g valĂłszĂnűleg nem köthetĹ‘ az Adblock Plus-hoz."> -<!ENTITY sendPage.knownIssue "Az Ă–n által bejelentett hiba már ismert. További informáciĂłk:"> -<!ENTITY typeSelector.other.description "Válassza ezt a lehetĹ‘sĂ©get, ha Ă–n szerint a problĂ©ma magával az Adblock Plus-szal van Ă©s nem a szűrĹ‘kkel."> -<!ENTITY issues.disabledgroups.enable.label "SzűrĹ‘ lista/csoport engedĂ©lyezĂ©se"> -<!ENTITY typeWarning.override.label "MegĂ©rtettem Ă©&s Ăgy is szeretnĂ©m elkĂĽldeni a jelentĂ©st"> -<!ENTITY issues.disabled.enable.label "Az Adblock Plus engedĂ©lyezĂ©se"> -<!ENTITY update.fixed.description "A szűrĹ‘listák frissĂtĂ©se nagy valĂłszĂnűsĂ©ggel megoldja a bejelentett hibát. KĂ©rem frissĂtse az oldalt Ă©s prĂłbálja Ăşjra, csak akkor kĂĽldjön bejelentĂ©st, ha a problĂ©ma továbbra is fennáll."> -<!ENTITY anonymous.label "NĂ©&vtelen bekĂĽldendĹ‘"> -<!ENTITY reloadButton.label "&Oldal ĂşjratöltĂ©se"> -<!ENTITY recentReports.clear.label "Az összes &jelentĂ©s eltávolĂtása"> -<!ENTITY typeSelector.description "Ez az ablak vĂ©gigvezeti az Adblock Plus hiba bejelentĂ©si lĂ©pĂ©sein. ElĹ‘ször kĂ©rem válassza ki a webhelyen jelentkezĹ‘ hiba jellegĂ©t:"> -<!ENTITY screenshot.remove.label "&KĂ©nyes adatok eltávolĂtása"> -<!ENTITY issues.ownfilters.description "Ezen az oldalon nĂ©hány alkalmazott szűrĹ‘t a felhasználĂł definiált. KĂ©rem tiltsa le az alábbi szűrĹ‘k közĂĽl azokat, amelyeket a problĂ©mát okozhatták."> -<!ENTITY update.inProgress.description "Az Adblock Plusnak frissĂtenie kell a szűrĹ‘listákat, hogy megbizonyosodjon rĂłla, hogy a problĂ©ma mĂ©g mindig fennáll. KĂ©rem várjon…"> -<!ENTITY sendPage.retry.label "ĂšjrakĂĽldĂ©s"> -<!ENTITY data.label "JelentĂ©s a&datai:"> -<!ENTITY recentReports.label "LegutĂłbb bekĂĽldött jelentĂ©sek"> -<!ENTITY typeWarning.description "Ă–n azt a lehetĹ‘sĂ©get választotta, hogy a hiba az Adblock Plus-szal van Ă©s nem a szűrĹ‘kkel. KĂ©rem vegye figyelembe, hogy az ilyen hibákat cĂ©lszerűbb az [link]Adblock Plus fĂłrumon[/link] bejelenteni. Csak akkor használja Ăgy a hibajelentĹ‘t, ha egy meglĂ©vĹ‘ szálhoz szeretne hozzátenni, Ă©s a jelentĂ©sben tĂĽntesse fel a hozzá tartozĂł hivatkozást is. Az automatikusan generált hivatkozás a jelentĂ©s bekĂĽldĂ©se után áll majd rendelkezĂ©sre."> -<!ENTITY issues.disabled.description "Az Adblock Plus le van tiltva, Ăgy nem tud semmit blokkolni."> -<!ENTITY attachExtensions.label "EngedĂ©lyezett k&iterjesztĂ©sek listájának csatolása, arra az esetre, ha a kiterjesztĂ©sek közti ĂĽtközĂ©sekbĹ‘l adĂłdik a problĂ©ma"> -<!ENTITY issues.nosubscriptions.add.label "Feliratkozás szűrĹ‘re"> -<!ENTITY issues.disabledfilters.enable.label "SzűrĹ‘ engedĂ©lyezĂ©se"> -<!ENTITY issues.override.label "A kon&figuráciĂł megfelelĹ‘, bejelentĂ©s folytatása"> -<!ENTITY issues.nosubscriptions.description "Ăšgy tűnik, hogy nincs feliratkozva egyetlen elĹ‘re elkĂ©szĂtett szűrĹ‘listára sem, amellyel automatikusan eltávolĂthatja a nem kĂvánt tartalmakat a webhelyekrĹ‘l."> -<!ENTITY typeSelector.falsePositive.description "Válassza ezt a lehetĹ‘sĂ©get, ha a webhelyrĹ‘l hiányoznak lĂ©nyeges tartalmak, rosszul jelenik meg, vagy hibásan működik. Ăšgy bizonyosodhat meg arrĂłl, hogy az Adblock Plus okozza a problĂ©mát, ha ideiglenesen letiltja azt."> -<!ENTITY typeSelector.other.label "E&gyĂ©b"> -<!ENTITY emailComment.label "Javasoljuk, hogy Ă©rvĂ©nyes e-mail cĂmet adjon meg, Ăgy fel tudjuk venni Ă–nnel a kapcsolatot, ha kĂ©rdĂ©s merĂĽl fel a jelentĂ©sĂ©vel kapcsolatban. Ezzel azt is lehetĹ‘vĂ© teszi, hogy felismerjĂĽk az Ă–n hozzájárulásait, Ă©s azok magasabb prioritást kapjanak."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus ĂşjraengedĂ©lyezĂ©se az oldalon"> -<!ENTITY outdatedSubscriptions.description "Az alábbi szűrĹ‘listákat legalább kĂ©t hete nem frissĂtette. KĂ©rem frissĂtse a listákat mielĹ‘tt jelentĂ©st kĂĽld rĂłluk, lehetsĂ©ges, hogy a problĂ©ma idĹ‘közben megoldĂłdott."> -<!ENTITY dataCollector.description "KĂ©rem várjon pár pillanatot, amĂg az Adblock Plus összegyűjti a szĂĽksĂ©ges adatokat."> -<!ENTITY sendButton.label "JelentĂ©s &kĂĽldĂ©se"> -<!ENTITY comment.label "&MegjegyzĂ©s (nem kötelezĹ‘):"> -<!ENTITY sendPage.errorMessage "A jelentĂ©s elkĂĽldĂ©se közben hiba törtĂ©nt, melynek kĂłdja: "?1?". KĂ©rem ellenĹ‘rizze, hogy megfelelĹ‘en csatlakozik-e az Internethez Ă©s prĂłbálja Ăşjra. Ha a problĂ©ma nem szűnik meg, kĂ©rem kĂ©rjen segĂtsĂ©get az [link]Adblock Plus fĂłrumon[/link]."> -<!ENTITY showRecentReports.label "LegutĂłbb bekĂĽldött jelentĂ©sek"> -<!ENTITY commentPage.heading "MegjegyzĂ©s hozzáadása"> -<!ENTITY update.start.label "FrissĂtĂ©s most"> -<!ENTITY issues.disabledfilters.description "Az alábbi szűrĹ‘k le vannak tiltva, de hatással lehetnĂ©nek az oldalra:"> -<!ENTITY screenshot.description "Ugyanaz az oldal máshogy is kinĂ©zhet mások számĂtĂłgĂ©pĂ©n. SegĂthet a problĂ©ma megoldásában, ha csatol egy kĂ©pernyĹ‘kĂ©pet a jelentĂ©shez. A kĂ©prĹ‘l eltávolĂthatja a kĂ©nyes informáciĂłt tartalmazĂł rĂ©szeket, valamint kiemelheti a problĂ©más terĂĽleteket. Ehhez nyomja meg a megfelelĹ‘ gombot Ă©s jelölje ki az adott terĂĽletet az egĂ©rrel."> -<!ENTITY screenshot.attach.label "Oldal kĂ©pĂ©nek &csatolása a jelentĂ©shez"> -<!ENTITY issues.whitelist.description "Az Adblock Plus jelenleg le van tiltva az oldalon, amelyet be szeretne jelenteni. KĂ©rem engedĂ©lyezze Ăşjra a bejelentĂ©s elĹ‘tt, hogy több segĂ©dinformáciĂł álljon rendelkezĂ©sre a hiba kivizsgálásánál."> -<!ENTITY typeSelector.falseNegative.label "Az Adblock Plus nem tiltott le egy hi&rdetĂ©st"> -<!ENTITY typeSelector.heading "Vállasszon tĂpust"> -<!ENTITY anonymity.warning "Nem fogunk tudni kapcsolatba lĂ©pni Ă–nnel, Ă©s valĂłszĂnű, hogy a jelentĂ©se alacsonyabb prioritást kap."> -<!ENTITY wizard.title "HibajelentĹ‘"> -<!ENTITY issues.ownfilters.disable.label "SzűrĹ‘ letiltása"> -<!ENTITY commentPage.description "Az alábbi szöveges mezĹ‘be beĂrhat egy megjegyzĂ©st, ami segĂthet megĂ©rteni a problĂ©mát. Ez a lĂ©pĂ©s kihagyhatĂł, de ajánlott, ha a problĂ©ma nem egyĂ©rtelmű. A jelentĂ©s elkĂĽldĂ©se elĹ‘tt mĂ©g lesz lehetĹ‘sĂ©ge átnĂ©zni a megadott adatokat."> -<!ENTITY comment.lengthWarning "A megjegyzĂ©s hossza meghaladja az 1000 karaktert. Csak az elsĹ‘ 1000 karakter lesz elkĂĽldve."> -<!ENTITY typeSelector.falseNegative.description "Válassza ezt a lehetĹ‘sĂ©get, ha hirdetĂ©sek jelennek meg az oldalon annak ellenĂ©re, hogy az Adblock Plus engedĂ©lyezve van."> -<!ENTITY sendPage.waitMessage "KĂ©rem várjon, amĂg az Adblock Plus elkĂĽldi a jelentĂ©sĂ©t."> -<!ENTITY dataCollector.heading "Ăśdvözli a hibajelentĹ‘"> -<!ENTITY screenshot.heading "KĂ©pernyĹ‘kĂ©p csatolása"> -<!ENTITY sendPage.heading "JelentĂ©s kĂĽldĂ©se"> -<!ENTITY issues.subscriptionCount.description "Ăšgy tűnik, hogy tĂşl sok szűrĹ‘re van feliratkozva. Ez azĂ©rt nem ajánlott, mivel ilyenkor gyakrabban fordulnak elĹ‘ problĂ©mák. Emiatt nem fogadhatjuk el a hiba bejelentĂ©sĂ©t, mivel nem tisztázott, hogy melyik szűrĹ‘ kĂ©szĂtĹ‘jĂ©nek kell továbbĂtani. KĂ©rem távolĂtsa el azokat a szűrĹ‘ket, amelyek nem feltĂ©tlenĂĽl szĂĽksĂ©gesek Ă©s prĂłbálja meg Ăşjra elĹ‘idĂ©zni a hibajelensĂ©get."> -<!ENTITY screenshot.mark.label "&ProblĂ©más rĂ©sz jelölĂ©se"> -<!ENTITY privacyPolicy.label "AdatvĂ©delmi elvek"> -<!ENTITY issues.description "Az Adblock Plus konfiguráciĂłs problĂ©mákat Ă©szlelt, amelyek okozhatják a bejelentendĹ‘ hibát vagy megnehezĂthetik a bejelentĂ©s elkĂĽldĂ©sĂ©t."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sidebar.dtd deleted file mode 100644 index 4446fff..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Objektum szĂ©leinek villogtatása"> -<!ENTITY address.label "CĂm"> -<!ENTITY context.open.label "Megnyitás Ăşj fĂĽlön"> -<!ENTITY type.label "TĂpus"> -<!ENTITY tooltip.filterSource.label "SzűrĹ‘ forrása:"> -<!ENTITY noitems.label "Nincs blokkolhatĂł objektum"> -<!ENTITY filter.label "SzűrĹ‘"> -<!ENTITY tooltip.size.label "MĂ©ret:"> -<!ENTITY reattach.label "Oldalsávba"> -<!ENTITY search.label "&KeresĂ©s:"> -<!ENTITY docDomain.thirdParty "(3. fĂ©l)"> -<!ENTITY filterSource.label "SzűrĹ‘ forrása"> -<!ENTITY tooltip.docDomain.label "Dokumentum forrás:"> -<!ENTITY context.copy.label "Objektum cĂmĂ©nek másolása"> -<!ENTITY tooltip.type.label "TĂpus:"> -<!ENTITY context.disablefilter.label "SzűrĹ‘ letiltása ?1?"> -<!ENTITY context.copyFilter.label "SzűrĹ‘ másolása"> -<!ENTITY context.block.label "Objektum blokkolása"> -<!ENTITY context.enablefilter.label "SzűrĹ‘ engedĂ©lyezĂ©se ?1?"> -<!ENTITY detach.label "Leválaszt"> -<!ENTITY whitelisted.label "A cĂm 'fehĂ©r listán' van"> -<!ENTITY context.disablefilteronsite.label "SzűrĹ‘ letiltása itt: ?1?"> -<!ENTITY detached.title "Adblock Plus: BlokkolhatĂł objektumok (leválasztva)"> -<!ENTITY docDomain.firstParty "(elsĹ‘ fĂ©l)"> -<!ENTITY tooltip.type.whitelisted "(fehĂ©r listán)"> -<!ENTITY tooltip.filter.label "Alkalmazott szűrĹ‘k:"> -<!ENTITY tooltip.filter.disabled "(letiltva)"> -<!ENTITY context.editfilter.label "Alkalmazott szűrĹ‘ szerkesztĂ©se"> -<!ENTITY tooltip.type.blocked "(blokkolva)"> -<!ENTITY size.label "MĂ©ret"> -<!ENTITY context.whitelist.label "KivĂ©tel megadása objektumhoz"> -<!ENTITY context.selectAll.label "Minden kijelölĂ©se"> -<!ENTITY state.label "Ăllapot"> -<!ENTITY docDomain.label "Dokumentum forrás"> -<!ENTITY tooltip.address.label "CĂm:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/subscriptionSelection.dtd deleted file mode 100644 index 435a5fd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hu/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "SzűrĹ‘ &hozzáadása: "?1?""> -<!ENTITY list.download.failed "Hiba a szűrĹ‘k betöltĂ©sekor."> -<!ENTITY list.download.retry "PrĂłbálja Ăşjra"> -<!ENTITY title.label "KĂĽlsĹ‘ szűrĹ‘ &neve:"> -<!ENTITY list.download.website "Weboldal megtekintĂ©se"> -<!ENTITY supplementMessage "Ez a szűrĹ‘ a(z) "?1?" szűrĹ‘vel egyĂĽtt használhatĂł csak, amely jelenleg nincs a szűrĹ‘khöz hozzáadva."> -<!ENTITY viewList.label "SzűrĹ‘k megtekintĂ©se"> -<!ENTITY visitHomepage.label "Honlap meglátogatása"> -<!ENTITY addSubscription.label "SzűrĹ‘ hozzáadása"> -<!ENTITY dialog.title "Adblock Plus szűrĹ‘ felvĂ©tele"> -<!ENTITY location.label "SzűrĹ‘lista &cĂme:"> -<!ENTITY fromWeb.description "KĂ©rem erĹ‘sĂtse meg a szűrĹ‘ hozzáadását. MĂłdosĂthatja a szűrĹ‘ cĂmĂ©t Ă©s helyĂ©t a hozzáadás elĹ‘tt."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/composer.dtd deleted file mode 100644 index 8fc62bb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "Ő°ŐˇŐ˝ÖŐĄŐ« &ŐľŐĄÖ€Ő»Ő¸Ö‚Ő´"> -<!ENTITY domainRestriction.label "Ô±Ö€ŐŁŐĄŐ¬ŐĄŐ¬ &Ő¤Ő¸Ő´ŐĄŐµŐ¶Ő¸Ö‚Ő´`"> -<!ENTITY collapse.default.no.label "ÔĽŐĽŐ¸Ö‚Ő©ŐµŐˇŐ´Ő˘ (Ő¸Őą)"> -<!ENTITY firstParty.label "Ő„Ő«ŐˇŐµŐ¶ &Ő°Ő«Ő´Ő¶ŐˇŐŻŐˇŐ¶"> -<!ENTITY preferences.label "Ő†ŐˇŐµŐĄŐ¬ Őˇ&ŐĽŐŻŐˇ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨..."> -<!ENTITY pattern.label "ŐÖ€Ő¸Ő¶ŐĄŐ¬ Ő·ŐˇŐ˘Ő¬Ő¸Ő¶"> -<!ENTITY thirdParty.label "Ő„Ő«ŐˇŐµŐ¶ &ŐĄÖ€Ö€Ő¸Ö€Ő¤ ŐŻŐ¸Ő˛Ő´Ő«Ö"> -<!ENTITY filter.label "Ő†Ő¸Ö€ &Ő–Ő«Ő¬ŐżÖ€."> -<!ENTITY collapse.label "ÔąŐˇÖ„ÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐľŐˇ&Ő®Ő¶ŐĄÖ€Ő¨`"> -<!ENTITY match.warning "Ő†ŐĄÖ€Ő´Ő¸Ö‚Ő®ŐľŐˇŐ® Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¨ ŐˇŐµŐ¬Ö‡Ő˝ ŐąŐ« Ő°ŐˇŐ´ŐˇŐşŐˇŐżŐˇŐ˝ŐŐˇŐ¶Ő¸Ö‚Ő´ Ő°ŐˇŐ˝ÖŐĄŐ«Ő¶ Ö‡ Ő¸Őą Ő´Ő« ŐˇŐ¦Ő¤ŐĄÖŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ ŐąŐ« Ő¸Ö‚Ő¶ŐĄŐ¶ŐˇŐ¬Ő¸Ö‚."> -<!ENTITY anchor.start.label "Ő°Őˇ&Ő˝ÖŐĄŐ« Ő˝ŐŻŐ¦Ő˘Ő¸Ö‚Ő´"> -<!ENTITY matchCase.label "Ő€ŐˇŐ·ŐľŐ« ŐˇŐĽŐ¶ŐĄŐ¬ &ŐżŐˇŐĽŐˇŐżŐĄŐ˝ŐˇŐŻŐ¨"> -<!ENTITY custom.pattern.label "ŐŤŐĄ&ÖŐˇŐŻŐˇŐ¶."> -<!ENTITY unselectAllTypes.label "Ő‰Ő¨Ő¶ŐżÖ€ŐĄŐ¬ Ő¸ŐąŐ«Ő¶Őą"> -<!ENTITY type.whitelist.label "Ô˛Őˇ&ÖŐˇŐĽŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶"> -<!ENTITY regexp.warning "Ő†ŐĄÖ€Ő´Ő¸Ö‚Ő®ŐľŐˇŐ® Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¨ Ő¨Ő¶ŐŻŐˇŐ¬ŐľŐĄŐ¬Ő¸Ö‚ Ő§ Ő¸Ö€ŐşŐĄŐ˝ ŐĽŐĄŐŁŐ¸Ö‚Ő¬ŐµŐˇÖ€ ŐˇÖ€ŐżŐˇŐ°ŐˇŐµŐżŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶(regexp): ŐŚŐĄŐŁŐ¸Ö‚Ő¬ŐµŐˇÖ€ ŐˇÖ€ŐżŐˇŐ°ŐˇŐµŐżŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő« Ő´ŐĄŐ® Ö„ŐˇŐ¶ŐˇŐŻŐ¨ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ő¤ŐˇŐ¶Ő¤ŐˇŐ˛ŐĄÖŐ¶ŐĄŐ¬ Ő®Ö€ŐˇŐŁÖ€Ő« ŐˇŐ·ŐŐˇŐżŐˇŐ¶Ö„Ő¨: ÔµŐ©ŐĄ Ő¤Ő¸Ö‚Ö„ ŐąŐĄÖ„ ŐşŐˇŐżÖ€ŐˇŐ˝ŐżŐľŐ¸Ö‚Ő´ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐĄŐ¬ ŐĽŐĄŐŁŐ¸Ö‚Ő¬ŐµŐˇÖ€ ŐˇÖ€ŐżŐˇŐ°ŐˇŐµŐżŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶, ŐˇŐľŐĄŐ¬ŐˇÖÖ€ŐĄÖ„ * Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő« ŐľŐĄÖ€Ő»Ő¸Ö‚Ő´:"> -<!ENTITY dialog.title "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ «Adblock Plus» Ö†Ő«Ő¬ŐżÖ€Ő´ŐˇŐ¶ ŐŻŐˇŐ¶Ő¸Ő¶"> -<!ENTITY basic.label "ŐŠŐˇÖ€Ő¦ ŐżŐĄŐ˝Ö„"> -<!ENTITY type.filter.label "&Ô±Ö€ŐŁŐĄŐ¬Ő¸Ő˛ Ö†Ő«Ő¬ŐżÖ€"> -<!ENTITY types.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ő°ŐĄŐżÖ‡ŐµŐˇŐ¬ ŐżŐ«ŐşŐĄÖ€Ő«Ő¶`"> -<!ENTITY shortpattern.warning "Ő†ŐĄÖ€Ő´Ő¸Ö‚Ő®ŐľŐˇŐ® Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¨ Ő·ŐˇŐż ŐŻŐˇÖ€Őł Ő§ Ő¸Ö‚ ŐąŐ« ŐŻŐˇÖ€Ő¸Ő˛ Ö…ŐşŐżŐ«Ő´Ő«Ő¦ŐˇÖŐľŐĄŐ¬, ŐˇŐµŐ˝ŐşŐ«Ő˝Ő« Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¶ŐĄÖ€Ő« Ő´ŐĄŐ® Ö„ŐˇŐ¶ŐˇŐŻŐ¨ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ő¤ŐˇŐ¶Ő¤ŐˇŐ˛ŐĄÖŐ¶ŐĄŐ¬ Ő®Ö€ŐˇŐŁÖ€Ő« ŐˇŐ·ŐŐˇŐżŐˇŐ¶Ö„Ő¨: Ô˝Ő¸Ö€Ő°Ő¸Ö‚Ö€Ő¤ Ő§ ŐżÖ€ŐľŐ¸Ö‚Ő´ Ö†Ő«Ő¬ŐżÖ€Ő« Ő°ŐˇŐ´ŐˇÖ€ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐĄŐ¬ ŐˇŐľŐĄŐ¬Ő« ŐĄÖ€ŐŻŐˇÖ€ ŐżŐ¸Ő˛:"> -<!ENTITY collapse.yes.label "Ô±ŐµŐ¸"> -<!ENTITY anchors.label "Ő‡ŐˇŐ˘Ő¬Ő¸Ő¶Ő¶ŐĄÖ€Ő¶ Ő¨Ő¶Ő¤Ő¸Ö‚Ő¶ŐĄŐ¬ Ő´Ő«ŐˇŐµŐ¶."> -<!ENTITY collapse.default.yes.label "ÔĽŐĽŐ¸Ö‚Ő©ŐµŐˇŐ´Ő˘ (ŐˇŐµŐ¸)"> -<!ENTITY domainRestriction.help "ŐŤŐˇŐ°Ő´ŐˇŐ¶ŐĄÖ„ Ő´ŐĄŐŻ ŐŻŐˇŐ´ ŐˇŐľŐĄŐ¬ Ő¤Ő¸Ő´ŐĄŐµŐ¶ŐĄÖ€ Ő˘ŐˇŐŞŐˇŐ¶ŐľŐˇŐ® "|" Ő¶Ő·ŐˇŐ¶Ő¸Őľ, Ö†Ő«Ő¬ŐżÖ€Ő¨ ŐŻŐˇŐ·ŐŐˇŐżŐ« Ő´Ő«ŐˇŐµŐ¶ ŐˇŐµŐ¤ Ő¤Ő¸Ő´ŐĄŐµŐ¶ŐĄÖ€Ő¸Ö‚Ő´: Ô´Ő¸Ő´ŐĄŐµŐ¶Ő« ŐˇŐ¶ŐľŐˇŐ¶ ŐˇŐĽŐˇŐ» "~" Ő¶Ő·ŐˇŐ¶Ő¨ ŐˇÖ€ŐŁŐĄŐ¬Ő¸Ö‚Ő´ Ő§ Ö†Ő«Ő¬ŐżÖ€Ő« Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®Ő¸Ö‚Ő´Ő¨ ŐˇŐµŐ¤ Ő¤Ő¸Ő´ŐĄŐµŐ¶Ő¸Ö‚Ő´:"> -<!ENTITY accept.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€"> -<!ENTITY options.label "Ô¸Ő¶ŐżÖ€ŐˇŐ¶Ö„Ő¶ŐĄÖ€"> -<!ENTITY disabled.warning "«Adblock Plus»ը ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ő§: Ô´Ő¸Ö‚Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ ŐˇŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€, Ő˘ŐˇŐµÖ Ő¤Ö€ŐˇŐ¶Ö ŐŁŐ¸Ö€Ő®ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ ŐşŐĄŐżÖ„ Ő§ [link]Ő´Ő«ŐˇÖŐ¶ŐĄŐ¬ «Adblock Plus»ը[/link]:"> -<!ENTITY anchor.start.flexible.label "Ő¤Ő¸Ő´ŐĄŐµŐ¶Ő« ŐˇŐ¶ŐľŐˇŐ¶ &Ő˝ŐŻŐ¦Ő˘Ő¸Ö‚Ő´"> -<!ENTITY collapse.no.label "ŐŐą"> -<!ENTITY selectAllTypes.label "ÔĽÖ€Ő«Őľ Ô¸Ő¶ŐżÖ€ŐĄŐ¬"> -<!ENTITY advanced.label "Ô¸Ő¶Ő¤Ő¬ŐˇŐµŐ¶ŐľŐˇŐ® ŐżŐĄŐ˝Ö„"> -<!ENTITY pattern.explanation "Ő†Ő´Ő¸Ö‚Ő·Ő¨ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ő¬Ő«Ő¶ŐĄŐ¬ Ő°ŐˇŐ˝ÖŐĄŐ« ÖŐˇŐ¶ŐŻŐˇÖŐˇŐ® Ő´ŐˇŐ˝, *-Ő¨ Ő¶Ő·ŐˇŐ¶ŐˇŐŻŐ¸Ö‚Ő´ Ő§ ÖŐˇŐ¶ŐŻŐˇÖŐˇŐ® Ő˝Ő«Ő´ŐľŐ¸Ő¬: ÔżÖ†Ő«Ő¬ŐżÖ€ŐľŐĄŐ¶ Ő´Ő«ŐˇŐµŐ¶ Ő¶Ő´Ő¸Ö‚Ő·Ő«Ő¶ Ő˘ŐˇŐľŐˇÖ€ŐˇÖ€Ő¸Ő˛ Ő°ŐˇŐ˝ÖŐĄŐ¶ŐĄÖ€Ő¨:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/filters.dtd deleted file mode 100644 index f098c8f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Ô˛Ő¸Ő¬Ő¸Ö€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨ ŐŻÖŐ¸ŐŐˇÖ€Ő«Ő¶ŐľŐĄŐ¶ Ő¶Ő¸Ö€ŐĄÖ€Ő¸Őľ:Ő‘ŐˇŐ¶ŐŻŐˇŐ¶Ő¸ŐžÖ‚Ő´ ŐĄÖ„ ŐŻŐ«Ö€ŐˇŐĽŐĄŐ¬:"> -<!ENTITY slow.column "Ô´ŐˇŐ¶Ő¤ŐˇŐ˛ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€ (&w)"> -<!ENTITY enabled.column "&Ő„Ő«ŐˇÖŐˇŐ® Ő§"> -<!ENTITY subscription.lastDownload.checksumMismatch "Ô±Ő¶Ő°ŐˇŐ»Ő¸Ő˛."> -<!ENTITY noFiltersInGroup.text "Ô¸Ő¶ŐżÖ€ŐľŐˇŐ® ŐŐ¸Ö‚Ő´Ő˘Ő¨ Ő¤ŐˇŐżŐˇÖ€ŐŻ Ő§:"> -<!ENTITY subscription.actions.label "ÔłŐ¸Ö€Ő®Ő¸Ő˛Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€"> -<!ENTITY filter.selectAll.label "Ő†Ő·ŐĄŐ¬ Ő˘Ő¸Ő¬Ő¸Ö€Ő¨"> -<!ENTITY backupButton.label "ŐŠŐˇŐ°Ő¸Ö‚Ő˝Őż Ö‡ ŐŽŐĄÖ€ŐˇŐŻŐˇŐ¶ŐŁŐ¶Ő¸Ö‚Ő´ (&B)"> -<!ENTITY restore.minVersion.warning "ŐÖ‚Ő·ŐˇŐ¤Ö€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶:Ő–ŐˇŐµŐ¬Ő¨ Ő˝ŐżŐĄŐ˛Ő·ŐľŐĄŐ¬ Ő§ ŐˇŐľŐĄŐ¬Ő« Ő¶Ő¸Ö€ Adblock Plus-Ő« ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻŐ¸Őľ:ÔąŐˇÖ€Ő´ŐˇÖÖ€ŐĄŐ›Ö„ Adblock Plus-Ő¨Őť ŐˇŐµŐ¤ Ö†ŐˇŐµŐ¬Ő«Ö ŐľŐĄÖ€ŐˇŐŻŐˇŐ¶ŐŁŐ¶ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€:"> -<!ENTITY restore.error "Ô±Ő¶Ő°ŐˇŐ¶ŐˇÖ€ Ő§ ŐľŐĄÖ€ŐˇŐŻŐˇŐ¶ŐŁŐ¶ŐĄŐ¬:Ő€Ő¶ŐˇÖ€ŐˇŐľŐ¸ŐžÖ€ Ő§, Ő¸Ö€ Ő¤Őˇ Adblock Plus-Ő« ŐˇÖ€ŐŐ«Őľ ŐąŐ§:"> -<!ENTITY sort.ascending.label "&Ô± > Ő– ŐŻŐˇÖ€ŐŁŐ¸Őľ"> -<!ENTITY sort.label "&Ô´ŐˇŐ˝ŐˇŐľŐ¸Ö€ŐĄŐ¬"> -<!ENTITY subscription.source.label "Ő–Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ÖŐ¸Ö‚ÖŐˇŐŻ"> -<!ENTITY hitcount.column "Ô±Ő¦Ő¤ (&Ő€)"> -<!ENTITY noFilters.text "Ô´Ő¸Ö‚Ö„ Ő¤ŐĄŐĽÖ‡Ő˝ ŐąŐ¸Ö‚Ő¶ŐĄÖ„ Ő¸Ö€Ö‡Ő§ Ő˝ŐĄÖŐˇŐŻŐˇŐ¶ Ö†Ő«Ő¬ŐżÖ€:"> -<!ENTITY backup.custom.title "Ő„Ő«ŐˇŐµŐ¶ Ő˝ŐĄÖŐˇŐŻŐˇŐ¶ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> -<!ENTITY subscription.external.label "ÔąŐˇÖ€Ő´ŐˇÖŐľŐĄÖ ŐˇŐµŐ¬ Ő°ŐˇŐľŐĄŐ¬ŐľŐˇŐ®Ő« ŐŻŐ¸Ő˛Ő´Ő«Ö"> -<!ENTITY subscription.delete.label "Ő‹Ő¶Ő»ŐĄŐ¬"> -<!ENTITY noGroupSelected.text "ŐŠŐ«ŐżŐ« Ő¨Ő¶ŐżÖ€ŐĄÖ„ Ö†ŐˇŐ«Ő¬ŐżÖ€Ő« ŐŐ¸Ö‚Ő´Ő˘Őť ŐˇŐµŐ¶ ÖŐ¸Ö‚ÖŐˇŐ¤Ö€ŐĄŐ¬Ő¸Ö‚Ö ŐˇŐĽŐˇŐ»:"> -<!ENTITY filter.cut.label "ÔżŐżÖ€ŐĄŐ¬"> -<!ENTITY restore.default.label "ŐŽŐĄÖ€ŐˇŐŻŐˇŐ¶ŐŁŐ¶ŐĄŐ¬ ?1?-Ő« ŐşŐˇŐ°Ő¸Ö‚Ő˝ŐżŐ¨"> -<!ENTITY subscription.lastDownload.inProgress "Ô˛ŐĄŐĽŐ¶Ő¸Ö‚Ő´..."> -<!ENTITY subscriptions.tab.label "Ô˛ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐˇŐ® Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€"> -<!ENTITY sort.descending.label "&Ő– > Ô± ŐŻŐˇÖ€ŐŁŐ¸Őľ"> -<!ENTITY filters.remove.warning "Ô±Ö€Ő¤ŐµŐ¸ŐžÖ„ ÖŐˇŐ¶ŐŻŐˇŐ¶Ő¸Ö‚Ő´ ŐĄÖ„ Ő»Ő¶Ő»ŐĄŐ¬ Ő¶Ő·ŐľŐˇŐ® ŐľŐ¸Ő¬Ő¸Ö€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨:"> -<!ENTITY filter.delete.label "Ő‹Ő¶Ő»ŐĄŐ¬"> -<!ENTITY addSubscriptionAdd.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬"> -<!ENTITY viewMenu.label "ŐŹŐĄŐ˝Ö„"> -<!ENTITY subscription.lastDownload.unknown "Ő‰ÔżÔ±"> -<!ENTITY addSubscriptionCancel.label "Ő‰ŐĄŐ˛ŐˇÖ€ŐŻŐĄŐ¬"> -<!ENTITY subscription.enabled.label "Ő„Ő«ŐˇÖŐľŐˇŐ® Ő§"> -<!ENTITY noSubscriptions.text "Ô´Ő¸Ö‚Ö„ Ő¤ŐĄŐĽÖ‡Ő˝ ŐąŐĄÖ„ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐĄŐ¬ Ő¸Ö€Ö‡Ő§ Ö†Ő«Ő¬ŐżÖ€Ő«: Adblock Plus-Ő¨ Ő¸ŐąŐ«Ő¶Őą ŐąŐ« ŐˇÖ€ŐŁŐĄŐ¬ŐˇÖŐˇŐŻŐ« ŐˇŐĽŐˇŐ¶Ö Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő«, ŐˇŐµŐ¤ ŐşŐˇŐżŐłŐˇŐĽŐ¸Őľ ŐŐ¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ ŐŻŐ«Ö€ŐˇŐĽŐĄŐ¬ «ԱվելաÖŐ¶ŐĄŐ¬ բաժանորդագրություն» ŐŻŐ¸ŐłŐˇŐŻŐ¨:"> -<!ENTITY subscription.update.label "ÔąŐˇÖ€Ő´ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> -<!ENTITY dialog.title "Adblock Plus Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ŐŻŐˇÖ€ŐŁŐˇŐľŐ¸Ö€ŐĄÖ‚Ő´"> -<!ENTITY addFilter.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ő–Ő«Ő¬ŐżÖ€ (&d)"> -<!ENTITY subscription.minVersion.warning "Ô±ŐµŐ˝ Ö†Ő«Ő¬ŐżÖ€Ő«Ő¶ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ ŐˇŐ¶Ő°Ö€ŐˇŐŞŐĄŐ·Őż Ő§ Adblock Plus-Ő« ŐˇŐľŐĄŐ¬Ő« Ő¶Ő¸Ö€ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻŐ¨, Ő¤Ő¸Ö‚Ö„ ŐşŐĄŐżÖ„ Ő§ Ő©ŐˇÖ€Ő´ŐˇÖŐ¶ŐĄÖ„ Adblock Plus-Ő¨:"> -<!ENTITY subscription.lastDownload.invalidURL "Ô±Ő¶Ő°ŐˇŐ»Ő¸Ő˛. ŐŤŐŐˇŐ¬ Ő°ŐˇŐ˝ÖŐĄ"> -<!ENTITY backup.error "Ô±Ő¶Ő°ŐˇŐ¶ŐˇÖ€ Ő§ ŐşŐˇŐ°ŐĄŐ¬ ÖŐ¸ÖŐ¸ŐŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨:Ő€ŐˇŐ´Ő¸Ő¦ŐľŐĄŐ›Ö„, Ő¸Ö€ Ö†ŐˇŐµŐ¬Ő¨ Ő°Ő¶ŐˇÖ€ŐˇŐľŐ¸Ö€ Ő§ ÖŐ¸ŐŐĄŐ¬ ŐŻŐˇŐ´ ŐąŐ« Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐľŐ¸Ö‚Ő´ ŐˇŐµŐ¬ Ő®Ö€ŐˇŐŁÖ€Ő« ŐŻŐ¸Ő˛Ő´Ő«Ö:"> -<!ENTITY filter.moveUp.label "Ô˛ŐˇÖ€Ő±Ö€ŐˇÖŐ¶ŐĄŐ¬ ŐľŐĄÖ€Ö‡"> -<!ENTITY addGroup.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ŐŐ¸Ö‚Ő´Ő˘"> -<!ENTITY filter.edit.label "Ô˝Ő´Ő˘ŐˇŐŁÖ€ŐĄŐ¬"> -<!ENTITY subscription.showHideFilters.label "Ő‘Ő¸Ö‚ÖŐˇŐ¤Ö€ŐĄŐ¬/ÔąŐˇÖ„ÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> -<!ENTITY acceptableAds2.label "ÔąŐ¸Ö‚ŐµŐ¬ŐˇŐżÖ€ŐĄŐ¬ Ő¸Ö€Ő¸Ő· ŐąŐŻŐşŐąŐ¸Ö‚Ő¶ ŐŁŐ¸ŐľŐˇŐ¦Ő¤ (&!)"> -<!ENTITY addSubscriptionOther.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ ŐˇŐµŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶"> -<!ENTITY close.label "Ő“ŐˇŐŻŐĄŐ¬"> -<!ENTITY sort.none.label "Ô±&Ő¶ŐŻŐˇŐ¶Ő¸Ő¶"> -<!ENTITY filter.actions.label "ÔłŐ¸Ö€Ő®Ő¸Ő˛Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő°ŐĄŐż"> -<!ENTITY filter.copy.label "ÔżÖ€ŐŻŐ¶ŐĄŐ¬"> -<!ENTITY filter.moveDown.label "Ô˛ŐˇÖ€Ő±Ö€ŐˇÖŐ¶ŐĄŐ¬ Ő¶ŐĄÖ€Ö„Ö‡"> -<!ENTITY filter.resetHitCounts.label "Ő‹Ő¶Ő»ŐĄŐ¬ Ő˝ŐżŐˇŐżŐ«Ő˝ŐżŐ«ŐŻŐˇŐ¶"> -<!ENTITY readMore.label "ŐŹŐĄŐ˛ŐĄŐŻŐˇŐ¶ŐˇŐ¬ ŐˇŐľŐĄŐ¬Ő«Ő¶"> -<!ENTITY subscription.moveUp.label "Ô˛ŐˇÖ€Ő±Ö€ŐˇÖŐ¶ŐĄŐ¬ ŐľŐĄÖ€Ö‡"> -<!ENTITY addSubscription.label "Ô˛ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« (&f)"> -<!ENTITY subscription.homepage.label "ŐżŐ¶Ő§Ő»"> -<!ENTITY backup.complete.title "Ô˛Ő¸Ő¬Ő¸Ö€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨ Ö‡ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨"> -<!ENTITY restore.own.label "ŐŽŐĄÖ€ŐˇŐŻŐˇŐ¶ŐŁŐ¶ŐĄŐ¬ Ő˝ŐĄÖŐˇŐŻŐˇŐ¶ ŐˇÖ€ŐŐ«ŐľŐ¨"> -<!ENTITY restore.complete.warning "Ô˛Ő¸Ő¬Ő¸Ö€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨ ŐŻÖŐ¸ŐŐˇÖ€Ő«Ő¶ŐľŐĄŐ¶ Ő¶Ő¸Ö€ŐĄÖ€Ő¸Őľ:Ő‘ŐˇŐ¶ŐŻŐˇŐ¶Ő¸ŐžÖ‚Ő´ ŐĄÖ„ Ő·ŐˇÖ€Ő¸Ö‚Ő¶ŐˇŐŻŐĄŐ¬:"> -<!ENTITY filters.tab.label "ŐŤŐĄÖŐˇŐŻŐˇŐ¶ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€"> -<!ENTITY backup.label "ŐŤŐżŐĄŐ˛Ő®ŐĄŐ¬ Ő¶Ő¸Ö€ ŐşŐˇŐ°Ő¸Ö‚Ő˝Őż"> -<!ENTITY find.label "Ő“Ő¶ŐżÖ€ŐĄŐ¬ (&n)"> -<!ENTITY subscription.moveDown.label "Ô»Ő»ŐˇÖŐ¶ŐĄŐ¬ Ő¶ŐĄÖ€Ö‡"> -<!ENTITY subscription.lastDownload.connectionError "Ô±Ő¶Ő°ŐˇŐ»Ő¸Ő˛. Ô˛ŐĄŐĽŐ¶Ő´ŐˇŐ¶ Ő˝ŐŐˇŐ¬"> -<!ENTITY subscription.lastDownload.success "Ő€ŐˇŐ»Ő¸Ő˛"> -<!ENTITY subscription.lastDownload.invalidData "Ô±Ő¶Ő°ŐˇŐ»Ő¸Ő˛. ŐŤŐŐˇŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ÖŐ¸Ö‚ÖŐˇŐŻ"> -<!ENTITY filter.paste.label "ŐŹŐĄŐ˛ŐˇŐ¤Ö€ŐĄŐ¬"> -<!ENTITY subscription.disabledFilters.enable "Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> -<!ENTITY lasthit.column "ŐŽŐĄÖ€&Ő»Ő«Ő¶Ő¨"> -<!ENTITY subscription.editTitle.label "Ô˝Ő´Ő˘ŐˇŐŁÖ€ŐĄŐ¬ ŐˇŐ¶ŐľŐˇŐ¶Ő¸Ö‚Ő´Ő¨"> -<!ENTITY subscription.disabledFilters.warning "Ô±ŐµŐ˝ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐˇŐ¶ Ő¸Ö€Ő¸Ő· Ö†Ő«Ő¬ŐżŐ¶ŐĄÖ€ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® ŐĄŐ¶:"> -<!ENTITY filter.column "Ő–Ő«&Ő¬ŐżÖ€"> -<!ENTITY subscription.lastDownload.label "ŐŽŐĄÖ€Ő»Ő«Ő¶ Ő˘ŐĄŐĽŐ¶Ő¸Ö‚Ő´."> -<!ENTITY viewList.label "Ô´Ő«ŐżŐĄŐ¬ ÖŐˇŐ¶ŐŻŐ¨"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/firstRun.properties deleted file mode 100644 index 6206ba5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Ô±ŐµÖŐĄŐ¬ŐĄÖ„ Ő«Ő¶ŐżŐĄÖ€Ő¶ŐĄŐż ŐˇŐ¶ŐˇŐ¶Ő¸Ö‚Ő¶Őť Ő©ŐˇÖ„ÖŐ¶ŐĄŐ¬Ő¸Őľ ŐŐĄÖ€ ŐżŐľŐµŐˇŐ¬Ő¶ŐĄÖ€Ő¨, Ő¸Ö€Ő¸Ő¶ÖŐ«Ö Ö…ŐŁŐżŐľŐ¸Ö‚Ő´ ŐĄŐ¶ Ő¸Ö€Ő¸Ő· ŐŻŐˇŐ¦Ő´ŐˇŐŻŐĄÖ€ŐşŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ö‰ -firstRun_toggle_off=Ô±Ő†Ő‹ -firstRun_feature_tracking=Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ Ő©Ö€ŐĄÖ„Ő«Ő¶ŐŁŐ¨ -firstRun_feature_malware=ŐŽŐ«Ö€Ő¸Ö‚Ő˝Ő« ŐˇÖ€ŐŁŐĄŐ¬Ő¸Ö‚Ő´ -firstRun_title=ŐŽŐĄÖ€Ő»! ŐŻŐˇÖ€Ő¸Ő˛ Ő§Ö„ Ö…ŐŁŐżŐľŐĄŐ¬ Adblock-Ő«Ö -firstRun_acceptableAdsExplanation=Ő„ŐĄŐ¶Ö„ Ő©Ő¸Ö‚ŐµŐ¬ŐˇŐżÖ€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ <a>Ő¸Ö€Ő¸Ő· ŐŻŐˇŐµÖ„ŐĄÖ€Ő«</a> ŐŁŐ¸ŐľŐˇŐ¦Ő¤Ő¨, Ő¸Ö€Ő¸ŐľŐ°ŐĄŐżÖ‡ ŐŁŐ«ŐżŐĄŐ¶Ö„, Ő¸Ö€ Ő¶Ö€ŐˇŐ¶Ö„ Ő°ŐˇŐłŐĄŐ¬Ő« ŐŁŐ¸ŐľŐˇŐ¦Ő¤ ŐĄŐ¶ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®Ő¸Ö‚Ő´Ö‰ ÔµŐ©ŐĄ Ô´Ő¸Ö‚Ö„ ŐąŐĄÖ„ ÖŐˇŐ¶ŐŻŐˇŐ¶Ő¸Ö‚Ő´ Ő¤Ö€ŐˇŐ¶Ö„ ŐżŐĄŐ˝Ő¶ŐĄŐ¬, ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ <a>ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬</a> Ő¤Ö€ŐˇŐ¶Ö„ Ő·ŐˇŐż Ő°ŐĄŐ·ŐżÖ‰ -firstRun_toggle_on=Ő„Ô»Ô±Ő‘ -firstRun_contributor_credits=ÔľÖ€ŐˇŐŁÖ€Ő« Ő°ŐĄŐ˛Ő«Ő¶ŐˇŐŻŐ¶ŐĄÖ€Ő¨ -firstRun_dataCorruptionWarning=Ô±Ö€Ő¤ŐµŐ¸Ö„ ŐˇŐµŐ˝ Ő§Ő»Ő¨ ÖŐ¸Ö‚ÖŐˇŐ¤Ö€ŐľŐ¸Ö‚Ő´ Ő§? <a>ŐŤŐĄŐ˛Ő´ŐĄÖ„ ŐˇŐµŐ˝ŐżŐĄŐ˛!</a> -firstRun_acceptableAdsHeadline=ŐŽŐˇŐż ŐŁŐ¸ŐľŐˇŐ¦Ő¤Ő¶ŐĄÖ€Ő¶ ŐˇŐµŐŞŐ´ ŐˇÖ€ŐŁŐĄŐ¬ŐľŐˇŐ® ŐĄŐ¶ -firstRun_share=ŐŠŐˇŐżŐ´ŐĄÖ„ Ő¨Ő¶ŐŻŐĄÖ€Ő¶ŐĄÖ€Ő«Ő¶ -firstRun_share_headline=<a>Ő„ŐĄŐ¦ Ö…ŐŁŐ¶ŐĄÖ„</a> Ő¤ŐˇÖ€Ő±Ő¶ŐĄŐ¬Ő¸Ö‚ Ő«Ő¶ŐżŐĄÖ€Ő¶ŐĄŐżŐ¶ ŐˇŐľŐĄŐ¬Ő« Ő¬ŐˇŐľ ŐľŐˇŐµÖ€ -firstRun_features=Adblock Plus ŐˇŐľŐĄŐ¬Ő«Ő¶ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ ŐˇŐ¶ŐĄŐ¬ -firstRun_feature_malware_description=Ô±Ő¶ŐľŐżŐˇŐ¶ŐŁ Ő¤ŐˇÖ€Ő±Ő¶ŐĄŐ¬ ŐŐĄÖ€ Ő°ŐˇŐ´ŐˇŐŻŐˇÖ€ŐŁŐ«ŐąŐ¶ ŐˇÖ€ŐŁŐĄŐ¬ŐĄŐ¬Ő¸Őľ ŐľŐ«Ö€Ő¸Ö‚Ő˝-Ő¤Ő¸Ő´ŐĄŐ¶Ő¶ŐĄÖ€Ő¨Ö‰ -firstRun_feature_social_description=Ô±ŐľŐżŐ¸Ő´ŐˇŐż ŐˇÖ€ŐˇŐŁŐˇÖŐ¶ŐĄŐ¬ ŐˇŐ·ŐŐˇŐżŐˇŐ¶Ö„Ő¨ ŐˇÖ€ŐŁŐĄŐ¬ŐˇÖŐˇŐŻŐĄŐ¬Ő¸Őľ Ő˝Ő¸Ö․ ÖŐˇŐ¶ÖŐĄÖ€Ő« ŐŻŐ¸ŐłŐˇŐŻŐ¶ŐĄÖ€Ő¨, Ö…Ö€Ő«Ő¶ŐˇŐŻŐť Facebook Like, Ő¸Ö€Ő¨ ŐŁŐˇŐ¬Ő«Ő˝ Ő§ ŐŻŐˇŐµÖ„ŐĄÖ€Ő¸Ö‚Ő´ Ö‡ Ő°ŐĄŐżÖ‡Ő¸Ö‚Ő´ ŐŐĄŐ¦Ö‰ -firstRun_donate=Ő¶ŐľŐ«Ö€ŐˇŐ˘ŐĄÖ€ŐĄŐ¬ -firstRun_donate_label=Ő•ŐŁŐ¶ŐĄÖ„ Ő´ŐĄÖ€ Ő®Ö€ŐˇŐŁÖ€Ő«Ő¶ -firstRun_feature_social=Ő€ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ Ő˝Ő¸Ö․ ÖŐˇŐ¶ÖŐĄÖ€Ő« ŐŻŐ¸ŐłŐˇŐŻŐ¶ŐĄÖ€Ő¨ -firstRun_legacySafariWarning=Ô´Ő¸Ö‚Ö„ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®Ő¸Ö‚Ő´ ŐĄÖ„ Safari Ő°Ő«Ő¶ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻ, Ő¸Ö€ŐżŐĄŐ˛ Adblock Plus ŐąŐ« ŐˇŐ·ŐŐˇŐżŐ¸Ö‚Ő´ ŐŻŐˇŐ´ ŐľŐˇŐż Ő§ ŐˇŐ·ŐŐˇŐżŐ¸Ö‚Ő´Ö‰ Ő„ŐĄŐ¶Ö„ ŐŐ¸Ö€Ő°Ő¸Ö‚Ö€Ő¤ ŐĄŐ¶Ö„ ŐżŐĄŐ˛ŐˇŐ¤Ö€ŐĄŐ¬ Safari 6.1.1 ŐŻŐˇŐ´ ŐˇŐľŐĄŐ¬Ő« Ő˘ŐˇÖ€Ő±Ö€ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻ (OS X 10.8 Mountain Lion-Ő¸Ö‚Ő´) ŐŻŐˇŐ´ Safari 7.0.1 Ö‡ Ő˘ŐˇÖ€Ő±Ö€ (OS X 10.9 Mavericks-Ő¸Ö‚Ő´), Ő«Ő˝ŐŻ ŐĄŐ©ŐĄ Ő¸Őą Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐĄÖ„ Mozilla Firefox, Google Chrome ŐŻŐˇŐ´ OperaÖ‰ -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/global.properties deleted file mode 100644 index 69bb1c4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ô±ŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´ Ö†Ő«Ő¬ŐżÖ€ŐľŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€ ŐąŐŻŐˇŐ¶ -action3_tooltip=ÔżŐ¬Ő«ŐŻŐ¸Őľ` ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬/Ő´Ő«ŐˇÖŐ¶ŐĄŐ¬ «Adblock Plus»ը: -notification_antiadblock_title=ÔąŐˇÖ„ÖŐ¶ŐĄŐžŐ¬ Ő¶ŐˇŐ´ŐˇŐŻŐ¶ŐĄÖ€Ő¨ -type_label_script=Ő˝ŐŻÖ€Ő«ŐşŐż -filter_elemhide_nocriteria=ŐŹŐˇÖ€Ö€Ő¨ Ő©ŐˇÖ„ÖŐ¶ŐĄŐ¬Ő¸Ö‚ Ő¸Őą Ő´Ő« ŐąŐˇÖŐˇŐ¶Ő«Ő· ŐżÖ€ŐľŐˇŐ® ŐąŐ§ -blockingGroup_title=ÔłŐ¸ŐľŐˇŐ¦Ő¤Ő« ŐˇÖ€ŐŁŐĄŐ¬Ő´ŐˇŐ¶ ŐŻŐˇŐ¶Ő¸Ő¶Ő¶ŐĄÖ€ -whitelisted_tooltip=«Adblock Plus»ը Ő´Ő«ŐˇÖŐľŐˇŐ® Ő§, Ő˘ŐˇŐµÖ ŐˇÖ€ŐŁŐĄŐ¬ŐľŐˇŐ® ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´ -type_label_stylesheet=Ő¸ŐłŐĄÖ€ -blocked_count_tooltip=?1? Ő°ŐˇŐż ` ?2? Ő°ŐˇŐżŐ«Ö -type_label_font=Ö†Ő¸Ő¶Őż -type_label_popup=pop-up ŐşŐˇŐżŐ¸Ö‚Ő°ŐˇŐ¶ -filter_regexp_tooltip=Ő†ŐĄÖ€Ő´Ő¸Ö‚Ő®ŐľŐˇŐ® Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¨ ŐŻŐˇŐ´ ŐĽŐĄŐŁŐ¸Ö‚Ő¬ŐµŐˇÖ€ ŐˇÖ€ŐżŐˇŐ°ŐˇŐµŐżŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ , ŐŻŐˇŐ´ Ő·ŐˇŐż ŐŻŐˇÖ€Őł Ő§ Ő¸Ö‚ ŐąŐ« ŐŻŐˇÖ€Ő¸Ő˛ Ö…ŐşŐżŐ«Ő´Ő«Ő¦ŐˇÖŐľŐĄŐ¬, ŐˇŐµŐ˝ŐşŐ«Ő˝Ő« Ő·ŐˇŐ˘Ő¬Ő¸Ő¶Ő¶ŐĄÖ€Ő« Ő´ŐĄŐ® Ö„ŐˇŐ¶ŐˇŐŻŐ¨ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ő¤ŐˇŐ¶Ő¤ŐˇŐ˛ŐĄÖŐ¶ŐĄŐ¬ Ő®Ö€ŐˇŐŁÖ€Ő« ŐˇŐ·ŐŐˇŐżŐˇŐ¶Ö„Ő¨: -action0_tooltip=ŐŤŐĄŐ˛Ő´ŐĄÖ„ Ő´ŐĄŐ¶ŐµŐ¸Ö‚Ő« Ő°ŐˇŐ´ŐˇÖ€, ŐŻŐĄŐżŐ¶ŐżÖ€Ő¸Ő¶ŐˇŐŻŐˇŐ¶ ŐŻŐ¸ŐłŐˇŐŻŐ¸Őľ` ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬/Ő´Ő«ŐˇÖŐ¶ŐĄŐ¬ -whitelisted_page=«Adblock Plus»ը ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ő§ ŐˇŐµŐ˝ Ő§Ő»Ő« Ő°ŐˇŐ´ŐˇÖ€ -remove_group_warning=Ô´Ő¸Ö‚Ö„ ÖŐˇŐ¶ŐŻŐˇŐ¶Ő¸ŐžÖ‚Ő´ ŐĄÖ„ Ő»Ő¶Ő»ŐĄŐ¬ ŐˇŐµŐ˝ ŐŐ¸Ö‚Ő´Ő˘Ő¨: -action1_tooltip=ÔżŐ¬Ő«ŐŻŐ¸Őľ` Ő˘ŐˇÖŐĄŐ¬/ÖŐˇŐŻŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐľŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€Ő¨; ŐŻŐĄŐżŐ¶ŐżÖ€Ő¸Ő¶ŐˇŐŻŐˇŐ¶ ŐŻŐ¸ŐłŐˇŐŻŐ¸Őľ` ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬/Ő´Ő«ŐˇÖŐ¶ŐĄŐ¬ -type_label_xmlhttprequest=XML ŐŻŐˇŐ¶Őą -active_tooltip=«Adblock Plus»ը Ő´Ő«ŐˇÖŐľŐˇŐ® Ő§, Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐľŐ¸Ö‚Ő´ Ő§ ?1? Ö†Ő«Ő¬ŐżÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ ŐĄÖ‚ ?2? ŐˇŐľŐĄŐ¬ŐˇÖŐľŐˇŐ® Ö†Ő«Ő¬ŐżÖ€ -type_label_document=ÖŐˇŐ˝Ő©ŐˇŐ©Ő¸Ö‚Ő˛Ő© -type_label_object_subrequest=Ö…Ő˘ŐµŐĄŐŻŐżŐ« ŐŻŐˇŐ¶Őą -whitelistGroup_title=Ô˛ŐˇÖŐˇŐĽŐˇŐŻŐˇŐ¶ ŐŻŐˇŐ¶Ő¸Ő¶Ő¶ŐĄÖ€ -disabled_tooltip=«Adblock Plus»ը ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ő§ -filter_elemhide_duplicate_id=ŐŹŐˇÖ€Ö€Ő¨ Ő©ŐˇÖ„ÖŐ¶ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ ŐŻŐˇÖ€ŐĄŐ¬Ő« Ő§ ŐżŐˇŐ¬ Ő´Ő«ŐˇŐµŐ¶ Ő´ŐĄŐŻ ID -type_label_object=Ö…Ő˘ŐµŐĄŐŻŐż -action2_tooltip=ÔżŐ¬Ő«ŐŻŐ¸Őľ` Ő†ŐˇŐŐ¨Ő¶ŐżÖ€ŐˇŐ¶Ö„Ő¶ŐĄÖ€; ŐŻŐĄŐżŐ¶ŐżÖ€Ő¸Ő¶ŐˇŐŻŐˇŐ¶ ŐŻŐ¸ŐłŐˇŐŻŐ¸Őľ` ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬/Ő´Ő«ŐˇÖŐ¶ŐĄŐ¬ -type_label_subdocument=Ö†Ö€ŐĄŐµŐ´ -clearStats_warning=Ô±ŐµŐ˝ ŐŻŐ»Ő¶Ő»Ő« Ő˝ŐżŐˇŐżŐ«Ő˝ŐżŐ«ŐŻŐˇŐ¶ Ö‡ ŐŻŐˇŐ¶Ő»ŐˇŐżŐ« ŐˇŐµŐ¶:Ő‘ŐˇŐ¶ŐŻŐˇŐ¶Ő¸ŐžÖ‚Ő´ ŐĄÖ„ Ő·ŐˇÖ€Ő¸Ö‚Ő¶ŐˇŐŻŐĄŐ¬: -notification_antiadblock_message=Ô±ŐµŐ˝ ŐŻŐˇŐµÖ„Ő¨ ÖŐ¸Ö‚ÖŐˇŐ¤Ö€Ő¸Ö‚Ő´ Ő§ Ő¶ŐˇŐ´ŐˇŐŻŐ¶ŐĄÖ€ Adblock Plus-Ő« Ö…ŐŁŐżŐľŐ¸Ő˛Ő¶ŐĄÖ€Ő«Ő¶Ö‰ ŐÖ‚Ő¦Ő¸ŐžÖ‚Ő´ ŐĄÖ„ Ő©ŐˇÖ„ÖŐ¶ŐĄŐ¬ Ő¤Ö€ŐˇŐ¶Ö„Ö‰ -blocked_count_addendum=?1?-Ő¨ ?2?-Ő«Ö -subscription_invalid_location=Ő–Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ÖŐˇŐ¶ŐŻŐ« Ő°ŐˇŐ˝ÖŐĄŐ¶ ŐŻŐˇŐ´ Ő˝ŐŐˇŐ¬ URL Ő§, ŐŻŐˇŐ´ Ő˝ŐŐˇŐ¬ Ö†ŐˇŐµŐ¬Ő« ŐˇŐ¶Ő¸Ö‚Ő¶: -type_label_image=Ő¶ŐŻŐˇÖ€ -remove_subscription_warning=Ô»Ö€Ő¸ŐžÖ„ Ő¸Ö‚Ő¦Ő¸Ö‚Ő´ ŐĄÖ„ Ő°ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ ŐˇŐµŐ˝ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¨: -type_label_other=ŐˇŐ¶Ő°ŐˇŐµŐż -mobile_menu_enable=ABP: Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ -type_label_media=ŐˇŐ¸Ö‚Ő¤Ő«Ő¸/ŐľŐ«Ő¤ŐĄŐ¸ -mobile_menu_disable_site=ABP: Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ ?1?-Ő¸Ö‚Ő´ -elemhideGroup_title=Ô·Ő¬ŐĄŐ´ŐĄŐ¶ŐżŐ¨ Ő©ŐˇÖ„ÖŐ¶ŐĄŐ¬Ő¸Ö‚ ŐŻŐˇŐ¶Ő¸Ő¶Ő¶ŐĄÖ€ -mobile_menu_enable_site=ABP: Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ ?1?-Ő¸Ö‚Ő´ -type_label_elemhide=Ő©ŐˇÖ„Ő¶ŐľŐˇŐ® -newGroup_title=Ő†Ő¸Ö€ Ö†Ő«Ő¬ŐżÖ€Ő« ŐŐ¸Ö‚Ő´Ő˘ -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/overlay.dtd deleted file mode 100644 index 23482ce..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ô±ŐµŐ¸"> -<!ENTITY notification.button.no "&ŐŐą"> -<!ENTITY sync.label "&ŐŤŐ«Ő¶Ö„Ö€Ő¸Ő¶ŐˇÖŐ¶ŐĄŐ¬ Adblock Plus-Ő« Ő¶ŐˇŐŐ¨Ő¶ŐżÖ€ŐˇŐ¶Ö„Ő¶ŐĄÖ€Ő¨"> -<!ENTITY whitelist.site.label "Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ ?1?-Ő¸Ö‚Ő´"> -<!ENTITY filters.label "Ő–Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ŐŻŐˇÖ€ŐŁŐˇŐľŐ¸Ö€Ő¸Ö‚Ő´ (&F)"> -<!ENTITY disable.label "Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ ŐˇŐ´ŐĄŐ¶Ő¸Ö‚Ö€"> -<!ENTITY objecttab.title "Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬"> -<!ENTITY objecttab.tooltip "ŐŤŐĄŐ˛Ő´ŐĄŐ¬ «Adblock Plus»ով ŐˇŐµŐ˝ Ö…Ő˘ŐµŐĄŐŻŐżŐ¨ Ö†Ő«Ő¬ŐżÖ€ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€"> -<!ENTITY menuitem.label "Ad&block Plus"> -<!ENTITY objecttabs.label "Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬Ő¸Ö‚ &ŐŻŐ¸ŐłŐˇŐŻŐ¶ŐĄÖ€ Flash-Ő« Ö‡ Java-Ő« Ő°ŐˇŐ´ŐˇÖ€"> -<!ENTITY sendReport.label "ŐŹŐĄŐ˛ŐĄŐŻŐˇÖŐ¶ŐĄŐ¬ ŐˇŐµŐ˝ Ő§Ő»Ő« ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő« Ő´ŐˇŐ˝Ő«Ő¶ (&R)"> -<!ENTITY whitelist.page.label "Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ Ő´Ő«ŐˇŐµŐ¶ ŐˇŐµŐ˝ Ő§Ő»Ő« Ő°ŐˇŐ´ŐˇÖ€"> -<!ENTITY context.image.label "Adblock` Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬ Ő†ŐŻŐˇÖ€Ő¨"> -<!ENTITY counthits.label "Ő€ŐˇŐ·ŐľŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő« Ő˝ŐżŐˇŐżŐ«Ő˝ŐżŐ«ŐŻŐˇŐ¶ (&h)"> -<!ENTITY opensidebar.label "Ô˛ŐˇÖŐĄŐ¬ Ö†Ő«Ő¬&ŐżÖ€ŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€Ő¨"> -<!ENTITY notification.button.close "&Ő“ŐˇŐŻŐĄŐ¬"> -<!ENTITY contribute.label "Ô±Ő»ŐˇŐŻÖŐĄŐ¬ Adblock Plus-Ő«Ő¶"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock` Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬ Ő–Ö€ŐĄŐµŐ´Ő¨"> -<!ENTITY blocked.tooltip "Ô±ŐµŐ˝ Ő§Ő»Ő« Ö†Ő«Ő¬ŐżÖ€ŐľŐˇŐ® ŐżŐˇÖ€Ö€ŐĄÖ€Ő¨`"> -<!ENTITY hideplaceholders.label "Ő‘Ő¸Ö‚ŐµÖ ŐąŐżŐˇŐ¬ ŐˇÖ€ŐŁŐĄŐ¬ŐľŐˇŐ® Ő§Ő¬ŐĄŐ´ŐĄŐ¶ŐżŐ¶ŐĄÖ€Ő« ŐżŐĄŐ˛Ő¨"> -<!ENTITY showinstatusbar.label "Ő‘Ő¸Ö‚ŐµÖ ŐżŐˇŐ¬ &ŐľŐ«ŐłŐˇŐŻŐ« ŐżŐ¸Ő˛Ő¸Ö‚Ő´"> -<!ENTITY sidebar.title "Ô±ŐµŐ˝ Ő§Ő»Ő« Ö†Ő«Ő¬ŐżÖ€ŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€Ő¨"> -<!ENTITY options.label "&Ô¸Ő¶ŐżÖ€ŐˇŐ¶Ö„Ő¶ŐĄÖ€"> -<!ENTITY context.object.label "Adblock` Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬ Ő•Ő˘ŐµŐĄŐŻŐżŐ¨"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: ŐŽŐĄÖ€ŐˇŐŻŐżŐ«ŐľŐˇÖŐ¶ŐĄŐ¬ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´"> -<!ENTITY filters.tooltip "Ô±Ő´ŐĄŐ¶ŐˇŐˇŐŻŐżŐ«Őľ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨`"> -<!ENTITY closesidebar.label "Ő“ŐˇŐŻŐĄŐ¬ Ö†Ő«Ő¬&ŐżÖ€ŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€Ő¨"> -<!ENTITY showintoolbar.label "Ő‘Ő¸Ö‚ŐµÖ ŐżŐˇŐ¬ &ŐŁŐ¸Ö€Ő®Ő«Ö„ŐˇŐ·ŐˇÖ€Ő¸Ö‚Ő´"> -<!ENTITY status.tooltip "ŐŽŐ«ŐłŐˇŐŻŐ¨."> -<!ENTITY context.media.label "Adblock` Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬ Ô±Ő¸Ö‚Ő¤Ő«Ő¸/ŐŽŐ«Ő¤ŐĄŐ¸"> -<!ENTITY subscription.update.label "ÔąŐˇÖ€Ő´ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sendReport.dtd deleted file mode 100644 index 28dfde3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Ő€ŐĄŐżÖ„ŐˇŐµŐ¬ (&U)"> -<!ENTITY issues.disabledgroups.description "Ő€ŐĄŐżŐĄÖ‚ŐµŐˇŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨/ŐŐ´Ő˘ŐĄÖ€Ő¨ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® ŐĄŐ¶, Ő˝ŐˇŐŻŐˇŐµŐ¶ Ő¶Ö€ŐˇŐ¶Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄŐ¶ ŐˇŐ¦Ő¤ŐĄÖŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ Ő¸Ö‚Ő¶ŐĄŐ¶ŐˇŐ¬ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´:"> -<!ENTITY showData.label "Ő‘Ő¸Ö‚ŐµÖ ŐżŐˇŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus-Ő¨ Ő·ŐˇŐż Ő§ ŐˇÖ€ŐŁŐĄŐ¬Ő¸Ö‚Ő´"> -<!ENTITY issues.change.description "ŐŐĄÖ€ ŐŻŐ¸Ő¶Ö†Ő«ŐŁŐ¸Ö‚Ö€ŐˇÖŐ«ŐˇŐ¶ ÖŐ¸ŐŐľŐĄŐ¬ Ő§: Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ ŐľŐĄÖ€Ő˘ŐĄŐĽŐ¶ŐĄŐ¬ Ő§Ő»Ő¨ Ö‡ Ő©ŐĄŐ˝ŐżŐˇŐľŐ¸Ö€ŐĄŐ¬ ÖŐ¸ÖŐ¸ŐŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨ ŐĄÖ‚ Ő°ŐˇŐµŐżŐ¶ŐĄŐ¬, ŐĄŐ©ŐĄ ÖŐ¸ÖŐ¸ŐŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő«Ö ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¨ ŐąŐ« Ő¬Ő¸Ö‚Ő®ŐľŐ¸Ö‚Ő´:"> -<!ENTITY email.label "E&mailŐť"> -<!ENTITY issues.openPreferences.label "Ô˛ŐˇÖŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő¨Ő¶ŐżÖ€ŐˇŐ¶Ö„Ő¶ŐĄÖ€Ő¨"> -<!ENTITY sendPage.confirmation "ŐŐĄÖ€ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨ ŐşŐˇŐ°ŐşŐˇŐ¶ŐľŐĄŐ¬ Ő§: Ô´Ő¸Ö‚Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ Ő´Ő¸Ö‚ŐżÖ„ ŐŁŐ¸Ö€Ő®ŐĄŐ¬ ŐˇŐµŐ¶ Ő°ŐĄŐżŐĄÖ‚ŐµŐˇŐ¬ Ő°ŐˇŐ˝ÖŐĄŐ¸ŐľŐť"> -<!ENTITY copyLink.label "ÔżÖ€ŐŻŐ¶ŐˇŐŻŐĄŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ« Ő°Ő˛Ő¸Ö‚Ő´Ő¨"> -<!ENTITY issues.nofilters.description "Adblock Plus-Ő¨ ŐąŐ« ŐˇÖ€ŐŁŐĄŐ¬ŐˇÖŐˇŐŻŐ¸Ö‚Ő´ Ő¸ŐąŐ«Ő¶Őą Ő¨Ő¶Ő©ŐˇÖŐ«ŐŻ Ő§Ő»Ő¸Ö‚Ő´: ŐŠÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¨ Ő¸Ö€Ő¨ ŐĄÖ„ ŐˇŐ´ŐĄŐ¶ŐˇŐµŐ¶ Ő°ŐˇŐľŐˇŐ¶ŐˇŐŻŐˇŐ¶Ő¸Ö‚Ő©ŐµŐˇŐ´Ő˘, ŐŻŐˇŐşŐľŐˇŐ® ŐąŐ§ Adblock Plus."> -<!ENTITY sendPage.knownIssue "ŐŐĄÖ€ Ő°ŐˇŐ˛Ő¸Ö€Ő¤ŐˇŐ® Ő°ŐˇÖ€ÖŐ¨ Ő°Ő¶ŐˇÖ€ŐˇŐľŐ¸Ö€ Ő§ ŐˇÖ€Ő¤ŐĄŐ¶ Ő°ŐˇŐµŐżŐ¶Ő« Ő§: ÔĽÖ€ŐˇÖŐ¸Ö‚ÖŐ«Őą ŐżŐĄŐ˛ŐĄŐŻŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Őť"> -<!ENTITY typeSelector.other.description "Ô¸Ő¶ŐżÖ€ŐĄÖ„ ŐˇŐµŐ˝ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻŐ¨, ŐĄŐ©ŐĄ ŐŻŐˇŐ˝ŐŻŐˇŐ®Ő¸Ö‚Ő´ ŐĄÖ„, Ő´Ő« ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¨ Adblock Plus-Ő« Ő°ŐĄŐż Ő§ Ő¸Őą Ő©ŐĄ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő«:"> -<!ENTITY issues.disabledgroups.enable.label "Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¨ / ŐŐ¸Ö‚Ő´Ő˘Ő¨"> -<!ENTITY typeWarning.override.label "ÔµŐ˝ Ő°ŐˇŐ˝ŐŻŐˇŐ¶Ő¸Ö‚Ő´ ŐĄŐ´ ŐĄÖ‚ Ő¸Ö‚Ő¦Ő¸Ö‚Ő´ ŐĄŐ´ ŐˇŐµŐ¶Ő¸Ö‚ŐˇŐ´ŐĄŐ¶ŐˇŐµŐ¶Ő«Őľ Ő¶ŐĄÖ€ŐŻŐˇŐµŐˇÖŐ¶ŐĄŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨ (&s)"> -<!ENTITY issues.disabled.enable.label "Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ Adblock Plus-Ő¨"> -<!ENTITY update.fixed.description "Ő–Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő©ŐˇÖ€Ő´ŐˇÖŐ¸Ö‚Ő´Ő¨ Ő¬Ő¸Ö‚Ő®ŐĄÖ ŐŐĄÖ€ ŐŐ¶Ő¤Ő«Ö€Ő¨:ÔąŐˇÖ€Ő´ŐˇÖÖ€ŐĄŐ›Ö„ Ő§Ő»Ő¨Őť Ő°ŐˇŐ´Ő¸Ő¦ŐľŐĄŐ¬Ő¸Ö‚ Ő¤Ö€ŐˇŐ¶Ő¸Ö‚Ő´:Ô˝Ő¶Ő¤Ö€Ő« ŐŻÖ€ŐŻŐ¶ŐľŐĄŐ¬Ő¸Ö‚ Ő¤ŐĄŐşÖ„Ő¸Ö‚Ő´ Ő¤Ő«Ő´ŐĄŐ›Ö„ ŐŻÖ€ŐŻŐ«Ő¶:"> -<!ENTITY anonymous.label "Ô±Ő¶Ő°ŐˇŐµŐż Ö†Ő«Ő¬ŐżŐĄÖ€"> -<!ENTITY reloadButton.label "ŐŽŐĄÖ€ŐˇŐ˘ŐĄŐĽŐ¶ŐĄŐ¬ Ő§Ő»Ő¨"> -<!ENTITY recentReports.clear.label "Ő€ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ Ő˘Ő¸Ő¬Ő¸Ö€ Ő°ŐˇŐ˛Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨ (&R)"> -<!ENTITY typeSelector.description "Ô±ŐµŐ˝ ŐşŐˇŐżŐ¸Ö‚Ő°ŐˇŐ¶Ő¨ Ö…ŐŁŐ¶Ő¸Ö‚Ő´ Ő§ ŐŻŐˇŐżŐˇÖ€ŐĄŐ¬ Adblock Plus-Ő« ŐŐ¶Ő¤Ö€Ő« Ő´ŐˇŐ˝Ő«Ő¶ ŐżŐĄŐ˛ŐˇŐŻŐˇÖŐ¶ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ ŐˇŐ¶Ő°Ö€ŐˇŐŞŐĄŐ·Őż Ö„ŐˇŐµŐ¬ŐĄÖ€Ő¶. Ő†ŐˇŐ Ő¨Ő¶ŐżÖ€ŐĄÖ„ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´ Ő±ŐĄÖ€ Ő¸Ö‚Ő¶ŐĄÖŐˇŐ® ŐŐ¶Ő¤Ö€Ő« ŐżŐĄŐ˝ŐˇŐŻŐ¨"> -<!ENTITY screenshot.remove.label "Ő€ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ ŐˇŐ¶ÖŐˇŐ¶ŐŻŐˇŐ¬Ő« Ő˘ŐˇŐŞŐ«Ő¶Ő¶ŐĄÖ€ (&R)"> -<!ENTITY issues.ownfilters.description "Ô±ŐµŐ˝ Ő§Ő»Ő«Ő¶ ŐŻŐ«Ö€ŐˇŐĽŐľŐˇŐ® Ő¸Ö€Ő¸Ő· Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€ Ő˝ŐˇŐ°Ő´ŐˇŐ¶ŐľŐˇŐ® ŐĄŐ¶ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®Ő¸Ő˛Ő« ŐŻŐ¸Ő˛Ő´Ő«Ö: Ô±ŐˇŐ¶Ő»ŐˇŐżŐĄÖ„ Ő¤Ö€ŐˇŐ¶Ö„ ŐˇŐµŐ¤ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨, Ő¸Ö€Ő¸Ő¶Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄŐ¶ ŐˇŐĽŐˇŐ»ŐˇÖÖ€ŐĄŐ¬ ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¨:"> -<!ENTITY update.inProgress.description "Adblock Plus-Ő¨ ŐşŐ«ŐżŐ« Ő©ŐˇÖ€Ő´ŐˇÖŐ¶Ő« ŐŐĄÖ€ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨Őť Ő°ŐˇŐ´Ő¸Ő¦ŐľŐĄŐ¬Ő¸Ö‚, Ő¸Ö€ ŐŐ¶Ő¤Ő«Ö€Ő¨ ŐąŐ« Ő¬Ő¸Ö‚Ő®ŐľŐ¸Ö‚Ő´:Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ Ő˝ŐşŐˇŐ˝ŐĄÖ„..."> -<!ENTITY sendPage.retry.label "Ő†Ő¸Ö€Ő«Ö Ő¸Ö‚Ő˛ŐˇÖ€ŐŻŐĄŐ¬"> -<!ENTITY data.label "ŐŹŐľŐµŐˇŐ¬Ő¶ŐĄÖ€Őť (&p)"> -<!ENTITY recentReports.label "ŐŐĄÖ€ ŐľŐĄÖ€Ő»Ő«Ő¶ Ő¶ŐĄÖ€ŐŻŐˇŐµŐˇÖŐľŐˇŐ® Ő°ŐˇŐ˛Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨"> -<!ENTITY typeWarning.description "Ô´Ő¸Ö‚Ö„ ÖŐˇŐ¶ŐŻŐˇŐ¶Ő¸Ö‚Ő´ ŐĄÖ„ Ő°ŐˇŐµŐżŐ¶ŐĄŐ¬ Adblock Plus-Ő« ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ«Ő´Ő« Ő´ŐˇŐ˝Ő«Ő¶, Ő¸Őą Ő©ŐĄ ŐŻŐˇŐşŐľŐˇŐ® Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő°ŐĄŐż: Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ Ő¶ŐŻŐˇŐżŐ« Ő¸Ö‚Ő¶ŐĄŐ¶ŐˇŐ¬, Ő¸Ö€ Ő¶Ő´ŐˇŐ¶ Ő°ŐˇÖ€ÖŐĄÖ€Ő« Ő´ŐˇŐ˝Ő«Ő¶ ŐżŐĄŐ˛ŐĄŐŻŐˇÖŐ¶ŐĄŐ¬Ő¸Ö‚ Ő¬ŐˇŐľŐˇŐŁŐ¸Ö‚ŐµŐ¶ ŐżŐĄŐ˛Ő¨ [link]Adblock Plus Ö†Ő¸Ö€Ő¸Ö‚Ő´[/link]-Ő¶ Ő§: Ô´Ő¸Ö‚Ö„ ŐşŐĄŐżÖ„ Ő§ Ö…ŐŁŐżŐľŐĄÖ„ ŐˇŐµŐ˝ Ő´Ő«Ő»Ő¸ÖŐ«Ö Ő´Ő«ŐˇŐµŐ¶ Ö„Ő¶Ő¶ŐˇÖ€ŐŻŐ¸Ö‚Ő´Ő¨ Ő·ŐˇÖ€Ő¸Ö‚Ő¶ŐˇŐŻŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€, Ö„ŐˇŐ¶Ő« Ő¸Ö€ Ő¸Őą Ő¸Ö„ ŐąŐ« Ő¶ŐŻŐˇŐżŐ« ŐŐĄÖ€ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨ ŐĄŐ©ŐĄ Ô´Ő¸Ö‚Ö„ ŐąŐżÖ€ŐˇŐ´ŐˇŐ¤Ö€ŐĄÖ„ Ő°Ő˛Ő¸Ö‚Ő´ ŐĄŐ¶ Ő¤ŐĄŐşŐ« ŐˇŐµŐ¶: Ô±ŐľŐżŐ¸Ő´ŐˇŐż ŐŻŐĄÖ€ŐşŐ¸Őľ ŐŁŐĄŐ¶ŐĄÖ€ŐˇÖŐľŐˇŐ® Ő°Ő˛Ő¸Ö‚Ő´ ŐŻŐżÖ€ŐˇŐ´ŐˇŐ¤Ö€ŐľŐ« Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨ Ő¶ŐĄÖ€ŐŻŐˇŐµŐˇÖŐ¶ŐĄŐ¬Ő¸Ö‚Ö Ő°ŐĄŐżŐ¸:"> -<!ENTITY issues.disabled.description "Adblock Plus-Ő¨ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ő§, ŐˇŐµŐ¶ ŐąŐ« ŐˇÖ€ŐŁŐĄŐ¬ŐˇÖŐˇŐŻŐ¸Ö‚Ő´ Ő¸Ö€ŐĄÖ‚Ő§ Ő˘ŐˇŐ¶ ŐˇŐµŐ˝ ŐľŐ«ŐłŐˇŐŻŐ¸Ö‚Ő´:"> -<!ENTITY attachExtensions.label "Ô±Ő´Ö€ŐˇÖŐ¶ŐĄŐ¬ ŐˇŐŻŐżŐ«Őľ ŐˇŐľŐĄŐ¬ŐˇÖŐ¸Ö‚Ő´Ő¶ŐĄÖ€Ő« ÖŐ¸Ö‚ÖŐˇŐŻŐ¨ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ«Ő¶, ŐˇŐµŐ¶ Ő¤ŐĄŐşÖ„Ő« Ő°ŐˇŐ´ŐˇÖ€ ŐĄŐ©ŐĄ ŐˇŐľŐĄŐ¬ŐˇÖŐ¶Ő¸Ö‚Ő´Ő¶ŐĄÖ€Ő¨ ŐŐ¶Ő¤Ö€Ő« ŐşŐˇŐżŐłŐˇŐĽ ŐĄŐ¶:"> -<!ENTITY issues.nosubscriptions.add.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶"> -<!ENTITY issues.disabledfilters.enable.label "Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő¨"> -<!ENTITY issues.override.label "ÔżŐ¸Ő¶Ö†Ő«ŐŁŐ¸Ö‚Ö€ŐˇÖŐ«ŐˇŐ¶ ŐłŐ«Ő·Őż Ő§, Ő·ŐˇÖ€Ő¸Ö‚Ő¶ŐˇŐŻŐĄŐ¬ Ő°ŐˇŐµŐżŐ¶ŐĄŐ¬ ŐŐ¶Ő¤Ö€Ő« Ő´ŐˇŐ˝Ő«Ő¶"> -<!ENTITY issues.nosubscriptions.description "Ô´Ő¸Ö‚Ö„, Ő¨Ő˝Őż ŐĄÖ€ŐĄÖ‚Ő¸Ö‚ŐµŐ©Ő«, Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐˇŐ® ŐąŐĄÖ„ Ő¸Ö€ŐĄÖ‚Ő§ ŐşŐˇŐżÖ€ŐˇŐ˝ŐżŐ« Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« ÖŐ¸Ö‚ÖŐˇŐŻŐ«, Ő¸Ö€Ő¨ ŐˇŐľŐżŐ¸Ő´ŐˇŐż ŐŻŐĄÖ€ŐşŐ¸Őľ ŐŻŐ°ŐĄŐĽŐˇÖŐ¶Ő« ŐˇŐ¶ÖŐˇŐ¶ŐŻŐˇŐ¬Ő« Ő˘Ő¸ŐľŐˇŐ¶Ő¤ŐˇŐŻŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¨ ŐŻŐˇŐµÖ„ŐĄÖ€Ő¸Ö‚Ő´:"> -<!ENTITY typeSelector.falsePositive.description "Ô¸Ő¶ŐżÖ€ŐĄÖ„ ŐˇŐµŐ˝ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻŐ¨, ŐĄŐ©ŐĄ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´ ŐŻŐ¸Ö€ŐĄŐ¬ Ő§ ŐŻŐˇÖ€ŐĄÖ‚Ő¸Ö€ Ő˘Ő¸ŐľŐˇŐ¶Ő¤ŐˇŐŻŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶, ŐˇŐµŐ¶ ÖŐ¸Ö‚ÖŐˇŐ¤Ö€ŐľŐ¸Ö‚Ő´ Ő§ Ő˝ŐŐˇŐ¬ ŐŻŐˇŐ´ ŐąŐ« ŐˇŐ·ŐŐˇŐżŐ¸Ö‚Ő´: Ô´Ő¸Ö‚Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ Ő¸Ö€Ő¸Ő·ŐĄŐ¬, Ő©ŐĄ ŐˇÖ€Ő¤ŐµŐ¸Ö„ Adblock Plus-Ő¶ Ő§ ŐşŐˇŐżŐłŐˇŐĽŐ¨ ŐŞŐˇŐ´ŐˇŐ¶ŐˇŐŻŐˇŐľŐ¸Ö€ŐˇŐşŐĄŐ˝ ŐˇŐ¶Ő»ŐˇŐżŐĄŐ¬Ő¸Őľ ŐˇŐµŐ¶:"> -<!ENTITY typeSelector.other.label "Ô±ŐµŐ¬ ŐŐ¶Ő¤Ő«Ö€"> -<!ENTITY emailComment.label "Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ ŐŁÖ€ŐĄŐ›Ö„ ŐłŐ«Ő·Őż email Ő°ŐˇŐ˝ÖŐĄŐť ŐŐĄŐ¦ Ő°ŐĄŐż ŐŻŐˇŐşŐ¶ŐľŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ Ö‡ ŐŐ¶Ő¤Ő«Ö€Ő¨ Ő¬Ő¸Ö‚Ő®ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€:"> -<!ENTITY issues.whitelist.remove.label "Ő„Ő«ŐˇÖŐ¶ŐĄŐ¬ Adblock Plus-Ő¨ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´"> -<!ENTITY outdatedSubscriptions.description "Ô±ŐµŐ˝ Ö†Ő«Ő¬ŐżÖ€Ő¨ ŐąŐ« Ő©ŐˇÖ€Ő´ŐˇÖŐľŐĄŐ¬ Ő´Ő¸Őż 2 Ő·ŐˇŐ˘ŐˇŐ©:ÔąŐˇÖ€Ő´ŐˇÖÖ€ŐĄŐ›Ö„, Ö„ŐˇŐ¶Ő« Ő¸Ö€ Ő¤Őˇ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ő¬Ő¸Ö‚Ő®ŐĄŐ¬ ŐŐ¶Ő¤Ő«Ö€Ő¨:Ô˝Ő¶Ő¤Ö€Ő« ŐąŐ¬Ő¸Ö‚Ő®Ő´ŐˇŐ¶ Ő¤ŐĄŐşÖ„Ő¸Ö‚Ő´ Ő¤Ő«Ő´ŐĄŐ›Ö„ ŐŻÖ€ŐŻŐ«Ő¶:"> -<!ENTITY dataCollector.description "ŐŤŐşŐˇŐ˝ŐĄÖ„ Ő´Ő«Ő¶ŐąÖ‡ Adblock Plus-Ő¨ Ő°ŐˇŐľŐˇÖ„Ő« ŐˇŐ¶Ő°Ö€ŐˇŐŞŐĄŐ·Őż տվյալներ…"> -<!ENTITY sendButton.label "ŐÖ‚Ő˛ŐˇÖ€ŐŻŐĄŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨"> -<!ENTITY comment.label "Ő„ŐĄŐŻŐ¶ŐˇŐ˘ŐˇŐ¶Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ (ŐşŐˇÖ€ŐżŐˇŐ¤Ő«Ö€ ŐąŐ§)Őť"> -<!ENTITY sendPage.errorMessage "Ô¶ŐĄŐŻŐ¸Ö‚ŐµÖŐ« Ő¸Ö‚Ő˛ŐˇÖ€ŐŻŐ´ŐˇŐ¶ ÖŐ¸Ö€Ő±Ő¨ Ő±ŐˇŐŐ¸Ő˛ŐľŐĄŐ¬ Ő§ Ő°ŐĄŐżÖ‡ŐµŐˇŐ¬ Ő˝ŐŐˇŐ¬Ő« ŐŻŐ¸Ő¤Ő¸ŐľŐť "?1?": ŐŤŐżŐ¸Ö‚ŐŁŐĄÖ„ Ő´Ő«ŐˇÖŐ¸Ö‚Ő´Ő¨ Ő«Ő¶ŐżŐĄÖ€Ő¶ŐĄŐżŐ«Ő¶ ŐĄÖ‚ ŐŻÖ€ŐŻŐ¶ŐĄÖ„: ÔµŐ©ŐĄ ŐŐ¶Ő¤Ő«Ö€Ő¨ ŐąŐŻŐˇÖ€ŐŁŐˇŐľŐ¸Ö€ŐľŐ«, ŐŐ¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ Ő¤Ő«Ő´ŐĄŐ¬ [link]Adblock Plus Ő–Ő¸Ö€Ő¸Ö‚Ő´[/link] ŐˇŐ»ŐˇŐŻÖŐ¸Ö‚Ő©ŐµŐˇŐ¶ Ő°ŐˇŐ´ŐˇÖ€:"> -<!ENTITY showRecentReports.label "Ő‘Ő¸Ö‚ŐµÖ ŐżŐˇŐ¬ ŐľŐĄÖ€Ő»Ő«Ő¶ Ő¶ŐĄÖ€ŐŻŐˇŐµŐˇÖŐľŐˇŐ® Ő°ŐˇŐ˛Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨"> -<!ENTITY commentPage.heading "Ő„ŐĄŐŻŐ¶ŐˇŐ˘ŐˇŐ¶ŐĄŐ¬"> -<!ENTITY update.start.label "ŐŤŐŻŐ˝ŐĄŐ¬ Ő©ŐˇÖ€Ő´ŐˇÖŐ¸Ö‚Ő´Ő¨ Ő°Ő«Ő´Őˇ"> -<!ENTITY issues.disabledfilters.description "Ő€ŐĄŐżŐĄÖ‚ŐµŐˇŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® ŐĄŐ¶, Ő˝ŐˇŐŻŐˇŐµŐ¶ Ő¶Ö€ŐˇŐ¶Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄŐ¶ ŐˇŐ¦Ő¤ŐĄÖŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ Ő¸Ö‚Ő¶ŐĄŐ¶ŐˇŐ¬ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´:"> -<!ENTITY screenshot.description "Ő†Ő¸Ö‚ŐµŐ¶ Ő§Ő»Ő¨ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ ŐżŐˇÖ€Ő˘ŐĄÖ€ Ő¶ŐˇŐµŐľŐĄŐ¬ ŐżŐˇÖ€Ő˘ŐĄÖ€ Ő´ŐˇÖ€Ő¤ŐŻŐˇŐ¶Ö: ÔµŐ©ŐĄ Ő¤Ő¸Ö‚Ö„ ŐŐĄÖ€ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ«Ő¶ ŐŻÖŐĄÖ„ Ő§ŐŻÖ€ŐˇŐ¶Ő« Ő¶ŐŻŐˇÖ€Ő¨ Ő¤Őˇ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ Ö…ŐŁŐ¶ŐĄŐ¬ Ő´ŐĄŐ¦ Ő°ŐˇŐ˝ŐŻŐˇŐ¶ŐˇŐ¬ ŐŐ¶Ő¤Ő«Ö€Ő¨: Ô´Ő¸Ö‚Ö„ Ő¶Ő¸Ö‚ŐµŐ¶ŐşŐĄŐ˝ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ Ő°ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ ŐˇŐ¶ÖŐˇŐ¶ŐŻŐˇŐ¬Ő« Ő˘ŐˇŐŞŐ«Ő¶Ő¶ŐĄÖ€, Ő«Ő¶ŐąŐşŐĄŐ˝ Ő¶ŐˇŐĄÖ‚ Ő¶Ő·ŐĄŐ¬ ŐˇŐµŐ¶ ŐżŐˇÖ€ŐˇŐ®Ö„Ő¶ŐĄÖ€Ő¨, Ő¸Ö€ŐżŐĄŐ˛ ŐĄÖ€ŐĄÖ‚Ő¸Ö‚Ő´ Ő§ ŐŐ¶Ő¤Ő«Ö€Ő¨: Ô´Őˇ ŐˇŐ¶ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€ Ő˝ŐĄŐ˛Ő´ŐĄÖ„ Ő°ŐˇŐ´ŐˇŐşŐˇŐżŐˇŐ˝ŐŐˇŐ¶ ŐŻŐ¸ŐłŐˇŐŻŐ¨ ŐĄÖ‚ Ő´ŐŻŐ¶Ő«ŐŻŐ¸Őľ Ő¨Ő¶ŐżÖ€ŐĄÖ„ ŐşŐˇŐżŐŻŐĄÖ€Ő« Ő°ŐˇŐżŐľŐˇŐ®Ő¨:"> -<!ENTITY screenshot.attach.label "ÔżÖŐĄŐ¬ Ő§Ő»Ő« Ő¶ŐŻŐˇÖ€Ő¨"> -<!ENTITY issues.whitelist.description "Adblock Plus-Ő¨ ŐˇŐµŐŞŐ´ ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ® Ő§ ŐˇŐµŐ˝ Ő§Ő»Ő¸Ö‚Ő´: Ő„Ő«ŐˇÖÖ€ŐĄÖ„ ŐˇŐµŐ¶ ŐĄÖ‚ ŐľŐĄÖ€Ő˘ŐĄŐĽŐ¶ŐĄÖ„ ŐˇŐµŐ˝ Ő§Ő»Ő¨ Ő¸Ö‚Ő˛ŐˇÖ€ŐŻŐĄŐ¬Ő¸Ö‚Ö ŐˇŐĽŐˇŐ» ŐŐ¶Ő¤Ö€Ő« Ő¬Ő¸Ö‚Ő®Ő¸Ö‚Ő´ŐˇŐ¶Ő¨ ŐˇŐ»ŐˇŐŻÖŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€:"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus-Ő¨ ŐąŐ« ÖŐˇŐŻŐ¸Ö‚Ő´ ŐŁŐ¸ŐľŐˇŐ¦Ő¤Ő¨ (&v)"> -<!ENTITY typeSelector.heading "Ô˝Ő¶Ő¤Ö€Ő« Ő¨Ő¶ŐżÖ€Ő¸Ö‚Ő´"> -<!ENTITY anonymity.warning "Ő„ŐĄŐ¶Ö„ ŐąŐĄŐ¶Ö„ ŐŻŐˇÖ€Ő¸Ő˛ŐˇŐ¶ŐˇŐ¬Ő¸Ö‚ ŐĄŐż ŐŁŐˇŐ¬ ŐŐĄŐ¦ Ő´Ő¸Őż Ö‡ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨ ÖŐˇŐ®Ö€ ŐŻŐ°ŐˇŐ´ŐˇÖ€ŐĄŐ¶Ö„:"> -<!ENTITY wizard.title "ŐŹŐĄŐ˛ŐĄŐŻŐˇÖŐ¶ŐĄŐ¬"> -<!ENTITY issues.ownfilters.disable.label "Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€(ŐĄÖ€)Ő¨"> -<!ENTITY commentPage.description "ŐŹŐĄÖ„Ő˝ŐżŐˇŐµŐ«Ő¶ Ő¤ŐˇŐ·ŐżŐ« Ő˝ŐżŐ¸Ö€ŐĄÖ‚ Ő©Ő¸Ö‚ŐµŐ¬ Ő§ ŐżŐˇŐ¬Ő«Ő˝ Ő´Ő¸Ö‚ŐżÖ„ŐˇŐŁÖ€ŐĄŐ¬ Ő´ŐĄŐŻŐ¶ŐˇŐ˘ŐˇŐ¶Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ Ő´ŐĄŐ¦ Ö…ŐŁŐ¶ŐĄŐ¬Ő¸Ö‚ Ő°ŐˇŐ´ŐˇÖ€Őť Ő°ŐˇŐ˝ŐŻŐˇŐ¶ŐˇŐ¬ ŐŐ¶Ő¤Ő«Ö€Ő¨" Ô±ŐµŐ˝ Ö„ŐˇŐµŐ¬Ő¨ ŐşŐˇÖ€ŐżŐˇŐ¤Ő«Ö€ ŐąŐ§, Ő˝ŐˇŐŻŐˇŐµŐ¶ ŐŐ¸Ö€Ő°Ő¸Ö‚Ö€Ő¤ Ő§ ŐżÖ€ŐľŐ¸Ö‚Ő´, ŐĄŐ©ŐĄ Ô˝Ő¶Ő¤Ő«Ö€Ő¨ ŐˇŐŻŐ¶Ő°ŐˇŐµŐż ŐąŐ§: Ô´Ő¸Ö‚Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ Ő¶ŐˇŐĄÖ‚ ŐľŐĄÖ€ŐˇŐ¶ŐˇŐµŐĄŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ« ŐżŐľŐµŐˇŐ¬Ő¶ŐĄÖ€Ő¨ Ő´Ő«Ő¶Őą Ő¤Ö€Őˇ Ő¸Ö‚Ő˛ŐˇÖ€ŐŻŐ¸Ö‚Ő´Ő¨:"> -<!ENTITY comment.lengthWarning "Ő„ŐĄŐŻŐ¶ŐˇŐ˘ŐˇŐ¶Ő¸Ö‚Ő©ŐµŐˇŐ¶ ŐĄÖ€ŐŻŐˇÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¨ ŐŁŐĄÖ€ŐˇŐ¦ŐˇŐ¶ÖŐ¸Ö‚Ő´ Ő§ 1000 Ő˝Ő«Ő´ŐľŐ¸Ő¬: Ő„Ő«ŐˇŐµŐ¶ ŐˇŐĽŐˇŐ»Ő«Ő¶ 1000 Ő˝Ő«Ő´ŐľŐ¸Ő¬Ő¨ ŐŻŐ¸Ö‚Ő˛ŐˇÖ€ŐŻŐľŐ«:"> -<!ENTITY typeSelector.falseNegative.description "Ô¸Ő¶ŐżÖ€ŐĄÖ„ ŐˇŐµŐ˝ ŐżŐˇÖ€Ő˘ŐĄÖ€ŐˇŐŻŐ¨, ŐĄŐ©ŐĄ ŐŁŐ¸ŐľŐˇŐ¦Ő¤Ő¨ ÖŐ¸Ö‚ÖŐˇŐ¤Ö€ŐľŐ¸Ö‚Ő´ Ő§, ŐąŐ¶ŐˇŐµŐˇŐ® Adblock Plus Ő´Ő«ŐˇÖŐľŐˇŐ® Ő§:"> -<!ENTITY sendPage.waitMessage "Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ Ő˝ŐşŐˇŐ˝ŐĄŐ¬, Ő´Ő«Ő¶Őą Adblock Plus-Ő¨, Ő¸Ö‚Ő˛ŐˇÖ€ŐŻŐ« ŐŐĄÖ€ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨:"> -<!ENTITY dataCollector.heading "Ô˛ŐˇÖ€Ő« ŐŁŐˇŐ¬Ő¸Ö‚Ő˝Őż ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¶ŐĄÖ€Ő« Ő°ŐĄŐżÖ‡Ő´ŐˇŐ¶ Ő°ŐˇŐ´ŐˇŐŻŐˇÖ€ŐŁ"> -<!ENTITY screenshot.heading "ÔżÖŐĄŐ¬ Ő§ŐŻÖ€ŐˇŐ¶Ő« Ő¶ŐŻŐˇÖ€Ő¨"> -<!ENTITY sendPage.heading "ŐÖ‚Ő˛ŐˇÖ€ŐŻŐĄŐ¬ Ő¦ŐĄŐŻŐ¸Ö‚ŐµÖŐ¨"> -<!ENTITY issues.subscriptionCount.description "Ô´Ő¸Ö‚Ö„ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€ŐľŐˇŐ® ŐĄÖ„ ŐąŐˇÖŐ«Ö Ő·ŐˇŐż Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő«: ŐŤŐˇ ŐŻŐˇÖ€Ő¸Ő˛ Ő§ ŐŐ¶Ő¤Ö€Ő« ŐşŐˇŐżŐłŐˇŐĽ Ő¤ŐˇŐĽŐ¶ŐˇŐ¬: Ő„ŐĄŐ¶Ö„ ŐąŐĄŐ¶Ö„ Ő¨Ő¶Ő¤Ő¸Ö‚Ő¶Ő« Ő±ŐĄÖ€ Ő˘ŐˇŐ˛Ő¸Ö„Ő¨ ŐŐ¶Ő¤Ö€Ő« Ő°ŐĄŐż ŐŻŐˇŐşŐľŐˇŐ®, Ö„ŐˇŐ¶Ő« Ő¸Ö€ ŐˇŐ¶Ő°Ő¶ŐˇÖ€ Ő§ Ő¬Ő«Ő¶ŐĄŐ¬Ő¸Ö‚ ŐşŐˇÖ€Ő¦ŐĄŐ¬ Ő¤Ö€Őˇ ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€Ő¨: Ô˝Ő¶Ő¤Ö€Ő¸Ö‚Ő´ ŐĄŐ¶Ö„ Ő°ŐĄŐĽŐˇÖŐ¶ŐĄŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő¨, Ő©Ő¸Ő˛Ő¶ŐĄŐ¬Ő¸Őľ Ő´Ő«ŐˇŐµŐ¶ ŐˇŐ´ŐĄŐ¶ŐˇŐˇŐ¶Ő°Ö€ŐˇŐŞŐĄŐ·ŐżŐ¶ŐĄÖ€Ő¨ Ö‡ Ő˝ŐżŐ¸Ö‚ŐŁŐĄŐ¬ ŐˇÖ€Ő¤ŐµŐ¸Ö„ ŐŐ¶Ő¤Ő«Ö€Ő¨ Ő¤ŐĄŐĽ ŐŻŐˇ:"> -<!ENTITY screenshot.mark.label "Ő†Ő·ŐĄŐ¬ ŐŐ¶Ő¤Ö€Ő« ŐżŐĄŐ˛Ő¨"> -<!ENTITY privacyPolicy.label "Ô±Ő¶Ő±Ő¶ŐˇŐŻŐˇŐ¶ ŐżŐľŐµŐˇŐ¬Ő¶ŐĄÖ€Ő« ŐşŐˇŐ°ŐşŐˇŐ¶Ő¸Ö‚Ő´"> -<!ENTITY issues.description "Adblock Plus-Ő¨ Ő°ŐˇŐµŐżŐ¶ŐˇŐ˘ŐĄÖ€ŐĄŐ¬ Ő§ ŐşÖ€Ő¸Ő˘Ő¬ŐĄŐ´Ő¶ŐĄÖ€ Ő±ŐĄÖ€ ŐŻŐ¸Ő¶Ö†Ő«ŐŁŐ¸Ö‚Ö€ŐˇÖŐ«ŐˇŐµŐ« Ő°ŐĄŐż, Ő¸Ö€Ő¸Ő¶Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄŐ¶ ŐŐ¶Ő¤Ö€Ő« ŐşŐˇŐżŐłŐˇŐĽ Ő¬Ő«Ő¶ŐĄŐ¬ ŐŻŐˇŐ´ Ő˘ŐˇÖ€Ő¤ŐˇÖŐ¶Ő« Ő¬Ő¸Ö‚Ő®Ő¸Ö‚Ő´Ő¨:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sidebar.dtd deleted file mode 100644 index d185321..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Ő‘Ő¸Ö‚ŐµÖ ŐżŐˇŐ¬ Ö…Ő˘ŐµŐĄŐŻŐżŐ¨ Ő§Ő»Ő¸Ö‚Ő´"> -<!ENTITY address.label "Ő€ŐˇŐ˝ÖŐĄŐ¶"> -<!ENTITY context.open.label "Ô˛ŐˇÖŐĄŐ¬ Ő¶Ő¸Ö€ ÔąŐˇŐ˘Ő¸Ö‚Ő´"> -<!ENTITY type.label "ŐŹŐĄŐ˝ŐˇŐŻŐ¨"> -<!ENTITY tooltip.filterSource.label "Ő–Ő«Ő¬ŐżÖ€Ő« ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€Ő¨`"> -<!ENTITY noitems.label "Ő–Ő«Ő¬ŐżÖ€ŐľŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€ ŐąŐŻŐˇŐ¶"> -<!ENTITY filter.label "Ô±Ő¦Ő¤Ő¸Ő˛ Ö†Ő«Ő¬ŐżÖ€Ő¨"> -<!ENTITY tooltip.size.label "Ő‰ŐˇÖŐ¨`"> -<!ENTITY reattach.label "Ô±Ő´Ö€ŐˇÖŐ¶ŐĄŐ¬"> -<!ENTITY search.label "&Ő“Ő¶ŐżÖ€ŐĄŐ¬"> -<!ENTITY docDomain.thirdParty "(ŐĄÖ€Ö€Ő¸Ö€Ő¤ ŐŻŐ¸Ő˛Ő´Ő«)"> -<!ENTITY filterSource.label "Ő–Ő«Ő¬ŐżÖ€Ő« ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€Ő¨`"> -<!ENTITY tooltip.docDomain.label "Ô±Ő·ŐŐˇŐżŐˇŐ¶Ö„Ő« ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€Ő¨`"> -<!ENTITY context.copy.label "ÔżÖ€ŐŻŐ¶ŐĄŐ¬ ŐżŐˇÖ€Ö€Ő« Ő°ŐˇŐ˝ÖŐĄŐ¶"> -<!ENTITY tooltip.type.label "ŐŹŐĄŐ˝ŐˇŐŻŐ¨`"> -<!ENTITY context.disablefilter.label "Ô±Ő¶Ő»ŐˇŐżŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő¨ ?1?"> -<!ENTITY context.copyFilter.label "ÔżÖ€ŐŻŐ¶ŐˇŐŻŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő¨"> -<!ENTITY context.block.label "Ő–Ő«Ő¬ŐżÖ€ŐĄŐ¬ ŐˇŐµŐ˝ ŐżŐˇÖ€Ö€Ő¨"> -<!ENTITY context.enablefilter.label "ŐŽŐĄÖ€ŐˇŐŻŐżŐ«ŐľŐˇÖŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€Ő¨ ?1?"> -<!ENTITY detach.label "Ô±Ő¶Ő»ŐˇŐż ŐşŐˇŐżŐ¸Ö‚Ő°ŐˇŐ¶"> -<!ENTITY whitelisted.label "Ô˛ŐˇÖŐˇŐĽŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶"> -<!ENTITY context.disablefilteronsite.label "Ô±Ö€ŐŁŐĄŐ¬ŐĄŐ¬ ŐˇŐµŐ˝ Ö†Ő«Ő¬ŐżÖ€Ő¨ ?1? -Ő¸Ö‚Ő´"> -<!ENTITY detached.title "Adblock Plus - Ő–Ő«Ő¬ŐżÖ€ŐľŐľŐ¸Ő˛ ŐżŐˇÖ€Ö€ŐĄÖ€ (Ô±Ő¶Ő»ŐˇŐż)"> -<!ENTITY docDomain.firstParty "(Ő¸Ö‚Ő˛Ő«Ő˛ ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€)"> -<!ENTITY tooltip.type.whitelisted "(Ő˘ŐˇÖŐˇŐĽŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶)"> -<!ENTITY tooltip.filter.label "Ô±Ő¦Ő¤Ő¸Ő˛ Ö†Ő«Ő¬ŐżÖ€Ő¨`"> -<!ENTITY tooltip.filter.disabled "(ŐˇŐ¶Ő»ŐˇŐżŐľŐˇŐ®)"> -<!ENTITY context.editfilter.label "Ô˝Ő´Ő˘ŐˇŐŁÖ€ŐĄŐ¬ Ô±Ő¦Ő¤Ő¸Ő˛ Ö†Ő«Ő¬ŐżÖ€Ő¨"> -<!ENTITY tooltip.type.blocked "(Ö†Ő«Ő¬ŐżÖ€ŐľŐˇŐ®)"> -<!ENTITY size.label "Ő‰ŐˇÖŐ¨"> -<!ENTITY context.whitelist.label "Ô±ŐµŐ˝ ŐżŐˇÖ€Ö€Ő« Ő°ŐˇŐ´ŐˇÖ€ Ô˛ŐˇÖŐˇŐĽŐ¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ ŐˇŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬"> -<!ENTITY context.selectAll.label "ÔĽÖ€Ő«Őľ Ô¸Ő¶ŐżÖ€ŐĄŐ¬"> -<!ENTITY state.label "ŐŽŐ«ŐłŐˇŐŻŐ¨"> -<!ENTITY docDomain.label "Ô±Ő·ŐŐˇŐżŐˇŐ¶Ö„Ő« ŐˇŐ˛Ő˘ŐµŐ¸Ö‚Ö€Ő¨"> -<!ENTITY tooltip.address.label "Ő€ŐˇŐ˝ÖŐĄŐ¶`"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/subscriptionSelection.dtd deleted file mode 100644 index 77ecf84..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/hy-AM/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Ô±ŐľŐĄŐ¬ŐˇÖ&Ő¶ŐĄŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶ Ő¶ŐˇÖ‡ "?1?" Ö†Ő«Ő¬ŐżÖ€Ő«Ő¶"> -<!ENTITY list.download.failed "«Adblock Plus»-Ő¨ ŐąŐŻŐˇÖ€Ő¸Ő˛ŐˇÖŐˇŐľ Ő˘ŐĄŐĽŐ¶ŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶ŐˇÖ€Ő¤Ő¸ŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¶ŐĄÖ€Ő« ÖŐ¸Ö‚ÖŐˇŐŻŐ¨"> -<!ENTITY list.download.retry "ÔżÖ€ŐŻŐ«Ő¶ Ő“Ő¸Ö€Ő±ŐĄŐ¬"> -<!ENTITY title.label "Ô˛&ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐˇŐ¶ ŐˇŐľŐˇŐ¶Ő¸Ö‚Ő´Ő¨`"> -<!ENTITY list.download.website "Ô±ŐµÖŐĄŐ¬ŐĄŐ¬ ŐŻŐˇŐµÖ„"> -<!ENTITY supplementMessage "Ô±ŐµŐ˝ Ö†Ő«Ő¬ŐżÖ€Ő« Ő˘ŐˇŐŞŐˇŐ¶ŐˇÖ€Ő¤Ő¸ŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶Ő¨ Ő°ŐˇŐłŐˇŐ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®ŐľŐ¸Ö‚Ő´ Ő§ "?1?"-Ő« Ő°ŐĄŐż, Ő¸Ö€Ő¨ Ő¤Ő¸Ö‚Ö„ ŐąŐĄÖ„ Ö…ŐŁŐżŐˇŐŁŐ¸Ö€Ő®Ő¸Ö‚Ő´:"> -<!ENTITY viewList.label "Ő†ŐˇŐµŐĄŐ¬ Ö†Ő«Ő¬ŐżÖ€ŐĄÖ€Ő¨"> -<!ENTITY visitHomepage.label "Ô±ŐµÖŐĄŐ¬ŐĄŐ¬ ŐŻŐˇŐµÖ„"> -<!ENTITY addSubscription.label "Ô±ŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶"> -<!ENTITY dialog.title "Ô˛ŐˇÖ€Ő« ŐŁŐˇŐ¬Ő¸Ö‚Ő˝Őż Adblock Plus"> -<!ENTITY location.label "Ő–Ő«Ő¬ŐżÖ€ŐĄÖ€Ő« &Ő°ŐˇŐ˝ÖŐĄŐ¶`"> -<!ENTITY fromWeb.description "Ő€ŐˇŐ˝ŐżŐˇŐżŐĄÖ„ Ő¸Ö€ ÖŐˇŐ¶ŐŻŐˇŐ¶Ő¸Ö‚Ő´ ŐĄÖ„ ŐˇŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐ¸Ö‚Ő¶: Ô´Ő¸Ö‚Ö„ ŐŻŐˇÖ€Ő¸Ő˛ ŐĄÖ„ ÖŐ¸Ő˛ŐĄŐ¬ Ő˘ŐˇŐŞŐˇŐ¶Ő¸Ö€Ő¤ŐˇŐŁÖ€Ő¸Ö‚Ő©ŐµŐˇŐ¶ ŐľŐĄÖ€Ő¶ŐˇŐŁŐ«Ö€Ő¨ ŐŻŐˇŐ´ Ő°ŐˇŐ˝ÖŐĄŐ¶ Ő´Ő«ŐąÖ‡ ŐˇŐľŐĄŐ¬ŐˇÖŐ¶ŐĄŐ¬Ő¨:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/composer.dtd deleted file mode 100644 index 867e6ca..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "&pada akhir dari alamat"> -<!ENTITY domainRestriction.label "Membatasi pada & domain:"> -<!ENTITY collapse.default.no.label "Gunakan default (tidak)"> -<!ENTITY firstParty.label "&Hanya untuk pihak pertama"> -<!ENTITY preferences.label "&Tampilkan filter yang ada..."> -<!ENTITY pattern.label "Mencari pola"> -<!ENTITY thirdParty.label "Hanya pihak ke&tiga"> -<!ENTITY filter.label "&Tapis baru:"> -<!ENTITY collapse.label "&tutup yang diblokir:"> -<!ENTITY match.warning "Pola yang Anda masukkan tidak lagi cocok dengan masuk daftar alamat yang akan diblokir/daftar putih dan tidak akan berpengaruh sama sekali."> -<!ENTITY anchor.start.label "&pada awal alamat"> -<!ENTITY matchCase.label "&Sama persis"> -<!ENTITY custom.pattern.label "&Kustom:"> -<!ENTITY unselectAllTypes.label "Tidak memilih apapun"> -<!ENTITY type.whitelist.label "Aturan p&engabaian"> -<!ENTITY regexp.warning "Pola yang Anda masukkan akan dianggap sebagai regular expression yang tidak akan efisien untuk dapat diproses oleh Adblock Plus dan mungkin akan memperlambat pengalaman browsing Anda. Jika Anda tidak berniat untuk menggunakan regular expression, tambahkan tanda bintang (*) diakhir pola."> -<!ENTITY dialog.title "Tambah aturan filter Adblock Plus"> -<!ENTITY basic.label "Tampilan dasar"> -<!ENTITY type.filter.label "&Filter yang diblokir"> -<!ENTITY types.label "Terapkan untuk jenis:"> -<!ENTITY shortpattern.warning "Pola yang Anda masukkan terlalu pendek untuk dapat disempurnakan dan mungkin memperlambat pengalaman berselancar Anda. Anda disarankan untuk memilih lagi karakter yang lebih panjang untuk saringan ini untuk memungkinkan Adblock Plus mengolah saringan agar lebih efisien."> -<!ENTITY collapse.yes.label "Ya"> -<!ENTITY anchors.label "Hanya menerima pola:"> -<!ENTITY collapse.default.yes.label "Gunakan default (Ya)"> -<!ENTITY domainRestriction.help "Gunakan pilihan ini untuk menentukan satu atau lebih domain yang dipisahkan oleh sebuah garis bar(|). Filter hanya akan diterapkan pada domain yang dipilih. Sebuah tilde (~) sebelum nama domain menunjukkan bahwa filter tidak akan diterapkan pada domain tersebut."> -<!ENTITY accept.label "Tambahkan filter"> -<!ENTITY options.label "Pilihan"> -<!ENTITY disabled.warning "Adblock Plus sedang dimatikan. Anda masih dapat menambahkan filter tetapi mereka tidak akan diterapkan kecuali Anda [link] mengaktifkan Adblock Plus [/link]."> -<!ENTITY anchor.start.flexible.label "&pada awal nama domain"> -<!ENTITY collapse.no.label "Tidak"> -<!ENTITY selectAllTypes.label "Pilih Semua"> -<!ENTITY advanced.label "Tampilan lanjutan"> -<!ENTITY pattern.explanation "Pola dapat menjadi bagian dari alamat; tanda bintang (*) bertindak sebagai wildcard. Filter hanya akan diterapkan ke alamat yang cocok dengan pola yang diberikan."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/filters.dtd deleted file mode 100644 index 6136b99..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Semua penyesuaian penyaring Anda akan digantikan oleh isi berkas yang dipilih. Apakah Anda ingin memproses?"> -<!ENTITY slow.column "Penyaring Slo&w"> -<!ENTITY enabled.column "Hidupka&n"> -<!ENTITY subscription.lastDownload.checksumMismatch "Gagal, checksum berbeda"> -<!ENTITY noFiltersInGroup.text "Kelompok yang dipilih kosong."> -<!ENTITY subscription.actions.label "Tindakan"> -<!ENTITY filter.selectAll.label "Pilih semua"> -<!ENTITY backupButton.label "&Cadangan dan Pengembalian"> -<!ENTITY restore.minVersion.warning "Peringatan: berkas telah dibuat dengan versi Adblock Plus yang lebih baru. Anda harus memperbarui ke versi Adblock Plus terbaru sebelum mengembalikan dari berkas ini."> -<!ENTITY restore.error "Data berkas tidak bisa diproses, mungkin ini bukan berkas cadangan Adblock Plus?"> -<!ENTITY sort.ascending.label "Urutkan dari A > Z"> -<!ENTITY sort.label "&Urutkan dari"> -<!ENTITY subscription.source.label "Daftar penyaring"> -<!ENTITY hitcount.column "Sasaran"> -<!ENTITY noFilters.text "Anda belum memiliki penyesuaian penyaring apapun."> -<!ENTITY backup.custom.title "Hanya penyesuaian penyaring"> -<!ENTITY subscription.external.label "Diperbarui oleh ekstensi lain"> -<!ENTITY subscription.delete.label "Hapus"> -<!ENTITY noGroupSelected.text "Anda perlu memilih kelompok penyaring sebelum penyaring dapat ditampilkan."> -<!ENTITY filter.cut.label "Potong"> -<!ENTITY restore.default.label "Mengembalikan cadangan dari ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Mengunduh…"> -<!ENTITY subscriptions.tab.label "Penyaring langganan"> -<!ENTITY sort.descending.label "Urutkan dari Z > A"> -<!ENTITY filters.remove.warning "Apakah Anda sungguh ingin menghapus semua penyaring yang dipilih?"> -<!ENTITY filter.delete.label "Hapus"> -<!ENTITY addSubscriptionAdd.label "Tambahkan"> -<!ENTITY viewMenu.label "Lihat"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Batal"> -<!ENTITY subscription.enabled.label "Diaktifkan"> -<!ENTITY noSubscriptions.text "Anda belum menambahkan penyaring langganan apapun. Adblock Plus tidak akan memblok apapun tanpa penyaring, silahkan gunakan "Tambahkan penyaring langganan" untuk menambahkan."> -<!ENTITY subscription.update.label "Perbarui penyaring"> -<!ENTITY dialog.title "Preferensi Penyaring Adblock Plus"> -<!ENTITY addFilter.label "Tambahkan penyaring"> -<!ENTITY subscription.minVersion.warning "Penyaring langganan memerlukan versi Adblock Plus yang lebih baru, Anda harus memperbarui ke versi Adblock Plus terbaru."> -<!ENTITY subscription.lastDownload.invalidURL "Gagal, bukan alamat yang benar"> -<!ENTITY backup.error "Ada kesalahan penulisan penyaring ke berkas. Pastikan berkas tidak diproteksi atau sedang digunakan aplikasi lain."> -<!ENTITY filter.moveUp.label "Ke atas"> -<!ENTITY addGroup.label "Tambahkan penyaring dan kelompok"> -<!ENTITY filter.edit.label "Sunting"> -<!ENTITY subscription.showHideFilters.label "Tampilkan/sembunyikan penyaring"> -<!ENTITY acceptableAds2.label "Ijinkan beberapa iklan yang bukan dan mengganggu"> -<!ENTITY addSubscriptionOther.label "Tambahkan skrip yang berbeda"> -<!ENTITY close.label "Tutup"> -<!ENTITY sort.none.label "&Belum diurutkan"> -<!ENTITY filter.actions.label "Tindakan penyaring"> -<!ENTITY filter.copy.label "Salin"> -<!ENTITY filter.moveDown.label "Ke bawah"> -<!ENTITY filter.resetHitCounts.label "Reset kembali statistik kunjungan"> -<!ENTITY readMore.label "Baca lebih lanjut"> -<!ENTITY subscription.moveUp.label "Ke atas"> -<!ENTITY addSubscription.label "Tambahkan penyaring"> -<!ENTITY subscription.homepage.label "Beranda"> -<!ENTITY backup.complete.title "Semua penyaring dan langganan"> -<!ENTITY restore.own.label "Mengembalikan cadangan sendiri"> -<!ENTITY restore.complete.warning "Semua preferensi penyaring Anda akan digantikan oleh isi berkas yang dipilih. Apakah Anda ingin memproses?"> -<!ENTITY filters.tab.label "Penyesuaian penyaring"> -<!ENTITY backup.label "Membuat cadangan baru"> -<!ENTITY find.label "Cari"> -<!ENTITY subscription.moveDown.label "Ke bawah"> -<!ENTITY subscription.lastDownload.connectionError "Gagal, gagal mengunduh"> -<!ENTITY subscription.lastDownload.success "Sukses"> -<!ENTITY subscription.lastDownload.invalidData "Gagal, bukan daftar penyaring yang benar"> -<!ENTITY filter.paste.label "Tempel"> -<!ENTITY subscription.disabledFilters.enable "Aktifkan penyaring yang dinonaktifkan"> -<!ENTITY lasthit.column "Sasaran terakhir"> -<!ENTITY subscription.editTitle.label "Sunting judul"> -<!ENTITY subscription.disabledFilters.warning "Beberapa penyaring di layanan langganan ini dinonaktifkan."> -<!ENTITY filter.column "Aturan penyaring"> -<!ENTITY subscription.lastDownload.label "Unduhan terakhir:"> -<!ENTITY viewList.label "Lihat daftar"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/firstRun.properties deleted file mode 100644 index 573f16c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Menjelajah secara rahasia dengan menonaktifkan pelacakan - menyembunyikan jejak Anda dari perusahaan iklan yang akan melacak setiap langkah Anda. -firstRun_toggle_off=OFF -firstRun_feature_tracking=Nonaktifkan Pelacakan -firstRun_feature_malware=Memblokir malware -firstRun_title=Adblock Plus telah diinstal -firstRun_acceptableAdsExplanation=Kami ingin mendorong situs web untuk menggunakan iklan langsung yang tidak mengganggu. Itu sebabnya kami telah menetapkan <a>Peraturan ketat</a> untuk mengenali iklan yang bisa diterima, yang akan ditampilkan di dalam pengaturan default. Jika Anda masih ingin memblokir setiap iklan, Anda dapat <a>menonaktifkan</a> ini dalam beberapa detik. -firstRun_toggle_on=ON -firstRun_contributor_credits=Kredit Kontributor -firstRun_dataCorruptionWarning=Apakah halaman ini tetap muncul? <a>Klik disini!</a> -firstRun_acceptableAdsHeadline=Sekarang iklan yang mengganggu akan diblokir -firstRun_share=Beritahu teman Anda -firstRun_share_headline=<a>Bantulah kami</a> dalam membuat web menjadi tempat yang lebih baik -firstRun_features=Adblock Plus dapat melakukan lebih dari sekedar pemblokiran iklan -firstRun_feature_malware_description=Membuat penjelajahan Anda lebih aman dengan cara memblokir domain yang dikenal sebagai malware. -firstRun_feature_social_description=Secara otomatis membersihkan tombol media sosial, seperti Facebook Like, yang muncul pada halaman web dan melacak perilaku Anda. -firstRun_donate=donasi -firstRun_donate_label=Dukung proyek ini -firstRun_feature_social=Hapus Tombol Media Sosial -firstRun_legacySafariWarning=Anda menggunakan versi lama Safari yang tidak didukung oleh Adblock Plus. Mungkin tidak akan bekerja dengan baik atau bahkan mengganggu pengalaman pengguna di beberapa website. Kami sangat menyarankan sebaiknya memperbarui ke Safari 6.1.1 atau lebih tinggi (pada OS X 10.8 Mountain Lion), atau Safari 7.0.1 atau lebih tinggi (pada OS X 10.9 Mavericks), atau gunakan versi terbaru dari Mozilla Firefox, Google Chrome atau Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/global.properties deleted file mode 100644 index 42fbf15..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Tidak ada item yang dapat diblok di halaman ini -action3_tooltip=Klik untuk mengaktifkan/menonaktifkan Adblock Plus. -notification_antiadblock_title=Sembunyikan pesan yang dipilih? -type_label_script=script -filter_elemhide_nocriteria=Tidak ada kriteria yang ditentukan untuk mengenali unsur yang disembunyikan -blockingGroup_title=Aturan pemblokiran iklan -whitelisted_tooltip=Adblock Plus dinonaktifkan pada halaman ini. -type_label_stylesheet=stylesheet -blocked_count_tooltip=?1? dari ?2? -type_label_font=font -type_label_popup=Jendela pop-up -filter_regexp_tooltip=Filter ini adalah regular expression atau terlalu pendek untuk dioptimalkan. Penggunaan filter yang terlalu banyak akan memperlambat browsing Anda. -action0_tooltip=Klik untuk memunculkan menu, klik tengah untuk mengaktifkan/menonaktifkan. -whitelisted_page=Adblock Plus telah dinonaktifkan untuk halaman ini -remove_group_warning=Anda benar-benar ingin menghapus kelompok ini? -action1_tooltip=Klik untuk membuka/menutup item yang dapat diblok, klik tengah untuk mengaktifkan/menonaktifkan. -type_label_xmlhttprequest=permintaan XML -active_tooltip=Adblock Plus diaktifkan, ?1? filter subscription(s) dan ?2? custom filter(s) digunakan. -type_label_document=dokumen -type_label_object_subrequest=objek subrequest -whitelistGroup_title=Aturan pengecualian -disabled_tooltip=Adblock Plus dinonaktifkan. -filter_elemhide_duplicate_id=Hanya satu ID dari unsur yang akan disembunyikan dapat ditentukan -type_label_object=Obyek -action2_tooltip=Klik untuk membuka preferensi, klik tengah untuk mengaktifkan/menonaktifkan. -type_label_subdocument=bingkai -clearStats_warning=Ini akan menyetel ulang semua filter statistik kunjungan dan menonaktifkan filter penghitung kunjungan. Apakah Anda ingin melanjutkan? -notification_antiadblock_message=Situs ini dikenal sebagai penunjuk pesan yang dipilih terhadap pengguna Adblock Plus. Apakah anda ingin Adblock Plus menyembunyikan pesan yang dipilih? -blocked_count_addendum=(Dalam daftar putih:?1?, tersembunyi:?2?) -subscription_invalid_location=Filter daftar lokasi bukanlah URL valid maupun nama file yang valid. -type_label_image=gambar -remove_subscription_warning=Apakah anda yakin ingin menghapus langganan ini? -type_label_other=Lainnya -mobile_menu_enable=ABP: Aktifkan -type_label_media=audio/video -mobile_menu_disable_site=ABP: Menonaktifkan pada ?1? -elemhideGroup_title=Aturan penyembunyian elemen -mobile_menu_enable_site=ABP: Aktifkan pada ?1? -type_label_elemhide=tersembunyi -newGroup_title=Kelompok penyaring baru -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/overlay.dtd deleted file mode 100644 index 0cb31d3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Iya"> -<!ENTITY notification.button.no "&Tidak"> -<!ENTITY sync.label "Syn&c pengaturan Adblock Plus"> -<!ENTITY whitelist.site.label "Non aktifkan pada ?1?"> -<!ENTITY filters.label "&Preferensi penyaring"> -<!ENTITY disable.label "Non aktifkan disemua tempat"> -<!ENTITY objecttab.title "Blokir"> -<!ENTITY objecttab.tooltip "Klik disini untuk memblokir objek ini dengan Adblock Plus"> -<!ENTITY menuitem.label "Preferensi Ad&block Plus"> -<!ENTITY objecttabs.label "&Tunjukkan tab pada Flash dan Java"> -<!ENTITY sendReport.label "&Laporkan masalah pada halaman ini"> -<!ENTITY whitelist.page.label "Non aktifkan pada halaman ini saja"> -<!ENTITY context.image.label "Adblock Plus: Blokir gambar"> -<!ENTITY counthits.label "Menghitung filter &kunjungan"> -<!ENTITY opensidebar.label "Buka &item yang dapat diblok"> -<!ENTITY notification.button.close "&Tutup"> -<!ENTITY contribute.label "Kontribusi untuk Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Blokir bingkai"> -<!ENTITY blocked.tooltip "Blokir item pada halaman ini:"> -<!ENTITY hideplaceholders.label "Sembunyikan p&laceholders dari unsur pemblokiran"> -<!ENTITY showinstatusbar.label "Tunjukkan di &status bar"> -<!ENTITY sidebar.title "Item yang dapat diblok di halaman ini"> -<!ENTITY options.label "&Pilihan"> -<!ENTITY context.object.label "Adblock Plus: Blokir objek"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Mengaktifkan ulang pada halaman ini"> -<!ENTITY filters.tooltip "Filter paling aktif:"> -<!ENTITY closesidebar.label "Tutup &item yang dapat diblok"> -<!ENTITY showintoolbar.label "Tunjukkan di tool&bar"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Blokir audio/video"> -<!ENTITY subscription.update.label "Perbarui penyaring"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sendReport.dtd deleted file mode 100644 index 98a4903..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Batalkan"> -<!ENTITY issues.disabledgroups.description "Filter langganan / kelompok filter ini dinonaktifkan, namun mungkin tetap akan memliki efek pada halaman ini:"> -<!ENTITY showData.label "Tunjukkan data laporan"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus memblokir terlalu &banyak"> -<!ENTITY issues.change.description "Konfigurasi Anda telah diubah. Silahkan muat ulang halaman untuk menguji perubahan dan kirimkan laporan jika masalah belum terselesaikan oleh perubahan tersebut."> -<!ENTITY email.label "Email:"> -<!ENTITY issues.openPreferences.label "Buka preferensi filter"> -<!ENTITY sendPage.confirmation "Laporan Anda telah disimpan. Anda dapat mengaksesnya pada alamat berikut:"> -<!ENTITY copyLink.label "&Copy link laporan"> -<!ENTITY issues.nofilters.description "Adblock Plus tidak memblokir apapun pada halaman ini. Masalah yang Anda alami tidak ada kaitannya dengan Adblock Plus."> -<!ENTITY sendPage.knownIssue "Masalah yang Anda laporkan mungkin sudah dikenal. Informasi selanjutnya:"> -<!ENTITY typeSelector.other.description "Pilih opsi ini jika Anda mencurigai masalah dengan Adblock Plus sendiri daripada filter nya."> -<!ENTITY issues.disabledgroups.enable.label "Aktifkan filter langganan / kelompok filter"> -<!ENTITY typeWarning.override.label "Saya mengerti dan ingin mengirim laporan"> -<!ENTITY issues.disabled.enable.label "Aktifkan Adblock Plus"> -<!ENTITY update.fixed.description "Pembaharuan filter langganan Anda sepertinya menyelesaikan masalah yang Anda laporkan. Silahkan buka kembali halaman dan coba kembali, klik Laporkan lagi jika masih terdapat masalah."> -<!ENTITY anonymous.label "&Penyerahan anonim"> -<!ENTITY reloadButton.label "&Muat ulang halaman"> -<!ENTITY recentReports.clear.label "&Hapus semua laporan"> -<!ENTITY typeSelector.description "Jendela ini akan memandu Anda melalui langkah-langkah yang diperlukan untuk penyerahan laporan masalah Adblock plus. Pertama, silakan pilih jenis masalah yang Anda alami di halaman ini:"> -<!ENTITY screenshot.remove.label "&Hapus semua data sensitif"> -<!ENTITY issues.ownfilters.description "Beberapa dari filter yang diterapkan pada halaman ini ditetapkan oleh pengguna. Silahkan nonaktifkan filter yang mungkin menyebabkan masalah:"> -<!ENTITY update.inProgress.description "Adblock Plus perlu memperbaharui langganan filter Anda untuk memastikan bahwa masalah belum bisa diselesaikan. Harap tunggu..."> -<!ENTITY sendPage.retry.label "Kirim kembali"> -<!ENTITY data.label "Data laporan:"> -<!ENTITY recentReports.label "Anda baru saja mengirimkan laporan"> -<!ENTITY typeWarning.description "Anda menyatakan bahwa Anda ingin melaporkan masalah umum dengan Adblock Plus daripada masalah filter. Silahkan catat bahwa masalah seperti ini lebih baik dilaporkan pada [link]Forum Adblock Plus[/link]. Anda hanya perlu menggunakan pelaporan masalah untuk melengkapi diskusi yang ada, karena tidak ada seorangpun yang melihat laporan Anda kecuali Anda memberi mereka link untuk masalah tersebut. Link otomatis akan diberikan setelah mengirimkan laporan."> -<!ENTITY issues.disabled.description "Adblock Plus dinonaktifkan, ini tidak akan memblokir apapun dalam keadaan ini."> -<!ENTITY attachExtensions.label "Lampirkan daftar ekstensi aktif pada laporan jika konflik pengaya adalah penyebab dari masalah tersebut"> -<!ENTITY issues.nosubscriptions.add.label "Tambahkan filter langganan"> -<!ENTITY issues.disabledfilters.enable.label "Aktifkan filter"> -<!ENTITY issues.override.label "&Konfigurasi benar, lanjutkan dengan laporkan"> -<!ENTITY issues.nosubscriptions.description "Anda tidak berlangganan satupun dari filter bawaan yang secara otomatis menghapus konten yang tidak diinginkan pada situs web."> -<!ENTITY typeSelector.falsePositive.description "Pilih opsi ini jika halaman kurang memiliki konten penting, salah menampilkan atau tidak berfungsi dengan benar. Anda dapat menentukan apakah Adblock Plus adalah penyebab masalah dengan menonaktifkannya untuk sementara."> -<!ENTITY typeSelector.other.label "Masalah lainnya"> -<!ENTITY emailComment.label "Kami menganjurkan Anda untuk memasukkan alamat email yang valid sehingga kami dapat menghubungi Anda jika terdapat pertanyaan tentang laporan Anda. Ini juga akan memungkinkan kami untuk mengetahui kontribusi Anda dan meninggikan prioritas."> -<!ENTITY issues.whitelist.remove.label "Aktifkan kembali Adblock Plus pada halaman ini"> -<!ENTITY outdatedSubscriptions.description "Filter langganan ini belum diperbaharui setidaknya dua minggu. Silahkan perbaharui langganan ini sebelum mengirimkan laporan masalah yang mungkin sudah terselesaikan sebelumnya."> -<!ENTITY dataCollector.description "Silahkan tunggu beberapa saat sementara Adblock Plus mengumpulkan data yang dibutuhkan."> -<!ENTITY sendButton.label "Kirim laporan"> -<!ENTITY comment.label "&Komentar (pilihan):"> -<!ENTITY sendPage.errorMessage "Upaya mengirimkan laporan gagal dengan kode kesalahan "?1?". Silahkan pastikan Anda terhubung ke Internet dan coba kembali. Jika masalah berlanjut, silahkan meminta bantuan pada [link]Forum Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Tampilkan laporan yang baru disampaikan"> -<!ENTITY commentPage.heading "Masukkan Komentar"> -<!ENTITY update.start.label "Mulai pembaharuan sekarang"> -<!ENTITY issues.disabledfilters.description "Filter ini dinonaktifkan, namun mungkin masih mempunyai efek pada halaman ini:"> -<!ENTITY screenshot.description "Halaman yang sama dapat terlihat berbeda untuk berbagai orang. Ini dapat membantu kami untuk memahami masalah jika Anda melampirkan sebuah screenshot pada laporan Anda. Anda dapat menghapus bagian yang mengandung informasi sensitif serta tandai daerah dimana masalah tersebut terjadi. Untuk melakukannya klik sesuai tombol dan pilih bagian dari gambar dengan mouse Anda."> -<!ENTITY screenshot.attach.label "Lampirkan gambar halaman untuk melaporkan"> -<!ENTITY issues.whitelist.description "Adblock Plus sedang dinonaktifkan pada halaman yang Anda laporkan. Silahkan aktifkan dan muat ulang halaman sebelum mengirimkan laporan untuk membantu peyelidikan masalah ini."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus tidak memblokir sebuah &iklan"> -<!ENTITY typeSelector.heading "Pilih tipe laporan"> -<!ENTITY anonymity.warning "Kami tidak dapat menghubungi Anda kembali dan akan menurunkan prioritas laporan ini."> -<!ENTITY wizard.title "Pelaporan"> -<!ENTITY issues.ownfilters.disable.label "Nonaktifkan filter"> -<!ENTITY commentPage.description "Kotak teks di bawah ini memungkinkan Anda untuk memasukkan komentar untuk membantu kami memahami masalah. Langkah ini bersifat pilihan tetapi dianjurkan jika masalahnya tidak jelas. Anda juga dapat memeriksa data laporan sebelum dikirim."> -<!ENTITY comment.lengthWarning "Panjang komentar Anda melebihi 1000 karakter. Hanya 1000 karakter pertama yang akan dikirim."> -<!ENTITY typeSelector.falseNegative.description "Pilih opsi ini jika iklan ditampilkan meskipun Adblock Plus telah diaktifkan."> -<!ENTITY sendPage.waitMessage "Silahkan tunggu sementara Adblock Plus mengirimkan laporan Anda."> -<!ENTITY dataCollector.heading "Selama datang di pelaporan masalah"> -<!ENTITY screenshot.heading "Lampirkan screenshot"> -<!ENTITY sendPage.heading "Kirim laporan"> -<!ENTITY issues.subscriptionCount.description "Tampaknya Anda berlangganan filter langganan terlalu banyak. Pengaturan ini tidak dianjurkan karena akan membuat masalah semakin tinggi. Kami juga tidak dapat menerima laporan masalah karena tidak jelas filter langganan mana yang pembuat butuhkan untuk menindak lanjuti. Silahkan hapus semua selain yang benar-benar dibutuhkan dan uji apakah masalah masih terjadi."> -<!ENTITY screenshot.mark.label "&Tandai masalah"> -<!ENTITY privacyPolicy.label "Kebijakan privasi"> -<!ENTITY issues.description "Adblock Plus mendeteksi masalah pada pengaturan Anda yang mungkin adalah penyebab dari masalah atau akan membuat laporan penyelidikan menjadi sulit."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sidebar.dtd deleted file mode 100644 index a6f02e1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Border item yang ber-flash"> -<!ENTITY address.label "Alamat"> -<!ENTITY context.open.label "Buka di tab baru"> -<!ENTITY type.label "Ketik"> -<!ENTITY tooltip.filterSource.label "Sumber filter:"> -<!ENTITY noitems.label "Tidak ada item yang bisa diblok"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Ukuran:"> -<!ENTITY reattach.label "Sertakan kembali"> -<!ENTITY search.label "&Cari:"> -<!ENTITY docDomain.thirdParty "(pihak ketiga)"> -<!ENTITY filterSource.label "Sumber filter"> -<!ENTITY tooltip.docDomain.label "Sumber dokumen:"> -<!ENTITY context.copy.label "Salin alamat item"> -<!ENTITY tooltip.type.label "Tipe:"> -<!ENTITY context.disablefilter.label "Nonaktifkan filter ?1?"> -<!ENTITY context.copyFilter.label "Salin filter"> -<!ENTITY context.block.label "Blokir item ini"> -<!ENTITY context.enablefilter.label "Hidupkan ulang filter ?1?"> -<!ENTITY detach.label "Lepas"> -<!ENTITY whitelisted.label "Halaman yang dibebaskan"> -<!ENTITY context.disablefilteronsite.label "Nonaktifkan filter ini pada ?1?"> -<!ENTITY detached.title "Adblock Plus: Item yang bisa diblok (dilepaskan)"> -<!ENTITY docDomain.firstParty "(pihak pertama)"> -<!ENTITY tooltip.type.whitelisted "(dibebaskan)"> -<!ENTITY tooltip.filter.label "Efek filter:"> -<!ENTITY tooltip.filter.disabled "(dinonaktifkan)"> -<!ENTITY context.editfilter.label "Edit efek filter"> -<!ENTITY tooltip.type.blocked "(diblokir)"> -<!ENTITY size.label "Ukuran"> -<!ENTITY context.whitelist.label "Tambahkan Aturan pengecualian untuk item"> -<!ENTITY context.selectAll.label "Pilih semua"> -<!ENTITY state.label "Bagian"> -<!ENTITY docDomain.label "Sumber dokumen"> -<!ENTITY tooltip.address.label "Alamat:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/subscriptionSelection.dtd deleted file mode 100644 index 4092dd2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/id/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Tambahkan filter &langganan "?1?" juga"> -<!ENTITY list.download.failed "Adblock Plus gagal untuk mengambil daftar langganan."> -<!ENTITY list.download.retry "Coba lagi"> -<!ENTITY title.label "&Judul langganan:"> -<!ENTITY list.download.website "Lihat situs"> -<!ENTITY supplementMessage "Filter langganan ini dimaksudkan untuk digunakan dengan filter langganan "?1?" yang Anda tidak menggunakannya lagi."> -<!ENTITY viewList.label "Lihat filter"> -<!ENTITY visitHomepage.label "Kunjungi situs web"> -<!ENTITY addSubscription.label "Tambahkan langganan"> -<!ENTITY dialog.title "Tambahkan filter langganan Adblock Plus"> -<!ENTITY location.label "&Lokasi daftar filter:"> -<!ENTITY fromWeb.description "Silahkan konfirmasi bahwa Anda ingin menambahkan filter langganan. Anda dapat merubah judul langganan atau lokasi sebelum menambahkannya."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/composer.dtd deleted file mode 100644 index 1e7a125..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "Ă en&da netfangs"> -<!ENTITY domainRestriction.label "&Takmarka við lĂ©n:"> -<!ENTITY collapse.default.no.label "Nota sjálfgefið (nei)"> -<!ENTITY firstParty.label "Aðeins fy&rsta aðila"> -<!ENTITY preferences.label "SĂ˝na nĂş&verandi sĂur..."> -<!ENTITY pattern.label "Leita að mynstri"> -<!ENTITY thirdParty.label "&Aðeins Ăľriðja aðila"> -<!ENTITY filter.label "NĂ˝ &sĂa:"> -<!ENTITY collapse.label "Fella sa&man lokaða hluti:"> -<!ENTITY match.warning "Mynstrið sem þú slĂłst inn passar ekki ekki við veffangið sem á að loka á/hvĂtlista og mun ekki hafa nein áhrif á Ăľað."> -<!ENTITY anchor.start.label "Ă &byrjun netfangs"> -<!ENTITY matchCase.label "&Passa við stafstöðu"> -<!ENTITY custom.pattern.label "SĂ©rs&nið:"> -<!ENTITY unselectAllTypes.label "Velja ekkert"> -<!ENTITY type.whitelist.label "&Frávikregla"> -<!ENTITY regexp.warning "Mynstrið sem þú slĂłst inn verður tĂşlkað sem regluleg segð. Margar reglulegar segðir gætu haft Ăľau áhrif að hægja á vöfrun. Ef þú ætlar ekki að nota reglulega segðir, bættu þá * tákni við enda mynstursins."> -<!ENTITY dialog.title "Bæta við Adblock Plus sĂureglu"> -<!ENTITY basic.label "Einföld sĂ˝n"> -<!ENTITY type.filter.label "&LokunarsĂa"> -<!ENTITY types.label "Virkja fyrir tegundir:"> -<!ENTITY shortpattern.warning "Mynstrið sem þú slĂłst inn er of stutt til að hægt sĂ© að nota Ăľað, of mörg svona mynstur geta hægt á vöfrun. Mælt er með að þú notir lengri streng fyrir Ăľessa sĂu."> -<!ENTITY collapse.yes.label "Já"> -<!ENTITY anchors.label "Aðeins samĂľykkja mynstur:"> -<!ENTITY collapse.default.yes.label "Nota sjálfgefið (já)"> -<!ENTITY domainRestriction.help "Sláðu inn eitt eða fleiri lĂ©n aðskilið með tákninu (|). SĂan verður aðeins beitt á Ăľessi lĂ©n. Táknið (~) fyrir framan lĂ©n þýðir að ekki ætti að beita sĂunni á Ăľað lĂ©n."> -<!ENTITY accept.label "Bæta við sĂu"> -<!ENTITY options.label "Valkostir"> -<!ENTITY disabled.warning "Adblock Plus er Ăłvirkt eins og er. Þú getur samt bætt við sĂum en sĂurnar munu ekki vera virkar nema þú [link]virkjir Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "Ă &byrjun lĂ©nsins"> -<!ENTITY collapse.no.label "Nei"> -<!ENTITY selectAllTypes.label "Velja allt"> -<!ENTITY advanced.label "ĂŤtarleg sĂ˝n"> -<!ENTITY pattern.explanation "Mynstrið getur verið hvaða hluti sem er Ă netfanginu; táknið (*) virkar sem algildisstafur. SĂunni verður aðeins beitt á Ăľau netföng sem passa við mynstrið."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/filters.dtd deleted file mode 100644 index d22adad..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Allar sĂ©rsniðnar sĂur verða yfirskrifaðar af skrá. Viltu halda áfram?"> -<!ENTITY slow.column "H&ægar sĂur"> -<!ENTITY enabled.column "&Virkt"> -<!ENTITY subscription.lastDownload.checksumMismatch "MistĂłkst, prĂłfsumma stemmir ekki"> -<!ENTITY noFiltersInGroup.text "Valinn hĂłpur er tĂłmur."> -<!ENTITY subscription.actions.label "Aðgerðir"> -<!ENTITY filter.selectAll.label "Velja allt"> -<!ENTITY backupButton.label "&Afrita og endurheimta"> -<!ENTITY restore.minVersion.warning "Aðvörun: skráin var bĂşin til að nĂ˝rri Ăştgáfu af Adblock Plus. Þú ættir að uppfæra Ă nĂ˝justu Ăştgáfu af Adblock Plus áður en þú endurheimtir Ăľessa skrá."> -<!ENTITY restore.error "Ekki tĂłkst að lesa skráargögn, kannski er skráin ekki Adblock Plus afritunarskrá?"> -<!ENTITY sort.ascending.label "&A > Ă– röðun"> -<!ENTITY sort.label "Raða e&ftir"> -<!ENTITY subscription.source.label "SĂa lista"> -<!ENTITY hitcount.column "&Notkun"> -<!ENTITY noFilters.text "Þú ert ekki ennþá með neina sĂ©rsniðna sĂu."> -<!ENTITY backup.custom.title "Aðeins sĂ©rsniðnar sĂur"> -<!ENTITY subscription.external.label "Uppfært af annarri viðbĂłt"> -<!ENTITY subscription.delete.label "Eyða"> -<!ENTITY noGroupSelected.text "Þú verður að velja sĂuhĂłp áður en hægt er að birta sĂur."> -<!ENTITY filter.cut.label "Klippa"> -<!ENTITY restore.default.label "Endurheimta afrit frá ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Hleður…"> -<!ENTITY subscriptions.tab.label "SĂu áskriftir"> -<!ENTITY sort.descending.label "&Ă– > A röðun"> -<!ENTITY filters.remove.warning "Viltu örugglega fjarlægja alla valdar sĂur?"> -<!ENTITY filter.delete.label "Eyða"> -<!ENTITY addSubscriptionAdd.label "Bæta við"> -<!ENTITY viewMenu.label "Skoða"> -<!ENTITY subscription.lastDownload.unknown "Óþekkt"> -<!ENTITY addSubscriptionCancel.label "Hætta við"> -<!ENTITY subscription.enabled.label "Virkt"> -<!ENTITY noSubscriptions.text "Þú hefur ekki ennþá bætt við áskrift að sĂu. Adblock Plus virkar ekki - án Ăľess að vera með sĂur, notaðu "Bæta við sĂuáskrift" til - að bæta við sĂuáskrift."> -<!ENTITY subscription.update.label "Uppfæra sĂur"> -<!ENTITY dialog.title "Adblock Plus sĂu stillingar"> -<!ENTITY addFilter.label "Bæta við sĂ&u"> -<!ENTITY subscription.minVersion.warning "Ăžessi sĂuáskrift Ăľarfnast nĂ˝rri Ăştáfu af Adblock Plus, þú ættir að uppfæra Ă nĂ˝justu Ăştgáfu."> -<!ENTITY subscription.lastDownload.invalidURL "MistĂłkst, ekki gilt netfang"> -<!ENTITY backup.error "Upp kom villa við að skrifa sĂur Ă skránna. Gakktu Ăşr skugga um að skráin sĂ© ekki ritvarin eða Ă notkun af öðru forriti."> -<!ENTITY filter.moveUp.label "Færa upp"> -<!ENTITY addGroup.label "Bæta við sĂu&hĂłp"> -<!ENTITY filter.edit.label "Breyta"> -<!ENTITY subscription.showHideFilters.label "SĂ˝na/fela sĂur"> -<!ENTITY acceptableAds2.label "Leyfa auglĂ˝s&ingar sem eru ekki uppáþrengjandi"> -<!ENTITY addSubscriptionOther.label "Bæta við öðruvĂsi áskrift"> -<!ENTITY close.label "Loka"> -<!ENTITY sort.none.label "Ă“&raðað"> -<!ENTITY filter.actions.label "SĂu aðgerðir"> -<!ENTITY filter.copy.label "Afrita"> -<!ENTITY filter.moveDown.label "Færa niður"> -<!ENTITY filter.resetHitCounts.label "Endurstilla sĂu teljara"> -<!ENTITY readMore.label "Lesa meira"> -<!ENTITY subscription.moveUp.label "Færa upp"> -<!ENTITY addSubscription.label "&Bæta við sĂuáskrift"> -<!ENTITY subscription.homepage.label "HeimasĂða"> -<!ENTITY backup.complete.title "Allar sĂur og áskriftir"> -<!ENTITY restore.own.label "Endurheimta eigið afrit"> -<!ENTITY restore.complete.warning "Allar sĂustillingar verða yfirskrifaðar af skrá. Viltu halda áfram?"> -<!ENTITY filters.tab.label "SĂ©rsniðnar sĂur"> -<!ENTITY backup.label "BĂşa til nĂ˝tt afrit"> -<!ENTITY find.label "&Leita"> -<!ENTITY subscription.moveDown.label "Færa niður"> -<!ENTITY subscription.lastDownload.connectionError "MistĂłkst, gat ekki niðurhalað"> -<!ENTITY subscription.lastDownload.success "TĂłkst"> -<!ENTITY subscription.lastDownload.invalidData "MistĂłkst, ekki gildur sĂulisti"> -<!ENTITY filter.paste.label "LĂma"> -<!ENTITY subscription.disabledFilters.enable "Virkja Ăłvirkar sĂur"> -<!ENTITY lasthit.column "Seinast &heimsĂłtt"> -<!ENTITY subscription.editTitle.label "Breyta titli"> -<!ENTITY subscription.disabledFilters.warning "Sumar sĂur Ă Ăľessari áskrift eru Ăłvirkar."> -<!ENTITY filter.column "SĂu re&gla"> -<!ENTITY subscription.lastDownload.label "Seinasta niðurhal:"> -<!ENTITY viewList.label "Skoða lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/firstRun.properties deleted file mode 100644 index a337e72..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Vafraðu örugglega með ĂľvĂ að loka á að fylgst sĂ© með þér - feldu Ăľig frá auglĂ˝singa fyrirtækjum sem geta fylgst með þér Ă hverju skrefi. -firstRun_toggle_off=Ă“VIRKT -firstRun_feature_tracking=Slökkva á rakningu -firstRun_feature_malware=Loka á spilliforrit -firstRun_title=Adblock Plus var sett inn -firstRun_toggle_on=VIRKT -firstRun_acceptableAdsExplanation=Við viljum hvetja vefsvæði til að nota einfaldar auglĂ˝singar, sem eru ekki uppáþrengjandi. Ăžess vegna höfum við sett fram <a>ákveðnar reglur</a> til að skilgreina ásættanlegar auglĂ˝singar, sem eru birtar með venjulegum stillingum. Ef þú vilt loka á allar auglĂ˝singar geturðu gert Ăľetta <a>Ăłvirkt</a> á einfaldan hátt. -firstRun_contributor_credits=Stuðningsaðilar -firstRun_dataCorruptionWarning=Er Ăľessi sĂða alltaf að birtast? <a>Smelltu hĂ©r!</a> -firstRun_acceptableAdsHeadline=Lokað verður á uppáþrengjandi auglĂ˝singar -firstRun_share=Láttu vini ĂľĂna vita -firstRun_share_headline=<a>Hjálpaðu okkur</a> Ă ĂľvĂ að gera vefinn betri -firstRun_feature_social_description=Taktu sjálfkrafa Ăşt samfĂ©lags hnappa, eins og Facebook hnappa, sem birtast á vefsĂðum og fylgjast með þér. -firstRun_filterlistsReinitializedWarning=Svo virðist sem að upp hafi komið vandamál sem gerði Ăľað að verkum að öllum sĂum var eytt og ekki var hægt að endurheimta. Ăžar af leiðandi Ăľurfti að endurstilla allar sĂur og stillingar fyrir ásættanlegar auglĂ˝singar. Athugaðu sĂu listana og stillingar fyrir ásættanlegar auglĂ˝singar Ă <a>Adblock Plus stillingum</a>. -firstRun_feature_malware_description=Gerðu netvafur öruggara með ĂľvĂ að loka á Ăľekkt hættuleg vefsvæði. -firstRun_features=Adblock Plus getur gert meira heldur en að loka á auglĂ˝singar -firstRun_donate=gefa -firstRun_donate_label=Styðja verkefnið -firstRun_feature_social=Fjarlægja hnappa fyrir netsamfĂ©lög -firstRun_legacySafariWarning=Þú ert að nota gamla Ăştgáfu af Safari sem er ekki með stuðning frá Adblock Plus. Hugsanlega virkar hĂşn ekki eða virkar illa á sumum vefsvæðum. Við mælum með að þú annað hvort uppfærir Ă Safari 6.1.1 eða hærri Ăştgáfu (á Mac OS X 10.8 Mountain Lion), eða Safari 7.0.1 eða hærri (á OS X 10.9 Mavericks), eða notir nĂ˝justu Ăştgáfu af Mozilla Firefox, Google Chrome eða Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/global.properties deleted file mode 100644 index 775228d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Engir lokaðir hlutir á nĂşverandi sĂðu -action3_tooltip=Smelltu til að virkja/gera Ăłvirkt Adblock Plus. -notification_antiadblock_title=Fela áhugamiðuð skilaboð? -type_label_script=skrifta -filter_elemhide_nocriteria=Engin viðmiðun skilgreind til Ăľess að bera kennsl á hlut til að fela -blockingGroup_title=Lokunarreglur -whitelisted_tooltip=Adblock Plus er Ă gangi en er Ăłvirkur á nĂşverandi sĂðu. -type_label_stylesheet=stĂlblað -blocked_count_tooltip=?1? af ?2? -type_label_font=leturgerð -type_label_popup=sprettigluggi -filter_regexp_tooltip=SĂan er annaðhvort regluleg segð eða of stutt til að hægt sĂ© að nota. Of margar af svona sĂum gætu hægt á vöfrun. -action0_tooltip=Smelltu til að birta valmynd, miðju smelltu á mĂşsinni til að virkja/gera Ăłvirkt. -whitelisted_page=BĂşið er að gera Adblock Plus Ăłvirkt fyrir nĂşverandi sĂðu -remove_group_warning=Viltu fjarlægja Ăľennan hĂłp? -action1_tooltip=Smelltu til að opna/loka hlutum, miðju smella til að virkja/gera Ăłvirkt. -type_label_xmlhttprequest=XML beiðni -active_tooltip=Adblock Plus er virkur, ?1? sĂu áskriftir og ?2? sĂ©rsniðnar sĂur Ă notkun. -type_label_document=skjal -type_label_object_subrequest=undiraðgerð hlutar -whitelistGroup_title=Undantekningarreglur -disabled_tooltip=Adblock Plus er Ăłvirkur. -filter_elemhide_duplicate_id=Aðeins er hægt að skilgreina eitt auðkenni fyrir hlut sem á að fela -type_label_object=hlutur -action2_tooltip=Smelltu til að opna stillingar, miðju smelltu til að virkja/gera Ăłvirkt. -type_label_subdocument=rammi -clearStats_warning=Ăžetta mun endurstilla alla teljara á sĂunotkun og hætta að telja sĂunotkun. Viltu halda áfram? -notification_antiadblock_message=Ăžetta vefsvæði er Ăľekkt fyrir að sĂ˝na áhugamiðuð skilaboð til Adblock Plus notenda. Viltu að Adblock Plus feli Ăľessi áhugamiðuð skilaboð? -blocked_count_addendum=(einnig á hvĂtlista: ?1?, falið: ?2?) -subscription_invalid_location=Staðsetning sĂu er ekki gilt URL eða gilt skráarnafn. -type_label_image=mynd -remove_subscription_warning=Viltu fjarlægja Ăľessa áskrift? -type_label_other=annað -mobile_menu_enable=ABP: Virkja -type_label_media=hljóð/mynd -mobile_menu_disable_site=ABP: Ă“virkt fyrir ?1? -elemhideGroup_title=Felureglur -mobile_menu_enable_site=ABP: Virkja fyrir ?1? -type_label_elemhide=falið -newGroup_title=NĂ˝ sĂu regla -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/overlay.dtd deleted file mode 100644 index 6f94a02..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Já"> -<!ENTITY notification.button.no "&Nei"> -<!ENTITY sync.label "Sa&mstilla Adblock Plus stillingar"> -<!ENTITY whitelist.site.label "Gera Ăłvirkt á ?1?"> -<!ENTITY filters.label "&SĂu stillingar"> -<!ENTITY disable.label "Slökkva á allstaðar"> -<!ENTITY objecttab.title "Loka á"> -<!ENTITY objecttab.tooltip "Smelltu hĂ©r til að loka á Ăľennan hlut með Adblock Plus"> -<!ENTITY menuitem.label "Ad&block Plus stillingar"> -<!ENTITY objecttabs.label "SĂ˝na &flipa fyrir Flass og Java"> -<!ENTITY sendReport.label "Tilkynna vandamál á Ăľessa&ri sĂðu"> -<!ENTITY whitelist.page.label "Gera Ăłvirkt aðeins á Ăľessari sĂðu"> -<!ENTITY context.image.label "Adblock Plus: Loka auglĂ˝singamynd"> -<!ENTITY counthits.label "Telja sĂu &notkun"> -<!ENTITY opensidebar.label "Skoða h&luti"> -<!ENTITY notification.button.close "&Loka"> -<!ENTITY contribute.label "Taka þátt Ă Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Loka auglĂ˝singaramma"> -<!ENTITY blocked.tooltip "Lokaðir hlutir á Ăľessari sĂðu:"> -<!ENTITY hideplaceholders.label "Fela staðgeng&itákn á lokuðum einindum"> -<!ENTITY showinstatusbar.label "&SĂ˝na Ă stöðuslá"> -<!ENTITY sidebar.title "Hlutir á nĂşverandi sĂðu sem hægt er að loka á"> -<!ENTITY options.label "&Valkostir"> -<!ENTITY context.object.label "Adblock Plus: Loka auglĂ˝singahlut"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Endurvirkja á Ăľessari sĂðu"> -<!ENTITY filters.tooltip "Mest notaðar sĂur:"> -<!ENTITY closesidebar.label "&Loka hlutum"> -<!ENTITY showintoolbar.label "SĂ˝na Ă &tækjaslá"> -<!ENTITY status.tooltip "Staða:"> -<!ENTITY context.media.label "Adblock Plus: Loka á myndefni/hljóð"> -<!ENTITY subscription.update.label "Uppfæra sĂur"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sendReport.dtd deleted file mode 100644 index 6c28bec..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sendReport.dtd +++ /dev/null @@ -1,97 +0,0 @@ -<!ENTITY screenshot.undo.label "Aft&urkalla"> -<!ENTITY issues.disabledgroups.description "Eftirfarandi sĂuáskriftir / sĂuhĂłpar eru Ăłvirkar, samt sem áður gætu þær haft haft - áhrif á Ăľessari sĂðu:"> -<!ENTITY showData.label "SĂ˝na skĂ˝rslugögn"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus lokar á of &mikið"> -<!ENTITY issues.change.description "BĂşið er að breyta stillingum. Vinsamlega endurnĂ˝jaðu sĂðuna til að prĂłfa breytingarnar - og sendu skĂ˝rslu ef vandamálið leystist ekki vegna breytinganna."> -<!ENTITY email.label "&TölvupĂłstfang:"> -<!ENTITY issues.openPreferences.label "Opna sĂuvalkosti"> -<!ENTITY sendPage.confirmation "BĂşið er að vista skĂ˝rsluna. Þú getur séð hana á eftirfarandi veffangi:"> -<!ENTITY copyLink.label "&Afrita skĂ˝rslutengil"> -<!ENTITY issues.nofilters.description "Adblock Plus er ekki að loka á neitt á nĂşverandi sĂðu. Vandamálið sem þú ert að - sjá er lĂklega Ăłtengt Adblock Plus."> -<!ENTITY sendPage.knownIssue "Vandamálið sem þú tilkynntir er öllum lĂkindum Ăľegar Ăľekkt. Meiri upplĂ˝singar:"> -<!ENTITY typeSelector.other.description "Veldu Ăľennan möguleika ef þú heldur að vandamálið sĂ© hjá Adblock Plus sjálfu frekar - en Ă sĂu."> -<!ENTITY issues.disabledgroups.enable.label "Virkja sĂuáskrift / sĂuhĂłpur"> -<!ENTITY typeWarning.override.label "Ég &skil og vill samt senda skĂ˝rslu"> -<!ENTITY issues.disabled.enable.label "Virkja Adblock Plus"> -<!ENTITY update.fixed.description "Uppfærslur á sĂuáskriftum lagfærðu að öllum lĂkindum vandamálið. EndurnĂ˝jaðu sĂðun og reyndu aftur, smelltu á tilkynna aftur ef vandamálið er enn til staðar."> -<!ENTITY anonymous.label "N&afnlaus sending"> -<!ENTITY reloadButton.label "Endu&rnĂ˝ja sĂðu"> -<!ENTITY recentReports.clear.label "Fja&rlægja allar skĂ˝rslur"> -<!ENTITY typeSelector.description "Ăžessi gluggi hjálpar þér Ă gegnum Ăľau skref sem Ăľarf til að tilkynna Adblock - Plus vandamála. Veldu fyrst, hverskonar tegund af vandamáli þú ert að lenda Ă - á Ăľessari sĂðu:"> -<!ENTITY screenshot.remove.label "Fja&rlægja viðkvæm gögn"> -<!ENTITY issues.ownfilters.description "Sumar af sĂunum sem eru virkar á Ăľessari sĂðu eru stilltar af notanda. Vinsamlega gerðu þær sĂur Ăłvirkar - sem hugsanlega gætu hafa valdið vandræðunum:"> -<!ENTITY update.inProgress.description "Adblock Plus Ăľarf að uppfæra sĂuáskriftir til að ganga Ăşr skugga um að vandamálið hafi ekki Ăľegar verið lagað. BĂddu aðeins…"> -<!ENTITY sendPage.retry.label "Senda aftur"> -<!ENTITY data.label "&SkĂ˝rslugögn:"> -<!ENTITY recentReports.label "NĂ˝legar sendar skĂ˝rslur"> -<!ENTITY typeWarning.description "Þú hefur gefið til kynna að þú viljir tilkynna almennt vandamál á Adblock Plus frekar - en vandamál með sĂurnar. Vinsamlega athugaðu að svoleiðis vandamál er best að tilkynna - á [link]Adblock Plus umræðusvæðinu[/link]. Þú ættir aðeins að tilkynna vandamál sem - viðauka við umræðu sem er til fyrir, Ăľar sem enginn tekur eftir tilkynningunni - nema þú setjir tengil með. Sjálfvirki tengillinn - verður aðgengilegur eftir að skĂ˝rslan hefur verið send."> -<!ENTITY issues.disabled.description "Adblock Plus er Ăłvirkt, Ăľað mun ekki loka á neitt Ă nĂşverandi ástandi."> -<!ENTITY attachExtensions.label "Láta fylgja með lista af &virkum viðbĂłtum Ă skĂ˝rslunni ef svo vildi til að vandamálið væri vegna Ăľeirra"> -<!ENTITY issues.nosubscriptions.add.label "Bæta við sĂuáskrift"> -<!ENTITY issues.disabledfilters.enable.label "Virkja sĂu"> -<!ENTITY issues.override.label "&Stillingarnar eru rĂ©ttar, halda áfram með skĂ˝rsluna"> -<!ENTITY issues.nosubscriptions.description "Þú ert ekki áskrifandi að neinum af forskilgreindum sĂulistum sem fjarlægja - sjálfvirkt óæskilegt efni frá vefsvæðum."> -<!ENTITY typeSelector.falsePositive.description "Veldu Ăľennan möguleika ef á sĂðuna vantar mikilvæg gögn, birtist rangt eða - virkar ekki eðlilega. Þú getur gengið Ăşr skugga um hvort Adblock Plus sĂ© vandamálið - með ĂľvĂ að gera Ăľað Ăłvirkt tĂmabundið."> -<!ENTITY typeSelector.other.label "A&nnað vandamál"> -<!ENTITY emailComment.label "Við mælum með að þú sláir inn gilt tölvupĂłstfang svo hægt að hafa samband við Ăľig ef Ăľað eru spurningar um skĂ˝rsluna ĂľĂna. Einnig gerir Ăľað okkur kleyft að bera kennsl á Ăľað sem þú sendir inn og hægt er að forgangsraða ĂľvĂ hærra."> -<!ENTITY issues.whitelist.remove.label "Virkja Adblock Plus á Ăľessari sĂðu"> -<!ENTITY outdatedSubscriptions.description "Eftirfarandi sĂuáskriftir hafa ekki verið uppfærðar Ă að minnsta kosti tvær vikur. Uppfærðu sĂuáskriftirnar áður en þú tilkynnir vandamál, hugsanlega er Ăľegar bĂşið að leysa vandamálið."> -<!ENTITY dataCollector.description "BĂddu aðeins á meðan Adblock Plus tekur saman nauðsynleg gögn."> -<!ENTITY sendButton.label "Se&nda skĂ˝rslu"> -<!ENTITY comment.label "&Athugasemd (valfrjálst):"> -<!ENTITY sendPage.errorMessage "Tilraun til að senda skĂ˝rsluna mistĂłkst með villukóða "?1?". Gakktu Ăşr skugga um þú sĂ©rt - tengdur við netið og reyndu aftur. Ef vandamálið er viðvarandi fáðu þá - hjálp Ă [link]Adblock Plus umræðusvæðinu[/link]."> -<!ENTITY showRecentReports.label "SĂ˝na nĂ˝legar sendar skĂ˝rslur"> -<!ENTITY commentPage.heading "Sláðu inn athugasemd"> -<!ENTITY update.start.label "Byrja uppfærslu"> -<!ENTITY issues.disabledfilters.description "Eftirfarandi sĂur eru Ăłvirkar, en gætu samt sem áður haft áhrif á Ăľessari sĂðu:"> -<!ENTITY screenshot.description "Sama sĂðan getur birst á mismunandi hátt fyrir mismunandi fĂłlk. Ăžað gæti hjálpað okkur - að skilja vandamálið ef þú setur skjáskot með skĂ˝rslunni. Þú getur fjarlægt - svæði sem innihalda persĂłnulegar upplĂ˝singar og merkt einnig Ăľau svæði Ăľar sem - vandamálið sĂ©st. Til að merkja svæði smelltu á viðkomandi hnapp og veldu - svæði á myndinni með mĂşsinni."> -<!ENTITY screenshot.attach.label "&Hengja mynd af sĂðu við skĂ˝rsluna"> -<!ENTITY issues.whitelist.description "Adblock Plus er Ăłvirkt á sĂðunni sem þú ert að senda skĂ˝rslu um. Vinsamlega virkjaðu - Ăľað og endurnĂ˝jaðu sĂðuna áður en þú sendir skĂ˝rsluna til að hjálpa til með að rannsaka - Ăľetta vandamál."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus lokar &ekki á auglĂ˝singu"> -<!ENTITY typeSelector.heading "Veldu tegund skĂ˝rslu"> -<!ENTITY anonymity.warning "Við munum ekki geta haft samband við Ăľig og munum að öllum lĂkindum Ăľess vegna setja ĂľĂna skĂ˝rslu Ă lægri forgang."> -<!ENTITY wizard.title "Höfundur tilkynningar"> -<!ENTITY issues.ownfilters.disable.label "Slökkva á sĂu"> -<!ENTITY commentPage.description "Þú getur slegið inn athugasemd Ă textasvæðið hĂ©r fyrir neðan til að hjálpa okkur að skilja vandamálið. - Ăžetta skref er valkvæmt en mælt er með ĂľvĂ ef vandamálið er ekki augljĂłst. - Þú getur einnig forskoðað skĂ˝rsluna áður en þú hĂşn er send."> -<!ENTITY comment.lengthWarning "Lengdin á athugasemd er yfir 1000 stafir. Aðeins verða sendir fyrstu 1000 stafirnir."> -<!ENTITY typeSelector.falseNegative.description "Veldu Ăľennan möguleika ef auglĂ˝sing birtist jafnvel - þótt Adblock Plus sĂ© virkt."> -<!ENTITY sendPage.waitMessage "BĂddu aðeins meðan Adblock Plus sendir skĂ˝rsluna."> -<!ENTITY dataCollector.heading "Velkominn Ă tilkynna vandamál"> -<!ENTITY screenshot.heading "Hengja skjámynd við"> -<!ENTITY sendPage.heading "Senda skĂ˝rslu"> -<!ENTITY issues.subscriptionCount.description "Svo virðist sem þú sĂ©rt áskrifandi að of mörgum sĂuáskriftum. Ekki - er mælt með Ăľessu Ăľar sem lĂklegt er að - vandamál verði of mörg. Ekki er heldur hægt að taka á mĂłti tilkynningu um villu - vegna Ăľess að ekki er augljĂłst hvaða sĂu Ăľarf að laga. Vinsamlega - fjarlægðu allar sĂur nema þær allra nauðsynlegustu og prĂłfaðu aftur hvort - vandamálið sĂ© enn til staðar."> -<!ENTITY screenshot.mark.label "&Merkja vandamálið"> -<!ENTITY privacyPolicy.label "PersĂłnuverndarstefna"> -<!ENTITY issues.description "Adblock Plus uppgötvaði vandamál með stillingar sem gætu verið ástæða - fyrir Ăľessu vandamáli eða gæti haft áhrif á rannsĂłkn vandamálsins."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sidebar.dtd deleted file mode 100644 index 68608a7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Rammi Flash hlutar"> -<!ENTITY address.label "Netfang"> -<!ENTITY context.open.label "Opna Ă nĂ˝jum flipa"> -<!ENTITY type.label "Tegund"> -<!ENTITY tooltip.filterSource.label "SĂa frumkóða:"> -<!ENTITY noitems.label "Engir hlutir til að loka á"> -<!ENTITY filter.label "SĂa"> -<!ENTITY tooltip.size.label "Stærð:"> -<!ENTITY reattach.label "Festa aftur"> -<!ENTITY search.label "&Leita:"> -<!ENTITY docDomain.thirdParty "(Ăľriðja aðila)"> -<!ENTITY filterSource.label "SĂu uppruni"> -<!ENTITY tooltip.docDomain.label "Netfang sĂðu:"> -<!ENTITY context.copy.label "Afrita vefslóð hlutar"> -<!ENTITY tooltip.type.label "Tegund:"> -<!ENTITY context.disablefilter.label "Aftengja sĂu ?1?"> -<!ENTITY context.copyFilter.label "Afrita sĂu"> -<!ENTITY context.block.label "Loka á Ăľennan hlut"> -<!ENTITY context.enablefilter.label "Virkja aftur sĂu ?1?"> -<!ENTITY detach.label "Aftengja"> -<!ENTITY whitelisted.label "SĂða fyrir hvĂtlista"> -<!ENTITY context.disablefilteronsite.label "Aftengja sĂu fyrir ?1?"> -<!ENTITY detached.title "Adblock Plus: Lokaðir hlutir (aðskildir)"> -<!ENTITY docDomain.firstParty "(frumaðili)"> -<!ENTITY tooltip.type.whitelisted "(hvĂtlisti)"> -<!ENTITY tooltip.filter.label "SĂa Ă notkun:"> -<!ENTITY tooltip.filter.disabled "(Ăłvirkt)"> -<!ENTITY context.editfilter.label "Breyta nĂşverandi sĂu"> -<!ENTITY tooltip.type.blocked "(stöðvað)"> -<!ENTITY size.label "Stærð"> -<!ENTITY context.whitelist.label "Bæta við undantekningu fyrir hlut"> -<!ENTITY context.selectAll.label "Velja allt"> -<!ENTITY state.label "RĂki"> -<!ENTITY docDomain.label "Netfang sĂðu"> -<!ENTITY tooltip.address.label "Netfang:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/subscriptionSelection.dtd deleted file mode 100644 index 8d2a550..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/is/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Bæta einnig við &sĂu áskrift "?1?""> -<!ENTITY list.download.failed "Adblock Plus gat ekki náð Ă lista af áskriftum."> -<!ENTITY list.download.retry "Reyndu aftur"> -<!ENTITY title.label "Ăskrif&tartitill:"> -<!ENTITY list.download.website "Skoða vefsvæði"> -<!ENTITY supplementMessage "Ăžessi sĂu áskrift er ætluð til Ăľess að vera notuð með sĂu áskrift "?1?" sem þú hefur ekki ennþá bætt við."> -<!ENTITY viewList.label "Skoða sĂur"> -<!ENTITY visitHomepage.label "Heimsækja heimasĂðu"> -<!ENTITY addSubscription.label "Bæta við áskrift"> -<!ENTITY dialog.title "Bæta við Adblock Plus sĂu áskrift"> -<!ENTITY location.label "Staðsetning sĂu&lista:"> -<!ENTITY fromWeb.description "Staðfestu að þú viljir bæta við Ăľessari sĂu áskrift. Þú getur breytt titlinum eða staðsetningu áður en þú bætir við."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/composer.dtd deleted file mode 100644 index ad05b55..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "alla f&ine dell'indirizzo web"> -<!ENTITY domainRestriction.label "Limita al &dominio:"> -<!ENTITY collapse.default.no.label "Utilizza predefiniti (no)"> -<!ENTITY firstParty.label "Solo dominii di p&rimo livello"> -<!ENTITY preferences.label "&Mostra i filtri esistenti…"> -<!ENTITY pattern.label "Modelli"> -<!ENTITY thirdParty.label "&Solo domini di terza parte"> -<!ENTITY filter.label "&Nuovo filtro:"> -<!ENTITY collapse.label "&Contrai bloccati:"> -<!ENTITY match.warning "Il modello inserito non corrisponde piĂą all'indirizzo web da bloccare/permettere e non avrĂ quindi alcun effetto"> -<!ENTITY anchor.start.label "all'i&nizio dell'indirizzo web"> -<!ENTITY matchCase.label "Mai&uscole/minuscole"> -<!ENTITY custom.pattern.label "&Personalizza:"> -<!ENTITY unselectAllTypes.label "Deseleziona"> -<!ENTITY type.whitelist.label "Eccezione"> -<!ENTITY regexp.warning "Il modello inserito verrĂ interpretato come espressione regolare. Un numero eccessivo di tali modelli potrebbe rallentare la navigazione. Se non si intende utilizzare le espressioni regolari aggiungere il carattere * alla fine del modello"> -<!ENTITY dialog.title "Nuovo filtro di Adblock Plus"> -<!ENTITY basic.label "<< Generali"> -<!ENTITY type.filter.label "Filtro &per bloccare"> -<!ENTITY types.label "Applica ai tipi:"> -<!ENTITY shortpattern.warning "Il modello inserito è troppo breve per essere ottimizzato. Un numero eccessivo di tali modelli potrebbe rallentare la navigazione. Sarebbe preferibile utilizzare una stringa piĂą lunga"> -<!ENTITY collapse.yes.label "Sì"> -<!ENTITY anchors.label "Accetta modelli solo:"> -<!ENTITY collapse.default.yes.label "Utilizza predefiniti (sì)"> -<!ENTITY domainRestriction.help "Ă possibile specificare uno o piĂą dominii separandoli con il carattere "|": il filtro verrĂ applicato solamente a tali dominii (si noti che il carattere "~" prima del nome di un dominio significa che il filtro non verrĂ applicato per tale dominio)"> -<!ENTITY accept.label "Aggiungi filtro"> -<!ENTITY options.label "Opzioni"> -<!ENTITY disabled.warning "Adblock Plus è attualmente disattivata. Ă comunque possibile aggiungere filtri, ma questi verranno applicati solo dopo la [link]riattivazione di Adblock Plus[/link]"> -<!ENTITY anchor.start.flexible.label "all'i&nizio del nome del dominio"> -<!ENTITY collapse.no.label "No"> -<!ENTITY selectAllTypes.label "Seleziona tutti"> -<!ENTITY advanced.label "Avanzate >>"> -<!ENTITY pattern.explanation "Il modello può corrispondere a qualsiasi parte dell'indirizzo web, il carattere * corrisponde ad un carattere jolly. Il filtro verrĂ applicato ai soli indirizzi web corrispondenti al modello"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/filters.dtd deleted file mode 100644 index 77200a0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Tutti i filtri personalizzati verranno sostituiti dal contenuto del file selezionato. Procedere comunque?"> -<!ENTITY slow.column "Fi&ltri lenti"> -<!ENTITY enabled.column "A&ttivato"> -<!ENTITY subscription.lastDownload.checksumMismatch "Sincronizzazione non riuscita, checksum non corrispondente"> -<!ENTITY noFiltersInGroup.text "Il gruppo di filtri selezionato è vuoto"> -<!ENTITY subscription.actions.label "Azioni"> -<!ENTITY filter.selectAll.label "Seleziona tutto"> -<!ENTITY backupButton.label "&Backup e ripristino"> -<!ENTITY restore.minVersion.warning "Attenzione: il file di backup è stato creato con una versione piĂą recente di Adblock Plus. Installare l'ultima versione di Adblock Plus per poter effettuare il ripristino da tale file"> -<!ENTITY restore.error "Impossibile effettuare il ripristino del backup poichĂ© il file selezionato probabilmente non è un file di backup di Adblock Plus"> -<!ENTITY sort.ascending.label "Ordin&a A > Z"> -<!ENTITY sort.label "&Ordina"> -<!ENTITY subscription.source.label "Lista di filtri"> -<!ENTITY hitcount.column "Acce&ssi"> -<!ENTITY noFilters.text "Non è stato ancora aggiunto alcun filtro personalizzato"> -<!ENTITY backup.custom.title "Solo filtri personalizzati"> -<!ENTITY subscription.external.label "Sottoscrizione aggiornata da un'altra estensione"> -<!ENTITY subscription.delete.label "Elimina"> -<!ENTITY noGroupSelected.text "Selezionare un gruppo di filtri per visualizzarne i filtri"> -<!ENTITY filter.cut.label "Taglia"> -<!ENTITY restore.default.label "Ripristina il backup datato ?1?"> -<!ENTITY subscription.lastDownload.inProgress "download in corso…"> -<!ENTITY subscriptions.tab.label "Sottoscrizioni di filtri"> -<!ENTITY sort.descending.label "Ordina &Z > A"> -<!ENTITY filters.remove.warning "Eliminare tutti i filtri selezionati?"> -<!ENTITY filter.delete.label "Elimina"> -<!ENTITY addSubscriptionAdd.label "Aggiungi"> -<!ENTITY viewMenu.label "Visualizza"> -<!ENTITY subscription.lastDownload.unknown "sconosciuto"> -<!ENTITY addSubscriptionCancel.label "Annulla"> -<!ENTITY subscription.enabled.label "Attiva"> -<!ENTITY noSubscriptions.text "Non è stata ancora aggiunta alcuna sottoscrizione di filtri, senza cui Adblock Plus non - bloccherĂ alcun elemento; fare clic sul pulsante "Aggiungi sottoscrizione…" - per aggiungerne una"> -<!ENTITY subscription.update.label "Aggiorna i filtri"> -<!ENTITY dialog.title "Gestione dei filtri di Adblock Plus"> -<!ENTITY addFilter.label "Aggiungi &filtro"> -<!ENTITY subscription.minVersion.warning "Per questa sottoscrizione di filtri è necessaria una versione di Adblock Plus aggiornata. Ă necessario installare l'ultima versione di Adblock Plus"> -<!ENTITY subscription.lastDownload.invalidURL "Sincronizzazione non riuscita, indirizzo web non valido"> -<!ENTITY backup.error "Si è verificato un errore durante la creazione del file di backup. Verificare i permessi di scrittura per il file e/o che non sia giĂ utilizzato da un'altra applicazione"> -<!ENTITY filter.moveUp.label "Sposta su"> -<!ENTITY addGroup.label "A&ggiungi gruppo di filtri"> -<!ENTITY filter.edit.label "Modifica"> -<!ENTITY subscription.showHideFilters.label "Mostra/nascondi i filtri"> -<!ENTITY acceptableAds2.label "&Permetti alcune pubblicitĂ non inopportune"> -<!ENTITY addSubscriptionOther.label "Altre sottoscrizioni"> -<!ENTITY close.label "Chiudi"> -<!ENTITY sort.none.label "Non or&dinare"> -<!ENTITY filter.actions.label "Opzioni del filtro"> -<!ENTITY filter.copy.label "Copia"> -<!ENTITY filter.moveDown.label "Sposta giĂą"> -<!ENTITY filter.resetHitCounts.label "Ripristina le statistiche di accesso"> -<!ENTITY readMore.label "Ulteriori informazioni…"> -<!ENTITY subscription.moveUp.label "Sposta su"> -<!ENTITY addSubscription.label "&Aggiungi sottoscrizione"> -<!ENTITY subscription.homepage.label "Sito web"> -<!ENTITY backup.complete.title "Tutti i filtri e le sottoscrizioni"> -<!ENTITY restore.own.label "Backup personale da ripristinare"> -<!ENTITY restore.complete.warning "Tutte le impostazioni dei filtri verranno sostituite dal contenuto del file selezionato. Procedere comunque?"> -<!ENTITY filters.tab.label "Filtri personalizzati"> -<!ENTITY backup.label "Nuovo backup"> -<!ENTITY find.label "Tro&va"> -<!ENTITY subscription.moveDown.label "Sposta giĂą"> -<!ENTITY subscription.lastDownload.connectionError "Sincronizzazione non riuscita, errore durante il download"> -<!ENTITY subscription.lastDownload.success "Sincronizzazione effettuata con successo"> -<!ENTITY subscription.lastDownload.invalidData "Sincronizzazione non riuscita, lista dei filtri non valida"> -<!ENTITY filter.paste.label "Incolla"> -<!ENTITY subscription.disabledFilters.enable "Attiva i filtri disattivati"> -<!ENTITY lasthit.column "&Ultimo accesso"> -<!ENTITY subscription.editTitle.label "Modifica il titolo"> -<!ENTITY subscription.disabledFilters.warning "Alcuni filtri di questa sottoscrizione sono disattivati."> -<!ENTITY filter.column "&Ruolo del filtro"> -<!ENTITY subscription.lastDownload.label "Ultimo aggiornamento:"> -<!ENTITY viewList.label "Visualizza la lista…"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/firstRun.properties deleted file mode 100644 index bd96e56..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Naviga privatamente disattivando il tracciamento, nascondendo alle compagnie pubblicitarie quali siti web vengono visitati -firstRun_toggle_off=Disattivato -firstRun_feature_tracking=Disattiva il tracciamento -firstRun_feature_malware=Blocco del malware -firstRun_title=Adblock Plus è stata installata -firstRun_toggle_on=Attivo -firstRun_acceptableAdsExplanation=Vorremmo incoraggiare i siti web ad utilizzare pubblicitĂ semplici e discrete. Ecco perchĂ© sono state stabilite <a>severe linee guida</a> per identificare pubblicitĂ accettabili, che saranno visualizzate con le impostazioni predefinite. Per bloccare comunque tutte le pubblicità è possibile <a>disattivare</a> l'opzione rapidamente -firstRun_contributor_credits=Lista dei collaboratori -firstRun_dataCorruptionWarning=Questa pagina continua ad essere visualizzata? <a>Fai clic qui</a> -firstRun_acceptableAdsHeadline=Le pubblicitĂ fastidiose verranno bloccate -firstRun_share=Dillo ai tuoi amici -firstRun_share_headline=<a>Aiuta</a> a rendere il web un luogo migliore -firstRun_feature_social_description=Elimina automaticamente i pulsanti social media, come Facebook Like, che compaiono sulle pagine web e tracciano poi quali siti vengono visitati -firstRun_filterlistsReinitializedWarning=Sembra che un problema abbia causato la rimozione di tutti i filtri e non siamo stati in grado di ripristinare un backup. Quindi abbiamo dovuto azzerare i filtri e le impostazioni per la pubblicitĂ accettabile. Si prega di controllare le impostazioni per la pubblicitĂ accettabile e gli elenchi dei filtri nelle <a>opzioni di Adblock Plus</a>. -firstRun_feature_malware_description=Rendi la tua navigazione piĂą sicura bloccando domini pericolosi conosciuti -firstRun_features=Adblock Plus può fare di piĂą, oltre a bloccare pubblicitĂ -firstRun_donate=dona -firstRun_donate_label=Sostieni il nostro progetto -firstRun_feature_social=Elimina i pulsanti Social Media -firstRun_legacySafariWarning=Si sta utilizzando una vecchia versione di Safari che non è supportato da Adblock Plus. Potrebbe non funzionare correttamente o compromettere l'esperienza dell'utente su alcuni siti Web. Si consiglia vivamente di aggiornare a Safari 6.1.1 o superiore (disponibile per Mac OS X 10.8 Mountain Lion), or Safari 7.0.1 (per OS X 10.9 Maveriscks), o di utilizzare l'ultima versione di Mozilla Firefox, Google Chrome o Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/global.properties deleted file mode 100644 index 7c4f1fb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Nessun elemento bloccabile nella pagina attuale -action3_tooltip=Fare clic per attivare/disattivare Adblock Plus -notification_antiadblock_title=Nascondere messaggi mirati? -type_label_script=script -filter_elemhide_nocriteria=Non è stato specificato alcun criterio per rilevare l'elemento da nascondere -blockingGroup_title=Gruppo di filtri per bloccare elementi -whitelisted_tooltip=Adblock Plus è attiva ma è stata disattivata per la pagina attuale -type_label_stylesheet=foglio di stile -blocked_count_tooltip=?1? di ?2? -type_label_font=carattere -type_label_popup=finestra a pop-up -filter_regexp_tooltip=Il filtro inserito verrĂ interpretato come un'espressione regolare. Un numero eccessivo di tali filtri potrebbe rallentare la navigazione -action0_tooltip=Fare clic per visualizzare il menu contestuale, clic centrale per attivare/disattivare -whitelisted_page=Adblock Plus è stata disattivata per la pagina attuale -remove_group_warning=Eliminare il gruppo di filtri? -action1_tooltip=Fare clic per aprire/chiudere la finestra degli elementi bloccabili, clic centrale per attivare/disattivare -type_label_xmlhttprequest=richiesta XML -active_tooltip=Adblock Plus è attiva (sottoscrizioni di filtri in uso: ?1?, filtri in uso: ?2?) -type_label_document=documento -type_label_object_subrequest=oggetto sottorichiesto -whitelistGroup_title=Gruppo di filtri per permettere elementi -disabled_tooltip=Adblock Plus è disattivata -filter_elemhide_duplicate_id=Ă possibile specificare solo un ID dell'elemento da nascondere -type_label_object=oggetto -action2_tooltip=Fare clic per aprire la finestra di gestione dei filtri, clic centrale per attivare/disattivare -type_label_subdocument=riquadro -clearStats_warning=Azzerare le statistiche per tutti i filtri e disattivarne il futuro conteggio? -notification_antiadblock_message=Questo sito è noto per mostrare messaggi mirati agli utenti di Adblock Plus. Vuoi che Adblock Plus nasconda i messaggi mirati (pubblicitĂ )? -blocked_count_addendum=(elementi permessi: ?1?, elementi nascosti: ?2?) -subscription_invalid_location=Attenzione: per poter aggiungere una sottoscrizione è necessario che i campi 'Titolo della sottoscrizione:' ed 'Indirizzo della lista dei filtri:' non siano lasciati vuoti e corrispondano a nomi di file validi. Inserire tali dati e ripetere la procedura -type_label_image=immagine -remove_subscription_warning=Eliminare la sottoscrizione di filtri? -type_label_other=altro -mobile_menu_enable=Attiva ABP -type_label_media=audio/video -mobile_menu_disable_site=ABP è disattivata per ?1? -elemhideGroup_title=Gruppo di filtri per nascondere elementi -mobile_menu_enable_site=ABP è attivata per ?1? -type_label_elemhide=nascosto -newGroup_title=Nuovo gruppo di filtri -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/overlay.dtd deleted file mode 100644 index 3bd3482..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "Sì"> -<!ENTITY notification.button.no "No"> -<!ENTITY sync.label "Sincronizza le impostazioni di Adbloc&k Plus"> -<!ENTITY whitelist.site.label "Disattiva per ?1?"> -<!ENTITY filters.label "Gestione dei &filtri"> -<!ENTITY disable.label "Disattiva per tutte le pagine"> -<!ENTITY objecttab.title "Blocca"> -<!ENTITY objecttab.tooltip "Fare clic qui per bloccare l'oggetto con Adblock Plus"> -<!ENTITY menuitem.label "Gestione dei filtri di &Adblock Plus"> -<!ENTITY objecttabs.label "Mos&tra linguetta 'Blocca…' per elementi Flash e Java"> -<!ENTITY sendReport.label "&Segnala problemi nella pagina attuale"> -<!ENTITY whitelist.page.label "Disattiva solo per la pagina attuale"> -<!ENTITY context.image.label "Blocca immagine con Adblock Plus"> -<!ENTITY counthits.label "&Effettua le statistiche di accesso"> -<!ENTITY opensidebar.label "Apri l'elenco degli elementi &bloccabili"> -<!ENTITY notification.button.close "Chiudi"> -<!ENTITY contribute.label "Contribuisci ad Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Blocca riquadro con Adblock Plus"> -<!ENTITY blocked.tooltip "Elementi attualmente bloccati"> -<!ENTITY hideplaceholders.label "&Nascondi gli elementi bloccati"> -<!ENTITY showinstatusbar.label "Vi&sualizza nella barra di stato"> -<!ENTITY sidebar.title "Elenco degli elementi bloccabili con Adblock Plus"> -<!ENTITY options.label "&Opzioni di Adblock Plus"> -<!ENTITY context.object.label "Blocca oggetto con Adblock Plus"> -<!ENTITY context.removeWhitelist.label "Riattiva Adblock Plus nella pagina attuale"> -<!ENTITY filters.tooltip "Filtri di Adblock Plus maggiormente attivi"> -<!ENTITY closesidebar.label "Chiudi l'elenco degli elementi &bloccabili"> -<!ENTITY showintoolbar.label "Visualizza nella &barra degli strumenti"> -<!ENTITY status.tooltip "Stato di Adblock Plus"> -<!ENTITY context.media.label "Blocca video/audio con Adblock Plus"> -<!ENTITY subscription.update.label "Aggiorna i filtri"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sendReport.dtd deleted file mode 100644 index 5d83af1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sendReport.dtd +++ /dev/null @@ -1,97 +0,0 @@ -<!ENTITY screenshot.undo.label "&Annulla"> -<!ENTITY issues.disabledgroups.description "Gruppi/sottoscrizioni di filtri sono stati disattivati, ma potrebbero avere effetto - nella seguente pagina web:"> -<!ENTITY showData.label "Mostra i dati della segnalazione"> -<!ENTITY typeSelector.falsePositive.label "Adblock &Plus sta bloccando troppi elementi"> -<!ENTITY issues.change.description "Le impostazioni di Adblock Plus sono state modificate. Ricaricare la pagina web per testare le - modifiche e se il problema dovesse persistere inviare la segnalazione"> -<!ENTITY email.label "Indirizzo e-&mail:"> -<!ENTITY issues.openPreferences.label "Apri la finestra di 'Gestione dei filtri di Adblock Plus'…"> -<!ENTITY sendPage.confirmation "Segnalazione inviata correttamente, per visualizzarne i dati fare clic sul seguente link:"> -<!ENTITY copyLink.label "Copia il lin&k della segnalazione"> -<!ENTITY issues.nofilters.description "Adblock Plus attualmente non sta bloccando alcun elemento. Il problema che si è - verificato è piĂą probabile che non sia relativo ad Adblock Plus"> -<!ENTITY sendPage.knownIssue "Problema segnalato precedentemente noto. Ulteriori informazioni:"> -<!ENTITY typeSelector.other.description "Selezionare questa opzione se nella pagina web si sta verificando un problema di altro tipo - che si sospetta relativo all'estensione stessa piuttosto che ai suoi filtri"> -<!ENTITY issues.disabledgroups.enable.label "Attiva gruppi/sottoscrizioni di filtri"> -<!ENTITY typeWarning.override.label "Comprendo e &voglio inviare la segnalazione comunque"> -<!ENTITY issues.disabled.enable.label "Attiva Adblock Plus"> -<!ENTITY update.fixed.description "L'aggiornamento della sottoscrizione di filtri potrebbe aver risolto il problema che si stava segnalando. Ricaricare la pagina e riprovare; se il problema persiste inviare nuovamente la segnalazione"> -<!ENTITY anonymous.label "Seg&nalazione anonima"> -<!ENTITY reloadButton.label "Ricarica la &pagina web"> -<!ENTITY recentReports.clear.label "Elimina &tutte le segnalazioni"> -<!ENTITY typeSelector.description "La configurazione guidata permette passo a passo di raccogliere ed inviare i dati necessari per effettuare la - segnalazione di Adblock Plus di problemi in una pagina web. Come primo passo, selezionare il tipo di problema - che si è verificato"> -<!ENTITY screenshot.remove.label "&Elimina i dati sensibili"> -<!ENTITY issues.ownfilters.description "Alcuni dei filtri che vengono applicati nella pagina web attuale sono personalizzati; - disattivare tali filtri che potrebbero essere la causa del seguente problema:"> -<!ENTITY update.inProgress.description "Ă necessario aggiornare la sottoscrizione di filtri per verificare che il problema non sia giĂ stato risolto. Attendere…"> -<!ENTITY sendPage.retry.label "Riprova ad inviare"> -<!ENTITY data.label "&Dati della segnalazione:"> -<!ENTITY recentReports.label "Segnalazioni recentemente inviate"> -<!ENTITY typeWarning.description "Ă stato indicato che si vuole segnalare un problema generico relativo all'estensione - stessa piuttosto che ai suoi filtri. PoichĂ© tali problemi sono riportati meglio sul - [link]forum di Adblock Plus[/link], si suggerisce di utilizzare la segnalazione di - problemi solo come integrazione di una discussione giĂ esistente, visto che nessuno noterĂ - una segnalazione priva di relativo link alla pagina web dove si verifica appunto il problema. - Il link generato automaticamente verrĂ fornito dopo l'invio della segnalazione"> -<!ENTITY issues.disabled.description "Adblock Plus è attualmente disattivata e quindi non bloccherĂ alcun elemento"> -<!ENTITY attachExtensions.label "A&llega la lista di estensioni e plugin attivi"> -<!ENTITY issues.nosubscriptions.add.label "Aggiungi una sottoscrizione di filtri…"> -<!ENTITY issues.disabledfilters.enable.label "Attiva i filtri"> -<!ENTITY issues.override.label "&Le impostazioni di Adblock Plus sono corrette, proseguire con la raccolta dei dati per la segnalazione"> -<!ENTITY issues.nosubscriptions.description "Non sembra essere attiva alcuna sottoscrizione di filtri che permette l'eliminazione - automatica di banner e/o pubblicitĂ presenti nei siti web"> -<!ENTITY typeSelector.falsePositive.description "Selezionare questa opzione se nella pagina web manca parte del contenuto importante, se la pagina web viene - visualizzata non correttamente oppure se non funziona come dovrebbe. Ă possibile determinare se sia Adblock Plus - la causa del problema disattivando temporaneamente l'estensione"> -<!ENTITY typeSelector.other.label "&Si è verificato un problema di altro tipo"> -<!ENTITY emailComment.label "Inserire un indirizzo e-mail valido per poter essere ricontattati in caso di domande su questa segnalazione, per riconoscerne i contributi e per aumentare l'ordine di prioritĂ "> -<!ENTITY issues.whitelist.remove.label "Riattiva Adblock Plus nella pagina attuale"> -<!ENTITY outdatedSubscriptions.description "Le seguenti sottoscrizioni di filtri non sono state aggiornate per almeno due settimane. Ă necessario aggiornarle prima di inviare una segnalazione, poichĂ© il problema potrebbe esser giĂ stato risolto"> -<!ENTITY dataCollector.description "Attendere mentre vengono raccolti i dati necessari per la segnalazione di Adblock Plus di problemi in una pagina web"> -<!ENTITY sendButton.label "Invia la segnala&zione"> -<!ENTITY comment.label "C&ommento (opzionale):"> -<!ENTITY sendPage.errorMessage "Il tentativo di inviare la segnalazione non è riuscito a causa del seguente errore: "?1?". - Accertarsi di essere collegati ad internet e riprovare. Se il problema persiste inviare una richiesta - di assistenza nel [link]forum di Adblock Plus[/link]"> -<!ENTITY showRecentReports.label "Mostra le segnalazioni recentemente inviate"> -<!ENTITY commentPage.heading "Invio di un commento"> -<!ENTITY update.start.label "Avvia l'aggiornamento ora"> -<!ENTITY issues.disabledfilters.description "I filtri sono stati disattivati, ma potrebbero avere effetto nella seguente pagina web:"> -<!ENTITY screenshot.description "Una stessa pagina web può apparire in modo differente a piĂą persone. Potrebbe essere di aiuto per - meglio comprendere il problema allegare un'immagine della pagina web alla segnalazione. Ă - possibile eliminare le sezioni contenenti dati sensibili nonchĂ© contrassegnare le aree dove il - problema è evidente facendo prima clic sui relativi pulsanti ed in seguito selezionando le parti - interessate dell'immagine della pagina web con il mouse"> -<!ENTITY screenshot.attach.label "Allega &un'immagine della pagina web alla segnalazione"> -<!ENTITY issues.whitelist.description "Adblock Plus è attualmente disattivata per la pagina web che si sta segnalando. Riattivare - l'estensione e ricaricare la pagina prima di inviare la segnalazione del problema per - rinvenirne le cause"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus &non sta bloccando alcun elemento"> -<!ENTITY typeSelector.heading "Selezione del problema"> -<!ENTITY anonymity.warning "Nota: è impossibile rispondere a segnalazioni anonime alle quali viene probabilmente dato un ordine di prioritĂ inferiore"> -<!ENTITY wizard.title "Configurazione guidata per segnalare problemi in una pagina web"> -<!ENTITY issues.ownfilters.disable.label "Disattiva i filtri"> -<!ENTITY commentPage.description "Ă possibile digitare nel relativo campo di testo qui sotto un commento per comprendere meglio - il problema segnalato. Questo passo è opzionale ma raccomandato se il problema non è ovvio. - Ă inoltre possibile visualizzare i dati della segnalazione prima di inviarla"> -<!ENTITY comment.lengthWarning "La lunghezza massima del testo del commento è di 1000 caratteri; quelli eccedenti non verranno inviati"> -<!ENTITY typeSelector.falseNegative.description "Selezionare questa opzione se nella pagina web vengono visualizzati banner e/o pubblicitĂ nonostante - Adblock Plus sia attiva"> -<!ENTITY sendPage.waitMessage "Attendere mentre la segnalazione di Adblock Plus viene inviata"> -<!ENTITY dataCollector.heading "Benvenuti alla configurazione guidata per segnalare problemi in una pagina web"> -<!ENTITY screenshot.heading "Immagine da allegare"> -<!ENTITY sendPage.heading "Invio della segnalazione"> -<!ENTITY issues.subscriptionCount.description "Sembra che siano state aggiunte troppe sottoscrizioni di filtri. Ciò non è - raccomandato poichĂ© aumenta considerevolmente la possibilitĂ che si verifichino - dei problemi. Ă inoltre impossibile accettare tale segnalazione in quanto non - è chiaro quale autore di sottoscrizioni di filtri debba controllare; eliminare - tutte le sottoscrizioni superflue lasciando solo quella necessaria e verificare - se il problema persiste ancora"> -<!ENTITY screenshot.mark.label "&Contrassegna l'area del problema"> -<!ENTITY privacyPolicy.label "Informativa sulla privacy"> -<!ENTITY issues.description "Sono stati rilevati dei problemi con le impostazioni di Adblock Plus che potrebbero essere responsabili - del problema da segnalare oppure potrebbero rendere difficile rinvenirne le cause"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sidebar.dtd deleted file mode 100644 index 2ae120b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Fai lampeggiare il contorno dell'elemento selezionato"> -<!ENTITY address.label "Indirizzo web"> -<!ENTITY context.open.label "Apri in una nuova scheda"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Sorgente del filtro:"> -<!ENTITY noitems.label "Nessun elemento bloccabile"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Dimensione:"> -<!ENTITY reattach.label "Riunisci"> -<!ENTITY search.label "&Cerca:"> -<!ENTITY docDomain.thirdParty "(terza parte)"> -<!ENTITY filterSource.label "Sorgente del filtro"> -<!ENTITY tooltip.docDomain.label "Sorgente del documento:"> -<!ENTITY context.copy.label "Copia l'indirizzo web dell'elemento"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Disattiva il filtro ?1?"> -<!ENTITY context.copyFilter.label "Copia il filtro"> -<!ENTITY context.block.label "Blocca questo elemento"> -<!ENTITY context.enablefilter.label "Riattiva il filtro ?1?"> -<!ENTITY detach.label "Separa"> -<!ENTITY whitelisted.label "Pagina in lista di siti permessi"> -<!ENTITY context.disablefilteronsite.label "Disattiva il filtro per ?1?"> -<!ENTITY detached.title "Elementi bloccabili con Adblock Plus (separati)"> -<!ENTITY docDomain.firstParty "(prima parte)"> -<!ENTITY tooltip.type.whitelisted "(in lista di elementi permessi)"> -<!ENTITY tooltip.filter.label "Filtro effettivo:"> -<!ENTITY tooltip.filter.disabled "(disattivato)"> -<!ENTITY context.editfilter.label "Modifica il filtro in effetto"> -<!ENTITY tooltip.type.blocked "(in lista di elementi bloccati)"> -<!ENTITY size.label "Dimensione"> -<!ENTITY context.whitelist.label "Aggiungi un'eccezione per l'elemento"> -<!ENTITY context.selectAll.label "Seleziona tutto"> -<!ENTITY state.label "Stato"> -<!ENTITY docDomain.label "Sorgente"> -<!ENTITY tooltip.address.label "Indirizzo web:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/subscriptionSelection.dtd deleted file mode 100644 index 36af5cd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/it/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Aggiungere la &sottoscrizione di filtri "?1?""> -<!ENTITY list.download.failed "Recupero della lista di sottoscrizioni non riuscito"> -<!ENTITY list.download.retry "Riprova"> -<!ENTITY title.label "&Titolo della sottoscrizione:"> -<!ENTITY list.download.website "Visita il sito web delle sottoscrizioni"> -<!ENTITY supplementMessage "Questa sottoscrizione di filtri verrĂ utilizzata insieme a quella chiamata "?1?" (ancora non aggiunta)."> -<!ENTITY viewList.label "Visualizza i filtri della sottoscrizione"> -<!ENTITY visitHomepage.label "Visita il sito web"> -<!ENTITY addSubscription.label "Aggiungi sottoscrizione"> -<!ENTITY dialog.title "Sottoscrizione di filtri di Adblock Plus"> -<!ENTITY location.label "Indiri&zzo web della lista dei filtri:"> -<!ENTITY fromWeb.description "Confermare l'aggiunta della sottoscrizione di filtri. Ă possibile modificare il titolo della sottoscrizione oppure l'URL/percorso della lista dei filtri prima di aggiungerla"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/composer.dtd deleted file mode 100644 index 0c162d5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "アă‰ă¬ă‚ąćś«ĺ°ľ(&N)"> -<!ENTITY domainRestriction.label "ă‰ăˇă‚¤ăłĺ¶é™:(&D)"> -<!ENTITY collapse.default.no.label "ă‡ă•ă‚©ă«ă (ă„ă„ă)"> -<!ENTITY firstParty.label "ă•ァăĽă‚ąăă‘ăĽă†ă‚Łĺ¶é™(&R)"> -<!ENTITY preferences.label "ć—˘ĺă®ă•ィă«ă‚żă‚’表示...(&S)"> -<!ENTITY pattern.label "ă‘タăĽăłă‚’é¸ćŠž"> -<!ENTITY thirdParty.label "サăĽă‰ă‘ăĽă†ă‚Łĺ¶é™(&T)"> -<!ENTITY filter.label "ć–°ă•ィă«ă‚ż:(&F)"> -<!ENTITY collapse.label "ă–ăăク後ă®ç©şăŤă‚ąăšăĽă‚ąă‚’č©°ă‚ă‚‹:(&L)"> -<!ENTITY match.warning "入力ă—ăźă‘タăĽăłăŻă‚˘ă‰ă¬ă‚ąă«ä¸€č‡´ă—ăŞă„ă®ă§ĺŠąćžśăŚă‚りăľă›ă‚“。"> -<!ENTITY anchor.start.label "アă‰ă¬ă‚ąĺ…é (&G)"> -<!ENTITY matchCase.label "大文ĺ—ĺ°Źć–‡ĺ—を区ĺĄ(&M)"> -<!ENTITY custom.pattern.label "自作:(&C)"> -<!ENTITY unselectAllTypes.label "é¸ćŠžč§Łé™¤"> -<!ENTITY type.whitelist.label "ă›ăŻă‚¤ăăŞă‚ąă(&X)"> -<!ENTITY regexp.warning "入力ă•れăźă‘タăĽăłăŻćŁč¦Źčˇ¨çŹľă¨ă—ă¦č§Łé‡ă•れるăźă‚ Adblock Plus ăŚĺŠąçŽ‡ă‚ăŹĺ‡¦ç†ă§ăŤăšă€ă–ă©ă‚¦ă‚¸ăłă‚°é€źĺş¦ä˝Žä¸‹ă®ĺŽźĺ› ă«ăŞă‚‹ă“ă¨ăŚă‚りăľă™ă€‚ă‚‚ă—ćŁč¦Źčˇ¨çŹľă®ä˝żç”¨ă‚’意図ă—ă¦ă„ăŞă‹ăŁăźĺ ´ĺăŻă€ă‘タăĽăłćś«ĺ°ľă«ĺŤŠč§’アスタăŞă‚ąă‚Ż (*) ă‚’čż˝ĺŠ ă—ă¦ăŹă ă•ă„。"> -<!ENTITY dialog.title "Adblock Plus ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY basic.label "基本表示"> -<!ENTITY type.filter.label "ă–ăăクă•ィă«ă‚ż(&B)"> -<!ENTITY types.label "é©ç”¨ç¨®ĺĄ:"> -<!ENTITY shortpattern.warning "入力ă—ăźă‘タăĽăłăŻćś€é©ĺŚ–ă™ă‚‹ă«ăŻçźă™ăŽă‚‹ăźă‚ă–ă©ă‚¦ă‚¸ăłă‚°é€źĺş¦ăŚä˝Žä¸‹ă™ă‚‹ă“ă¨ăŚă‚りăľă™ă€‚Adblock Plus ă®ĺ‡¦ç†ă‚’効率化ă™ă‚‹ăźă‚ă«ă€ă‚り長ă„ć–‡ĺ—ĺ—ă‚’é¸ă¶ă“ă¨ă‚’推奨ă—ăľă™ă€‚"> -<!ENTITY collapse.yes.label "ăŻă„"> -<!ENTITY anchors.label "ă‘タăĽăłé©ç”¨ă®čµ·ç‚ą:"> -<!ENTITY collapse.default.yes.label "ă‡ă•ă‚©ă«ă (ăŻă„)"> -<!ENTITY domainRestriction.help "ă•ィă«ă‚żé©ç”¨ĺŻľč±ˇă«ă™ă‚‹ă‰ăˇă‚¤ăłă‚’指定ă™ă‚‹ă“ă¨ăŚă§ăŤăľă™ă€‚複数指定ă—ăźă„ĺ ´ĺăŻç¸¦ç·š(|)ă§ĺ†ă‘ă¦ăŹă ă•ă„。ă‰ăˇă‚¤ăłĺŤă®ĺ‰Ťă«ăă«ă€(~)ă‚’ä»ă‘ă‚‹ă“ă¨ă§ă€é©ç”¨ĺ¤–ă‰ăˇă‚¤ăłă¨ă™ă‚‹ă“ă¨ă‚‚ă§ăŤăľă™"> -<!ENTITY accept.label "ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY options.label "オă—ă‚·ă§ăł"> -<!ENTITY disabled.warning "現在 Adblock Plus ăŻç„ˇĺŠąă«ăŞăŁă¦ă„ăľă™ă€‚ă•ィă«ă‚żă‚’čż˝ĺŠ ă™ă‚‹ă“ă¨ăŻă§ăŤăľă™ăŚă€ăťă‚Śă‚‰ăŻ [link]Adblock Plus を有効ă«ă™ă‚‹[/link] ăľă§é©ç”¨ă•れăľă›ă‚“。"> -<!ENTITY anchor.start.flexible.label "ă‰ăˇă‚¤ăłĺŤĺ…é (&G)"> -<!ENTITY collapse.no.label "ă„ă„ă"> -<!ENTITY selectAllTypes.label "ă™ăąă¦é¸ćŠž"> -<!ENTITY advanced.label "詳細表示"> -<!ENTITY pattern.explanation "ă‘タăĽăłă¨ăŻă‚˘ă‰ă¬ă‚ąă®ä»»ć„Źă®ä¸€é¨ă®ă“ă¨ă§ă™ă€‚半角アスタăŞă‚ąă‚Ż (*) ă‚’ăŻă‚¤ă«ă‰ă‚«ăĽă‰ă¨ă—ă¦ä˝żç”¨ă™ă‚‹ă“ă¨ă‚‚ă§ăŤăľă™ă€‚指定ă—ăźă‘タăĽăłă«ä¸€č‡´ă—ăźă‚˘ă‰ă¬ă‚ąă«ă®ăżă•ィă«ă‚żăŚé©ç”¨ă•れăľă™ă€‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/filters.dtd deleted file mode 100644 index b5d5270..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "ĺ…¨ă¦ă®č‡Şä˝śă•ィă«ă‚żăŻćŚ‡ĺ®šă—ăźă•ァイă«ă®ĺ†…容ă«ç˝®ćŹ›ă•れăľă™ă€‚ă‚ろă—ă„ă§ă™ă‹ďĽź"> -<!ENTITY slow.column "低速ă•ィă«ă‚ż(&W)"> -<!ENTITY enabled.column "有効(&N)"> -<!ENTITY subscription.lastDownload.checksumMismatch "更新失敗: ăă‚§ăクサă 不一致"> -<!ENTITY noFiltersInGroup.text "é¸ćŠžă—ăźă‚°ă«ăĽă—ă«ă•ィă«ă‚żăŻă‚りăľă›ă‚“"> -<!ENTITY subscription.actions.label "アクシă§ăł"> -<!ENTITY filter.selectAll.label "ă™ăąă¦é¸ćŠž"> -<!ENTITY backupButton.label "ăăクアăă—ă¨ĺľ©ĺ…(&B)"> -<!ENTITY restore.minVersion.warning "č¦ĺ‘Š: ă“ă®ă•ァイă«ăŻă‚り新ă—ă„ăăĽă‚¸ă§ăłă® Adblock Plus ă§ä˝śćă•れă¦ă„ăľă™ă€‚ă“ă®ă•ァイă«ă‹ă‚‰ĺľ©ĺ…ă™ă‚‹ĺ‰Ťă« Adblock Plus を最新ç‰ă«ć›´ć–°ă—ă¦ăŹă ă•ă„。"> -<!ENTITY restore.error "ă•ァイă«ă‡ăĽă‚żăŚĺ‡¦ç†ă§ăŤăľă›ă‚“。ă“ă®ă•ァイă«ăŻ Adblock Plus ă®ăăクアăă—ă§ăŞă„ă®ă§ăŻďĽź"> -<!ENTITY sort.ascending.label "&A > Z é †ă«ă‚˝ăĽă"> -<!ENTITY sort.label "ă‚˝ăĽă(&S)"> -<!ENTITY subscription.source.label "ă•ィă«ă‚żăŞă‚ąă"> -<!ENTITY hitcount.column "ă’ăăć•°(&H)"> -<!ENTITY noFilters.text "ăľă 自作ă•ィă«ă‚żăŻă‚りăľă›ă‚“。"> -<!ENTITY backup.custom.title "自作ă•ィă«ă‚żă®ăż"> -<!ENTITY subscription.external.label "ä»–ă®ć‹ˇĺĽµă«ă‚り更新"> -<!ENTITY subscription.delete.label "削除"> -<!ENTITY noGroupSelected.text "ă•ィă«ă‚żă‚’表示ă™ă‚‹ă«ăŻă€ăľăšă•ィă«ă‚żă‚°ă«ăĽă—ă‚’é¸ćŠžă—ă¦ăŹă ă•ă„"> -<!ENTITY filter.cut.label "ĺ‡ă‚ŠĺŹ–ă‚Š"> -<!ENTITY restore.default.label "?1? ă®ăăクアăă—ă‹ă‚‰ĺľ©ĺ…"> -<!ENTITY subscription.lastDownload.inProgress "ă€ă‚¦ăłăăĽă‰ä¸..."> -<!ENTITY subscriptions.tab.label "購čŞă—ă¦ă„ă‚‹ă•ィă«ă‚ż"> -<!ENTITY sort.descending.label "&Z > A é †ă«ă‚˝ăĽă"> -<!ENTITY filters.remove.warning "é¸ćŠžă—ăźă•ィă«ă‚żă‚’本当ă«ĺ‰Šé™¤ă—ăľă™ă‹ďĽź"> -<!ENTITY filter.delete.label "削除"> -<!ENTITY addSubscriptionAdd.label "čż˝ĺŠ "> -<!ENTITY viewMenu.label "表示"> -<!ENTITY subscription.lastDownload.unknown "不ćŽ"> -<!ENTITY addSubscriptionCancel.label "ă‚ăŁăłă‚»ă«"> -<!ENTITY subscription.enabled.label "有効"> -<!ENTITY noSubscriptions.text "ă•ィă«ă‚żă‚’ăľă 購čŞă—ă¦ă„ăľă›ă‚“。Adblock Plus ăŻă•ィă«ă‚żăŞă—ă§ä˝•ă‚‚ă–ăăクă§ăŤăŞă„ă®ă§ă€ŚčłĽčŞă™ă‚‹ă•ィă«ă‚żă‚’čż˝ĺŠ ă€Ťă—ă¦ăŹă ă•ă„。"> -<!ENTITY subscription.update.label "ă•ィă«ă‚żă‚’ć›´ć–°"> -<!ENTITY dialog.title "Adblock Plus ă•ィă«ă‚żč¨ĺ®š"> -<!ENTITY addFilter.label "ă•ィă«ă‚żă‚’čż˝ĺŠ (&D)"> -<!ENTITY subscription.minVersion.warning "購čŞă—ă¦ă„ă‚‹ă•ィă«ă‚żăŻă‚り新ă—ă„ăăĽă‚¸ă§ăłă® Adblock Plus ă‚’č¦ć±‚ă—ă¦ă„ă‚‹ă®ă§ă€ćś€ć–°ă® Adblock Plus ă«ć›´ć–°ă—ă¦ăŹă ă•ă„。"> -<!ENTITY subscription.lastDownload.invalidURL "更新失敗: アă‰ă¬ă‚ąç„ˇĺŠą"> -<!ENTITY backup.error "ă•ァイă«ĺ‡şĺŠ›ă‚¨ă©ăĽă€‚ă•ァイă«ć›¸ăŤčľĽăżç¦ć˘ďĽŹä»–ă®ă‚˘ă—ăŞă‚±ăĽă‚·ă§ăłă§ä˝żç”¨ä¸ ă¨ăŞăŁă¦ă„ăŞă„ă‹ç˘şčŞŤă—ă¦ăŹă ă•ă„。"> -<!ENTITY filter.moveUp.label "上ă«ç§»ĺ‹•"> -<!ENTITY addGroup.label "ă•ィă«ă‚żă‚°ă«ăĽă—ă‚’čż˝ĺŠ (&G)"> -<!ENTITY filter.edit.label "編集"> -<!ENTITY subscription.showHideFilters.label "ă•ィă«ă‚żă‚’表示/非表示"> -<!ENTITY acceptableAds2.label "控ăă‚ăŞĺşĺ‘Šă‚’許可(&I)"> -<!ENTITY addSubscriptionOther.label "ĺĄă®čłĽčŞă™ă‚‹ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY close.label "é–‰ăă‚‹"> -<!ENTITY sort.none.label "ă‚˝ăĽăă—ăŞă„(&U)"> -<!ENTITY filter.actions.label "ă•ィă«ă‚żă‚˘ă‚Żă‚·ă§ăł"> -<!ENTITY filter.copy.label "コă”ăĽ"> -<!ENTITY filter.moveDown.label "下ă«ç§»ĺ‹•"> -<!ENTITY filter.resetHitCounts.label "ă’ăăć•°ă‚’ăŞă‚»ăă"> -<!ENTITY readMore.label "詳細説ćŽăšăĽă‚¸ă‚’é–‹ăŹ"> -<!ENTITY subscription.moveUp.label "上ă«ç§»ĺ‹•"> -<!ENTITY addSubscription.label "購čŞă™ă‚‹ă•ィă«ă‚żă‚’čż˝ĺŠ (&F)"> -<!ENTITY subscription.homepage.label "ă›ăĽă ăšăĽă‚¸"> -<!ENTITY backup.complete.title "自作及ăłčłĽčŞă—ă¦ă„ă‚‹ă•ィă«ă‚ż"> -<!ENTITY restore.own.label "ăăクアăă—ă•ァイă«ă‚’指定ă—ă¦ĺľ©ĺ…"> -<!ENTITY restore.complete.warning "ĺ…¨ă¦ă®ă•ィă«ă‚żč¨ĺ®šăŻćŚ‡ĺ®šă—ăźă•ァイă«ă®ĺ†…容ă«ç˝®ćŹ›ă•れăľă™ă€‚ă‚ろă—ă„ă§ă™ă‹ďĽź"> -<!ENTITY filters.tab.label "自作ă•ィă«ă‚ż"> -<!ENTITY backup.label "ăăクアăă—を新規作ć"> -<!ENTITY find.label "検索(&N)"> -<!ENTITY subscription.moveDown.label "下ă«ç§»ĺ‹•"> -<!ENTITY subscription.lastDownload.connectionError "更新失敗: 接続エă©ăĽ"> -<!ENTITY subscription.lastDownload.success "ć›´ć–°ć功"> -<!ENTITY subscription.lastDownload.invalidData "更新失敗: ă•ィă«ă‚żăŞă‚ąă無効"> -<!ENTITY filter.paste.label "貼りä»ă‘"> -<!ENTITY subscription.disabledFilters.enable "無効ă«ăŞăŁă¦ă„ă‚‹ă•ィă«ă‚żă‚’有効化"> -<!ENTITY lasthit.column "最終ă’ăă日時(&L)"> -<!ENTITY subscription.editTitle.label "タイăă«ă‚’編集"> -<!ENTITY subscription.disabledFilters.warning "購čŞă—ă¦ă„ă‚‹ă•ィă«ă‚żă®ä¸€é¨ăŚç„ˇĺŠąĺŚ–ă•れă¦ă„ăľă™"> -<!ENTITY filter.column "ă•ィă«ă‚ż(&F)"> -<!ENTITY subscription.lastDownload.label "更新日時:"> -<!ENTITY viewList.label "ă•ィă«ă‚żă•ァイă«ă‚’é–‹ă„ă¦ç˘şčŞŤ"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/firstRun.properties deleted file mode 100644 index 776b9e7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=追跡を無効化ă—ă¦ă—ă©ă‚¤ăă‚·ăĽă‚’確保ă—ă¤ă¤ă–ă©ă‚¦ă‚¸ăłă‚° - ă‚ăŞăźă®ă‚らゆる動静を追跡ă™ă‚‹ĺşĺ‘ŠäĽšç¤ľă‹ă‚‰č¶łč·ˇă‚’éš ă—ăľă™ă€‚ -firstRun_toggle_off=OFF -firstRun_feature_tracking=ăă©ăă‚ăłă‚°ă‚’無効化 -firstRun_feature_malware=ăžă«ă‚¦ă‚§ă‚˘ă‚’ă–ăăク -firstRun_title=Adblock Plus ăŚă‚¤ăłă‚ąăăĽă«ă•れăľă—ăź -firstRun_toggle_on=ON -firstRun_acceptableAdsExplanation=ć‘々ăŻă‚¦ă‚§ă–サイăăŚç°ˇç´ ă§ćާăă‚ăŞĺşĺ‘Šă‚’使用ă™ă‚‹ă‚ă†ĺľŚćŠĽă—ă—ăźă„ă¨č€ăă¦ă„ăľă™ă€‚ăťă®ăźă‚控ăă‚ăŞĺşĺ‘Šă‚’区ĺĄă™ă‚‹ăźă‚ă®<a>ĺŽłć ĽăŞă‚¬ă‚¤ă‰ă©ă‚¤ăł</a>ă‚’ç–定ă—ă€ă‡ă•ă‚©ă«ăă§č¨±ĺŹŻă™ă‚‹ă‚ă†ă«ă—ăľă—ăźă€‚ă™ăąă¦ă®ĺşĺ‘Šă‚’ă–ăăクă—ăźă„ĺ ´ĺăŻć•°ç§’ă§ćާăă‚ăŞĺşĺ‘Šă®č¨±ĺŹŻă‚’<a>無効ă«ă™ă‚‹</a>ă“ă¨ăŚă§ăŤăľă™ 。 -firstRun_contributor_credits=貢献ă—ăźäşş -firstRun_dataCorruptionWarning=ă“ă®ăšăĽă‚¸ăŚä˝•度も再表示ă•ă‚Śă‚‹ĺ ´ĺ㯠<a>ă“ă“を参照ďĽ</a> -firstRun_acceptableAdsHeadline=čż·ć‘ăŞĺşĺ‘ŠăŻă–ăăクă•れăľă™ -firstRun_share=友é”ă«ć•™ăă‚‹ -firstRun_share_headline=Web ă‚’ă‚り良ă„ĺ ´ć‰€ă«ă™ă‚‹ăźă‚ă«<a>協力ă™ă‚‹</a> -firstRun_feature_social_description=Web ăšăĽă‚¸ă«č¨ç˝®ă•れă¦ă„ă¦ă¦ăĽă‚¶ăĽă®čˇŚĺ‹•を追跡ă™ă‚‹ă‚˝ăĽă‚·ăŁă«ăˇă‡ă‚Łă‚˘ăśă‚żăłďĽäľ‹ăă° Facebook ă®ă€Śă„ă„ăďĽă€ŤďĽ‰ă‚’自動的ă«ĺŹ–ă‚Šé™¤ăŤăľă™ă€‚ -firstRun_filterlistsReinitializedWarning=ă™ăąă¦ă®ă•ィă«ă‚żăŚĺ‰Šé™¤ă•れă¦ă—ăľă†ĺ•ŹéˇŚăŚç™şç”źă—ăźă‚ă†ă§ă™ă€‚ăăクアăă—ă‹ă‚‰ĺľ©ĺ…ă™ă‚‹ă“ă¨ăŚă§ăŤăšă€ăŠä˝żă„ă®ă•ィă«ă‚żă¨ćާăă‚ăŞĺşĺ‘Šă®č¨ĺ®šă‚’ăŞă‚»ăăă™ă‚‹ĺż…č¦ăŚă‚りăľă—ăźă€‚ <a>Adblock Plus ă®ă‚Şă—ă‚·ă§ăł</a>ă‹ă‚‰ă€ăŠä˝żă„ă®ă•ィă«ă‚żăŞă‚ąăă¨ćާăă‚ăŞĺşĺ‘Šă®č¨ĺ®šă‚’確認ă—ă¦ăŹă ă•ă„。 -firstRun_feature_malware_description=既知ă®ăžă«ă‚¦ă‚§ă‚˘é…Ťĺ¸ă‰ăˇă‚¤ăłă‚’ă–ăăクă™ă‚‹ă“ă¨ă§ă€ă‚り安全ăŞă–ă©ă‚¦ă‚¸ăłă‚°ă‚’可č˝ă«ă—ăľă™ă€‚ -firstRun_features=Adblock Plus ăŻĺŤă«ĺşĺ‘Šă‚’ă–ăăクă™ă‚‹ă ă‘ă§ăŻă‚りăľă›ă‚“ -firstRun_donate=ĺŻ„ä» -firstRun_donate_label=ă—ăジェクăを支援 -firstRun_feature_social=ă‚˝ăĽă‚·ăŁă«ăˇă‡ă‚Łă‚˘ă®ăśă‚żăłă‚’ć¶ă™ -firstRun_legacySafariWarning=Adblock Plus ăŚă‚µăťăĽăă—ă¦ă„ăŞă„古ă„ăăĽă‚¸ă§ăłă® Safari ă‚’ĺ©ç”¨ă—ă¦ă„ă‚‹ăźă‚ă€ćŁĺ¸¸ă«ĺ‹•作ă—ăŞă‹ăŁăźă‚Šă¦ăĽă‚¶ăĽä˝“験をćŤăŞă† Web サイăăŚă‚ă‚‹ă‹ă‚‚ă—れăľă›ă‚“。Mac OS X 10.8 Mountain Lion ăŞă‚‰ Safari 6.1.1 以降ă€Mac OS X 10.9 Mavericks ăŞă‚‰ Safari 7.0.1 以降ă«ć›´ć–°ă™ă‚‹ă‹ă€Mozilla Firefox/Google Chrome/Opera ă„ăšă‚Śă‹ćś€ć–°ç‰ă®ĺ©ç”¨ă‚’強ăŹćŽ¨ĺĄ¨ă—ăľă™ă€‚ diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/global.properties deleted file mode 100644 index 842af8e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=現在ă®ăšăĽă‚¸ă«ă–ăăク可č˝é …ç›®ăŻă‚りăľă›ă‚“ -action3_tooltip=クăŞăク㧠Adblock Plus 有効/無効をĺ‡ă‚Šć›żă -notification_antiadblock_title=Adblock Plus ă¦ăĽă‚¶ăĽĺ‘ă‘ă®ăˇăă‚»ăĽă‚¸ă‚’非表示ă«ă—ăľă™ă‹ďĽź -type_label_script=スクăŞă—ă -filter_elemhide_nocriteria=č¦ç´ を非表示ă«ă™ă‚‹ćťˇä»¶ăŚćŚ‡ĺ®šă•れă¦ă„ăľă›ă‚“ -blockingGroup_title=ĺşĺ‘Šă–ăăクă«ăĽă« -whitelisted_tooltip=Adblock Plus ăŻçŹľĺś¨ă®ăšăĽă‚¸ă§ç„ˇĺŠą -type_label_stylesheet=スタイă«ă‚·ăĽă -blocked_count_tooltip=ă–ăăクć¸: ?1?/ă–ăăă‚ŻĺŹŻč˝ :?2? -type_label_font=ă•ă‚©ăłă -type_label_popup=ăťăă—アăă— -filter_regexp_tooltip=ă“ă®ă•ィă«ă‚żăŻćŁč¦Źčˇ¨çŹľă‚’ä˝żç”¨ă—ă¦ă„ă‚‹ă€ă‚‚ă—ăŹăŻćś€é©ĺŚ–ă™ă‚‹ă®ă«çźéŽăŽăľă™ă€‚ă“ă®ă‚ă†ăŞă•ィă«ă‚żăŚĺ¤šă„ă¨ă–ă©ă‚¦ă‚¶ăŚé…ăŹăŞă‚‹ă“ă¨ăŚă‚りăľă™ă€‚ -action0_tooltip=クăŞăクă§ă‚łăłă†ă‚スăăˇă‹ăĄăĽă‚’表示ă€ä¸ă‚ŻăŞăクă§ćś‰ĺŠąďĽŹç„ˇĺŠąă‚’ĺ‡ă‚Šć›żă -whitelisted_page=Adblock Plus ăŻçŹľĺś¨ă®ăšăĽă‚¸ă§ç„ˇĺŠąă«č¨ĺ®šă•れă¦ă„ăľă™ -remove_group_warning=本当ă«ă“ă®ă‚°ă«ăĽă—を削除ă—ăľă™ă‹ďĽź -action1_tooltip=クăŞăクă§ă–ăăク可č˝é …目一覧を開/閉ă€ä¸ă‚ŻăŞăクă§ćś‰ĺŠąďĽŹç„ˇĺŠąă‚’ĺ‡ă‚Šć›żă -type_label_xmlhttprequest=XML ăŞă‚Żă‚¨ă‚ąă -active_tooltip=Adblock Plus 有効 (ă•ィă«ă‚żčłĽčŞć•°: ?1?/自作ă•ィă«ă‚żć•°: ?2?) -type_label_document=ă‰ă‚ăĄăˇăłă -type_label_object_subrequest=オă–ジェクăă®ă‚µă–ăŞă‚Żă‚¨ă‚ąă -whitelistGroup_title=ă›ăŻă‚¤ăăŞă‚ąă -disabled_tooltip=Adblock Plus 無効 -filter_elemhide_duplicate_id=č¦ç´ を非表示ă«ă™ă‚‹ ID ăŻďĽ‘ă¤ă ă‘指定ă§ăŤăľă™ -type_label_object=オă–ジェクă -action2_tooltip=クăŞăクă§č¨ĺ®šă‚’オăĽă—ăłă€ä¸ă‚ŻăŞăクă§ćś‰ĺŠąďĽŹç„ˇĺŠąă‚’ĺ‡ă‚Šć›żă -type_label_subdocument=ă•ă¬ăĽă -clearStats_warning=ĺ…¨ă•ィă«ă‚żă®ă’ăăć•°ă‚’ăŞă‚»ăăă—ă€ă’ăăć•°č¨éŚ˛ć©źč˝ă‚’無効化ă—ăľă™ă‹ďĽź -notification_antiadblock_message=ă“ă®ă‚µă‚¤ă㯠Adblock Plus ă¦ăĽă‚¶ăĽă‚’対象ă¨ă—ăźăˇăă‚»ăĽă‚¸ă‚’表示ă™ă‚‹ă“ă¨ă§çźĄă‚‰ă‚Śă¦ă„ăľă™ă€‚Adblock Plus ă§ă“れらă®ăˇăă‚»ăĽă‚¸ă‚’非表示ă«ă—ăľă™ă‹ďĽź -blocked_count_addendum=(ă›ăŻă‚¤ăăŞă‚ąă: ?1?/č¦ç´ 非表示: ?2?) -subscription_invalid_location=購čŞă™ă‚‹ă•ィă«ă‚żă® URL ăŚç„ˇĺŠąă€ă‚‚ă—ăŹăŻä¸ŤćŁăŞă•ァイă«ĺŤă§ă™ă€‚ -type_label_image=ç”»ĺŹ -remove_subscription_warning=本当ă«ă“ă®ă•ィă«ă‚żă®čłĽčŞă‚’削除ă—ăľă™ă‹ďĽź -type_label_other=ăťă®ä»– -mobile_menu_enable=ABP: 有効 -type_label_media=オăĽă‡ă‚Łă‚ŞďĽŹă“ă‡ă‚Ş -mobile_menu_disable_site=ABP: ?1? ă§ç„ˇĺŠą -elemhideGroup_title=č¦ç´ 非表示ă«ăĽă« -mobile_menu_enable_site=ABP: ?1? ă§ćś‰ĺŠą -type_label_elemhide=č¦ç´ 非表示 -newGroup_title=ć–°ă—ă„ă•ィă«ă‚żă‚°ă«ăĽă— -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/overlay.dtd deleted file mode 100644 index 660a2df..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "ăŻă„(&Y)"> -<!ENTITY notification.button.no "ă„ă„ă(&N)"> -<!ENTITY sync.label "Adblock Plus č¨ĺ®šă‚’ Sync ă§ĺŚćśź(&C)"> -<!ENTITY whitelist.site.label "?1? ă§ç„ˇĺŠą"> -<!ENTITY filters.label "ă•ィă«ă‚żč¨ĺ®š(&F)"> -<!ENTITY disable.label "ĺ…¨ăšăĽă‚¸ă§ç„ˇĺŠą"> -<!ENTITY objecttab.title "ă–ăăクă™ă‚‹"> -<!ENTITY objecttab.tooltip "クăŞăクă—ă¦ă‚Şă–ジェクăă‚’ă–ăăク (Adblock Plus)"> -<!ENTITY menuitem.label "Adblock Plus č¨ĺ®š(&B)"> -<!ENTITY objecttabs.label "Flash 㨠Java ă§ă‚żă–を表示(&T)"> -<!ENTITY sendReport.label "ă“ă®ăšăĽă‚¸ă§ă®ä¸Ťĺ…·ĺă‚’ĺ ±ĺ‘Š(&R)"> -<!ENTITY whitelist.page.label "ă“ă®ăšăĽă‚¸ă ă‘無効"> -<!ENTITY context.image.label "Adblock Plus: ç”»ĺŹă‚’ă–ăăク"> -<!ENTITY counthits.label "ă•ィă«ă‚żă®ă’ăăć•°ă‚’ć•°ăă‚‹(&H)"> -<!ENTITY opensidebar.label "ă–ăăク可č˝é …目一覧を開ăŹ(&B)"> -<!ENTITY notification.button.close "é–‰ăă‚‹(&C)"> -<!ENTITY contribute.label "Adblock Plus ă«č˛˘çŚ®ă™ă‚‹"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: ă•ă¬ăĽă ă‚’ă–ăăク"> -<!ENTITY blocked.tooltip "ă“ă®ăšăĽă‚¸ă§ă–ăăクä¸ă®é …ç›®:"> -<!ENTITY hideplaceholders.label "ă–ăăクă—ăźĺ ´ć‰€ă«ć®‹ă‚‹ç©şăŤă‚ąăšăĽă‚ąă‚’č©°ă‚ă‚‹(&L)"> -<!ENTITY showinstatusbar.label "スă†ăĽă‚żă‚ąăăĽă«čˇ¨ç¤ş(&S)"> -<!ENTITY sidebar.title "ă“ă®ăšăĽă‚¸ă®ă–ăăク可č˝é …目一覧"> -<!ENTITY options.label "オă—ă‚·ă§ăł(&O)"> -<!ENTITY context.object.label "Adblock Plus: オă–ジェクăă‚’ă–ăăク"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: ă“ă®ăšăĽă‚¸ă§ćś‰ĺŠąă«ć»ă™"> -<!ENTITY filters.tooltip "有効ăŞă•ィă«ă‚ż:"> -<!ENTITY closesidebar.label "ă–ăăク可č˝é …目一覧を閉ăă‚‹(&B)"> -<!ENTITY showintoolbar.label "ă„ăĽă«ăăĽă«čˇ¨ç¤ş(&B)"> -<!ENTITY status.tooltip "スă†ăĽă‚żă‚ą:"> -<!ENTITY context.media.label "Adblock Plus: オăĽă‡ă‚Łă‚ŞďĽŹă“ă‡ă‚Şă‚’ă–ăăク"> -<!ENTITY subscription.update.label "ă•ィă«ă‚żă‚’ć›´ć–°"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sendReport.dtd deleted file mode 100644 index d8a54eb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "ĺ…ă«ć»ă™(&U)"> -<!ENTITY issues.disabledgroups.description "購čŞă—ă¦ă„る次ă®ă•ィă«ă‚żďĽŹă•ィă«ă‚żă‚°ă«ăĽă—ăŻç„ˇĺŠąă«ăŞăŁă¦ă„ăľă™ăŚă€ă“ă®ăšăĽă‚¸ă«ĺ˝±éźżăŚă‚ăŁăźă‹ă‚‚ă—れăľă›ă‚“:"> -<!ENTITY showData.label "不具ĺĺ ±ĺ‘Šă‡ăĽă‚żă‚’表示"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus ă®ă–ăăクăŚéŽĺ‰° (&M)"> -<!ENTITY issues.change.description "č¨ĺ®šăŚĺ¤‰ć›´ă•れăľă—ăźă€‚確認ă®ăźă‚ă«ăšăĽă‚¸ă‚’再čŞăżčľĽăżă—ă€ă‚‚ă—不具ĺăŚč§Łć±şă—ăŞă‘れă°ä¸Ťĺ…·ĺĺ ±ĺ‘Šă‚’ćŹĺ‡şă—ă¦ăŹă ă•ă„"> -<!ENTITY email.label "Email:(&M)"> -<!ENTITY issues.openPreferences.label "ă•ィă«ă‚żč¨ĺ®šă‚’é–‹ăŹ"> -<!ENTITY sendPage.confirmation "ă‚ăŞăźă®ä¸Ťĺ…·ĺĺ ±ĺ‘ŠăŻäżťĺă•れăľă—ăźă€‚次ă®ă‚˘ă‰ă¬ă‚ąă§ă‚˘ă‚Żă‚»ă‚ąă§ăŤăľă™:"> -<!ENTITY copyLink.label "不具ĺĺ ±ĺ‘Šă®ăŞăłă‚Żă‚’コă”ăĽ(&C)"> -<!ENTITY issues.nofilters.description "Adblock Plus ăŻă“ă®ăšăĽă‚¸ă§ä˝•ă‚‚ă–ăăクă—ă¦ă„ăŞă„ă®ă§ă€ăŠć°—ä»ăŤă®ä¸Ťĺ…·ĺăŻćら㏠Adblock Plus ă¨ăŻé–˘äż‚ă‚りăľă›ă‚“。"> -<!ENTITY sendPage.knownIssue "ćらăŹă€ă‚ăŞăźă®ĺ ±ĺ‘Šă—ăźä¸Ťĺ…·ĺăŻć—˘çźĄă®ĺ•ŹéˇŚă§ă™ă€‚詳細:"> -<!ENTITY typeSelector.other.description "ă•ィă«ă‚żă§ăŻăŞăŹ Adblock Plus 自体ă®ä¸Ťĺ…·ĺăŚç–‘ă‚Źă‚Śă‚‹ĺ ´ĺăŻă“ă®é¸ćŠžč‚˘ă€‚"> -<!ENTITY issues.disabledgroups.enable.label "購čŞă—ă¦ă„ă‚‹ă•ィă«ă‚żďĽŹă•ィă«ă‚żă‚°ă«ăĽă—を有効化"> -<!ENTITY typeWarning.override.label "ç†č§Łă—ăźä¸Šă§ă€ăťă‚Śă§ă‚‚不具ĺĺ ±ĺ‘Šă‚’ćŹĺ‡şă—ăźă„(&S)"> -<!ENTITY issues.disabled.enable.label "Adblock Plus を有効化"> -<!ENTITY update.fixed.description "ĺ ±ĺ‘Šă—ă‚ă†ă¨ă—ă¦ă„ăźä¸Ťĺ…·ĺăŻă€čłĽčŞă—ă¦ă„ă‚‹ă•ィă«ă‚żă®ć›´ć–°ă§č§Łć±şă—ăťă†ă§ă™ă€‚ăšăĽă‚¸ă‚’再čŞăżčľĽăżă—ă¦ĺ†Ťç˘şčŞŤă—ă¦ăżă¦ăŹă ă•ă„。ăťă‚Śă§ă‚‚解決ă—ăŞă„ĺ ´ĺăŻĺ†Ťĺş¦ä¸Ťĺ…·ĺă‚’ĺ ±ĺ‘Šéˇă„ăľă™ă€‚"> -<!ENTITY anonymous.label "匿ĺŤă§ĺ ±ĺ‘Š(&A)"> -<!ENTITY reloadButton.label "ăšăĽă‚¸ă‚’再čŞăżčľĽăż(&R)"> -<!ENTITY recentReports.clear.label "ă™ăąă¦ă®ä¸Ťĺ…·ĺĺ ±ĺ‘Šă‚’ĺ‰Šé™¤(&R)"> -<!ENTITY typeSelector.description "ă“ă®ă‚¦ă‚Łăłă‰ă‚¦ă§ä¸Ťĺ…·ĺă®ĺ ±ĺ‘Šă«ĺż…č¦ăŞă‚ąă†ăă—ă‚’ă”ćˇĺ†…ă—ăľă™ă€‚ăľăšćś€ĺťă«ă€éé‡ă—ăźä¸Ťĺ…·ĺă®ç¨®ĺĄă‚’é¸ćŠžă—ă¦ăŹă ă•ă„:"> -<!ENTITY screenshot.remove.label "機密ć…ĺ ±ç‰ă‚’黒塗りă—ă¦éš ă™(&R)"> -<!ENTITY issues.ownfilters.description "ă“ă®ăšăĽă‚¸ă«ăŻč‡Şä˝śă•ィă«ă‚żăŚé©ç”¨ă•れă¦ă„ăľă™ă€‚ăťă‚ŚăŚä¸Ťĺ…·ĺă®ĺŽźĺ› ă¨ăŞăŁă¦ă„る可č˝ć€§ăŚă‚ă‚‹ă®ă§ă€ăľăšăťă‚Śă‚‰ă‚’無効ă«ă—ă¦ăŹă ă•ă„:"> -<!ENTITY update.inProgress.description "不具ĺăŚč§Łć±şă—ăźă‹ç˘şă‹ă‚ă‚‹ăźă‚ă€Adblock Plus ă§čłĽčŞă—ă¦ă„ă‚‹ă•ィă«ă‚żă‚’ć›´ć–°ă™ă‚‹ĺż…č¦ăŚă‚りăľă™ă€‚ă—ă°ă‚‰ăŹăŠĺľ…ăˇăŹă ă•ă„..."> -<!ENTITY sendPage.retry.label "再é€äżˇ"> -<!ENTITY data.label "不具ĺĺ ±ĺ‘Šă‡ăĽă‚ż:(&P)"> -<!ENTITY recentReports.label "最近é€äżˇă—ăźä¸Ťĺ…·ĺĺ ±ĺ‘Š"> -<!ENTITY typeWarning.description "ă•ィă«ă‚żă«ă¤ă„ă¦ă§ăŻăŞăŹ Adblock Plus ĺ…¨č¬ă®ä¸Ťĺ…·ĺă‚’ĺ ±ĺ‘Šă—ă‚ă†ă¨ă—ă¦ă„ăľă™ă€‚ă“ă®ă‚ă†ăŞä¸Ťĺ…·ĺăŻé€šĺ¸¸ [link]Adblock Plus ă•ă‚©ăĽă©ă [/link] ă§ĺ ±ĺ‘Šă•れă¦ă„ăľă™ă€‚ăľăźă€ä¸Ťĺ…·ĺĺ ±ĺ‘Šă¸ă®ăŞăłă‚Żă‚’自らćŹäľ›ă—ăŞă„é™ă‚Šă•ă‚©ăĽă©ă ă®čŞ°ă‚‚ă‚ăŞăźă®ä¸Ťĺ…·ĺĺ ±ĺ‘Šă®ĺ在ă«ć°—ä»ă‘ăŞă„ă®ă§ă€ć—˘ĺă®č°č«–を補完ă™ă‚‹ăźă‚ă ă‘ă«ä˝żç”¨ă—ă¦ăŹă ă•ă„。不具ĺĺ ±ĺ‘Šă¸ă®ăŞăłă‚ŻăŻă¬ăťăĽăé€äżˇĺľŚă«ćŹäľ›ă•れăľă™ă€‚"> -<!ENTITY issues.disabled.description "Adblock Plus ăŚç„ˇĺŠąăŞă®ă§ă€ä˝•ă‚‚ă–ăăクă•れă¦ă„ăľă›ă‚“"> -<!ENTITY attachExtensions.label "アă‰ă‚Şăłă®ç«¶ĺăŚä¸Ťĺ…·ĺă®ĺŽźĺ› ă§ă‚ă‚‹ĺ ´ĺăŚă‚ă‚‹ă®ă§ă€ĺ‹•作ă—ă¦ă„るアă‰ă‚Şăłă®ăŞă‚ąăを不具ĺĺ ±ĺ‘Šă«ć·»ä»ă™ă‚‹(&X)"> -<!ENTITY issues.nosubscriptions.add.label "購čŞă™ă‚‹ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY issues.disabledfilters.enable.label "ă•ィă«ă‚żă‚’有効化"> -<!ENTITY issues.override.label "č¨ĺ®šă«é–“é•ă„ăŻăŞă‹ăŁăźă®ă§ĺ ±ĺ‘Šă‚’ç¶šă‘ăľă™(&C)"> -<!ENTITY issues.nosubscriptions.description "ウェă–サイăă®ä¸Ťč¦ăŞă‚łăłă†ăłă„を自動削除ă™ă‚‹ă€ć—˘ĺă®ă•ィă«ă‚żă‚’ăľă 購čŞă—ă¦ă„ăŞă„ă‚ă†ă§ă™ă€‚"> -<!ENTITY typeSelector.falsePositive.description "ă‚ă‚‹ăąăŤă‚łăłă†ăłă„ăŚăŞă„ă€čˇ¨ç¤şăŚăŠă‹ă—ă„ă€ă•ィă«ă‚żăŚé©ĺ‡ă«ć©źč˝ă—ă¦ăŞă„ĺ ´ĺăŻă“ă®é¸ćŠžč‚˘ă€‚ (ă’ăłă: Adblock Plus を一時的ă«ç„ˇĺŠąă«ă™ă‚Śă°ă€ĺŽźĺ› ă« Adblock Plus ăŚé–˘ă‚ŹăŁă¦ă„ă‚‹ă‹ç˘şčŞŤă§ăŤăľă™)"> -<!ENTITY typeSelector.other.label "ăťă®ä»–ă®ä¸Ťĺ…·ĺ(&T)"> -<!ENTITY emailComment.label "ĺ ±ĺ‘Šă«ä¸ŤćŽăŞç‚ąăŚă‚ăŁăźéš›ă«é€ŁçµˇăŚĺŹ–ă‚Śă‚‹ă‚ă†ă€ăˇăĽă«ă‚˘ă‰ă¬ă‚ąă®ĺ…ĄĺŠ›ă‚’ăŠĺ‹§ă‚ă—ă¦ă„ăľă™ă€‚ă“ă®ăˇăĽă«ă‚˘ă‰ă¬ă‚ąă«ă‚りă€ĺ ±ĺ‘Šă®ĺŹ—äżˇč€…ăŚĺ ±ĺ‘Šč€…ĺĄă«ă“れăľă§ă®č˛˘çŚ®ă‚’č€ć…®ă—ă€ĺ„Şĺ…度を調整ă§ăŤă‚‹ă‚ă†ă«ăŞă‚Šăľă™ă€‚"> -<!ENTITY issues.whitelist.remove.label "ă“ă®ăšăĽă‚¸ă§ Adblock Plus を再度有効ă«ă™ă‚‹"> -<!ENTITY outdatedSubscriptions.description "購čŞă—ă¦ă„る次ă®ă•ィă«ă‚żăŻďĽ’週間以上更新ă•れă¦ă„ăľă›ă‚“。既ă«ä¸Ťĺ…·ĺăŻč§Łć±şć¸ăżă‹ă‚‚ă—れăŞă„ă®ă§ă€ĺ…ă«ć‰‹ĺ‹•ć›´ć–°ă—ă¦ă‹ă‚‰ä¸Ťĺ…·ĺă‚’ĺ ±ĺ‘Šă—ă¦ăŹă ă•ă„。"> -<!ENTITY dataCollector.description "Adblock Plus ăŚĺż…č¦ăŞă‡ăĽă‚żă‚’集ă‚ă¦ă„ăľă™ă€‚ă—ă°ă‚‰ăŹăŠĺľ…ăˇăŹă ă•ă„。"> -<!ENTITY sendButton.label "不具ĺĺ ±ĺ‘Šă‚’é€äżˇ(&N)"> -<!ENTITY comment.label "コăˇăłă(任意入力):(&C)"> -<!ENTITY sendPage.errorMessage "不具ĺĺ ±ĺ‘Šă®é€äżˇăŚă‚¨ă©ăĽă‚łăĽă‰ "?1?" ă§ĺ¤±ć•—ă—ăľă—ăźă€‚イăłă‚żăĽăŤăăă«ćŽĄç¶šă•れă¦ă„ă‚‹ă‹ç˘şčŞŤă—再試行ă—ă¦ăŹă ă•ă„。問題ăŚč§Łć±şă—ăŞă„ĺ ´ĺ㯠[link]Adblock Plus ă•ă‚©ăĽă©ă [/link] ă§ĺŠ©ă‘を求ă‚ă¦ăŹă ă•ă„。"> -<!ENTITY showRecentReports.label "最近é€äżˇă—ăźä¸Ťĺ…·ĺĺ ±ĺ‘Šă‚’čˇ¨ç¤ş"> -<!ENTITY commentPage.heading "コăˇăłăを入力"> -<!ENTITY update.start.label "今ă™ăć›´ć–°"> -<!ENTITY issues.disabledfilters.description "次ă®ă•ィă«ă‚żăŻç„ˇĺŠąă«ăŞăŁă¦ă„ăľă™ăŚă€ă“ă®ăšăĽă‚¸ă«ĺ˝±éźżăŚă‚ăŁăźă‹ă‚‚ă—れăľă›ă‚“:"> -<!ENTITY screenshot.description "ĺŚăăšăĽă‚¸ă§ă‚‚ĺĄă®äşşă«ăŻç•°ăŞăŁă¦čˇ¨ç¤şă•れるă“ă¨ăŚă‚ă‚‹ă®ă§ă€ă‚ąă‚ŻăŞăĽăłă‚·ă§ăăć·»ä»ăŻä¸Ťĺ…·ĺă‚’ç†č§Łă™ă‚‹ĺŠ©ă‘ă¨ăŞă‚Šăľă™ă€‚ăśă‚żăłă‚’クăŞăクă—ă¦ă‹ă‚‰ă‚ąă‚ŻăŞăĽăłă‚·ă§ăă上ă§ă‰ă©ăă‚°ă™ă‚‹ă“ă¨ă§ă€ä¸Ťĺ…·ĺ箇所ă«ĺŤ°ă‚’ă¤ă‘ăźă‚Šĺ€‹äşşć…ĺ ±ă‚’éš ă™ă“ă¨ăŚă§ăŤăľă™ă€‚"> -<!ENTITY screenshot.attach.label "不具ĺĺ ±ĺ‘Šă«ă‚ąă‚ŻăŞăĽăłă‚·ă§ăăă‚’ć·»ä»(&T)"> -<!ENTITY issues.whitelist.description "ĺ ±ĺ‘Šă—ă‚ă†ă¨ă—ă¦ă„ă‚‹ăšăĽă‚¸ă§ Adblock Plus ăŚç„ˇĺŠąă«ăŞăŁă¦ă„ăľă™ă€‚調査ă®ĺ¦¨ă’ă«ăŞă‚‹ă®ă§ Adblock Plus を有効ă«ć»ă—ă€ĺ†ŤčŞăżčľĽăżă—ă¦ă‹ă‚‰ä¸Ťĺ…·ĺĺ ±ĺ‘Šă‚’ä˝śćă—ă¦ăŹă ă•ă„。"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus ăŚĺşĺ‘Šă‚’ă–ăăクă—ă¦ă„ăŞă„(&V)"> -<!ENTITY typeSelector.heading "不具ĺ種ĺĄă‚’é¸ćŠž"> -<!ENTITY anonymity.warning "匿ĺŤă§ĺ ±ĺ‘Šă®éš›ăŻĺ ±ĺ‘Šč€…を個ĺĄă«čĺĄă§ăŤăŞă„ă®ă§ĺ„Şĺ…度ăŚä¸‹ăŚă‚Šăľă™ă€‚"> -<!ENTITY wizard.title "不具ĺĺ ±ĺ‘Š"> -<!ENTITY issues.ownfilters.disable.label "ă•ィă«ă‚żă‚’無効化"> -<!ENTITY commentPage.description "コăˇăłăăŚă‚ă‚‹ă¨ä¸Ťĺ…·ĺă‚’ç†č§Łă™ă‚‹ă®ă«ĺŠ©ă‹ă‚Šăľă™ďĽç—‡çжă€ĺ†ŤçŹľć‰‹é †ă€ĺŽźĺ› ă‚’ç‰ąĺ®šă—ăźć ąć‹ ă€ä¸Ťĺ…·ĺ発生開始時期ă€ćŁĺ¸¸ĺ‹•作ă¨ă®é•ă„ă€ä¸Ťĺ…·ĺç™şç”źĺ ´ć‰€ďĽ‰ă€‚ĺ ±ĺ‘Šă™ă‚‹ă‡ăĽă‚żăŻé€äżˇĺ‰Ťă«ĺ†Ťć¤śč¨Žă§ăŤăľă™ă€‚"> -<!ENTITY comment.lengthWarning "コăˇăłă㌠1000 ć–‡ĺ—ă‚’č¶…ăă¦ă„ă‚‹ă®ă§ă€ĺ…é ă‹ă‚‰ 1000 ć–‡ĺ—ă ă‘é€äżˇă—ăľă™"> -<!ENTITY typeSelector.falseNegative.description "Adblock Plus ăŚćś‰ĺŠąă§ă‚‚ĺşĺ‘ŠăŚčˇ¨ç¤şă•ă‚Śă‚‹ĺ ´ĺăŻă“ă®é¸ćŠžč‚˘ă€‚"> -<!ENTITY sendPage.waitMessage "Adblock Plus ăŚä¸Ťĺ…·ĺĺ ±ĺ‘Šă‚’é€äżˇă™ă‚‹é–“ă€ă—ă°ă‚‰ăŹăŠĺľ…ăˇăŹă ă•ă„"> -<!ENTITY dataCollector.heading "不具ĺĺ ±ĺ‘Šă¸ă‚ă†ă“ăť"> -<!ENTITY screenshot.heading "スクăŞăĽăłă‚·ă§ăăă‚’ć·»ä»"> -<!ENTITY sendPage.heading "不具ĺĺ ±ĺ‘Šă‚’é€äżˇ"> -<!ENTITY issues.subscriptionCount.description "購čŞă—ă¦ă„ă‚‹ă•ィă«ă‚żăŚĺ¤šéŽăŽă§ă™ă€‚ă“ă®ă‚ă†ăŞč¨ĺ®šăŻĺ•ŹéˇŚč§Łć±şă‚’難ă—ăŹă™ă‚‹ă®ă§ćŽ¨ĺĄ¨ă•れăľă›ă‚“。ăľăźă€ă©ă®ă•ィă«ă‚żä˝śč€…ăŚă“ă®ä¸Ťĺ…·ĺă«ĺŻľĺ‡¦ă™ăąăŤă‹ä¸ŤćŽăŞă®ă§ă¬ăťăĽăを受ç†ă§ăŤăľă›ă‚“。本当ă«ĺż…č¦ăŞă•ィă«ă‚żä»Ąĺ¤–を削除ă—ă€ä¸Ťĺ…·ĺăŚĺ†ŤçŹľă™ă‚‹ă‹ç˘şčŞŤéˇă„ăľă™ă€‚"> -<!ENTITY screenshot.mark.label "不具ĺ箇所ă«ĺŤ°ă‚’ă¤ă‘ă‚‹(&M)"> -<!ENTITY privacyPolicy.label "ă—ă©ă‚¤ăă‚·ăĽă»ăťăŞă‚·ăĽ"> -<!ENTITY issues.description "Adblock Plus ăŻă“ă®ä¸Ťĺ…·ĺă«é–˘äż‚ă€ă‚‚ă—ăŹăŻčŞżćź»ă‚’ĺ›°é›Łă«ă—ă¦ă„ă‚‹č¨ĺ®šă‚’発見ă—ăľă—ăźă€‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sidebar.dtd deleted file mode 100644 index 2d4fd84..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "ăśăĽă€ăĽă‚’点滅"> -<!ENTITY address.label "アă‰ă¬ă‚ą"> -<!ENTITY context.open.label "新規タă–ă§é–‹ăŹ"> -<!ENTITY type.label "種ĺĄ"> -<!ENTITY tooltip.filterSource.label "ă•ィă«ă‚żĺ¸°ĺ±ž:"> -<!ENTITY noitems.label "ă–ăăク可č˝é …ç›®ăŻă‚りăľă›ă‚“"> -<!ENTITY filter.label "ă•ィă«ă‚ż"> -<!ENTITY tooltip.size.label "サイズ:"> -<!ENTITY reattach.label "ウィăłă‰ă‚¦ĺ†…表示"> -<!ENTITY search.label "検索:(&S)"> -<!ENTITY docDomain.thirdParty "(サăĽă‰ă‘ăĽă†ă‚Ł)"> -<!ENTITY filterSource.label "ă•ィă«ă‚żĺ¸°ĺ±ž"> -<!ENTITY tooltip.docDomain.label "ă‰ă‚ăĄăˇăłă帰属:"> -<!ENTITY context.copy.label "アă‰ă¬ă‚ąă‚’コă”ăĽ"> -<!ENTITY tooltip.type.label "種ĺĄ:"> -<!ENTITY context.disablefilter.label "ă•ィă«ă‚ż ?1? を無効化"> -<!ENTITY context.copyFilter.label "ă•ィă«ă‚żă‚’コă”ăĽ"> -<!ENTITY context.block.label "ă“ă®é …目をă–ăăク"> -<!ENTITY context.enablefilter.label "再度ă•ィă«ă‚ż ?1? を有効化"> -<!ENTITY detach.label "ĺĄă‚¦ă‚Łăłă‰ă‚¦čˇ¨ç¤ş"> -<!ENTITY whitelisted.label "ă›ăŻă‚¤ăăŞă‚ąăă•れăźăšăĽă‚¸"> -<!ENTITY context.disablefilteronsite.label "ă•ィă«ă‚żă‚’ ?1? ă§ç„ˇĺŠąĺŚ–"> -<!ENTITY detached.title "Adblock Plus: ă–ăăク可č˝é …目一覧 (ĺĄă‚¦ă‚Łăłă‰ă‚¦čˇ¨ç¤şä¸)"> -<!ENTITY docDomain.firstParty "(ă•ァăĽă‚ąăă‘ăĽă†ă‚Ł)"> -<!ENTITY tooltip.type.whitelisted "(ă›ăŻă‚¤ăăŞă‚ąăä¸)"> -<!ENTITY tooltip.filter.label "é©ç”¨ä¸ă®ă•ィă«ă‚ż:"> -<!ENTITY tooltip.filter.disabled "(無効ä¸)"> -<!ENTITY context.editfilter.label "ă•ィă«ă‚żă‚’編集"> -<!ENTITY tooltip.type.blocked "(ă–ăăクä¸)"> -<!ENTITY size.label "サイズ"> -<!ENTITY context.whitelist.label "ă“ă®é …目用ă®ă›ăŻă‚¤ăăŞă‚ąăă‚’čż˝ĺŠ "> -<!ENTITY context.selectAll.label "ă™ăąă¦é¸ćŠž"> -<!ENTITY state.label "状態"> -<!ENTITY docDomain.label "ă‰ă‚ăĄăˇăłă帰属"> -<!ENTITY tooltip.address.label "アă‰ă¬ă‚ą:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/subscriptionSelection.dtd deleted file mode 100644 index 0595ef8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ja/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label ""?1?" ă‚‚čż˝ĺŠ ă™ă‚‹(&S)"> -<!ENTITY list.download.failed "Adblock Plus ăŻčłĽčŞç”¨ă•ィă«ă‚żä¸€č¦§ă®ĺŹ–ĺľ—ă«ĺ¤±ć•—ă—ăľă—ăźă€‚"> -<!ENTITY list.download.retry "再試行"> -<!ENTITY title.label "購čŞă™ă‚‹ă•ィă«ă‚żă®ĺŤç§°:(&T)"> -<!ENTITY list.download.website "ウェă–サイăを参照"> -<!ENTITY supplementMessage "ă“ă®ă•ィă«ă‚żăŻ "?1?" ă¨ä˝µç”¨ă™ă‚‹ă“ă¨ăŚĺ‰ŤćŹă«ăŞăŁă¦ă„ăľă™ă€‚"> -<!ENTITY viewList.label "ă•ィă«ă‚żă•ァイă«ă‚’é–‹ă„ă¦ç˘şčŞŤ"> -<!ENTITY visitHomepage.label "作者ă®ăšăĽă‚¸ă‚’é–‹ăŹ"> -<!ENTITY addSubscription.label "購čŞă™ă‚‹ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY dialog.title "購čŞă™ă‚‹ Adblock Plus 用ă•ィă«ă‚żă‚’čż˝ĺŠ "> -<!ENTITY location.label "購čŞă™ă‚‹ă•ィă«ă‚żă®ĺ ´ć‰€:(&L)"> -<!ENTITY fromWeb.description "購čŞă™ă‚‹ă•ィă«ă‚żă‚’確認ă—ă¦ăŹă ă•ă„ă€‚čż˝ĺŠ ĺ‰Ťă«ĺŤç§°ă¨ĺ ´ć‰€ă‚’変更ă§ăŤăľă™ă€‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/composer.dtd deleted file mode 100644 index f22d365..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "Đ°Đ´Ń€ĐµŃ Ńоң&ында"> -<!ENTITY domainRestriction.label "Доменмен Ńек&теŃ:"> -<!ENTITY collapse.default.no.label "БаŃтапқыŃын Ň›ĐľĐ»Đ´Đ°Đ˝Ń (жоқ)"> -<!ENTITY firstParty.label "Тек Ńол Ńайт Ó©Đ· құрамаŃŃ‹ ŇŻ&ŃŃ–Đ˝"> -<!ENTITY preferences.label "Бар фильтрлерді &ĐşÓ©Ń€ŃетŃ..."> -<!ENTITY pattern.label "Шаблон"> -<!ENTITY thirdParty.label "Тек б&аŃқа Ńайт құрамаŃŃ‹ ŇŻŃŃ–Đ˝"> -<!ENTITY filter.label "Жаңа &фильтр:"> -<!ENTITY collapse.label "Блокталған құраманы &жинаŃ:"> -<!ENTITY match.warning "Сіз енгізген Ńаблон енді блокталатын не блокталмайтын адреŃке ŃÓ™ĐąĐşĐµŃ ĐşĐµĐ»ĐĽĐµĐąĐ´Ń–, Ńол ŇŻŃŃ–Đ˝ оның Ó™Ńері жоқ."> -<!ENTITY anchor.start.label "а&Đ´Ń€ĐµŃ Đ±Đ°Ńында"> -<!ENTITY matchCase.label "&РегиŃтрді еŃкерŃ"> -<!ENTITY custom.pattern.label "Ó¨&Đ·Ń–ŇŁŃ–Đ·Đ´Ń–ŇŁ:"> -<!ENTITY unselectAllTypes.label "ЕрекŃелеŃĐ´Ń– таŃтаŃ"> -<!ENTITY type.whitelist.label "&ЕрекŃе ереже"> -<!ENTITY regexp.warning "Сіз енгізген Ńаблон, регŃлярлы өрнек ретінде өңделеді. ĐžŃындай Ńаблондардың ĐşÓ©Đż Ńаны браŃзеріңіздің жұмыŃын тежей алады. РегŃлярлы өрнекті қолданғыңыз келмеŃе, Ńаблон Ńоңына жұлдызŃаны қоŃыңыз."> -<!ENTITY dialog.title "Adblock Plus фильтр ережеŃŃ–Đ˝ қоŃŃ"> -<!ENTITY basic.label "Негізгі көрініŃŃ–"> -<!ENTITY type.filter.label "&БлоктаŃŃŃ‹ фильтр"> -<!ENTITY types.label "ŇšĐľĐ»Đ´Đ°Đ˝Ń ŇŻŃŃ–Đ˝ құрама түрі:"> -<!ENTITY shortpattern.warning "Сіз енгізген оптимизация ŇŻŃŃ–Đ˝ тым қыŃқа, ĐľŃындай Ńаблондардың ĐşÓ©Đż Ńаны браŃзеріңіздің жұмыŃын тежей алады. ĐžŃŃ‹ фильтр ŇŻŃŃ–Đ˝ ұзынырақ Ńаблонды Ň›ĐľĐ»Đ´Đ°Đ˝Ń Ň±Ńынылады."> -<!ENTITY collapse.yes.label "ĐÓ™"> -<!ENTITY anchors.label "Шаблонды тек келеŃіде қолданŃ:"> -<!ENTITY collapse.default.yes.label "БаŃтапқыŃын Ň›ĐľĐ»Đ´Đ°Đ˝Ń (иә)"> -<!ENTITY domainRestriction.help "Бір немеŃе "|" таңбаŃымен ажыратылған бірнеŃе доменді ĐşÓ©Ń€Ńетіңіз, фильтр тек ĐľŃŃ‹ домендер ŇŻŃŃ–Đ˝ орындалады. Домен атының алдыңдағы "~" таңбаŃŃ‹ ĐľŃŃ‹ доменде фильтр орындалмайтынын ĐşÓ©Ń€Ńетеді."> -<!ENTITY accept.label "Фильтрді қоŃŃ"> -<!ENTITY options.label "БаптаŃлар"> -<!ENTITY disabled.warning "Adblock Plus қазір ŃөндірŃлі. Фильтрлерді қазір де қоŃа алаŃыз, бірақ олар Đ¶Ň±ĐĽŃ‹Ń Ń–Ńтемейді, ŃŃ–Đ· [link]Adblock Plus қоŃқанға дейін[/link]."> -<!ENTITY anchor.start.flexible.label "&домен атынын баŃында"> -<!ENTITY collapse.no.label "Жоқ"> -<!ENTITY selectAllTypes.label "Барлығын ерекŃелеŃ"> -<!ENTITY advanced.label "Кеңейтілген көрініŃŃ–"> -<!ENTITY pattern.explanation "Шаблон адреŃтің кез-келген бөлігі бола алады, мұндағы жұлдызŃа (*) таңбалардың кез-келген Ńанын белгілейді. Фильтр тек оған ŃÓ™ĐąĐşĐµŃ ĐşĐµĐ»ĐµŃ‚Ń–Đ˝ адреŃтер ŇŻŃŃ–Đ˝ қолданылады."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/filters.dtd deleted file mode 100644 index cf794ce..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Сіздің барлық пайдаланŃŃŃ‹ фильтрлер баптаŃлары таңдалған файлдың құрамаŃымен алмаŃтырылады. ЖалғаŃтырŃĐ´Ń‹ қалайŃыз ба?"> -<!ENTITY slow.column "Đ‘Đ°ŃŹŃ Ń„Đ¸Đ»&ьтрлер"> -<!ENTITY enabled.column "ҚоŃŃ&лы"> -<!ENTITY subscription.lastDownload.checksumMismatch "Қате, текŃĐµŃ€Ń ŃомаŃŃ‹ ŃÓ™ĐąĐşĐµŃ ĐµĐĽĐµŃ"> -<!ENTITY noFiltersInGroup.text "Таңдалған топ боŃ."> -<!ENTITY subscription.actions.label "Óрекеттер"> -<!ENTITY filter.selectAll.label "Барлығын таңдаŃ"> -<!ENTITY backupButton.label "ĐˇĐ°Ň›Ń‚Đ°Ń ĐĽĐµĐ˝ қал&пына келтірŃ"> -<!ENTITY restore.minVersion.warning "Đ•ŃкертŃ: Файл Đ¶Đ°ŇŁĐ°Đ»Đ°Ń Adblock Plus нұŃқаŃымен жаŃалған. Бұл файлдан қалпына ĐşĐµĐ»Ń‚Ń–Ń€Ń ŇŻŃŃ–Đ˝ Ńізге Adblock Plus-тың Ńоңғы нұŃқаŃын ĐľŃ€Đ˝Đ°Ń‚Ń ĐşĐµŃ€ĐµĐş."> -<!ENTITY restore.error "Файл мәліметін Ó©ŇŁĐ´ĐµŃ ĐĽŇŻĐĽĐşŃ–Đ˝ емеŃ, мүмкін ол Adblock Plus-тің ĐşÓ©Ńірме файлы ĐµĐĽĐµŃ Ńығар?"> -<!ENTITY sort.ascending.label "&Đ > ĐŻ ŃұрыптаŃ"> -<!ENTITY sort.label "&СұрыптаŃ"> -<!ENTITY subscription.source.label "Фильтлер тізімі"> -<!ENTITY hitcount.column "ĐĄ&иттер"> -<!ENTITY noFilters.text "Сізде әлі пайдаланŃŃŃ‹ фильтрлері жоқ."> -<!ENTITY backup.custom.title "Тек пайланŃŃŃ‹ фильтрлері"> -<!ENTITY subscription.external.label "БаŃқа кеңейтŃмен жаңартылған"> -<!ENTITY subscription.delete.label "Ó¨ŃŃ–Ń€Ń"> -<!ENTITY noGroupSelected.text "Đлдымен фильтрлер тобын таңдаңыз, кейін ғана оның фильтрлері ĐşÓ©Ń€Ńетіледі."> -<!ENTITY filter.cut.label "Қиып алŃ"> -<!ENTITY restore.default.label "ĐšÓ©Ńірмені қалпына ĐşĐµĐ»Ń‚Ń–Ń€Ń ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ЖүктелŃде..."> -<!ENTITY subscriptions.tab.label "Фильтрлерге жазылŃлар"> -<!ENTITY sort.descending.label "&ĐŻ > Đ ŃұрыптаŃ"> -<!ENTITY filters.remove.warning "Таңдалған фильтрлердің барлығын Ó©ŃŃ–Ń€Ń ĐşĐµŃ€ĐµĐş пе?"> -<!ENTITY filter.delete.label "Жою"> -<!ENTITY addSubscriptionAdd.label "ҚоŃŃ"> -<!ENTITY viewMenu.label "Түрі"> -<!ENTITY subscription.lastDownload.unknown "Đ•ŃқаŃан"> -<!ENTITY addSubscriptionCancel.label "Đ‘Đ°Ń Ń‚Đ°Ń€Ń‚Ń"> -<!ENTITY subscription.enabled.label "ІŃке қоŃŃлы"> -<!ENTITY noSubscriptions.text "Сіз әлі фильтрге жазылŃларды қоŃқан жоқŃыз. ФильтрлерŃŃ–Đ· - Adblock Plus еŃнәрŃені блоктамайды, оларды қоŃŃ ŇŻŃŃ–Đ˝ - "Фильтрге жазылŃĐ´Ń‹ қоŃŃ" қолданыңыз."> -<!ENTITY subscription.update.label "Фильтрлерді жаңартŃ"> -<!ENTITY dialog.title "Adblock Plus фильтр баптаŃлары"> -<!ENTITY addFilter.label "Фильтрді қо&ŃŃ"> -<!ENTITY subscription.minVersion.warning "Бұл фильтрге Đ¶Đ°Đ·Ń‹Đ»Ń Adblock Plus-тің жаңа нұŃқаŃын талап етеді, оңы жаңартыңыз."> -<!ENTITY subscription.lastDownload.invalidURL "Қате, Đ´Ň±Ń€Ń‹Ń Đ°Đ´Ń€ĐµŃ ĐµĐĽĐµŃ"> -<!ENTITY backup.error "Фильтрлерді файлға Đ¶Đ°Đ·Ń ĐşĐµĐ·Ń–Đ˝Đ´Đµ қате орын алды. Файл Đ¶Đ°Đ·Ń ŇŻŃŃ–Đ˝ қолжетерлік және баŃқа қолданбаның қолданыŃында болмағанына ĐşÓ©Đ· жеткізіңіз."> -<!ENTITY filter.moveUp.label "Жоғары жылжытŃ"> -<!ENTITY addGroup.label "Фильтрлер тоб&ын қоŃŃ"> -<!ENTITY filter.edit.label "ТүзетŃ"> -<!ENTITY subscription.showHideFilters.label "Фильтрлерді ĐşÓ©Ń€ŃетŃ/жаŃырŃ"> -<!ENTITY acceptableAds2.label "Зиянке&Ń ĐµĐĽĐµŃ ĐşĐµĐąĐ±Ń–Ń€ жарнаманы Ń–Ńке қоŃŃ"> -<!ENTITY addSubscriptionOther.label "БаŃқа жазылŃĐ´Ń‹ қоŃŃ"> -<!ENTITY close.label "ЖабŃ"> -<!ENTITY sort.none.label "СұрыптаŃŃŃ‹&Đ·"> -<!ENTITY filter.actions.label "Фильтр әрекеттері"> -<!ENTITY filter.copy.label "ĐšÓ©ŃŃ–Ń€Ń"> -<!ENTITY filter.moveDown.label "Төмен жылжытŃ"> -<!ENTITY filter.resetHitCounts.label "Хит ŃтатиŃтикаŃын таŃтаŃ"> -<!ENTITY readMore.label "Көбірек оқŃ"> -<!ENTITY subscription.moveUp.label "Жоғары жылжытŃ"> -<!ENTITY addSubscription.label "Фильтрге жазыл&ŃĐ´Ń‹ қоŃŃ"> -<!ENTITY subscription.homepage.label "Үй парағы"> -<!ENTITY backup.complete.title "Фильтрлер мен жазылŃларды қоŃŃ"> -<!ENTITY restore.own.label "Өз ĐşÓ©Ńірмені қалпына келтірŃ"> -<!ENTITY restore.complete.warning "Сіздің барлық фильтрлер баптаŃлары таңдалған файлдың құрамаŃымен алмаŃтырылады. ЖалғаŃтырŃĐ´Ń‹ қалайŃыз ба?"> -<!ENTITY filters.tab.label "ПайдаланŃŃŃ‹ фильтрлері"> -<!ENTITY backup.label "Жаңа ĐşÓ©Ńірмені жаŃаŃ"> -<!ENTITY find.label "І&здеŃ"> -<!ENTITY subscription.moveDown.label "Төмен жылжытŃ"> -<!ENTITY subscription.lastDownload.connectionError "Қате, Đ¶ŇŻĐşŃ‚ĐµŃ ĐĽŇŻĐĽĐşŃ–Đ˝ емеŃ"> -<!ENTITY subscription.lastDownload.success "Сәтті аяқталды"> -<!ENTITY subscription.lastDownload.invalidData "Қате, Đ´Ň±Ń€Ń‹Ń Ńүзгілер файлы емеŃ"> -<!ENTITY filter.paste.label "КіріŃтірŃ"> -<!ENTITY subscription.disabledFilters.enable "СөндірŃлі фильтрлерді Ń–Ńке қоŃŃ"> -<!ENTITY lasthit.column "Соңғ&Ń‹ хит"> -<!ENTITY subscription.editTitle.label "ĐтаŃын түзетŃ"> -<!ENTITY subscription.disabledFilters.warning "Бұл жазылŃдағы кейбір фильтрлер ŃөндірŃлі."> -<!ENTITY filter.column "Фильтр &ережеŃŃ–:"> -<!ENTITY subscription.lastDownload.label "Соңғы жаңартŃ:"> -<!ENTITY viewList.label "Тізімді ĐşÓ©Ń€Ń"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/firstRun.properties deleted file mode 100644 index fac03ce..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=БақылаŃĐ´Ń‹ ŃÓ©Đ˝Đ´Ń–Ń€Ń Đ°Ń€Ň›Ń‹Đ»Ń‹ ŃолŃĐ´Ń‹ жеке қылыңыз - ŃŃ–Đ·Đ´Ń–ŇŁ әр қимылыңызды бақылайтын жарнамалық компаниялардан Ń–Đ·Ń–ŇŁŃ–Đ·Đ´Ń– жаŃŃ‹Ń€Ń Đ°Ń€Ň›Ń‹Đ»Ń‹. -firstRun_toggle_off=OFF -firstRun_feature_tracking=БақылаŃĐ´Ń‹ ŃÓ©Đ˝Đ´Ń–Ń€Ń -firstRun_feature_malware=Đ—Đ¸ŃŹĐ˝ĐşĐµŃ Đ±Đ°Ň“Đ´Đ°Ń€Đ»Đ°ĐĽĐ°Đ»Đ°Ń€Đ´Ń‹ Đ±Đ»ĐľĐşŃ‚Đ°Ń -firstRun_title=Adblock Plus орнатылды -firstRun_toggle_on=ON -firstRun_acceptableAdsExplanation=Біз вебŃайттарды Ń‚Ńра, мазаңызды алмайтын жарнаманы қолданŃын қалаймыз. Сондықтан біз жарамды жарнаманы анықтаŃдың <a>қатаң нұŃқаŃлығын</a> орнаттық, ол жарнамма баŃтапқы баптаŃлармен ĐşÓ©Ń€Ńетілетін болады. Егер ŃŃ–Đ· Ńонда да барлық жарнаманы <a>блоктағыңыз</a> келŃе, ĐľŃыны тез арада Ńөндіре алаŃыз. -firstRun_contributor_credits=Ň®Đ»ĐµŃ Ň›ĐľŃқандар -firstRun_dataCorruptionWarning=Бұл парақ ĐşÓ©Ń€Ńетіле бере ме? <a>ĐžŃында Ńертіңіз!</a> -firstRun_acceptableAdsHeadline=Мазаңызды алатын жарнама блокталатын болады -firstRun_share=ДоŃтарыңызға айтыңыз -firstRun_share_headline=Đнтернетті жақŃырақ Ň›Ń‹Đ»Ń ŇŻŃŃ–Đ˝ <a>бізге көмек қолын Ńозыңыз</a> -firstRun_feature_social_description=Đнтернетті ŃолŃĐ´Ń‹ әлеŃметтік желілер батырмаларынан Ň›Ň±Ń‚Ń‹Đ»Ń Đ°Ń€Ň›Ń‹Đ»Ń‹ жақŃартыңыз, ол батырмалар, Facebook Like Ńияқты, веб парақтарда ĐşÓ©Ń€Ńетіледі және ŃŃ–Đ·Đ´Ń–ŇŁ жұмыŃыңызды бақылайды. -firstRun_filterlistsReinitializedWarning=Қандай да бір ĐĽÓ™Ńеле Ńалдарынан барлық Ńүзгілер Ó©Ńіріліп, біз оларды қор ĐşÓ©Ńірмеден қалпына келтіре алмайтын Ńияқтымыз. Сондықтан, барлық Ńүзгілер Ó©Ńіріледі және жарамды жарнама баптаŃлары Ń–Ńке аŃырылады. Өзіңіздің Ńүзгілер тізімін және жарамды жарнама баптаŃларын <a>Adblock Plus баптаŃларында</a> текŃеріңіз. -firstRun_feature_malware_description=Đнтернетті ŃолŃĐ´Ń‹ кейбір белгілі Đ·Đ¸ŃŹĐ˝ĐşĐµŃ Đ´ĐľĐĽĐµĐ˝Đ´ĐµŃ€Đ´Ń– Đ±Đ»ĐľĐşŃ‚Đ°Ń Đ°Ń€Ň›Ń‹Đ»Ń‹ қаŃŃ–ĐżŃŃ–Đ·Đ´ĐµŃ Ň›Ń‹Đ»Ń‹ŇŁŃ‹Đ·. -firstRun_features=Adblock Plus тек жарнаманы блоктаŃдан баŃқа көбірек нәрŃені Ń–Ńтей алады -firstRun_donate=ақŃалай көмектеŃŃ -firstRun_donate_label=Жобамызды қолдаңыз -firstRun_feature_social=ÓлеŃметтік Ńайттар батырмаларын алып таŃŃ‚Đ°Ń -firstRun_legacySafariWarning=Сіз қолданып отырған Safari нұŃқаŃŃ‹ еŃкі, және оны Adblock Plus қолдамайды. Ол Đ´Ň±Ń€Ń‹Ń Đ¶Ň±ĐĽŃ‹Ń Đ¶Đ°ŃамаŃŃ‹ мүмкін, немеŃе кейбір вебŃайттарда пайдаланŃŃŃ‹ жұмыŃын наŃĐ°Ń€Đ»Đ°Ń Ň›Ń‹Đ»ŃŃ‹ мүмкін. Біз қатаң түрде Safari нұŃқаŃŃ‹ 6.1.1 не одан Đ¶Đ°ŇŁĐ°Đ»Đ°Ń (OS X 10.8 Mountain Lion жүйеŃінде), немеŃе Safari нұŃқаŃŃ‹ 7.0.1 не одан Đ¶Đ°ŇŁĐ°Đ»Đ°Ń (OS X 10.9 Mavericks жүйеŃінде) дейін жаңартŃĐ´Ń‹ ұŃынамыз, немеŃе Mozilla Firefox, Google Chrome не Opera браŃзерлерінің Ńоңғы нұŃқаларын қолданŃĐ´Ń‹ ұŃынамыз. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/global.properties deleted file mode 100644 index dae6af2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Đғымдағы парақта блоктаŃға болатын құрама жоқ -action3_tooltip=Adblock Plus қоŃŃ/ŃÓ©Đ˝Đ´Ń–Ń€Ń ŇŻŃŃ–Đ˝ Ńертіңіз. -notification_antiadblock_title=МақŃатталған хабарламаларды жаŃŃ‹Ń€Ń ĐşĐµŃ€ĐµĐş пе? -type_label_script=Скрипт -filter_elemhide_nocriteria=Đлементті жаŃŃ‹Ń€Ń ŇŻŃŃ–Đ˝ бірде-бір Ńарт анықталмады -blockingGroup_title=Жарнаманы Đ±Đ»ĐľĐşŃ‚Đ°Ń ĐµŃ€ĐµĐ¶ĐµĐ»ĐµŃ€Ń– -whitelisted_tooltip=Adblock Plus қоŃŃлы, бірақ ĐľŃŃ‹ парақ ŇŻŃŃ–Đ˝ ŃөндірŃлі. -type_label_stylesheet=Стильдер кеŃтеŃŃ– -blocked_count_tooltip=?1? келеŃіден ?2? -type_label_font=қаріп -type_label_popup=атып Ńығатын терезе -filter_regexp_tooltip=Бұл Ńүзгі не регŃлярлы өрнек, не оптимизация ŇŻŃŃ–Đ˝ тым қыŃқа. ĐžŃындай Ńүзгілер ĐşÓ©Đż болŃа, браŃзеріңіздің жұмыŃын Ń‚ĐµĐ¶ĐµŃ ĐĽŇŻĐĽĐşŃ–Đ˝. -action0_tooltip=КонтекŃті мәзірін аŃŃ ŇŻŃŃ–Đ˝ Ńертіңіз, тыŃқанның орта батырмаŃŃ‹ - қоŃŃ/ŃÓ©Đ˝Đ´Ń–Ń€Ń ŇŻŃŃ–Đ˝. -whitelisted_page=Adblock Plus ағымдағы парақ ŇŻŃŃ–Đ˝ ŃөндірŃлі тұр -remove_group_warning=Бұл топты Ó©ŃŃ–Ń€ŃĐ´Ń– Ńынымен қалайŃыз ба? -action1_tooltip=Блокталған құраманы аŃŃ/Đ¶Đ°Đ±Ń ŇŻŃŃ–Đ˝ Ńертіңіз, тыŃқанның орта батырмаŃŃ‹ - қоŃŃ/ŃÓ©Đ˝Đ´Ń–Ń€Ń ŇŻŃŃ–Đ˝. -type_label_xmlhttprequest=XML-Ńұранымы -active_tooltip=Adblock Plus қоŃŃлы тұр, ?1? Ńүзгілерге Đ¶Đ°Đ·Ń‹Đ»Ń ĐĽĐµĐ˝ ?2? пайдаланŃŃŃ‹ Ńүзгілері қолданылŃда. -type_label_document=Құжат -type_label_object_subrequest=объект Ńұранымы -whitelistGroup_title=Ережеден Ń‚Ń‹Ń -disabled_tooltip=Adblock Plus ŃөндірŃлі тұр. -filter_elemhide_duplicate_id=ЖаŃыралатын элементтің идентификаторы тек Đ±Ń–Ń€ĐµŃ Đ±ĐľĐ»Ń ĐşĐµŃ€ĐµĐş. -type_label_object=Объект -action2_tooltip=БаптаŃларды аŃŃ ŇŻŃŃ–Đ˝ Ńертіңіз, тыŃқанның орта батырмаŃŃ‹ - қоŃŃ/ŃÓ©Đ˝Đ´Ń–Ń€Ń ŇŻŃŃ–Đ˝. -type_label_subdocument=Фрейм -clearStats_warning=Бұл әрекет барлық фильтрлерді хит ŃтатиŃтикаŃын таŃтап, фильтр хиттерін ŃанаŃĐ´Ń‹ Ńөндіреді. ЖалғаŃтырŃĐ´Ń‹ қалайŃыз ба? -notification_antiadblock_message=Бұл Ńайт Adblock Plus пайдаланŃŃыларына мақŃатталған хабарламаларды ĐşÓ©Ń€Ńететіні белгілі. Adblock Plus мақŃатталған хабарламаларды жаŃырŃŃ‹ керек пе? -blocked_count_addendum=(Ńүзгіден тыŃ: ?1?, жаŃырын: ?2?) -subscription_invalid_location=Енгізілген Đ°Đ´Ń€ĐµŃ Đ˝Đµ интернет адреŃŃ–, не файл мекен-жайы ретінде анықталмады. -type_label_image=СŃрет -remove_subscription_warning=ĐžŃŃ‹ жазылŃĐ´Ń‹ Ó©ŃŃ–Ń€ŃĐ´Ń‹ Ńынымен қалайŃыз ба? -type_label_other=БаŃқа -mobile_menu_enable=ABP: ІŃке қоŃŃ -type_label_media=ĐŃдио/видео -mobile_menu_disable_site=ABP: КелеŃŃ– ŇŻŃŃ–Đ˝ ŃөндірŃ: ?1? -elemhideGroup_title=Đлементтерді жаŃŃ‹Ń€Ń ĐµŃ€ĐµĐ¶ĐµĐ»ĐµŃ€Ń– -mobile_menu_enable_site=ABP: КелеŃŃ– ŇŻŃŃ–Đ˝ Ń–Ńке қоŃŃ: ?1? -type_label_elemhide=ЖаŃырын -newGroup_title=Жаңа фильтрлер тобы -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/overlay.dtd deleted file mode 100644 index 85523ea..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&ĐÓ™"> -<!ENTITY notification.button.no "&Жоқ"> -<!ENTITY sync.label "Adblock Plus баптаŃларын Sync Ń–&Ńіне қоŃŃ"> -<!ENTITY whitelist.site.label "КелеŃŃ– ŇŻŃŃ–Đ˝ ŃөндірŃ: ?1?"> -<!ENTITY filters.label "Фильт&Ń€ баптаŃлары"> -<!ENTITY disable.label "ÓŃ€ жерде ŃөндірŃ"> -<!ENTITY objecttab.title "БлоктаŃ"> -<!ENTITY objecttab.tooltip "Adblock Plus көмегімен ĐľŃŃ‹ объектті Đ±Đ»ĐľĐşŃ‚Đ°Ń ŇŻŃŃ–Đ˝ Ńертіңіз"> -<!ENTITY menuitem.label "Adblock Plus ба&птаŃлары"> -<!ENTITY objecttabs.label "Flash пен Java-ға Ńілтеме қал&дырŃ"> -<!ENTITY sendReport.label "Бұл парақтағы ĐĽÓ™Ńеле Ń‚Ńралы &хабарлаŃ"> -<!ENTITY whitelist.page.label "Тек ĐľŃŃ‹ парақ ŇŻŃŃ–Đ˝ ŃөндірŃ"> -<!ENTITY context.image.label "Adblock Plus: СŃретті блоктаŃ"> -<!ENTITY counthits.label "Ф&ильтрлер хиттерін ŃанаŃ"> -<!ENTITY opensidebar.label "Блокталған құраманы аŃ&Ń"> -<!ENTITY notification.button.close "Đ–&абŃ"> -<!ENTITY contribute.label "Adblock Plus-қа ŇŻĐ»ĐµŃ Ň›ĐľŃŃ"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Фреймді блоктаŃ"> -<!ENTITY blocked.tooltip "Бұл парақтағы блокталған құрама:"> -<!ENTITY hideplaceholders.label "Блокталған &элементтер Ńектерін жаŃырŃ"> -<!ENTITY showinstatusbar.label "Қалып-&күй жолағында ĐşÓ©Ń€ŃетŃ"> -<!ENTITY sidebar.title "Đғымдағы парақ құрамаŃŃ‹"> -<!ENTITY options.label "&БаптаŃлар"> -<!ENTITY context.object.label "Adblock Plus: Объектті блоктаŃ"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: ĐžŃŃ‹ парақта қайта қоŃŃ"> -<!ENTITY filters.tooltip "ĐšÓ©Đż қолданылатын фильтрлер:"> -<!ENTITY closesidebar.label "Блокталған құраманы жаб&Ń"> -<!ENTITY showintoolbar.label "&Панельде ĐşÓ©Ń€ŃетŃ"> -<!ENTITY status.tooltip "Күйі:"> -<!ENTITY context.media.label "Adblock Plus: ĐŃдио/Видеоны блоктаŃ"> -<!ENTITY subscription.update.label "Фильтрлерді жаңартŃ"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sendReport.dtd deleted file mode 100644 index 1e14564..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "Đ‘&олдырмаŃ"> -<!ENTITY issues.disabledgroups.description "КелеŃŃ– фильтрлер/тізімдер Ńөндірілген, бірақ олар ағымдағы параққа Ó©Đ· Ó™Ńерлерін тигізŃŃ– мүмкін:"> -<!ENTITY showData.label "Хабарлама мәліметін ĐşÓ©Ń€ŃетŃ"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus &тым ĐşÓ©Đż блоктайды"> -<!ENTITY issues.change.description "БаптаŃларыңыз өзгертілді. Парақты қайта жүктеп, өзгеріŃтерді Ńынап көріңіз, егер олар қайталанатын болŃа, хабарламаны жіберіңіз."> -<!ENTITY email.label "&ĐĐ». поŃта:"> -<!ENTITY issues.openPreferences.label "Фильтр баптаŃларын аŃŃ"> -<!ENTITY sendPage.confirmation "Хабарламаңыз Ńақталды. Оны келеŃŃ– адреŃтен көре алаŃыз:"> -<!ENTITY copyLink.label "Хабарлама ŃілтемеŃŃ–Đ˝ &ĐşÓ©ŃŃ–Ń€Ń"> -<!ENTITY issues.nofilters.description "Adblock Plus бұл парақта еŃнәрŃені блоктап тұрған жоқ. Бұл ĐĽÓ™Ńеле Adblock Plus-ке байланыŃты ĐµĐĽĐµŃ Ńияқты."> -<!ENTITY sendPage.knownIssue "Сіз хабарлаған ĐĽÓ™Ńеле белгілі Ńияқты. Көбірек біліңіз:"> -<!ENTITY typeSelector.other.description "Егер ĐĽÓ™Ńеле Adblock Plus өзімен, оның фильтлерімен ĐµĐĽĐµŃ Đ±ĐľĐ»Ń‹Đż тұр деп ойлаŃаңыз, бұл опцияны таңдаңыз."> -<!ENTITY issues.disabledgroups.enable.label "Фильтрге жазылŃ/фильтрлер тобын Ń–Ńке қоŃŃ"> -<!ENTITY typeWarning.override.label "Мен түŃініп тұрмын, және хабарламаны жібергім &келеді"> -<!ENTITY issues.disabled.enable.label "Adblock Plus Ń–Ńке қоŃŃ"> -<!ENTITY update.fixed.description "CŃ–Đ· хабарлаған ĐĽÓ™Ńеле фильтрлерге жаңартылŃмен ŃеŃілген Ńияқты. Парақты қайта жүктеп, қайталап көріңіз, ĐĽÓ™Ńеле жоғалмаŃа, ĐĄĐ°Đ±Đ°Ń€Đ»Đ°Ń Đ±Đ°Ń‚Ń‹Ń€ĐĽĐ°Ńын баŃыңыз."> -<!ENTITY anonymous.label "&Đнонимды жіберŃ"> -<!ENTITY reloadButton.label "Па&рақты қайта жүктеŃ"> -<!ENTITY recentReports.clear.label "Барлық хабарламаларды Ó©&ŃŃ–Ń€Ń"> -<!ENTITY typeSelector.description "Бұл терезе Ńізге Adblock Plus ĐĽÓ™ŃелеŃŃ– Ń‚Ńралы хабарламаны дайындаŃға көмектеŃеді. БірінŃіден, бұл парақта кездеŃкен ĐĽÓ™Ńеле түрін таңдаңыз:"> -<!ENTITY screenshot.remove.label "Жеке ақ&паратты Ó©ŃŃ–Ń€Ń"> -<!ENTITY issues.ownfilters.description "Бұл параққа Ń–Ńке аŃырылған кейбір фильтрлерді ŃŃ–Đ· қолмен ĐşÓ©Ń€ŃеткенŃŃ–Đ·. ĐśÓ™Ńелені Ń‚ŃғызŃŃ‹ мүмкін фильтрлерді Ńөндіріңіз:"> -<!ENTITY update.inProgress.description "Adblock Plus ĐĽÓ™Ńеле ŃеŃілген бе, Ńоны текŃĐµŃ€Ń ŇŻŃŃ–Đ˝ фильтрлерге жазылŃларыңызды жаңартŃŃ‹ тиіŃ. Күте тұрыңыз..."> -<!ENTITY sendPage.retry.label "Қайта жіберŃ"> -<!ENTITY data.label "Хабарла&ма мәліметі:"> -<!ENTITY recentReports.label "Сіздің Ńоңғы жіберген хабарламаларыңыз"> -<!ENTITY typeWarning.description "Сіз хабарламаны Adblock Plus-пен болған ĐĽÓ™Ńеле, фильтрлермен ĐµĐĽĐµŃ Đ´ĐµĐż белгіледіңіз. Ондай ĐĽÓ™Ńелелер жөнінде [link]Adblock Plus форŃмына[/link] Ń…Đ°Đ±Đ°Ń€Đ»Đ°Ń Đ¶Ó©Đ˝. ĐžŃŃ‹ хабарлаŃŃыны тек форŃмдағы темаға Ń‚ĐľĐ»Ń‹Ň›Ń‚Ń‹Ń€Ń Ń€ĐµŃ‚Ń–Đ˝Đ´Đµ қолданыңыз, яғни, хабарламаңыздың ŃілтемеŃŃ–Đ˝ бермеŃеңіз, оны еŃкім де байқамайды. ĐвтожаŃалған Ńілтеме хабарламаны жіберŃден кейін қолжетерлік болады."> -<!ENTITY issues.disabled.description "Adblock Plus қазір ŃөндірŃлі тұр, Ńондықтан ол еŃнәрŃені блоктамайды."> -<!ENTITY attachExtensions.label "Бел&Ńенді кеңейтŃлер тізімін жіберŃ, мүмкін, өзара ĐĽÓ™Ńелелер пайда болған Ńығар"> -<!ENTITY issues.nosubscriptions.add.label "Фильтрлерге жазылŃĐ´Ń‹ қоŃŃ"> -<!ENTITY issues.disabledfilters.enable.label "Фильтрді Ń–Ńке қоŃŃ"> -<!ENTITY issues.override.label "БаптаŃлар дұр&Ń‹Ń, хабарламаны жалғаŃтырŃ"> -<!ENTITY issues.nosubscriptions.description "Веб Ńайттардан керек ĐµĐĽĐµŃ Ň›Ň±Ń€Đ°ĐĽĐ°Đ˝Ń‹ Ó©Ńіретін алдын-ала әзірленген фильтрлердің біреŃіне де жазылмаған ŃияқтыŃыз."> -<!ENTITY typeSelector.falsePositive.description "Парақта маңызды құрама жоқ болŃа, қате ĐşÓ©Ń€ŃетілŃе не Đ´Ň±Ń€Ń‹Ń Ń–ŃтемеŃе, бұл опцияны таңдаңыз. Ол ĐĽÓ™Ńеле Adblock Plus Ńалдарынан пайда болатынын текŃĐµŃ€Ń ŇŻŃŃ–Đ˝, оны ŃақытŃа Ńөндіріңіз."> -<!ENTITY typeSelector.other.label "Ба&Ńқа ĐĽÓ™Ńеле"> -<!ENTITY emailComment.label "Біз Ńізден Ńын ŃŤĐ». поŃта адреŃŃ–Đ˝ енгізŃĐ´Ń– Ńұраймыз, өйткені еŃептемеңіз жөнінде Ńұрақтар бар болŃа, біз Ńізге - хабарлаŃа алатын боламыз. Сонымен бірге қоŃқан үлеŃŃ–ŇŁŃ–Đ·Đ´Ń– танып, оның маңыздылығын көтере алŃға жол аŃады."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus ĐľŃŃ‹ парақта қайта қоŃŃ"> -<!ENTITY outdatedSubscriptions.description "КелеŃŃ– фильтрге Đ¶Đ°Đ·Ń‹Đ»Ń ĐşĐµĐĽ дегенде екі апта бойы жаңартылмады. Хабарламаны Đ¶Ń–Đ±ĐµŃ€Ń Đ°Đ»Đ´Ń‹Đ˝Đ´Đ° фильтрге жазылŃĐ´Ń‹ жаңартыңыз, ĐĽÓ™Ńеле ŃеŃілген болŃŃ‹ мүмкін."> -<!ENTITY dataCollector.description "Adblock Plus керек ақпаратты жинағанŃа, күте тұрыңыз."> -<!ENTITY sendButton.label "Хабарлама&ны жіберŃ"> -<!ENTITY comment.label "ТүŃіндірме (Ń‚&иіŃті емеŃ):"> -<!ENTITY sendPage.errorMessage "Хабарламаны Đ¶Ń–Đ±ĐµŃ€Ń Ń‚Đ°Đ»Đ°Đ±Ń‹ "?1?" қате кодымен аяқталды. Đнтернетпен байланыŃыңызды текŃеріп, қайталаңыз. Егер ол көмектеŃпеŃе, [link]Adblock Plus форŃмынан[/link] көмек Ńұраңыз."> -<!ENTITY showRecentReports.label "Соңғы жіберілген хабарламаларды қараŃ"> -<!ENTITY commentPage.heading "ТүŃіндірмені енгізŃ"> -<!ENTITY update.start.label "ЖаңартŃĐ´Ń‹ қазір баŃтаŃ"> -<!ENTITY issues.disabledfilters.description "КелеŃŃ– фильтрлер Ńөндірілген, бірақ олар ағымдағы параққа Ó©Đ· Ó™Ńерлерін тигізŃŃ– мүмкін:"> -<!ENTITY screenshot.description "Бірдей парақ әр түрлі адамдар ŇŻŃŃ–Đ˝ әр түрлі көрінŃŃ– мүмкін. СкринŃотты қоŃып жіберŃеңіз, ол бізге көмектеŃŃŃ– мүмкін. Жеке ақпаратыңыз бар бөлігін Ó©Ńіріп, ĐĽÓ™Ńеле пайда болған аймақтарды белгілей алаŃыз. Ол ŇŻŃŃ–Đ˝ төмендегі батырманы баŃып, тыŃқанмен керек аймақты таңдаңыз."> -<!ENTITY screenshot.attach.label "Парақ ŃкринŃĐľ&тын хабарламаға қоŃып жіберŃ"> -<!ENTITY issues.whitelist.description "Хабарлап тұрған парағыңыз ŇŻŃŃ–Đ˝ Adblock Plus қазір Ńөндірілген. ĐśÓ™Ńелені анықтаŃға көмектеŃŃ ŇŻŃŃ–Đ˝, хабарламаны Đ¶Ń–Đ±ĐµŃ€Ń Đ°Đ»Đ´Ń‹Đ˝Đ´Đ° оны Ń–Ńке қоŃып, парақты қайта жүктеңіз."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus жарна&маны блоктамайды"> -<!ENTITY typeSelector.heading "ĐśÓ™Ńеле түрін таңдаңыз"> -<!ENTITY anonymity.warning "Біз Ńізге кері хабарлаŃа алмаймыз, және еŃептемеңізді маңыздылығы Ń‚Ó©ĐĽĐµĐ˝Đ´ĐµŃ Đ´ĐµĐż ŃанаŃымыз мүмкін."> -<!ENTITY wizard.title "ХабарлаŃŃŃ‹"> -<!ENTITY issues.ownfilters.disable.label "Фильтрді ŃөндірŃ"> -<!ENTITY commentPage.description "Төмендегі мәтін өріŃіне ĐĽÓ™Ńелені түŃіндіретін түŃіндірмені жаза алаŃыз. Бұл қадам тиіŃті емеŃ, бірақ ĐĽÓ™Ńеле күрделі болŃа, көмегі тиеді. Đ–Ń–Đ±ĐµŃ€Ń Đ°Đ»Đ´Ń‹Đ˝Đ´Đ° мәліметті текŃере алаŃыз."> -<!ENTITY comment.lengthWarning "ТүŃіндірмеңіздің ұзындығы 1000 таңбадан аŃты. Тек алғаŃқы 1000 таңба жіберіледі."> -<!ENTITY typeSelector.falseNegative.description "Егер Adblock Plus қоŃŃлы тұрŃа, ал жарнама Ńонда да ĐşÓ©Ń€ŃетілŃе, бұл опцияны таңдаңыз."> -<!ENTITY sendPage.waitMessage "Adblock Plus хабарламаңызды жібергенŃе күте тұрыңыз."> -<!ENTITY dataCollector.heading "ĐśÓ™Ńелелер Ń‚Ńралы хабарлаŃға Ň›ĐľŃ ĐşĐµĐ»Đ´Ń–ŇŁŃ–Đ·"> -<!ENTITY screenshot.heading "СкринŃотты қоŃып жіберŃ"> -<!ENTITY sendPage.heading "Хабарламаны жіберŃ"> -<!ENTITY issues.subscriptionCount.description "Сізде фильтрлерге жазылŃлар Ńаны тым ĐşÓ©Đż Ńияқты. Ондай жағдай қолданŃға ұŃынылмайды. Сонымен қатар біз ŃŃ–Đ·Đ´Ń–ŇŁ хабарлаŃыңызды қабылдай алмаймыз, өйткені ĐĽÓ™Ńеле қай жазылŃдың Ńалдарынан пайда болғаны түŃінікŃŃ–Đ·. Тек маңызды жазылŃларды қалдырып, баŃқаларды Ó©Ńіріңіз, және ĐĽÓ™Ńеле қайталана ма, Ńоны көріңіз."> -<!ENTITY screenshot.mark.label "Хабарламаны бел&гілеŃ"> -<!ENTITY privacyPolicy.label "Жекелік ŃаяŃаиы"> -<!ENTITY issues.description "Adblock Plus бұл ĐĽÓ™Ńеле ŇŻŃŃ–Đ˝ жаŃапты бола алатын, немеŃе тергеŃĐ´Ń– қиындататын ŃŃ–Đ·Đ´Ń–ŇŁ баптаŃларыңызды анықтады."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sidebar.dtd deleted file mode 100644 index 7374b17..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash құрамаŃының Ńектері"> -<!ENTITY address.label "ĐдреŃŃ–"> -<!ENTITY context.open.label "Жаңа бетте аŃŃ"> -<!ENTITY type.label "Түрі"> -<!ENTITY tooltip.filterSource.label "Фильтр ĐşÓ©Đ·Ń–:"> -<!ENTITY noitems.label "Блокталатын құрама жоқ"> -<!ENTITY filter.label "Фильтр"> -<!ENTITY tooltip.size.label "Көлемі:"> -<!ENTITY reattach.label "ҚоŃып қою"> -<!ENTITY search.label "І&здеŃ:"> -<!ENTITY docDomain.thirdParty "(ŇŻŃŃ–Đ˝ŃŃ– жақты)"> -<!ENTITY filterSource.label "Фильтр ĐşÓ©Đ·Ń–"> -<!ENTITY tooltip.docDomain.label "Құжат ĐşÓ©Đ·Ń–:"> -<!ENTITY context.copy.label "Đлемент адреŃŃ–Đ˝ ĐşÓ©ŃŃ–Ń€Ń"> -<!ENTITY tooltip.type.label "Түрі:"> -<!ENTITY context.disablefilter.label "Фильтрді ŃÓ©Đ˝Đ´Ń–Ń€Ń ?1?"> -<!ENTITY context.copyFilter.label "Фильтрді ĐşÓ©ŃŃ–Ń€Ń"> -<!ENTITY context.block.label "Бұл элементті блоктаŃ"> -<!ENTITY context.enablefilter.label "Фильтрді қайта қоŃŃ ?1?"> -<!ENTITY detach.label "Бөліп жіберŃ"> -<!ENTITY whitelisted.label "Ережеден Ń‚Ń‹Ń ĐżĐ°Ń€Đ°Ň›"> -<!ENTITY context.disablefilteronsite.label "КелеŃŃ– ŇŻŃŃ–Đ˝ фильтрді Ó©ŃŃ–Ń€Ń ?1?"> -<!ENTITY detached.title "Adblock Plus: ағымдағы парақ құрамаŃŃ‹ (бөлінген)"> -<!ENTITY docDomain.firstParty "(бірінŃŃ– жақты)"> -<!ENTITY tooltip.type.whitelisted "(ережеден тыŃ)"> -<!ENTITY tooltip.filter.label "ҚолданŃдағы фильтр:"> -<!ENTITY tooltip.filter.disabled "(ŃөндірŃлі)"> -<!ENTITY context.editfilter.label "ҚолданŃдағы фильтрді түзетŃ"> -<!ENTITY tooltip.type.blocked "(блокталған)"> -<!ENTITY size.label "Көлемі"> -<!ENTITY context.whitelist.label "Đлемент ŇŻŃŃ–Đ˝ ерекŃе ереже жаŃаŃ"> -<!ENTITY context.selectAll.label "Барлығын ерекŃелеŃ"> -<!ENTITY state.label "Күйі"> -<!ENTITY docDomain.label "Құжат ĐşÓ©Đ·Ń–"> -<!ENTITY tooltip.address.label "ĐдреŃŃ–:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/subscriptionSelection.dtd deleted file mode 100644 index 131c081..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/kk/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label ""?1?" Ńүзгі жазыл&Ńын да қоŃŃ"> -<!ENTITY list.download.failed "Adblock Plus жазылŃлар тізімін жүктеп ала алмаған."> -<!ENTITY list.download.retry "Қайтадан ĐşÓ©Ń€Ń"> -<!ENTITY title.label "Жа&зылŃдың аты:"> -<!ENTITY list.download.website "Веб Ńайтты ŃолŃ"> -<!ENTITY supplementMessage "Бұл фильтрге Đ¶Đ°Đ·Ń‹Đ»Ń Ńізде әлі қоŃылмаған "?1?" Ńүзгімен бірге қолданылŃŃ‹ тиіŃ."> -<!ENTITY viewList.label "Сүзгілерді қарап ŃығŃ"> -<!ENTITY visitHomepage.label "Үй парағын ŃолŃ"> -<!ENTITY addSubscription.label "ЖазылŃĐ´Ń‹ қоŃŃ"> -<!ENTITY dialog.title "Adblock Plus фильтрлерге жазылŃĐ´Ń‹ қоŃŃ"> -<!ENTITY location.label "Фильтр тізім а&дреŃŃ–:"> -<!ENTITY fromWeb.description "Сүзгі жазылŃын қоŃŃĐ´Ń‹ раŃтаңыз. ҚоŃŃ Đ°Đ»Đ´Ń‹Đ˝Đ´Đ° оның атаŃын не орналаŃŃын өзгерте алаŃыз."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/composer.dtd deleted file mode 100644 index 4cf4c74..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "주소 ëť ë¶€ë¶„ě— ěťĽěą (&n)"> -<!ENTITY domainRestriction.label "ě§€ě •ëś ëŹ„ë©”ěť¸ě—ë§Ś ě ěš©(&D) :"> -<!ENTITY collapse.default.no.label "기본값 (ě•„ë‹ěš”)"> -<!ENTITY firstParty.label "ë‚´ë¶€ ěš”ě˛ě—ë§Ś ě ěš© (&r)"> -<!ENTITY preferences.label "í•„í„° 목록 (&S)"> -<!ENTITY pattern.label "ěś í• ě°ľę¸°"> -<!ENTITY thirdParty.label "외부 ěš”ě˛ě—ë§Ś ě ěš© (&T)"> -<!ENTITY filter.label "ě í•„í„° (&f)"> -<!ENTITY collapse.label "ě°¨ë‹¨ëś ěš”ě†Śěť ěě— ě¨ę¸°ę¸° (&l)"> -<!ENTITY match.warning "ěž…ë Ąí•ś ěś í•과 일ěąí•는 주소가 없으며, 차단/í—ěš©í• ěŁĽě†Śě— ěí–Ąěť„ 미ěąě§€ 않음."> -<!ENTITY anchor.start.label "주소 시작 ë¶€ë¶„ě— ěťĽěą (&g)"> -<!ENTITY matchCase.label "대/ě†Śë¬¸ěž ęµ¬ë¶„ (&M)"> -<!ENTITY custom.pattern.label "ě‚¬ěš©ěž ě§€ě • (&C)"> -<!ENTITY unselectAllTypes.label "ě„ íť í•´ě ś"> -<!ENTITY type.whitelist.label "ě외 ę·śěą™ (&x)"> -<!ENTITY regexp.warning "[ëŠë¦° í•„í„°] ěś í• ëťě— ěž„ěť ë¬¸ěž(*)ę°€ 없으면 ě •ę·ś 표í„식으로 해석ëë©°, 웹 íŽěť´ě§€ëĄĽ ë¶ëź¬ě¤ëŠ” 속도가 ëŠë ¤ě§."> -<!ENTITY dialog.title "í•„í„° 추가"> -<!ENTITY basic.label "기본 보기"> -<!ENTITY type.filter.label "차단 í•„í„° (&B)"> -<!ENTITY types.label "ě ěš© í•식"> -<!ENTITY shortpattern.warning "[ëŠë¦° í•„í„°] ěś í•ěť ę¸¸ěť´ę°€ ë„무 짧으면 í•„í„°ę°€ 비효율ě 으로 ě˛ë¦¬ëë©°, 웹 íŽěť´ě§€ëĄĽ ë¶ëź¬ě¤ëŠ” 속도가 ëŠë ¤ě§."> -<!ENTITY collapse.yes.label "ě"> -<!ENTITY anchors.label "ěś í• ěťĽěą ěˇ°ę±´ :"> -<!ENTITY collapse.default.yes.label "기본값 (ě)"> -<!ENTITY domainRestriction.help "1. 파이프 기í¸(|)를 이용해 여러 ëŹ„ë©”ěť¸ě— ě ěš© (ě시 : site1.com|site2.net). 2. 물결 기í¸(~)를 이용해 필터를 ě ěš©í•ě§€ 않을 도메인 ě§€ě • (ě시 : ~site.com)"> -<!ENTITY accept.label "추가"> -<!ENTITY options.label "ěµě…"> -<!ENTITY disabled.warning "ě• ë“śë¸”ëˇť 플러스는 í„재 ëą„í™śě„±í™”ëś ěíśěž…ë‹ë‹¤. 필터는 ě—¬ě „íž ě¶”ę°€í• ě ěžě§€ë§Ś [link]ě• ë“śë¸”ëˇťí”Śëź¬ěŠ¤ëĄĽ 활성화[/link]í•ě§€ 않으면 추가한 필터는 ě ěš©ëě§€ 않습ë‹ë‹¤."> -<!ENTITY anchor.start.flexible.label "도메인 시작 ë¶€ë¶„ě— ěťĽěą (&g)"> -<!ENTITY collapse.no.label "ě•„ë‹ěš”"> -<!ENTITY selectAllTypes.label "ëŞ¨ë‘ ě„ íť"> -<!ENTITY advanced.label "ęł ę¸‰ 보기"> -<!ENTITY pattern.explanation "ěś í•은 일ěąí•는 주소를 검ě‰í•는 텍스트 문ěžě—´ěť´ë©°, ěž„ěť ë¬¸ěž(*)로 ě ěš© 범위를 조ě í• ě ěžěеë‹ë‹¤."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/filters.dtd deleted file mode 100644 index b099db4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "ě„ íťëś ëłµě› íŚŚěťĽě— ěťí•´ ëŞ¨ë“ ě‚¬ěš©ěž í•„í„°ę°€ ęµě˛´ë©ë‹ë‹¤. ě§„í–‰í•ě‹śę˛ ěŠµë‹ęąŚ?"> -<!ENTITY slow.column "ëŠë¦° í•„í„°(!) (&w)"> -<!ENTITY enabled.column "사용 (&n)"> -<!ENTITY subscription.lastDownload.checksumMismatch "실패함 : 검사합 ë¶ěťĽěą"> -<!ENTITY noFiltersInGroup.text "í•„í„° 없음"> -<!ENTITY subscription.actions.label "동작"> -<!ENTITY filter.selectAll.label "ëŞ¨ë‘ ě„ íť"> -<!ENTITY backupButton.label "백업/ëłµě› (&B)"> -<!ENTITY restore.minVersion.warning "ę˛˝ęł : ěť´ 파일은 보다 높은 ë˛„ě „ěť ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ě— ěťí•´ ěťě„±ëě—습ë‹ë‹¤. ěť´ 파일로 ëłµě›í•기 ě „ě— ěµśě‹ ë˛„ě „ěť ě• ë“śë¸”ëˇť 플러스로 업데이트í•ě‹ě‹śě¤."> -<!ENTITY restore.error "ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ěť ë°±ě—… 파일이 ě•„ë‹ëŻ€ëˇś ëłµě›ěť„ í• ě 없습ë‹ë‹¤."> -<!ENTITY sort.ascending.label "ě¤ë¦„ě°¨ěś (&A ⇒ Z)"> -<!ENTITY sort.label "ě •ë ¬ (&S)"> -<!ENTITY subscription.source.label "í•„í„° 목록"> -<!ENTITY hitcount.column "ě ěš© íšźě (&H)"> -<!ENTITY noFilters.text "ě‚¬ěš©ěž í•„í„°ę°€ 없습ë‹ë‹¤."> -<!ENTITY backup.custom.title "ě‚¬ěš©ěž í•„í„°ë§Ś 백업"> -<!ENTITY subscription.external.label "다른 확장 í”„ëˇśę·¸ëž¨ě— ěťí•´ 업데이트ë¨"> -<!ENTITY subscription.delete.label "ě‚ě ś"> -<!ENTITY noGroupSelected.text "í•„í„° 목록을 ëł´ë ¤ë©´ í•„í„° 그룹을 ě„ íťí•ě‹ě‹śě¤."> -<!ENTITY filter.cut.label "ěžëťĽë‚´ę¸°"> -<!ENTITY restore.default.label "ëłµě› ë‚ ě§ś - ?1?"> -<!ENTITY subscription.lastDownload.inProgress "다운로드 중..."> -<!ENTITY subscriptions.tab.label "구독 í•„í„°"> -<!ENTITY sort.descending.label "ë‚´ë¦Ľě°¨ěś (&Z ⇒ A)"> -<!ENTITY filters.remove.warning "ě„ íťí•ś ëŞ¨ë“ í•„í„°ëĄĽ ě śę±°í•ě‹śę˛ ěŠµë‹ęąŚ?"> -<!ENTITY filter.delete.label "ě‚ě ś"> -<!ENTITY addSubscriptionAdd.label "추가"> -<!ENTITY viewMenu.label "보기"> -<!ENTITY subscription.lastDownload.unknown "알 ě 없음"> -<!ENTITY addSubscriptionCancel.label "취소"> -<!ENTITY subscription.enabled.label "사용"> -<!ENTITY noSubscriptions.text "구독 필터를 ě•„ě§ ě¶”ę°€í•ě§€ 않ě•습ë‹ë‹¤. ě• ë“śë¸”ëˇť 플러스는 í•„í„° 없이는 아무ę˛ëŹ„ ě°¨ë‹¨í• ě 없으므로 "구독 í•„í„° 추가" 버튼을 ëŚëź¬ ęµ¬ëŹ… 필터를 추가í•ě‹ě‹śě¤."> -<!ENTITY subscription.update.label "업데이트"> -<!ENTITY dialog.title "í•„í„° ě„¤ě •"> -<!ENTITY addFilter.label "í•„í„° 추가 (&d)"> -<!ENTITY subscription.minVersion.warning "ěť´ 구독 필터는 보다 높은 ë˛„ě „ěť ě• ë“śë¸”ëˇť 플러스가 필요합ë‹ë‹¤. ěµśě‹ ë˛„ě „ěť ě• ë“śë¸”ëˇť 플러스를 설ěąí•ě‹ě‹śě¤."> -<!ENTITY subscription.lastDownload.invalidURL "실패함 : ě¬ë°”르지 않은 주소"> -<!ENTITY backup.error "백업 íŚŚěťĽě— í•„í„° 작성 ě¤ëĄę°€ ěžěеë‹ë‹¤. ěť´ 파일은 쓰기 ë°©ě§€ ěíśěť´ę±°ë‚ 다른 응용 프로그램ě—서 사용 중인지 확인í•ě‹ě‹śě¤."> -<!ENTITY filter.moveUp.label "위로 이동"> -<!ENTITY addGroup.label "í•„í„° 그룹 추가 (&g)"> -<!ENTITY filter.edit.label "편집"> -<!ENTITY subscription.showHideFilters.label "í•„í„° 목록 보기/ě¨ę¸°ę¸°"> -<!ENTITY acceptableAds2.label "ëą„ěą¨ěž…í• ę´‘ęł í—ěš© (&i)"> -<!ENTITY addSubscriptionOther.label "다른 구독 í•„í„° 추가 (F)"> -<!ENTITY close.label "닫기"> -<!ENTITY sort.none.label "ě •ë ¬ ě• í•¨ (&U)"> -<!ENTITY filter.actions.label "í•„í„° 동작"> -<!ENTITY filter.copy.label "복사"> -<!ENTITY filter.moveDown.label "ě•„ëžëˇś 이동"> -<!ENTITY filter.resetHitCounts.label "í•„í„° ě ěš© íšźě ě´ę¸°í™”"> -<!ENTITY readMore.label "ěžě„¸íž 보기"> -<!ENTITY subscription.moveUp.label "위로 이동"> -<!ENTITY addSubscription.label "구독 í•„í„° 추가 (&f)"> -<!ENTITY subscription.homepage.label "í™íŽěť´ě§€"> -<!ENTITY backup.complete.title "사용ěž/구독 í•„í„° 백업"> -<!ENTITY restore.own.label "백업 파일로 ëłµě›"> -<!ENTITY restore.complete.warning "ě„ íťëś ëłµě› íŚŚěťĽě— ěťí•´ ëŞ¨ë“ í•„í„° ě„¤ě •ěť´ ęµě˛´ë©ë‹ë‹¤. ě§„í–‰í•ě‹śę˛ ěŠµë‹ęąŚ?"> -<!ENTITY filters.tab.label "ě‚¬ěš©ěž í•„í„°"> -<!ENTITY backup.label "백업 파일 ě €ěžĄ"> -<!ENTITY find.label "찾기 (&n)"> -<!ENTITY subscription.moveDown.label "ě•„ëžëˇś 이동"> -<!ENTITY subscription.lastDownload.connectionError "실패함 : 다운로드 실패"> -<!ENTITY subscription.lastDownload.success "동기화 성공"> -<!ENTITY subscription.lastDownload.invalidData "실패함 : ě¬ë°”르지 않은 í•„í„°"> -<!ENTITY filter.paste.label "붙여넣기"> -<!ENTITY subscription.disabledFilters.enable "í•„í„° 다시 사용"> -<!ENTITY lasthit.column "ë§ě§€ë§‰ ě ěš© ë‚ ě§ś (&L)"> -<!ENTITY subscription.editTitle.label "í•„í„° 그룹명 편집"> -<!ENTITY subscription.disabledFilters.warning "ěť´ 구독 í•„í„°ěť ěťĽë¶€ 필터는 사용 중지ëě—습ë‹ë‹¤."> -<!ENTITY filter.column "í•„í„° (&F)"> -<!ENTITY subscription.lastDownload.label "ë§ě§€ë§‰ 다운로드 :"> -<!ENTITY viewList.label "í•„í„° 목록 보기"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/firstRun.properties deleted file mode 100644 index 10a0ba9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=ę´‘ęł íšŚě‚¬ę°€ ěě§‘í•는 ě‚¬ěš©ěž ě¶”ě ě •ëł´ëĄĽ ěś ě¶śëě§€ 않게 í•ě—¬ 개인 ě •ëł´ëĄĽ ëł´í¸í•©ë‹ë‹¤. -firstRun_toggle_off=ë„기 -firstRun_feature_tracking=ě¶”ě 차단 -firstRun_feature_malware=맬웨어 차단 -firstRun_title=ě• ë“śë¸”ëˇť 플러스가 설ěąëě—습ë‹ë‹¤. -firstRun_toggle_on=켜기 -firstRun_acceptableAdsExplanation=우리는 비침입ě ěť´ë©° ěť´ěš©ěž ěąśí™”ě 인 ę´‘ęł ë°©ě‹ťěť„ 채íťí•ś 웹사이트를 ę˛©ë ¤í•ęł ěž í•©ë‹ë‹¤. íŠąě • ę´‘ęł ëĄĽ í—ěš©í•기 위한 <a>ę´‘ęł í—ěš© 지침</a>ěť„ ě립í•ě€ěśĽë©°, 기본 ě„¤ě •ěśĽëˇś 그러한 ę´‘ęł ëŠ” í™”ë©´ě— í‘śě‹śë©ë‹ë‹¤. ëŞ¨ë“ ę´‘ęł ëĄĽ 차단í•ë ¤ë©´ ěť´ ę¸°ëŠĄěť <a>사용을 중지</a>í• ě ěžěеë‹ë‹¤. -firstRun_contributor_credits=ęłµí—Śěž ëŞ…ë‹¨ -firstRun_dataCorruptionWarning=ěť´ íŽěť´ě§€ëĄĽ 계속해서 ëł´ě‹śę˛ ěŠµë‹ęąŚ? <a>여기 í´ë¦!</a> -firstRun_acceptableAdsHeadline=인터넷 이용을 ë°©í•´í•ę±°ë‚ ë¶ë˛•Â·ěś í•´í•ś ę´‘ęł ëŠ” ěť´ě ś 차단ë ę˛ěž…ë‹ë‹¤ -firstRun_share=홍보 -firstRun_share_headline=더 ë‚은 웹을 만들기 위해 <a>공헌í•기</a> -firstRun_feature_social_description=웹íŽěť´ě§€ěě— ěť¸í„°ë„· 사용 í–‰íśëĄĽ ě¶”ě í•는 사회관계망 서비스 버튼을 ěžëŹ™ěśĽëˇś ě śę±°í•´ě¤Ťë‹ë‹¤. -firstRun_filterlistsReinitializedWarning=ë¬¸ě śę°€ ë°śěťí•ě—¬ ëŞ¨ë“ í•„í„°ę°€ ě śę±°ëęł , 백업을 ëłµě›í• ě 없습ë‹ë‹¤. 그러므로 ě‚¬ěš©ěž í•„í„°ě™€ í—ěš© ę´‘ęł ě„¤ě •ěť„ ě´ę¸°í™”í–어야 í•©ë‹ë‹¤. <a>ě• ë“śë¸”ëˇť 플러스 ěµě…</a>ě—서 구독필터와 í—ěš© ę´‘ęł ě„¤ě •ěť„ 확인í•ě‹ě‹śě¤. -firstRun_feature_malware_description=ë„리 ě•Śë ¤ě§„ 맬웨어 도메인을 차단함으로써 웹을 더 ě•ě „í•게 이용합ë‹ë‹¤. -firstRun_features=ě• ë“śë¸”ëˇť 플러스는 ę´‘ęł ě°¨ë‹¨ 이외 다양한 기능이 ěžěеë‹ë‹¤ -firstRun_donate=기부 -firstRun_donate_label=í”„ëˇśě ťíŠ¸ ě§€ě› -firstRun_feature_social=사회관계망 서비스 버튼 ě śę±° -firstRun_legacySafariWarning=ě• ë“śë¸”ëˇť 플러스ě—서 ě§€ě›í•ě§€ 않는 ęµ¬ë˛„ě „ 사파리를 사용í•ęł ěžěеë‹ë‹¤. ę·¸ëžě„ś 일부 사이트ě—서 ě •ěě 인 작동을 í•ě§€ ě•Šę±°ë‚ ě‚¬ěš©ěž ę˛˝í—ě— ě†ěěť„ 줄 ě ěžěеë‹ë‹¤. 사파리 6.6.1 ěť´ě(OS X 10.8 Mountain Lion), ë는 사파리 7.0.1 ěť´ě(OS X 10.9 Mavericks) ë는 모ě§ëťĽ 파이어íŹ, 구글 í¬ëˇ¬, ě¤íŽëťĽěť ěµśě‹ ë˛„ě „ěť„ ě‚¬ěš©í• ę˛ěť„ 권장합ë‹ë‹¤. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/global.properties deleted file mode 100644 index bbd9425..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=í„재 íŽěť´ě§€ě— 차단 가능한 í•목이 없습ë‹ë‹¤. -action3_tooltip=ě• ë“śë¸”ëˇť 플러스 사용/중지 -notification_antiadblock_title=표ě 메시지를 ě¨ę¸°ę˛ 습ë‹ęąŚ? -type_label_script=스í¬ë¦˝íЏ -filter_elemhide_nocriteria=ě¨ę¸°ë ¤ëŠ” 요소를 인식í•기 위한 기준이 ě§€ě •ëě§€ 않ě•습ë‹ë‹¤. -blockingGroup_title=ěš”ě˛ ě°¨ë‹¨ í•„í„° -whitelisted_tooltip=ě• ë“śë¸”ëˇť 플러스 사용 (í—ěš©ëś íŽěť´ě§€) -type_label_stylesheet=스í€ěťĽě‹śíЏ -blocked_count_tooltip=차단 : ?1?ę°ś, ě „ě˛´ í•목 : ?2?ę°ś -type_label_font=글꼴 -type_label_popup=팝업창 -filter_regexp_tooltip=ěť´ 필터는 ě •ę·ś 표í„ě‹ťěť´ę±°ë‚ ěµśě í™”í•ę¸°ě— ę¸¸ěť´ę°€ ë„무 짧으므로 웹 íŽěť´ě§€ëĄĽ ë¶ëź¬ě¤ëŠ” 속도가 ě €í•ë©ë‹ë‹¤. -action0_tooltip=ë§ěš°ěФ 가운데 버튼 - ě• ë“śë¸”ëˇť 플러스 사용/중지 -whitelisted_page=í—ěš©ëś íŽěť´ě§€ -remove_group_warning=ěť´ 그룹을 ě •ë§ ě śę±°í•ě‹śę˛ ěŠµë‹ęąŚ? -action1_tooltip=ë§ěš°ěФ 가운데 버튼 - ě• ë“śë¸”ëˇť 플러스 사용/중지 -type_label_xmlhttprequest=XML ěš”ě˛ -active_tooltip=ě• ë“śë¸”ëˇť 플러스 사용 [구독 í•„í„° : ?1?ę°ś, ě‚¬ěš©ěž í•„í„° : ?2?ę°ś ] -type_label_document=문서 -type_label_object_subrequest=í•ěś„ 객체 ěš”ě˛ -whitelistGroup_title=í—ěš© í•„í„° -disabled_tooltip=ě• ë“śë¸”ëˇť 플러스 사용 중지 -filter_elemhide_duplicate_id=ě¨ę¸°ë ¤ëŠ” ěš”ě†Śěť ID는 한 ę°śë§Ś ě§€ě •í• ě ěžěеë‹ë‹¤. -type_label_object=객체 -action2_tooltip=ë§ěš°ěФ 가운데 버튼 - ě• ë“śë¸”ëˇť 플러스 사용/중지 -type_label_subdocument=프ë ěž„ -clearStats_warning=ëŞ¨ë“ í•„í„° ě ěš© íšźěę°€ ě´ę¸°í™”ëęł , ěť´ 통계 기능을 사용í•ě§€ 않습ë‹ë‹¤. ě§„í–‰í•ě‹śę˛ ěŠµë‹ęąŚ? -notification_antiadblock_message=ěť´ 사이트는 ě• ë“śë¸”ëˇť 플러스 사용ěžě—게 표ě 메시지를 보여주는 ę˛ěśĽëˇś ě•Śë ¤ě ¸ ěžěеë‹ë‹¤. ě• ë“śë¸”ëˇť 플러스로 표ě 메시지를 ě¨ę¸°ę˛ 습ë‹ęąŚ? -blocked_count_addendum=(í—ěš© : ?1?ę°ś, 요소 ě¨ęą€ : ?2?ę°ś) -subscription_invalid_location=구독 í•„í„°ěť ěś„ěąě— ěž…ë Ąí•는 URL ë는 파일명이 ě¬ë°”르지 않습ë‹ë‹¤. -type_label_image=이미지 -remove_subscription_warning=ěť´ 구독 필터를 ě śę±°í•ě‹śę˛ ěŠµë‹ęąŚ? -type_label_other=ę¸°í€ -mobile_menu_enable=ABP:사용 -type_label_media=ě¤ë””ě¤/ëą„ë””ě¤ -mobile_menu_disable_site=ABP:í•´ě ś - ?1? -elemhideGroup_title=요소 ě¨ęą€ í•„í„° -mobile_menu_enable_site=ABP:사용 - ?1? -type_label_elemhide=ě¨ę˛¨ě§„ 요소 -newGroup_title=ě í•„í„° 그룹 -default_dialog_title=ě• ë“śë¸”ëˇť 플러스 diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/overlay.dtd deleted file mode 100644 index 2b84e5e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&ě"> -<!ENTITY notification.button.no "&ě•„ë‹ěš”"> -<!ENTITY sync.label "ě• ë“śë¸”ëˇť 플러스 ě„¤ě • 동기화 (&c)"> -<!ENTITY whitelist.site.label "사이트 í—ěš© : ?1?"> -<!ENTITY filters.label "í•„í„° ě„¤ě • (&F)"> -<!ENTITY disable.label "사용 중지"> -<!ENTITY objecttab.title "차단"> -<!ENTITY objecttab.tooltip "ěť´ 객체를 차단í•ë ¤ë©´ 차단 íěť„ í´ë¦í•ě‹ě‹śě¤."> -<!ENTITY menuitem.label "í•„í„° ě„¤ě • (&B)"> -<!ENTITY objecttabs.label "플ëžě‹ś/ěžë°”ě— ě°¨ë‹¨ í 표시 (&T)"> -<!ENTITY sendReport.label "í„재 íŽěť´ě§€ěť ë¬¸ě ś ëł´ęł (&R)"> -<!ENTITY whitelist.page.label "í„재 íŽěť´ě§€ í—ěš©"> -<!ENTITY context.image.label "ě• ë“śë¸”ëˇť 플러스 : 이미지 차단"> -<!ENTITY counthits.label "í•„í„° ě ěš© íšźě 기록 (&h)"> -<!ENTITY opensidebar.label "차단 가능 목록 (&B)"> -<!ENTITY notification.button.close "&닫기"> -<!ENTITY contribute.label "ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ě— ęłµí—Śí•기"> -<!ENTITY toolbarbutton.label "ě• ë“śë¸”ëˇť 플러스"> -<!ENTITY context.frame.label "ě• ë“śë¸”ëˇť 플러스 : 프ë ěž„ 차단"> -<!ENTITY blocked.tooltip "ě ěš©ëś í•„í„° ę°śě"> -<!ENTITY hideplaceholders.label "ě°¨ë‹¨ëś ěš”ě†Śěť ěě— ě¨ę¸°ę¸° (&l)"> -<!ENTITY showinstatusbar.label "ěíś í‘śě‹śě¤„ě— ě•„ěť´ě˝ ëł´ěť´ę¸° (&S)"> -<!ENTITY sidebar.title "í„재 íŽěť´ě§€ěť 차단 가능한 í•목"> -<!ENTITY options.label "ěµě… (&O)"> -<!ENTITY context.object.label "ě• ë“śë¸”ëˇť 플러스 : 객체 차단"> -<!ENTITY context.removeWhitelist.label "ě• ë“śë¸”ëˇť 플러스 : 사이트/íŽěť´ě§€ í—ěš© í•´ě ś"> -<!ENTITY filters.tooltip "ě ěš©ëś ěŁĽěš” í•„í„°"> -<!ENTITY closesidebar.label "차단 가능 목록 닫기 (&B)"> -<!ENTITY showintoolbar.label "í´ë°”ě— ě•„ěť´ě˝ ëł´ěť´ę¸° (&B)"> -<!ENTITY status.tooltip "ěíś"> -<!ENTITY context.media.label "ě• ë“śë¸”ëˇť 플러스 : 비디ě¤/ě¤ë””ě¤ ě°¨ë‹¨"> -<!ENTITY subscription.update.label "업데이트"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sendReport.dtd deleted file mode 100644 index 2e06d78..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "ë돌리기 (&U)"> -<!ENTITY issues.disabledgroups.description "다음 구독 í•„í„°/í•„í„° 그룹을 사용í•ě§€ 않지만 ěť´ íŽěť´ě§€ě— ěí–Ąěť„ 줄 ě ěžěеë‹ë‹¤."> -<!ENTITY showData.label "ëł´ęł í• ěžëŁŚ 보기"> -<!ENTITY typeSelector.falsePositive.label "ě• ë“śë¸”ëˇť 플러스가 ě˝í…ě¸ ëĄĽ 과도í•게 차단함 (&m)"> -<!ENTITY issues.change.description "ě„¤ě •ěť´ 변경ëě—습ë‹ë‹¤. 웹 íŽěť´ě§€ëĄĽ 다시 ë¶ëź¬ě¨ 후 ë¬¸ě śę°€ 해결ëě§€ 않는다면 ëł´ęł ě„śëĄĽ ě śě¶śí•ě‹ě‹śě¤."> -<!ENTITY email.label "메일 주소: (&m)"> -<!ENTITY issues.openPreferences.label "í•„í„° ě„¤ě • 열기"> -<!ENTITY sendPage.confirmation "ëł´ęł ě„śę°€ ě„śë˛„ě— ě €ěžĄëě—ęł , 다음 주소로 ëł´ęł ě„śëĄĽ í™•ěť¸í• ě ěžěеë‹ë‹¤. í•„í„° ěś ě§€ěžę°€ ëł´ęł ëĄĽ ě ‘ěí•ë©´ ëł´ęł ě„śěť Status í•목ě—는 unknown ëŚ€ě‹ ě— ě˛ë¦¬ 결과가 표시ë©ë‹ë‹¤."> -<!ENTITY copyLink.label "ëł´ęł ë§í¬ 복사 (&C)"> -<!ENTITY issues.nofilters.description "ěť´ ë¬¸ě śëŠ” ě• ë“śë¸”ëˇť 플러스가 아무ę˛ëŹ„ 차단í•ě§€ 않은 ěíśě—서 ë°śěťí•´ě„ś ě• ë“śë¸”ëˇť 플러스와 ę´€ë ¨ěť´ 없습ë‹ë‹¤."> -<!ENTITY sendPage.knownIssue "ëł´ęł í•ś ë¬¸ě śëŠ” 다른 사용ěžë“¤ě— ěťí•´ 이미 ë§Žěť´ ëł´ęł ëě—습ë‹ë‹¤. 더 많은 ě •ëł´ :"> -<!ENTITY typeSelector.other.description "í•„í„° ë¬¸ě śę°€ 아닌 ě• ë“śë¸”ëˇť 플러스 ěžě˛´ěť ë¬¸ě śëˇś ěťě‹¬í•śë‹¤ë©´ ěť´ ěµě…ěť„ ě„ íťí•ě‹ě‹śě¤."> -<!ENTITY issues.disabledgroups.enable.label "구독 í•„í„°/í•„í„° 그룹 사용"> -<!ENTITY typeWarning.override.label "ěś„ěť ë‚´ěš©ěť„ ěť´í•´í–으며, ëł´ęł ě„ś 작성을 계속 진행함 (&s)"> -<!ENTITY issues.disabled.enable.label "ě• ë“śë¸”ëˇť 플러스 사용"> -<!ENTITY update.fixed.description "ě—…ëŤ°ěť´íŠ¸ě— ěťí•´ ëł´ęł ëś ěť´ěŠę°€ í•´ę˛°ëś ę˛ ę°™ěŠµë‹ë‹¤. íŽěť´ě§€ ě로 ęł ěą¨ěť„ í•ě‹ í›„ 재시도 í•ě‹ě‹śě¤. ě•„ě§ ë¬¸ě śę°€ 더 ěžěśĽë©´ 다시 ëł´ęł í•´ 주ě‹ě‹śě¤."> -<!ENTITY anonymous.label "익명 ě „ě†ˇ (&a)"> -<!ENTITY reloadButton.label "íŽěť´ě§€ ěëˇśęł ěą¨ (&R)"> -<!ENTITY recentReports.clear.label "ëŞ¨ë“ ëł´ęł ě„ś ě śę±° (&R)"> -<!ENTITY typeSelector.description "ë¬¸ě ś ëł´ęł ë§ë˛•사는 ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ěť ë¬¸ě śëĄĽ í•„í„° ěś ě§€ěžě—게 ëł´ęł í•기 위해 필요한 단계를 ě•ë‚´í•©ë‹ë‹¤. ë¨Ľě € í„재 íŽěť´ě§€ěť ë¬¸ě ś ěś í•ěť„ ě„ íťí•ě‹ě‹śě¤."> -<!ENTITY screenshot.remove.label "민ę°í•ś ěě— ě¨ęą€ (&R)"> -<!ENTITY issues.ownfilters.description "í„재 íŽěť´ě§€ě— ě ěš©ëś í•„í„°ěť ěťĽë¶€ëŠ” 사용ěžę°€ ě§€ě •í–습ë‹ë‹¤. ěť´ ë¬¸ě śě— ěí–Ąěť„ 줄 ě ěžëŠ” ě‚¬ěš©ěž í•„í„°ëŠ” 사용í•ě§€ ë§ě‹ě‹śě¤."> -<!ENTITY update.inProgress.description "ě•„ě§ í•´ę˛°ëě§€ 않은 ěť´ěŠëˇś 인해 ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ěť í•„í„°ëĄĽ 업데이트 해야 í•©ë‹ë‹¤. ěž ě‹śë§Ś ę¸°ë‹¤ë ¤ 주ě‹ě‹śě¤..."> -<!ENTITY sendPage.retry.label "다시 ě „ě†ˇ"> -<!ENTITY data.label "ëł´ęł í• ěžëŁŚ (&p)"> -<!ENTITY recentReports.label "ěµśę·Ľě— ě śě¶śí•ś ëł´ęł ě„ś"> -<!ENTITY typeWarning.description "í•„í„° ë¬¸ě śę°€ 아닌 ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ěť ěťĽë°ě 인 ë¬¸ě śëŠ” [link]ě• ë“śë¸”ëˇť 플러스 포럼[/link]ě— ëł´ęł í•는 ę˛ěť´ ěµśě„ ě±…ěž…ë‹ë‹¤. 포럼ě—서 이미 ë…Ľěťëś ë¬¸ě śëĄĽ ëł´ě¶©í•기 위해 ë¬¸ě ś ëł´ęł ë§ë˛•사를 이용해야 í•©ë‹ë‹¤. ëł´ęł ě„śëĄĽ í™•ěť¸í• ě ěžëŠ” ë§í¬ëĄĽ ě śęłµí•ě§€ 않으면 아무도 ëł´ęł ëĄĽ í™•ěť¸í• ě 없기 때문입ë‹ë‹¤. ëł´ęł ě„śëĄĽ ě śě¶śí•ë©´ ěžëŹ™ěśĽëˇś ěťě„±ëś ë§í¬ę°€ ě śęłµë©ë‹ë‹¤."> -<!ENTITY issues.disabled.description "ě• ë“śë¸”ëˇť 플러스를 사용í•ě§€ 않는 ěíśěť´ëŻ€ëˇś 아무ę˛ëŹ„ 차단í•ě§€ 않습ë‹ë‹¤."> -<!ENTITY attachExtensions.label "사용í•ęł ěžëŠ” 부가 í”„ëˇśę·¸ëž¨ěť ëŞ©ëˇťěť„ ëł´ęł ě„śě— ě¶”ę°€ (다른 부가 프로그램과 충돌이 ě›ěť¸ěť¸ 경우) (&x)"> -<!ENTITY issues.nosubscriptions.add.label "구독 í•„í„° 추가"> -<!ENTITY issues.disabledfilters.enable.label "í•„í„° 사용"> -<!ENTITY issues.override.label "ě„¤ě •ě—는 ěť´ěěť´ 없으며, ëł´ęł ě„ś 작성을 계속 진행함 (&c)"> -<!ENTITY issues.nosubscriptions.description "웹 ě‚¬ěť´íŠ¸ěť ě›í•ě§€ 않는 ę´‘ęł ëĄĽ ěžëŹ™ 차단í•는 구독 필터를 추가í•ě§€ 않ě•습ë‹ë‹¤."> -<!ENTITY typeSelector.falsePositive.description "중요한 ě˝í…ě¸ ë„ëť˝, 웹 íŽěť´ě§€ę°€ ěžëŞ» 표시ë¨, ě¤ěž‘동 등 차단 ě¤ëĄę°€ ěžěśĽë©´ ěť´ ěµě…ěť„ ě„ íťí•ě‹ě‹śě¤. ě• ë“śë¸”ëˇť í”Śëź¬ěŠ¤ěť ě‚¬ěš©ěť„ 임시로 중지í•ě—¬ ě• ë“śë¸”ëˇť 플러스가 ë¬¸ě śěť ě›ěť¸ěť¸ě§€ ë¨Ľě € 확인í•ě‹ě‹śě¤."> -<!ENTITY typeSelector.other.label "다른 ë¬¸ě ś (&t)"> -<!ENTITY emailComment.label "ě „ěžěš°íޏ 주소를 ěž…ë Ąí• ę˛ěť„ 권장합ë‹ë‹¤. ë§Śě•˝ ëł´ęł ëś ë¬¸ě śě— ëŚ€í•´ 문ěťí•´ě•Ľ í• ë•Ś 연락을 í• ě ěžę¸° 때문입ë‹ë‹¤."> -<!ENTITY issues.whitelist.remove.label "사이트/íŽěť´ě§€ í—ěš© 필터를 사용 중지"> -<!ENTITY outdatedSubscriptions.description "ě•„ëž í•„í„°ę°€ ě 어도 2주 ěť´ě 업데이트ëě§€ 않ě•습ë‹ë‹¤. ëł´ęł í•기 ěť´ě „ě— ë¨Ľě € 필터를 업데이트í•ě—¬ 주ě‹ě‹śě¤. 업데이트를 í•ë©´ ë¬¸ě śę°€ 해결ë ě도 ěžěеë‹ë‹¤."> -<!ENTITY dataCollector.description "필요한 ěžëŁŚëĄĽ ěě§‘í•는 ëŹ™ě• ěž ě‹śë§Ś ę¸°ë‹¤ë ¤ěŁĽě‹ě‹śě¤."> -<!ENTITY sendButton.label "ëł´ęł ě„ś ě „ě†ˇ (&n)"> -<!ENTITY comment.label "ëł´ęł ë‚´ěš© (í•„ě í•목) : (&C)"> -<!ENTITY sendPage.errorMessage "ě¤ëĄ 코드 "?1?"ě— ěťí•´ ëł´ęł ě „ě†ˇěť„ 실패í–습ë‹ë‹¤. 인터넷이 ě ‘ě†Ťëě—는지 확인한 후 다시 시도í•ě‹ě‹śě¤. ë§Śě•˝ ë¬¸ě śę°€ 계속해서 ë°śěťí•śë‹¤ë©´ [link]ě• ë“śë¸”ëˇť 플러스 포럼[/link]ě— ëŹ„ě›€ěť„ ěš”ě˛í•ě‹ě‹śě¤."> -<!ENTITY showRecentReports.label "ěµśę·Ľě— ě śě¶śí•ś ëł´ęł ě„ś 보기"> -<!ENTITY commentPage.heading "ëł´ęł ë‚´ěš© ěž…ë Ą"> -<!ENTITY update.start.label "ě§€ę¸ ě—…ëŤ°ěť´íŠ¸ 시작í•기"> -<!ENTITY issues.disabledfilters.description "다음 필터는 사용í•ě§€ 않지만 í„재 íŽěť´ě§€ě— ěí–Ąěť„ 줄 ě ěžěеë‹ë‹¤."> -<!ENTITY screenshot.description "같은 íŽěť´ě§€ëŹ„ 다른 사람들ě—게는 다르게 보일 ě ěžěеë‹ë‹¤. ę·¸ëžě„ś ëł´ęł ě„śě— í™”ë©´ ę°ë¬´ë¦¬ěť„ 첨부í•ë©´ ë¬¸ě śëĄĽ ěť´í•´í•는데 도움이 ë©ë‹ë‹¤. ë¬¸ě ś ěě—ěť„ ë¶€ę°í•기 위해 íŽěť´ě§€ ěť´ëŻ¸ě§€ě— í‘śě‹śëĄĽ í•ęł , 민ę°í•ś ě •ëł´ ěě—은 ě¨ę¸¸ ě ěžěеë‹ë‹¤. ě›í•는 버튼을 ë„ëĄ´ęł , ěť´ëŻ¸ě§€ě— ë§ěš°ěŠ¤ëˇś ěě—ěť„ 표시í•ě‹ě‹śě¤."> -<!ENTITY screenshot.attach.label "ëł´ęł ě„śě— íŽěť´ě§€ 이미지 첨부 (&t)"> -<!ENTITY issues.whitelist.description "í„재 íŽěť´ě§€ě— í—ěš© 필터를 ě ěš©í•ě—¬ ě˝í…ě¸ ę°€ 차단ëě§€ 않ě•습ë‹ë‹¤. í„재 íŽěť´ě§€ě— ě ěš©ëś í—ěš© í•„í„°ěť ě‚¬ěš©ěť„ 중지한 ěíśě—서 웹 íŽěť´ě§€ëĄĽ 다시 ë¶ëź¬ě¤ě‹ě‹śě¤."> -<!ENTITY typeSelector.falseNegative.label "ě• ë“śë¸”ëˇť 플러스가 ę´‘ęł ëĄĽ 차단 ě• í•¨ (&v)"> -<!ENTITY typeSelector.heading "ë¬¸ě ś ěś í• ě„ íť"> -<!ENTITY anonymity.warning "우리가 ë‹ąě‹ ě— ę˛Ś ëŹŚě•„ě¬ ě 없을 ęł ę°€ëŠĄě„±ěť´ ëł´ęł ě„ś 낮은 ěš°ě„ ěśěś„를 ě§€ě • í•©ë‹ë‹¤."> -<!ENTITY wizard.title "ë¬¸ě ś ëł´ęł ë§ë˛•사"> -<!ENTITY issues.ownfilters.disable.label "í•„í„° 사용 중지"> -<!ENTITY commentPage.description "ëŞ¨ë“ ě–¸ě–´ëˇś ěž…ë Ą 가능 + íŽěť´ě§€ ě „ě˛´ URL : 평소 사용í•ę±°ë‚ ě„¤ëŞ…í•기 쉬운 언어로 ëł´ęł í• ë‚´ěš©ěť„ ěž…ë Ąí•ě‹ě‹śě¤. 그런 후 주소 í‘śě‹śě¤„ěť íŽěť´ě§€ ě „ě˛´ URLěť„ 복사해 ěž…ë Ąí•ś ë‚´ěš© ě•„ëžě— ë°ë“śě‹ś 붙여넣으ě‹ě‹śě¤."> -<!ENTITY comment.lengthWarning "ě„¤ëŞ…ěť ę¸¸ěť´ę°€ 1000ěžëĄĽ ě´ęłĽí•ě—¬ 1000ěžęąŚě§€ë§Ś ě „ě†ˇë©ë‹ë‹¤."> -<!ENTITY typeSelector.falseNegative.description "ě• ë“śë¸”ëˇť 플러스를 사용함ě—도 ë¶ęµ¬í•ęł ę´‘ęł ę°€ ëł´ěť´ë©´ ěť´ ěµě…ěť„ ě„ íťí•ě‹ě‹śě¤."> -<!ENTITY sendPage.waitMessage "ëł´ęł ě„śëĄĽ ě śě¶śí•는 ëŹ™ě• ěž ě‹śë§Ś ę¸°ë‹¤ë ¤ěŁĽě‹ě‹śě¤."> -<!ENTITY dataCollector.heading "ë¬¸ě ś ëł´ęł ë§ë˛•사를 이용해주셔서 ęł ë§™ěŠµë‹ë‹¤!"> -<!ENTITY screenshot.heading "화면 ę°ë¬´ë¦¬ 첨부"> -<!ENTITY sendPage.heading "ëł´ęł ě„ś ě „ě†ˇ"> -<!ENTITY issues.subscriptionCount.description "ë„무 많은 구독 필터를 구독í•ęł ěžěеë‹ë‹¤. ěť´ ě„¤ě •ěť€ 더 많은 ë¬¸ě śëĄĽ ë°śěťě‹śí‚¬ ě ěžę¸° ë•Śë¬¸ě— ę¶ŚěžĄí•ě§€ 않습ë‹ë‹¤. ë한 필요한 조ěąëĄĽ ě·¨í• ęµ¬ëŹ… í•„í„° ěś ě§€ěžę°€ 명확í•ě§€ 않기 ë•Śë¬¸ě— ěť´ ë¬¸ě ś ëł´ęł ëĄĽ 받아들일 ě 없습ë‹ë‹¤. ě‹¤ě śëˇś 필요한 구독 필터를 ě śě™¸í•ś ëŞ¨ë“ ęµ¬ëŹ… 필터를 ě śę±°í•ęł , 그런 후ě—도 ë¬¸ě śę°€ ë°śěťí•는지를 테스트í•ě‹ě‹śě¤."> -<!ENTITY screenshot.mark.label "ë¬¸ě ś ěě— í‘śě‹ś (&M)"> -<!ENTITY privacyPolicy.label "개인 ě •ëł´ ëł´í¸ ě •ě±…"> -<!ENTITY issues.description "ěť´ ë¬¸ě śě— ěí–Ąěť„ 줄 ě ěžëŠ” ě„¤ě • ë는 ěžëŁŚ 조사를 ě–´ë µę˛Ś í•는 요인을 íě§€í–습ë‹ë‹¤."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sidebar.dtd deleted file mode 100644 index 48d280d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "í•목 ěś„ěą í™•ěť¸"> -<!ENTITY address.label "주소"> -<!ENTITY context.open.label "ě í으로 열기"> -<!ENTITY type.label "í•식"> -<!ENTITY tooltip.filterSource.label "í•„í„° 그룹 :"> -<!ENTITY noitems.label "차단 가능한 í•목 없음"> -<!ENTITY filter.label "í•„í„°"> -<!ENTITY tooltip.size.label "í¬ę¸° :"> -<!ENTITY reattach.label "통합"> -<!ENTITY search.label "ę˛€ě‰ (&S)"> -<!ENTITY docDomain.thirdParty "(외부 ěš”ě˛)"> -<!ENTITY filterSource.label "í•„í„° ěś„ěą"> -<!ENTITY tooltip.docDomain.label "문서 ěś„ěą :"> -<!ENTITY context.copy.label "주소 복사"> -<!ENTITY tooltip.type.label "í•식 :"> -<!ENTITY context.disablefilter.label "í•„í„° 사용 중지 : ?1?"> -<!ENTITY context.copyFilter.label "í•„í„° 복사"> -<!ENTITY context.block.label "차단 í•„í„° 추가"> -<!ENTITY context.enablefilter.label "í•„í„° 다시 사용 : ?1?"> -<!ENTITY detach.label "분리"> -<!ENTITY whitelisted.label "í—ěš©ëś íŽěť´ě§€"> -<!ENTITY context.disablefilteronsite.label "ě§€ě •ëś ëŹ„ë©”ěť¸ě—ë§Ś ě ěš© 중지 : ?1?"> -<!ENTITY detached.title "차단 가능 목록 (분리ë¨)"> -<!ENTITY docDomain.firstParty "(ë‚´ë¶€ ěš”ě˛)"> -<!ENTITY tooltip.type.whitelisted "(í—ěš©ë¨)"> -<!ENTITY tooltip.filter.label "í•„í„° :"> -<!ENTITY tooltip.filter.disabled "(사용 중지)"> -<!ENTITY context.editfilter.label "í•„í„° 편집"> -<!ENTITY tooltip.type.blocked "(차단ë¨)"> -<!ENTITY size.label "í¬ę¸°"> -<!ENTITY context.whitelist.label "í—ěš© í•„í„° 추가"> -<!ENTITY context.selectAll.label "ëŞ¨ë‘ ě„ íť"> -<!ENTITY state.label "ěíś"> -<!ENTITY docDomain.label "문서 ěś„ěą"> -<!ENTITY tooltip.address.label "주소 :"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/subscriptionSelection.dtd deleted file mode 100644 index 2374e0d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ko/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label ""?1?" 구독 필터도 í•¨ę» ě¶”ę°€ (&s)"> -<!ENTITY list.download.failed "구독 í•„í„° ëŞ©ëˇťěť ę˛€ě‰ ě‹¤íŚ¨"> -<!ENTITY list.download.retry "다시 시도"> -<!ENTITY title.label "이름 (&T)"> -<!ENTITY list.download.website "웹 사이트"> -<!ENTITY supplementMessage "ě„ íťí•ś 구독 필터는 "?1?"와(과) í•¨ę» ě¶”ę°€í• ę˛ěť„ 권장합ë‹ë‹¤."> -<!ENTITY viewList.label "í•„í„° 목록 보기"> -<!ENTITY visitHomepage.label "í™íŽěť´ě§€"> -<!ENTITY addSubscription.label "추가"> -<!ENTITY dialog.title "구독 í•„í„° 추가"> -<!ENTITY location.label "ěś„ěą (&L)"> -<!ENTITY fromWeb.description "추가í•ë ¤ëŠ” 구독 필터인지 확인í•ě‹ě‹śě¤. 추가í•기 ě „ě— ěť´ë¦„ ë는 ěś„ěąëĄĽ ëł€ę˛˝í• ě ěžěеë‹ë‹¤."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/composer.dtd deleted file mode 100644 index 13efa60..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "adreso &pabaigoje"> -<!ENTITY domainRestriction.label "Apribojimai &domenui:"> -<!ENTITY collapse.default.no.label "Naudoti numatytÄ… (ne)"> -<!ENTITY firstParty.label "Tik &pagrindiniĹł"> -<!ENTITY preferences.label "&Rodyti esamus filtrus..."> -<!ENTITY pattern.label "Ieškoti atitikmens"> -<!ENTITY thirdParty.label "&Tik treÄŤiĹłjĹł šaliĹł"> -<!ENTITY filter.label "Naujas &filtras:"> -<!ENTITY collapse.label "&Suskleisti uĹľblokuotus:"> -<!ENTITY match.warning "Atitikmuo kurÄŻ ÄŻvedÄ—te nebeatitinka adreso kurÄŻ reikia ÄŻdÄ—ti ÄŻ baltÄ…jÄŻ/juodÄ…jÄŻ sÄ…rašą todÄ—l jis nebeturÄ—s jokio efekto."> -<!ENTITY anchor.start.label "a&dreso pradĹľioje"> -<!ENTITY matchCase.label "&Skirti didĹľiÄ…sias ir mažąsias raides"> -<!ENTITY custom.pattern.label "&Pasirinktas:"> -<!ENTITY unselectAllTypes.label "Nieko nepasirinkti"> -<!ENTITY type.whitelist.label "I&šimties taisyklÄ—"> -<!ENTITY regexp.warning "Atitikmuo kurÄŻ ÄŻvedÄ—te bus interpretuojamas kaip reguliarioji išraiška, Adblock Plus negali jo efektyviai pritaikyti, todÄ—l gali sulÄ—tÄ—ti naršymas. Jei nenorÄ—jote naudoti reguliariĹłjĹł išraiškĹł, atitikmens pabaigoje pridÄ—kite ĹľvaigĹľdutÄ™ (*)."> -<!ENTITY dialog.title "PridÄ—ti Adblock Plus filtravimo taisyklÄ™"> -<!ENTITY basic.label "Paprastas konfigĹ«ravimas"> -<!ENTITY type.filter.label "&Blokavimo filtrai"> -<!ENTITY types.label "Pritaikyti tipams:"> -<!ENTITY shortpattern.warning "Atitikmuo kurÄŻ ÄŻvedÄ—te yra per trumpas, kad bĹ«tĹł galima optimizuoti ir gali sulÄ—tinti naršymÄ…. Rekomenduojama šiam filtrui pasirinkti ilgesnÄ™ eilutÄ™, kad Adblock Plus galÄ—tĹł efektyviau išnaudoti šį filtrÄ…."> -<!ENTITY collapse.yes.label "Taip"> -<!ENTITY anchors.label "Priimti tik atitikmenÄŻ:"> -<!ENTITY collapse.default.yes.label "Naudoti numatytÄ… (taip)"> -<!ENTITY domainRestriction.help "Naudokite šiÄ… pasirinkty nurodyti vienÄ… ar kelis domenus atskirtus |. Filtras bus pritaikytas tik pasirinktiems domenams. ~ prieš domenÄ… parodo jog filtras nebus pritaikytas tam domenui."> -<!ENTITY accept.label "PridÄ—ti filtrÄ…"> -<!ENTITY options.label "Parinktys"> -<!ENTITY disabled.warning "Adblock Plus šiuo metu yra išjungtas. Vistiek galite pridÄ—ti filtrus, bet jie neveiks kol [link]neÄŻjungsite Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "&domeno pradĹľioje"> -<!ENTITY collapse.no.label "Ne"> -<!ENTITY selectAllTypes.label "Pasirinkti visus"> -<!ENTITY advanced.label "SudÄ—tingesnis konfigĹ«ravimas"> -<!ENTITY pattern.explanation "Atitikmuo gali bĹ«ti betkuri adreso dalis; ĹľvaigĹľdutÄ— (*) veiks kaip „wildcards“. Filtras bus pritaikytas tik tuo atveju jei adrese bus rastas atitikmuo."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/filters.dtd deleted file mode 100644 index 630e8cc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Visi jĹ«sĹł pasirinktiniai filtrai bus pakeisti pasirinkto failo turiniu. Ar norite tÄ™sti?"> -<!ENTITY slow.column "&LÄ—ti filtrai"> -<!ENTITY enabled.column "Ä®ju&ngta"> -<!ENTITY subscription.lastDownload.checksumMismatch "Nepavyko, bloga kontrolinÄ— suma"> -<!ENTITY noFiltersInGroup.text "Pasirinkta grupÄ— yra tuščia"> -<!ENTITY subscription.actions.label "Veiksmai"> -<!ENTITY filter.selectAll.label "Pasirinkti visas"> -<!ENTITY backupButton.label "&AtsarginiĹł kopijĹł kĹ«rimas ir atkĹ«rimas"> -<!ENTITY restore.minVersion.warning "Ä®spÄ—jimas: failas sukurtas naudojant naujesnÄ™ Adblock Plus versijÄ…. Prieš atstatant iš šio failo, turÄ—tumÄ—te atnaujinti savo Adblock Plus iki naujausios versijos."> -<!ENTITY restore.error "NeÄŻmanoma panaudoti failo duomenĹł, gal tai ne Adblock PLus atsarginÄ—s kopijos failas?"> -<!ENTITY sort.ascending.label "Riki&avimo tvarka „A > Z“"> -<!ENTITY sort.label "&Rikiuoti pagal"> -<!ENTITY subscription.source.label "FiltrĹł sÄ…rašas"> -<!ENTITY hitcount.column "&Blokavimai"> -<!ENTITY noFilters.text "Kol kas jĹ«s neturite jokiĹł pasirinktiniĹł filtrĹł."> -<!ENTITY backup.custom.title "Tik pasirinktiniai filtrai"> -<!ENTITY subscription.external.label "Atnaujino kitas plÄ—tinys"> -<!ENTITY subscription.delete.label "Ištrinti"> -<!ENTITY noGroupSelected.text "JĹ«s turite pasirinkti filtrĹł grupÄ™, tik tada bus galima parodyti tos grupÄ—s filtrus."> -<!ENTITY filter.cut.label "Iškirpti"> -<!ENTITY restore.default.label "Atstatyti atsarginÄ™ kopijÄ… iš ?1?"> -<!ENTITY subscription.lastDownload.inProgress "AtsiunÄŤiama..."> -<!ENTITY subscriptions.tab.label "FiltrĹł prenumeratos"> -<!ENTITY sort.descending.label "Rikiavimo tvarka „&Z > A“"> -<!ENTITY filters.remove.warning "Ar tikrai norite pašalinti visus pasirinktus filtrus?"> -<!ENTITY filter.delete.label "Pašalinti"> -<!ENTITY addSubscriptionAdd.label "PridÄ—ti"> -<!ENTITY viewMenu.label "Rodymas"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Atšaukti"> -<!ENTITY subscription.enabled.label "Ä®jungta"> -<!ENTITY noSubscriptions.text "Kol kas jĹ«s nepridÄ—jote jokiĹł filtrĹł prenumeratĹł. Be filtrĹł Adblock Plus nieko neblokuos, -norÄ—dami pridÄ—ti kelis naudokite -"PridÄ—ti filtrĹł prenumeratÄ…"."> -<!ENTITY subscription.update.label "Atnaujinti filtrus"> -<!ENTITY dialog.title "Adblock Plus filtrĹł nustatymai"> -<!ENTITY addFilter.label "Pri&dÄ—ti filtrÄ…"> -<!ENTITY subscription.minVersion.warning "Ĺ i filtrĹł prenumerata reikalauja naujesnÄ—s Adblock Plus versijos, turÄ—tume atsinaujinti savo Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Nepavyko, netinkamas adresas"> -<!ENTITY backup.error "Ä®vyko klaida rašant filtrus ÄŻ failÄ…. Ä®sitikinkite jog tas failas neapsaugotas nuo rašymo ir jo nenaudoja kita programa."> -<!ENTITY filter.moveUp.label "Pakelti aukštyn"> -<!ENTITY addGroup.label "PridÄ—ti filtrĹł &grupÄ™"> -<!ENTITY filter.edit.label "Keisti"> -<!ENTITY subscription.showHideFilters.label "Rodyti/slÄ—pti filtrĹł taisykles"> -<!ENTITY acceptableAds2.label "Leisti &neÄŻkyrias reklamas"> -<!ENTITY addSubscriptionOther.label "PridÄ—ti kitÄ… prenumeratÄ…"> -<!ENTITY close.label "UĹľverti"> -<!ENTITY sort.none.label "&Nerikiuojama"> -<!ENTITY filter.actions.label "Filtro veiksmai"> -<!ENTITY filter.copy.label "Kopijuoti"> -<!ENTITY filter.moveDown.label "Perkelti Ĺľemyn"> -<!ENTITY filter.resetHitCounts.label "Atstatyti blokavimĹł statistikÄ…"> -<!ENTITY readMore.label "PlaÄŤiau"> -<!ENTITY subscription.moveUp.label "Pakelti aukštyn"> -<!ENTITY addSubscription.label "&PridÄ—ti filtro prenumeratÄ…"> -<!ENTITY subscription.homepage.label "NamĹł puslapis"> -<!ENTITY backup.complete.title "Visi filtrai ir prenumeratos"> -<!ENTITY restore.own.label "Atstatyti savo atsarginÄ™ kopijÄ…"> -<!ENTITY restore.complete.warning "Visi jĹ«sĹł filtrĹł nustatymai bus pakeisti pasirinkto failo turiniu. Ar norite tÄ™sti?"> -<!ENTITY filters.tab.label "Pasirinktiniai filtrai"> -<!ENTITY backup.label "Sukurti naujÄ… atsarginÄ™ kopijÄ…"> -<!ENTITY find.label "Ra&sti"> -<!ENTITY subscription.moveDown.label "Perkelti Ĺľemyn"> -<!ENTITY subscription.lastDownload.connectionError "Nepavyko, atsiuntimo klaida"> -<!ENTITY subscription.lastDownload.success "SÄ—kmingai"> -<!ENTITY subscription.lastDownload.invalidData "Nepavyko, netinkamas filtrĹł sÄ…rašas"> -<!ENTITY filter.paste.label "Ä®dÄ—ti"> -<!ENTITY subscription.disabledFilters.enable "Ä®jungti išjungtus filtrus"> -<!ENTITY lasthit.column "Paskutinis b&lokavimas"> -<!ENTITY subscription.editTitle.label "Pervadinti"> -<!ENTITY subscription.disabledFilters.warning "Kai kurie filtrai, šioje prenumeratoje, išjungti."> -<!ENTITY filter.column "Filtro &taisyklÄ—"> -<!ENTITY subscription.lastDownload.label "Paskutinis atsiuntimas:"> -<!ENTITY viewList.label "PerĹľiĹ«rÄ—ti sÄ…rašą"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/firstRun.properties deleted file mode 100644 index 18f17b1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Išjunkite sekimÄ… ir paverskite savo naršymÄ… privaÄŤiu - paslÄ—pkite savo pÄ—dsakus nuo reklamos ÄŻmoniĹł kurios galbĹ«t seka kiekvienÄ… jĹ«sĹł ĹľingsnÄŻ. -firstRun_toggle_off=IĹ J. -firstRun_feature_tracking=Išjungti sekimÄ… -firstRun_feature_malware=KenkÄ—jiškĹł programĹł blokavimas -firstRun_title=AdBlock Plus sÄ—kmingai ÄŻdiegta -firstRun_acceptableAdsExplanation=Mes norÄ—tume paskatinti svetaines naudoti paprastas, nekrentanÄŤias ÄŻ akis reklamas. TodÄ—l nustatÄ—me <a>grieĹľtas gaires</a> priimtinĹł reklamĹł nustatymui, jos bus rodomos pagal nutylÄ—jimÄ…. Jei vis tiek norite visas reklamas galite <a>išjungti</a> šiÄ… galimybÄ™ per kelias sekundes. -firstRun_toggle_on=Ä®j. -firstRun_contributor_credits=PadÄ—kos prisidÄ—jusiems -firstRun_dataCorruptionWarning=Ar šis puslapis pastoviai rodomas? <a>Paspauskite ÄŤia</a> -firstRun_acceptableAdsHeadline=Nuo šiol erzinanÄŤios reklamos bus uĹľblokuotos -firstRun_share=Papasakokite savo draugams -firstRun_share_headline=<a>PadÄ—kite mums</a> paversti internetÄ… geresne vieta -firstRun_features=Adblock Plus gali daugiau nei tik blokuoti reklamas -firstRun_feature_malware_description=Padarykite savo naršymÄ… saugesniu uĹľblokuodami Ĺľinomas kenkÄ—jiškas svetaines. -firstRun_feature_social_description=Automatiškai pašalinkite socialiniĹł tinklĹł mygtukus, tokius kaip „Facebook Like“, kurie seka jĹ«sĹł elgesÄŻ. -firstRun_donate=paaukoti -firstRun_donate_label=Paremkite mĹ«sĹł projektÄ… -firstRun_feature_social=Pašalinti socialiniĹł puslapiĹł mygtukus -firstRun_legacySafariWarning=JĹ«s naudojate senÄ… Safari versijÄ…, kurios Adblock Plus nepalaiko. Adblock plus gali veikti netinkamai ar sukelti problemĹł. Rekomenduojame naudoti Safari 6.1.1 ar naujesnÄ™ versijÄ… (prieinama Mac OS X 10.9 Mavericks) arba naudokite naujausiÄ… Mozilla Firefox, Google Chrome ar Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/global.properties deleted file mode 100644 index 8480dda..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ĺ iame puslapyje nÄ—ra jokiĹł blokuojamĹł elementĹł -action3_tooltip=SpragtelÄ—kite, norÄ—dami ÄŻjungti/išjungti „Adblock Plus“. -notification_antiadblock_title=PaslÄ—pti tikslinius pranešimus? -type_label_script=scenarijus -filter_elemhide_nocriteria=NÄ—ra kriterijaus pagal kurÄŻ galima bĹ«tĹł nusprÄ™sti kurÄŻ elementÄ… paslÄ—pti -blockingGroup_title=ReklamĹł blokavimo taisyklÄ—s -whitelisted_tooltip=„Adblock Plus“ aktyvus, bet išjungtas dabartiniam tinklalapiui. -type_label_stylesheet=stilius -blocked_count_tooltip=?1? iš ?2? -type_label_font=šriftas -type_label_popup=iššokantis langas -filter_regexp_tooltip=Ĺ is filtras yra reguliarioji išraiška arba per trumpas, kad bĹ«tĹł galima optimizuoti. Jei yra daug tokiĹł filtrĹł jie gali sulÄ—tinti naršymÄ…. -action0_tooltip=SpragtelÄ—kite, norÄ—dami iškviesti kontekstinÄŻ meniu; spragtelÄ—kite viduriniuoju klavišu norÄ—dami ÄŻjungti/išjungti. -whitelisted_page=„Adblock Plus“ yra išjungtas dabartiniam tinklalapiui -remove_group_warning=Ar tikrai norite pašalinti šiÄ… grupÄ™? -action1_tooltip=SpragtelÄ—kite, norÄ—dami atverti/uĹľverti blokuojamus elementus; spragtelÄ—kite viduriniuoju klavišu norÄ—dami ÄŻjungti/išjungti. -type_label_xmlhttprequest=XML uĹľklausa -active_tooltip=Adblock Plus ÄŻjungtas, naudojamos ?1? filtrĹł prenumeratos ir ?2? pasirinktiniai filtrai. -type_label_document=dokumentas -type_label_object_subrequest=papildoma objekto uĹľklausa -whitelistGroup_title=IšimÄŤiĹł taisyklÄ—s -disabled_tooltip=„Adblock Plus“ išjungtas. -filter_elemhide_duplicate_id=Gali bĹ«ti nurodytas tik vienas elemento ID kurÄŻ reikia paslÄ—pti -type_label_object=objektas -action2_tooltip=SpragtelÄ—kite, norÄ—dami atverti nustatymus; spragtelÄ—kite viduriniuoju klavišu norÄ—dami ÄŻjungti/išjungti. -type_label_subdocument=kadras -clearStats_warning=Bus atstatyta visĹł filtrĹł blokavimĹł statistika ir išjungtas blokavimĹł skaiÄŤiavimas. Ar norite tÄ™sti? -notification_antiadblock_message=Ĺ ioje svetainÄ—je rodomi tiksliniai pranešimai Adblock Plus naudotojams. Ar norite jog Adblock Plus paslÄ—ptĹł tikslinius pranešimus? -blocked_count_addendum=(baltajame sÄ…raše: ?1?, paslÄ—pta: ?2?) -subscription_invalid_location=FiltrĹł sÄ…rašo adresas nÄ—ra taisyklingas URL ar failo vardas. -type_label_image=paveikslÄ—lis -remove_subscription_warning=Ar tikrai norite atsisakyti šios prenumeratos? -type_label_other=kita -mobile_menu_enable=ABP: Ä®jungti -type_label_media=audio/video -mobile_menu_disable_site=ABP: Išjungti ?1? -elemhideGroup_title=ElementĹł slÄ—pimo taisyklÄ—s -mobile_menu_enable_site=ABP: Ä®jungti ?1? -type_label_elemhide=paslÄ—pta -newGroup_title=Nauja filtrĹł grupÄ— -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/overlay.dtd deleted file mode 100644 index 8e2f332..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Taip"> -<!ENTITY notification.button.no "&Ne"> -<!ENTITY sync.label "Adblo&ck Plus Sync nustatymai"> -<!ENTITY whitelist.site.label "Išjungti ?1?"> -<!ENTITY filters.label "&FiltrĹł nustatymai"> -<!ENTITY disable.label "Išjungti visur"> -<!ENTITY objecttab.title "Blokuoti"> -<!ENTITY objecttab.tooltip "SpragtelÄ—kite ÄŤia norÄ—dami uĹľblokuoti šį objektÄ… su „Adblock Plus“"> -<!ENTITY menuitem.label "„&Adblock Plus“ nustatymai"> -<!ENTITY objecttabs.label "Rodyti korteles &Flash ir Java elementams"> -<!ENTITY sendReport.label "P&ranešti apie problemÄ… šiame puslapyje"> -<!ENTITY whitelist.page.label "Išjungti šiam tinklalapiui"> -<!ENTITY context.image.label "„Adblock Plus“: Blokuoti paveikslÄ—lÄŻ"> -<!ENTITY counthits.label "Sus&kaiÄŤiuoti filtro blokavimus"> -<!ENTITY opensidebar.label "Atverti &blokuojamus elementus"> -<!ENTITY notification.button.close "&UĹľdaryti"> -<!ENTITY contribute.label "PrisidÄ—ti prie Adblock Plus"> -<!ENTITY toolbarbutton.label "„Adblock Plus“"> -<!ENTITY context.frame.label "„Adblock Plus“: Blokuoti kadrÄ…"> -<!ENTITY blocked.tooltip "Ĺ iame tinklalapyje uĹľblokuoti elementai:"> -<!ENTITY hideplaceholders.label "S&lÄ—pti uĹľblokuotĹł elementĹł vietos laikiklius"> -<!ENTITY showinstatusbar.label "Rodyti &bĹ«senos juostoje"> -<!ENTITY sidebar.title "Blokuojami elementai dabartiniame tinklalapyje"> -<!ENTITY options.label "&Pasirinktys"> -<!ENTITY context.object.label "„Adblock Plus“: Blokuoti objektÄ…"> -<!ENTITY context.removeWhitelist.label "„Adblock Plus“: iš naujo ÄŻjungti šiame puslapyje"> -<!ENTITY filters.tooltip "Aktyviausi filtrai:"> -<!ENTITY closesidebar.label "UĹľverti &blokuojamus elementus"> -<!ENTITY showintoolbar.label "&Rodyti priemoniĹł juostoje"> -<!ENTITY status.tooltip "BĹ«sena:"> -<!ENTITY context.media.label "„Adblock Plus“: Blokuoti audio/video"> -<!ENTITY subscription.update.label "Atnaujinti filtrus"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sendReport.dtd deleted file mode 100644 index 9a832cd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sendReport.dtd +++ /dev/null @@ -1,96 +0,0 @@ -<!ENTITY screenshot.undo.label "&Atšaukti"> -<!ENTITY issues.disabledgroups.description "Ĺ ios filtrĹł prenumeratos / filtrĹł grupÄ—s yra išjungtos, nors jos gali -turÄ—ti ÄŻtakos šiam puslapiui:"> -<!ENTITY showData.label "Rodyti pranešimo duomenis"> -<!ENTITY typeSelector.falsePositive.label "A&dblock Plus blokuoja per daug"> -<!ENTITY issues.change.description "JĹ«sĹł konfigĹ«racija pakeista. Perkraukite puslapÄŻ ir išbandykite keitimus -ir jei problema neišsisprendÄ— praneškite apie jÄ…."> -<!ENTITY email.label "El. paš&tas:"> -<!ENTITY issues.openPreferences.label "Atverti filtro nustatymus"> -<!ENTITY sendPage.confirmation "JĹ«sĹł pranešimas išsaugotas. JÄŻ pasiekti galite šiuo adresu:"> -<!ENTITY copyLink.label "&Kopijuoti pranešimo nuorodÄ…"> -<!ENTITY issues.nofilters.description "Adblock Plus dabartiniame puslapyje nieko neblokuoja. Problema kuriÄ… matote -tikriausiai nÄ—ra susijusi su Adblock Plus."> -<!ENTITY sendPage.knownIssue "Pranešta klaida turbĹ«t Ĺľinoma. Daugiau informacijos:"> -<!ENTITY typeSelector.other.description "Pasirinkite šiÄ… pasirinkty jei manote jog tai paÄŤio Adblock Plus bÄ—da, o ne filtrĹł."> -<!ENTITY issues.disabledgroups.enable.label "Ä®jungti filtro prenumeratÄ… / filtrĹł grupÄ™"> -<!ENTITY typeWarning.override.label "&Aš suprantu ir vistiek noriu pranešti"> -<!ENTITY issues.disabled.enable.label "Ä®jungti Adblock Plus"> -<!ENTITY update.fixed.description "Atnaujinimai greiÄŤiausiai išsprendÄ— bÄ—dÄ… apie kuriÄ… jĹ«s norÄ—jote pranešti. Ä®kraukite puslapÄŻ iš naujo, jei problema vis dar yra paspauskite „Pranešti“."> -<!ENTITY anonymous.label "&Anoniminis pranešimas"> -<!ENTITY reloadButton.label "&Ä®kelti iš naujo"> -<!ENTITY recentReports.clear.label "&Pašalinti visus pranešimus"> -<!ENTITY typeSelector.description "Ĺ is langas padÄ—s ÄŻvykdyti kelis Ĺľingsnius kurie reikalingi pranešti apie Adblock Plus -problemÄ…. Pirmiausia, šiame puslapyje, pasirinkite problemos su kuria susidĹ«rÄ—te -tipÄ…:"> -<!ENTITY screenshot.remove.label "&Pašalinti neviešus duomenis"> -<!ENTITY issues.ownfilters.description "Kai kurie filtrai pritaikyti šiam puslapiui yra sukurti naudotojo. Išjunkite -filtrus kurie galÄ—jo sukelti problemÄ…:"> -<!ENTITY update.inProgress.description "Adblock Plus turi atnaujinti jĹ«sĹł filtrĹł prenumeratas ir ÄŻsitikinti jog problema dar neišsprÄ™sta. Palaukite..."> -<!ENTITY sendPage.retry.label "SiĹłsti dar kartÄ…"> -<!ENTITY data.label "Praneš&imo duomenys:"> -<!ENTITY recentReports.label "JĹ«sĹł nesenai praneštos problemos"> -<!ENTITY typeWarning.description "JĹ«s pareiškÄ—te jog problemÄ… sukÄ—lÄ— Adblock Plus, o ne filtrai. -TurÄ—kite omeny jog tokias problemas geriausia pranešti -[link]Adblock Plus forume[/link]. Ĺ ÄŻ problemĹł pranešėjÄ… turÄ—tumÄ—te naudoti -tik papildyti esamas diskusijas, niekas nepastebÄ—s jĹ«sĹł pranešimo -nebent duosite nuorodÄ… ÄŻ jÄŻ. Automatiškai sukurta nuoroda -bus parodyta kai išsiĹłsite pranešimÄ…."> -<!ENTITY issues.disabled.description "Adblock Plus yra išjungtas, tokioje bĹ«senoje jis nieko neuĹľblokuos."> -<!ENTITY attachExtensions.label "Prie pranešimo pri&segti aktyviĹł plÄ—tiniĹł sÄ…rašą, jei kartais problema kilo dÄ—l plÄ—tiniĹł nesuderinamumo"> -<!ENTITY issues.nosubscriptions.add.label "PridÄ—ti filtro prenumeratÄ…"> -<!ENTITY issues.disabledfilters.enable.label "Ä®jungti filtrÄ…"> -<!ENTITY issues.override.label "Konfi&gĹ«racija teisinga, tÄ™skite su pranešimu"> -<!ENTITY issues.nosubscriptions.description "Atrodo jĹ«s neprenumeruojate jokiĹł sukurtĹł filtrĹł sÄ…rašų kurie automatiškai -šalintĹł nepageidaujamÄ… turinÄŻ iš puslapiĹł."> -<!ENTITY typeSelector.falsePositive.description "Pasirinkite šiÄ… pasirinkty jei puslapyje trĹ«ksta svarbaus turinio, jei atvaizduojama netinkamai ar -puslapis nefunkcionuoja taip kaip turÄ—tĹł. NorÄ—dami ÄŻsitikinti jog problemÄ… sukÄ—lÄ— Adblock Plus galite -trumpam išjungti Adblock Plus."> -<!ENTITY typeSelector.other.label "Ki&ta bÄ—da"> -<!ENTITY emailComment.label "Mes raginame ÄŻvesti veikiantÄŻ el. pašto adresÄ…, tada jei turÄ—sime klausimĹł galÄ—sime jums juos uĹľduoti. Taipogi tai padÄ—s atpaĹľinti jĹ«sĹł pranešimus ir suteikti jiems aukštesnÄŻ prioritetÄ…."> -<!ENTITY issues.whitelist.remove.label "Ĺ iame puslapyje pakartotinai ÄŻjungti Adblock Plus"> -<!ENTITY outdatedSubscriptions.description "Ĺ ios filtrĹł prenumeratos nebuvo atnaujintos bent dvi savaites. Prieš siĹłsdami pranešimÄ… atnaujinkite šias prenumeratas, gali bĹ«ti jog problema jau išsprÄ™sta."> -<!ENTITY dataCollector.description "Palaukite kelias akimirkas, kol Adblock Plus surinks reikalingus duomenis."> -<!ENTITY sendButton.label "SiĹłsti p&ranešimÄ…"> -<!ENTITY comment.label "&Komentaras (nebĹ«tinas):"> -<!ENTITY sendPage.errorMessage "Bandymas išsiĹłsti pranešimÄ… nepavyko, buvo gauta klaida "?1?". Ä®sitikinkite jog -esate prisijungÄ™ prie interneto ir bandykite dar kartÄ…. Jei problema vis dar yra paprašykite -pagalbos forume [link]Adblock Plus forumas[/link]."> -<!ENTITY showRecentReports.label "Rodyti nesenai praneštas problemas"> -<!ENTITY commentPage.heading "Parašykite komentarÄ…"> -<!ENTITY update.start.label "PradÄ—ti atnaujinimÄ…"> -<!ENTITY issues.disabledfilters.description "Ĺ ie filtrai yra išjungti, nors jie gali turÄ—ti ÄŻtakos šiam puslapiui:"> -<!ENTITY screenshot.description "Tas pats puslapis skirtingiems ĹľmonÄ—ms, atrodo skirtingai. Mums gali padÄ—ti -prisegtas ekrano vaizdas. JĹ«s galite pašalinti sritis kuriose -gali bĹ«ti neviešos informacijos, taip pat ir tas kuriose -nesimato problemos. Norint tai padaryti paspauskite atitinkamÄ… mygtukÄ… ir pasirinkite -reikalingÄ… paveiksliuko dalÄŻ su pele."> -<!ENTITY screenshot.attach.label "P&rie pranešimo pridÄ—ti puslapio vaizdÄ…"> -<!ENTITY issues.whitelist.description "Ĺ iuo metu, šiame puslapyje Adblock Plus yra išjungtas. Prašau ÄŻjungti jÄŻ -ir perkrauti puslapÄŻ prieš pranešant apie problemÄ… kuriai -sprÄ™sti norite pagalbos."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus neblokuoja &reklamĹł"> -<!ENTITY typeSelector.heading "Pasirinkite tipÄ…"> -<!ENTITY anonymity.warning "Mes negalÄ—sime grÄŻĹľti prie jĹ«sĹł ir greiÄŤiausiai jĹ«sĹł ataskaitai bus priskirtas Ĺľemas prioritetas."> -<!ENTITY wizard.title "Klaidos pranešimas"> -<!ENTITY issues.ownfilters.disable.label "Išjungti filtrÄ…"> -<!ENTITY commentPage.description "Teksto ÄŻvedimo laukelis leidĹľia jums ÄŻvesti komentarÄ… kuris mums padÄ—s suprasti jĹ«sĹł problemÄ…. -Ĺ is Ĺľingsnis nebĹ«tinas, bet rekomenduojamas jei problema neaiški. -Taipogi galite perĹľiĹ«rÄ—ti pranešimÄ… prieš jÄŻ siunÄŤiant."> -<!ENTITY comment.lengthWarning "JĹ«sĹł komentaras ilgesnis nei 1000 simboliĹł. Bus išsiĹłsti tik pirmi 1000 simboliĹł."> -<!ENTITY typeSelector.falseNegative.description "Pasirinkite šiÄ… pasirinkty jei reklama rodoma, net ir -ÄŻjungus Adblock Plus."> -<!ENTITY sendPage.waitMessage "Palaukite kol Adblock Plus siunÄŤia jĹ«sĹł pranešimÄ…."> -<!ENTITY dataCollector.heading "Sveiki atvykÄ™ ÄŻ klaidĹł pranešėjÄ…"> -<!ENTITY screenshot.heading "PridÄ—ti ekranvaizdÄŻ"> -<!ENTITY sendPage.heading "SiĹłsti pranešimÄ…"> -<!ENTITY issues.subscriptionCount.description "Atrodo jĹ«s prenumeruojate perdaug filtrĹł prenumeratĹł. Tokie nustatymai -rekomenduojami, nes tai sumaĹľins problemĹł tikimybes. -Taipogi mes negalime priimti jĹ«sĹł pranešimo, nes -neaišku kurio filtro autorius turÄ—tĹł imtis veiksmĹł. Prašome -pašalinti visus tikrai reikalingas filtrĹł prenumeratas ir -patikrinti ar problema vis dar yra."> -<!ENTITY screenshot.mark.label "PaĹľ&ymÄ—ti problemÄ…"> -<!ENTITY privacyPolicy.label "Privatumo politika"> -<!ENTITY issues.description "Adblock Plus nustatÄ— klaidĹł jĹ«sĹł konfigĹ«racijoje kurios gali bĹ«ti atsakingos -dÄ—l šios problemos arba gali apsunkinti problemĹł sprendimÄ…."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sidebar.dtd deleted file mode 100644 index 4649d2e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Paryškinti elemento rÄ—melÄŻ"> -<!ENTITY address.label "Adresas"> -<!ENTITY context.open.label "Atverti naujoje kortelÄ—je"> -<!ENTITY type.label "Tipas"> -<!ENTITY tooltip.filterSource.label "Filtro šaltinis:"> -<!ENTITY noitems.label "NÄ—ra blokuojamĹł elementĹł"> -<!ENTITY filter.label "Filtras"> -<!ENTITY tooltip.size.label "Dydis:"> -<!ENTITY reattach.label "Iš naujo ÄŻkelti"> -<!ENTITY search.label "&Ieškoti:"> -<!ENTITY docDomain.thirdParty "(treÄŤioji šalis)"> -<!ENTITY filterSource.label "Filtruoti pirminÄŻ kodÄ…"> -<!ENTITY tooltip.docDomain.label "Dokumento šaltinis:"> -<!ENTITY context.copy.label "Kopijuoti elemento adresÄ…"> -<!ENTITY tooltip.type.label "Tipas:"> -<!ENTITY context.disablefilter.label "Išjungti filtrÄ… ?1?"> -<!ENTITY context.copyFilter.label "Kopijuoti filtrÄ…"> -<!ENTITY context.block.label "Blokuoti šį elementÄ…"> -<!ENTITY context.enablefilter.label "Iš naujo ÄŻjungti filtrÄ… ?1?"> -<!ENTITY detach.label "Iškelti"> -<!ENTITY whitelisted.label "Tinklalapis ÄŻtrauktas ÄŻ išimtis"> -<!ENTITY context.disablefilteronsite.label "Išjungti šį filtrÄ… tinklalapiui ?1?"> -<!ENTITY detached.title "„Adblock Plus“ blokuojami elementai (iškelta)"> -<!ENTITY docDomain.firstParty "(pagrindinis)"> -<!ENTITY tooltip.type.whitelisted "(ÄŻtraukta ÄŻ išimtis)"> -<!ENTITY tooltip.filter.label "Galiojantys filtrai:"> -<!ENTITY tooltip.filter.disabled "(išjungta)"> -<!ENTITY context.editfilter.label "Redaguoti aktyvĹł filtrÄ…"> -<!ENTITY tooltip.type.blocked "(uĹľblokuota)"> -<!ENTITY size.label "Dydis"> -<!ENTITY context.whitelist.label "PridÄ—ti išimties taisyklÄ™ šiam elementui"> -<!ENTITY context.selectAll.label "PaĹľymÄ—ti viskÄ…"> -<!ENTITY state.label "BĹ«sena"> -<!ENTITY docDomain.label "Dokumento šaltinis"> -<!ENTITY tooltip.address.label "Adresas:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/subscriptionSelection.dtd deleted file mode 100644 index dfcc0f7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lt/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "T&aip pat pridÄ—ti filtro prenumeratÄ… "?1?""> -<!ENTITY list.download.failed "Adblock Plus nepavyko gauti prenumeratĹł sÄ…rašo."> -<!ENTITY list.download.retry "Bandykite dar kartÄ…"> -<!ENTITY title.label "&Prenumeratos pavadinimas:"> -<!ENTITY list.download.website "Rodyti tinklalapÄŻ"> -<!ENTITY supplementMessage "Ĺ i filtrĹł prenumerata skirta naudoti kartu su "?1?" filtrĹł prenumerata, kurios jĹ«s kol kas nenaudojate."> -<!ENTITY viewList.label "Rodyti filtrus"> -<!ENTITY visitHomepage.label "Aplankyti tinklalapÄŻ"> -<!ENTITY addSubscription.label "PridÄ—ti prenumeratÄ…"> -<!ENTITY dialog.title "PridÄ—ti „Adblock Plus“ filtro prenumeratÄ…"> -<!ENTITY location.label "FiltrĹł sÄ…rašo &vieta:"> -<!ENTITY fromWeb.description "Patvirtinkite jog norite pridÄ—ti šiÄ… prenumeratÄ…. Prieš ÄŻdedant prenumeratÄ… jĹ«s galite pakeisti jos pavadinimÄ… ar vietÄ…."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/composer.dtd deleted file mode 100644 index 08bd7d8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "adreses beigÄs"> -<!ENTITY domainRestriction.label "IerobeĹľot lÄ«dz domÄ“nam:"> -<!ENTITY collapse.default.no.label "Lietot noklusÄ“to vÄ“rtÄ«bu (nÄ“)"> -<!ENTITY firstParty.label "Tikai pirmÄs puses"> -<!ENTITY preferences.label "RÄdÄ«t esošos filtrus..."> -<!ENTITY pattern.label "MeklÄ“t paraugu"> -<!ENTITY thirdParty.label "Tikai trešÄs puses"> -<!ENTITY filter.label "Jauns filtrs:"> -<!ENTITY collapse.label "BloÄ·Ä“ts sabrukums:"> -<!ENTITY match.warning "Modeli ko jus ievadijat vairs neatbilst adresei bloketiem/baltulistetiem un neizveidos nekad effektu uz ta."> -<!ENTITY anchor.start.label "adreses sÄkumÄ"> -<!ENTITY matchCase.label "SaderÄ«gs gadÄ«jums"> -<!ENTITY custom.pattern.label "PielÄgots:"> -<!ENTITY unselectAllTypes.label "IzvÄ“lÄ“ties nevienu"> -<!ENTITY type.whitelist.label "Izņēmuma nosacÄ«jums"> -<!ENTITY regexp.warning "Modelis kuru jĹ«s ievadÄ«jÄt tika interpretÄ“ts kÄ regulÄra izteiksme, ko Adblock Plus nevar efektÄ«vi apstrÄdÄt un tas var palÄ“ninÄt jĹ«su pÄrlĹ«košanas Ätrumu. Ja jĹ«s neplÄnojat izmantot regulÄru izteiksmi, pievienojiet zvaigznÄ«ti (*) parauga beigÄs."> -<!ENTITY dialog.title "Pievienot Adblock Plus filtra nosacÄ«jumu"> -<!ENTITY basic.label "Pamata skatÄ«jums"> -<!ENTITY type.filter.label "Bloķēšanas filtrs"> -<!ENTITY types.label "Pielietot tipiem:"> -<!ENTITY shortpattern.warning "Paraugs, kuru jĹ«s ievadÄ«jÄt, ir pÄrÄk Ä«ss, lai bĹ«tu optimizÄ“ts un tas var palÄ“ninÄt jĹ«su pÄrlĹ«košanu. Ieteicams izvÄ“lÄ“ties garÄku virkni šim filtram, lai Adblock Plus varÄ“tu apstrÄdÄt filtru efektÄ«vÄk."> -<!ENTITY collapse.yes.label "JÄ"> -<!ENTITY anchors.label "ApstiprinÄt tiaki paraugus:"> -<!ENTITY collapse.default.yes.label "Lietot noklusÄ“to vÄ“rtÄ«bu (jÄ)"> -<!ENTITY domainRestriction.help "Izmantojiet šo opciju, lai precizÄ“tu vienu vai vairÄkus domÄ“nus, atdalÄ«tus ar joslu lÄ«niju (|). Filtrs tiks attiecinÄts tikai uz izvÄ“lÄ“to domÄ“nu(-iem). Tilde (~) pirms domÄ“na vÄrda norÄda, ka filtrs netiek piemÄ“rots attiecÄ«bÄ uz šo domÄ“nu."> -<!ENTITY accept.label "Pievienot filtru"> -<!ENTITY options.label "Opcijas"> -<!ENTITY disabled.warning "Adblock Plus šobrÄ«d ir atspÄ“jots. JĹ«s joprojÄm varat pievienot filtrus, bet tie netiks piemÄ“roti tik ilgi, kamÄ“r jĹ«s [link]neiespÄ“josiet Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "domÄ“na vÄrda sÄkumÄ"> -<!ENTITY collapse.no.label "NÄ“"> -<!ENTITY selectAllTypes.label "IzvÄ“lÄ“ties visu"> -<!ENTITY advanced.label "PaplašinÄts skatÄ«jums"> -<!ENTITY pattern.explanation "Paraugs var bĹ«t jebkura daÄĽa no adreses, zvaigznÄ«te (*) darbojas kÄ aizstÄjÄ“jzÄ«me. Filtrs var tikt piemÄ“rots tikai adresei, kas atbilst paredzÄ“tajam modelim."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/filters.dtd deleted file mode 100644 index f7c466f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Visi JĹ«su pielÄgotie filtri tiks aizvietori ar izvÄ“lÄ“tÄ faila saturu. Vai vÄ“laties turpinÄt?"> -<!ENTITY slow.column "LÄ“ni filtri"> -<!ENTITY enabled.column "IespÄ“jots"> -<!ENTITY subscription.lastDownload.checksumMismatch "NeizdevÄs, kontrolsummas neatbilstÄ«ba"> -<!ENTITY noFiltersInGroup.text "IzvÄ“lÄ“tÄ grupa ir tukšsa."> -<!ENTITY subscription.actions.label "DarbÄ«bas"> -<!ENTITY filter.selectAll.label "IzvÄ“lÄ“ties visu"> -<!ENTITY backupButton.label "DublÄ“jumkopiju izveide un atjaunošana"> -<!ENTITY restore.minVersion.warning "BrÄ«dinÄjums: fails ir izveidots, izmantojot jaunÄku Adblock Plus versiju. Jums nepieciešams atjauninÄt Adblock Plus, pirms turpinÄt atjaunošanu no šī faila."> -<!ENTITY restore.error "Faila dati nevar tikt apstrÄdÄti, varbĹ«t tas nav Adblock Plus rezerves kopijas fails?"> -<!ENTITY sort.ascending.label "A > Z kÄrtošanas secÄ«ba"> -<!ENTITY sort.label "KÄrtot pÄ“c"> -<!ENTITY subscription.source.label "Filtru saraksts"> -<!ENTITY hitcount.column "Klikšķi"> -<!ENTITY noFilters.text "Jums vÄ“l nav pielagotus filtrus."> -<!ENTITY backup.custom.title "Tikai pielÄgotie filtri"> -<!ENTITY subscription.external.label "AtjauninÄts ar citu paplašinÄjumu"> -<!ENTITY subscription.delete.label "DzÄ“st"> -<!ENTITY noGroupSelected.text "Jums ir nepieciešams izvÄ“lÄ“ties filtra grupu pirms tÄs filtrus var parÄdÄ«t."> -<!ENTITY filter.cut.label "Izgriezt"> -<!ENTITY restore.default.label "Atjaunot rezerves kopiju no ?1?"> -<!ENTITY subscription.lastDownload.inProgress "LejupielÄdÄ“..."> -<!ENTITY subscriptions.tab.label "Filtra abonementi"> -<!ENTITY sort.descending.label "Z > A kÄrtošanas secÄ«ba"> -<!ENTITY filters.remove.warning "Vai tiešÄm vÄ“laties noņemt visus atlasÄ«tos filtrus?"> -<!ENTITY filter.delete.label "DzÄ“st"> -<!ENTITY addSubscriptionAdd.label "Pievienot"> -<!ENTITY viewMenu.label "SkatÄ«t"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Atcelt"> -<!ENTITY subscription.enabled.label "IespÄ“jota"> -<!ENTITY noSubscriptions.text "JĹ«s lÄ«dz šim neesat pievienojis nevienu filra abonementu. Adblock Plus neko nebloÄ·Ä“s bez filtriem, lĹ«dzam lietot "Pievienot filtra abonementu", lai tos pievienotu."> -<!ENTITY subscription.update.label "AtjauninÄt filtrus"> -<!ENTITY dialog.title "Adblock Plus filtra prioritÄtes"> -<!ENTITY addFilter.label "Pievienot Filtru"> -<!ENTITY subscription.minVersion.warning "Ĺ o filtru abonēšanai nepieciešama jaunÄka versija Adblock Plus, tadel jums vajadzÄ“tu atjauninÄt ar jaunÄko Adblock Plus versiju."> -<!ENTITY subscription.lastDownload.invalidURL "NeizdevÄs, nav derÄ«ga adrese"> -<!ENTITY backup.error "RadÄs kÄĽĹ«da, ierakstot filtrus failÄ. PÄrliecinieties, ka fails nav aizsargÄts pret ierakstu vai netiek izmantots citÄ lietojumprogrammÄ."> -<!ENTITY filter.moveUp.label "PÄrvietot uz augšu"> -<!ENTITY addGroup.label "Pievienot filtra grupu"> -<!ENTITY filter.edit.label "RediÄŁÄ“t"> -<!ENTITY subscription.showHideFilters.label "RÄdÄ«t/paslÄ“pt filtrus"> -<!ENTITY acceptableAds2.label "AtÄĽaut daĹľas neuzbÄzÄ«gas reklÄmas"> -<!ENTITY addSubscriptionOther.label "Pievienot citu abonementu"> -<!ENTITY close.label "AizvÄ“rt"> -<!ENTITY sort.none.label "NesakÄrtots"> -<!ENTITY filter.actions.label "Filtra darbÄ«bu"> -<!ENTITY filter.copy.label "KopÄ“t"> -<!ENTITY filter.moveDown.label "PÄrvietot uz leju"> -<!ENTITY filter.resetHitCounts.label "AtiestatÄ«t izmantojumu statistiku"> -<!ENTITY readMore.label "LasÄ«t vairÄk"> -<!ENTITY subscription.moveUp.label "PÄrvietot uz augšu"> -<!ENTITY addSubscription.label "Pievienot filtra abonēšanu"> -<!ENTITY subscription.homepage.label "MÄjas lapa"> -<!ENTITY backup.complete.title "Visi filtri un abonementi"> -<!ENTITY restore.own.label "Atjaunot paša rezerves kopiju"> -<!ENTITY restore.complete.warning "Visas JĹ«su filtru prioritÄtes tiks aizvietotas ar izvÄ“lÄ“tÄ faila saturu. Vai vÄ“laties turpinÄt?"> -<!ENTITY filters.tab.label "PielÄgoti filtrus"> -<!ENTITY backup.label "Izveidot jaunu rezerves kopiju"> -<!ENTITY find.label "MeklÄ“t"> -<!ENTITY subscription.moveDown.label "PÄrvietot uz leju"> -<!ENTITY subscription.lastDownload.connectionError "NeizdevÄs, lejupielÄde neizdevÄs"> -<!ENTITY subscription.lastDownload.success "IzdevÄs"> -<!ENTITY subscription.lastDownload.invalidData "NeizdevÄs, nav derÄ«gs filtru saraksts"> -<!ENTITY filter.paste.label "IelÄ«mÄ“t"> -<!ENTITY subscription.disabledFilters.enable "IespÄ“jot atspÄ“jotie filtri"> -<!ENTITY lasthit.column "PÄ“dÄ“jai klikšķis"> -<!ENTITY subscription.editTitle.label "RediÄŁÄ“t nosaukumu"> -<!ENTITY subscription.disabledFilters.warning "DaĹľi filtri šo abonementu ir atspÄ“jotas."> -<!ENTITY filter.column "Filtra noteikumi"> -<!ENTITY subscription.lastDownload.label "PÄ“dÄ“jÄ lejupielÄde:"> -<!ENTITY viewList.label "SkatÄ«t sarakstu"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/firstRun.properties deleted file mode 100644 index efbd94e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=PÄrlĹ«kot privÄti, atspÄ“jojot izsekošanu - slÄ“pjot JĹ«su pÄ“das no reklÄmas kompÄnijÄm, kuras varÄ“tu izsekot katru JĹ«su kustÄ«bu. -firstRun_toggle_off=IZSLÄ’GTS -firstRun_feature_tracking=AtspÄ“jot izsekošanu -firstRun_feature_malware=BloÄ·Ä“t ÄĽaundabÄ«gas programmas -firstRun_title=AdblockPlus ir uzstÄdÄ«ts -firstRun_acceptableAdsExplanation=MÄ“s vÄ“lÄ“tos veicinÄt vienkÄršu, neuzbÄzÄ«gu reklÄmu lietošanu vietnÄ“s. TÄpÄ“c esam izveidojuši <a>stingras vadlÄ«nijas</a> pieņemamo reklÄmu noteikšanai, kuras parÄdÄ«tas noklusÄ“juma iestatÄ«jumos. Ja JĹ«s joprojÄm vÄ“laties bloÄ·Ä“t pilnÄ«gi visas reklÄmas, JĹ«s varat <a>atspÄ“jot</a> šo pÄ“c daĹľÄm sekundÄ“m. -firstRun_toggle_on=IESLÄ’GTS -firstRun_contributor_credits=ZiedotÄju saraksts -firstRun_dataCorruptionWarning=Vai šī lapa turpina attÄ“loties? <a>Spied šeit!</a> -firstRun_acceptableAdsHeadline=UzmÄcÄ«gas reklÄmas turpmÄk tiks bloÄ·Ä“tas -firstRun_share=PastÄsti saviem draugiem -firstRun_share_headline=<a>PalÄ«dzi mums</a> padarÄ«t tÄ«klu par labÄku vietu -firstRun_features=AdblockPlus var izdarÄ«t vairÄk, ne tikai bloÄ·Ä“t reklÄmas -firstRun_feature_malware_description=PadarÄ«t JĹ«su pÄrlĹ«košanu drošÄku, bloÄ·Ä“jot zinÄmos ÄĽaundabÄ«go programmu avotus. -firstRun_feature_social_description=AutomÄtiski atbrÄ«vot JĹ«su pÄrlĹ«košanas procesu no tÄdÄm sociÄlo mediju pogÄm kÄ Facebook Live, kas parÄdÄs interneta lapÄs un izseko JĹ«su darbÄ«bu. -firstRun_donate=ziedot -firstRun_donate_label=AtbalstÄ«t mĹ«su projektu -firstRun_feature_social=Noņemt sociÄlo mediju pogas -firstRun_legacySafariWarning=JĹ«s izmantojat novecojušu Safari versiju, kuru Adblock Plus neatbalsta. Tas var nedarboties pareizi vai pasliktinÄt lietotÄja pieredzi daĹľÄs vietnÄ“s. MÄ“s uzstÄjÄ«gi iesakÄm Jums atjauninÄt Safari lÄ«dz 6. vai vÄ“l jaunÄkai versijai (pieejama Mac OS X 10.8 Mountain Lion un augstÄk) jeb lietot Mozilla Firefox, Google Chrome vai Opera jaunÄkÄs versijas. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/global.properties deleted file mode 100644 index 4eb9bdf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=PašreizÄ“jÄ lapÄ nav bloÄ·Ä“jamu vienÄ«bu -action3_tooltip=Noklikšķiniet, lai aktivizÄ“tu/deaktivizÄ“tu Adblock Plus. -notification_antiadblock_title=slÄ“pt mÄ“rÄ·tiecÄ«gas ziņas? -type_label_script=skripts -filter_elemhide_nocriteria=Elementa paslÄ“pšanai nav norÄdÄ«ts neviens kritÄ“rijs -blockingGroup_title=ReklÄmu bloķēšanas noteikumi -whitelisted_tooltip=PašreizÄ“jÄ lapÄ Adblock Plus ir deaktivizÄ“ts. -type_label_stylesheet=stila lapa -blocked_count_tooltip=?1? no ?2? -type_label_font=fonts -type_label_popup=uzlecošais logs -filter_regexp_tooltip=Ĺ is filtrs ir vai nu regulÄrÄ izteiksme vai arÄ« pÄrÄk Ä«ss, lai tiktu optimizÄ“ts. PÄrÄk daudz šÄdu filtru var palÄ“ninÄt JĹ«su parlĹ«košanu. -action0_tooltip=Noklikšķiniet, lai parÄdÄ«tu konteksta izvÄ“lni, vidÄ“jais klikšķis, lai aktivizÄ“tu/deaktivizÄ“tu. -whitelisted_page=PašreizÄ“jÄ lapÄ Adblock Plus ir ticis deaktivizÄ“ts. -remove_group_warning=Vai tiešÄm vÄ“laties noņemt šo grupu? -action1_tooltip=Noklikšķiniet, lai atvÄ“rtu aizvÄ“rtu bloÄ·Ä“jamÄs vienÄ«bas, vidÄ“jais klikšķis, lai aktivizÄ“tu/deaktivizÄ“tu. -type_label_xmlhttprequest=XML pieprasÄ«jums -active_tooltip=Adblock Plus ir aktivizÄ“ts, ?1? filtru abonementi un ?2? pielÄgotie filtri tiek izmantoti. -type_label_document=dokuments -type_label_object_subrequest=objekta apakš-pieprasÄ«jums -whitelistGroup_title=Izņēmuma noteikumi -disabled_tooltip=Adblock Plus ir deaktivizÄ“ts. -filter_elemhide_duplicate_id=Tikai viens paslÄ“pjamÄ elementa ID drÄ«kst tikt norÄdÄ«ts. -type_label_object=objekts -action2_tooltip=Noklikšķiniet, lai atvÄ“rtu iestatÄ«jumus, vidÄ“jais klikšķis, lai aktivizÄ“tu/deaktivizÄ“tu. -type_label_subdocument=rÄmis -clearStats_warning=Ĺ Ä« darbÄ«ba atiestatÄ«s visu filtra izmantojumu statistiku un atspÄ“jos tÄs uzskaiti. Vai vÄ“laties turpinÄt? -notification_antiadblock_message=Ĺ Ä« vietne ir zinÄma, lai parÄdÄ«tu mÄ“rÄ·tiecÄ«gas ziņas Adblock Plus lietotÄjiem. Vai jĹ«s vÄ“laties, Adblock Plus slÄ“pt mÄ“rÄ·tiecÄ«gas ziņas? -blocked_count_addendum=(arÄ«, baltajÄ sarakstÄ: ?1?, slÄ“pti: ?2?) -subscription_invalid_location=Filtru saraksta atrašanÄs vieta nav ne derÄ«gs URL ne arÄ« derÄ«gs faila nosaukums. -type_label_image=attÄ“ls -remove_subscription_warning=Vai JĹ«s tiešÄm vÄ“laties noņemt šo abonementu? -type_label_other=cits -mobile_menu_enable=ABP: IeslÄ“gts -type_label_media=audio/video -mobile_menu_disable_site=ABP: AtspÄ“jotu uz ?1? -elemhideGroup_title=Elementu paslÄ“pšanas noteikumi -mobile_menu_enable_site=ABP: IespÄ“jot uz ?1? -type_label_elemhide=paslÄ“pts -newGroup_title=Jaunu filtru grupas -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/overlay.dtd deleted file mode 100644 index 030d111..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "& JÄ"> -<!ENTITY notification.button.no "& NÄ“"> -<!ENTITY sync.label "Sinhronizet Adblock Plus uzstÄdÄ«jumus"> -<!ENTITY whitelist.site.label "AtspÄ“jot uz ?1?"> -<!ENTITY filters.label "Filtra preferences"> -<!ENTITY disable.label "AtspÄ“jot visur"> -<!ENTITY objecttab.title "BloÄ·Ä“t"> -<!ENTITY objecttab.tooltip "Noklikšķiniet šeit, lai bloÄ·Ä“tu šo objektu ar Adblock Plus"> -<!ENTITY menuitem.label "Adblock Plus IestatÄ«jumi"> -<!ENTITY objecttabs.label "RÄdÄ«&t cilnes Flash un Java"> -<!ENTITY sendReport.label "&Ziņot par problÄ“mÄm šajÄ lapÄ"> -<!ENTITY whitelist.page.label "AtspÄ“jot tikai šajÄ lapÄ"> -<!ENTITY context.image.label "Adblock Plus: BloÄ·Ä“t attÄ“lu"> -<!ENTITY counthits.label "SkaitÄ«t filtra izmantojumus"> -<!ENTITY opensidebar.label "AtvÄ“rt bloÄ·Ä“jamÄs vienÄ«bas"> -<!ENTITY notification.button.close "& AizvÄ“rt"> -<!ENTITY contribute.label "PalÄ«dziet Adblock Plus veidošanai, tulkošanai..."> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: BloÄ·Ä“t rÄmi"> -<!ENTITY blocked.tooltip "BloÄ·Ä“tÄs vienÄ«bas šajÄ lapÄ:"> -<!ENTITY hideplaceholders.label "NoslÄ“pt bloÄ·Ä“to elementu vietturus"> -<!ENTITY showinstatusbar.label "RÄdÄ«t stÄvokÄĽa joslÄ"> -<!ENTITY sidebar.title "BloÄ·Ä“jamÄs vienÄ«bas šajÄ lapÄ"> -<!ENTITY options.label "IespÄ“jas"> -<!ENTITY context.object.label "Adblock Plus: BloÄ·Ä“t objektu"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: IespÄ“jot šajÄ lapÄ"> -<!ENTITY filters.tooltip "VisaktÄ«vÄkie filtri:"> -<!ENTITY closesidebar.label "AizvÄ“rt bloÄ·Ä“jamÄs vienÄ«bas"> -<!ENTITY showintoolbar.label "RÄdÄ«t rÄ«kjoslÄ"> -<!ENTITY status.tooltip "Statuss:"> -<!ENTITY context.media.label "Adblock Plus: BloÄ·Ä“t audio/video"> -<!ENTITY subscription.update.label "AtjauninÄt filtrus"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sendReport.dtd deleted file mode 100644 index 5881de0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Atsa&ukt"> -<!ENTITY issues.disabledgroups.description "Sekojošie filtru abonementi / filtru grupas ir atslÄ“gti, tomÄ“r tiem ir ietekme uz šo lapu:"> -<!ENTITY showData.label "RÄdÄ«t ziņojuma datus"> -<!ENTITY typeSelector.falsePositive.label "A&dblock Plus bloÄ·Ä“ pÄrÄk daudz"> -<!ENTITY issues.change.description "JĹ«su konfigurÄcija ir izmanÄ«ta. LĹ«dzu pÄrlÄdÄ“jiet lapu, lai pÄrbaudÄ«tu izmaiņas un nosĹ«tÄ«tu ziņojumu, ja izmaiņas nav novÄ“rsušas problÄ“mu."> -<!ENTITY email.label "E-&pasts:"> -<!ENTITY issues.openPreferences.label "AtvÄ“rt filtru iestatÄ«jumus"> -<!ENTITY sendPage.confirmation "JĹ«su ziņojums ir saglabÄts. JĹ«s tam varat piekÄĽĹ«t sekojošajÄ adresÄ“:"> -<!ENTITY copyLink.label "&KopÄ“t ziņojuma saiti"> -<!ENTITY issues.nofilters.description "PašreizÄ“jÄ lapÄ Adblock Plus neko nebloÄ·Ä“. ProblÄ“ma, ko JĹ«s pieredzat visticamÄk ir nesaistÄ«ta ar Adblock Plus."> -<!ENTITY sendPage.knownIssue "JĹ«su nosĹ«tÄ«tais problÄ“ma iespÄ“jams jau ir zinÄma. VairÄk informÄcija:"> -<!ENTITY typeSelector.other.description "IzvÄ“laties šo opciju ja JĹ«s nojaušat problÄ“mu ar pašu Adblock Plus nevis tÄ filtriem."> -<!ENTITY issues.disabledgroups.enable.label "IevadÄ«t filtru abonementu / filtru grupu"> -<!ENTITY typeWarning.override.label "Es saprotu un vienalga vÄ“los nosĹ«tÄ«t ziņojumu"> -<!ENTITY issues.disabled.enable.label "IespÄ“jot Adblock Plus"> -<!ENTITY update.fixed.description "JĹ«su filtru abonementu atjauninÄjums acÄ«mredzot atrisinÄja problÄ“mu, par kuru ziņojÄt. LĹ«dzu, pÄrlÄdÄ“jiet lapu un mēģiniet vÄ“lreiz. Ziņojiet atkÄrtoti, ja problÄ“ma saglabÄjas."> -<!ENTITY anonymous.label "AnonÄ«ms iesniegums"> -<!ENTITY reloadButton.label "PÄr&lÄdÄ“t lapu"> -<!ENTITY recentReports.clear.label "&Noņemt visus ziņojumus"> -<!ENTITY typeSelector.description "Ĺ is log JĹ«s vedÄ«s cauri nepieciešamajiem soÄĽiem, lai nosĹ«tÄ«tu Adblock Plus problÄ“mu ziņojumu. Vispirms, lĹ«dzu izvÄ“lieties tipu problÄ“mai, ko JĹ«s pieredzat šajÄ lapÄ:"> -<!ENTITY screenshot.remove.label "&Noņemt jĹ«tÄ«gu informÄciju"> -<!ENTITY issues.ownfilters.description "DaĹľi no šajÄ lapÄ pielietotajiem filtriem ir lietotÄja izveidoti. LĹ«dzu atslÄ“dziet filtrus, kas varÄ“ja izraisÄ«t šo problÄ“mu:"> -<!ENTITY update.inProgress.description "Adblock Plus ir nepieciešams atjauninÄt filtru abonementus, lai pÄrliecinÄtos, vai jau nav atrisinÄts jautÄjums. LĹ«dzu, uzgaidiet..."> -<!ENTITY sendPage.retry.label "SĹ«tÄ«t vÄ“lreiz"> -<!ENTITY data.label "&Ziņojuma dati:"> -<!ENTITY recentReports.label "JĹ«su nesen nosĹ«tÄ«tie ziņojumi"> -<!ENTITY typeWarning.description "JĹ«s norÄdÄ«jÄt, ka vÄ“laties ziņot par vispÄrÄ“ju Adblock Plus problÄ“mu nevis problÄ“mu ar filtriem. Par šÄdÄm problÄ“mÄm vislabÄk ir paziņot [link]Adblock Plus forumÄ[/link]. Ĺ o problÄ“mu ziņotÄju vajadzÄ“tu izmantot tikai lai papildinÄtu esošu diskusiju, jo neviens neredzÄ“s JĹ«su ziņojumu, ja JĹ«s nenodrošinÄs viņus ar saiti uz to. AutomÄtiski ÄŁenerÄ“tÄ saite tiks nodrošinÄta pÄ“c ziņojuma nosĹ«tīšanas."> -<!ENTITY issues.disabled.description "Adblock Plus ir atspÄ“jots, pašreizÄ“jÄ stÄvoklÄ« tas nebloÄ·Ä“s neko."> -<!ENTITY attachExtensions.label "Pievienot ziņojumam sarakstu ar aktÄ«viem papil&dinÄjumiem, gadÄ«jumÄ, ja kÄds papildinÄjums izraisa problÄ“mu"> -<!ENTITY issues.nosubscriptions.add.label "Pievienot filtru abonementu"> -<!ENTITY issues.disabledfilters.enable.label "IespÄ“jot filtru"> -<!ENTITY issues.override.label "&KonfigurÄcija ir pareiza, varat turpinÄt ziņojumu"> -<!ENTITY issues.nosubscriptions.description "IzskatÄs, ka JĹ«s neabonÄ“jat nevienu no gatavajiem sarakstiem, kuri automÄtiski noņem nevajadzÄ«go saturu no mÄjas lapÄm."> -<!ENTITY typeSelector.falsePositive.description "IzvÄ“laties šo opciju, ja lai trĹ«kst svarÄ«ga saturam tÄ tiek nepareizi attÄ“lota vai nefunkcionÄ“ pareizi. JĹ«s varat noteikt vai to izraisa Adblock Plus, to Ä«slaicÄ«gi atslÄ“dzot."> -<!ENTITY typeSelector.other.label "&Cita problÄ“ma"> -<!ENTITY emailComment.label "MÄ“s aicinÄm JĹ«s ievadÄ«t derÄ«gu e-pasta adresi, lai mÄ“s varÄ“tu ar Jums kontaktÄ“ties, ja radÄ«sies papildus jautÄjumi par JĹ«su ziņojumu. TÄ palÄ«dzÄ“s mums arÄ« atpazÄ«t JĹ«su ieguldÄ«jumu un piešķirt tam augstÄku prioritÄti."> -<!ENTITY issues.whitelist.remove.label "IespÄ“jot Adblock Plus šajÄ lapÄ"> -<!ENTITY outdatedSubscriptions.description "Sekojošie filtru abonementi nav atjauninÄti vismaz divas nedēļas. LĹ«dzu, atjauniniet šos abonementus pirms ziņojuma apstiprinÄšanas, jo problÄ“ma jau var bĹ«t atrisinÄta."> -<!ENTITY dataCollector.description "Uzgaidiet pÄris mirkÄĽus, kamÄ“r Adblock Plus apkopo nepieciešamos datus."> -<!ENTITY sendButton.label "&SĹ«tÄ«t ziņojumu"> -<!ENTITY comment.label "&KomentÄrs (nav obligÄti):"> -<!ENTITY sendPage.errorMessage "MēģinÄjums sĹ«tÄ«t ziņojumu neizdevÄs. KÄĽĹ«das kods "?1?". LĹ«dzu pÄrliecinieties, ka Jums ir savienojums ar internetu un mēģiniet vÄ“lreiz. Ja problÄ“ma atkÄrtojas, lĹ«dzu prasiet palÄ«dzÄ«bu [link]Adblock Plus forumÄ[/link]."> -<!ENTITY showRecentReports.label "ParÄdÄ«t nesen nosĹ«tÄ«tos ziņojumus"> -<!ENTITY commentPage.heading "Pievienojiet komentÄru"> -<!ENTITY update.start.label "Tagad sÄktu atjauninÄšanu"> -<!ENTITY issues.disabledfilters.description "Sekojošie filtri ir atslÄ“gt, tomÄ“r tiem var bĹ«t ietekme uz šo lapu:"> -<!ENTITY screenshot.description "TÄ pati lapa var izskatÄ«ties atšķirÄ«gi daĹľÄdiem cilvÄ“kiem. Ja JĹ«s pievienosiet ekrÄn-šÄviņu, tas mums palÄ«dzÄ“s izprast problÄ“mu. JĹ«s varat noņemt apgabalus, kas satur jĹ«tÄ«gu informÄciju kÄ arÄ« iezÄ«mÄ“t vietas, kur ir redzama problÄ“ma. Lai to izdarÄ«tu, noklikšķiniet uz atbilstošÄs pogas un izvÄ“lieties apgabalu ar peli."> -<!ENTITY screenshot.attach.label "&Pievienot ziņojumam lapas attÄ“lu"> -<!ENTITY issues.whitelist.description "Adblock Plus pašreiz ir atslÄ“gt lapÄ par kuru JĹ«s ziņojat. Lai palÄ«dzÄ“tu problÄ“mas izmeklēšanÄ, pirms ziņojuma sĹ«tīšanas lĹ«dzu ieslÄ“dziet to un atsvaidziniet lapu."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus nebloÄ·Ä“ &reklÄmu"> -<!ENTITY typeSelector.heading "IzvÄ“lieties problÄ“mas tipu"> -<!ENTITY anonymity.warning "MÄ“s nevarÄ“sim ar Jums sazinÄties un visdrÄ«zÄk piešķirsim JĹ«su ziņojumam zemÄku prioritÄti."> -<!ENTITY wizard.title "ProblÄ“mu ziņotÄjs"> -<!ENTITY issues.ownfilters.disable.label "AtspÄ“jot filtru"> -<!ENTITY commentPage.description "Teksta laukums ÄĽauj Jums ierakstÄ«t komentÄru, lai palÄ«dzÄ“tu mums saprast problÄ“mu. Ĺ is solis nav obligÄts, bet ir rekomendÄ“ts, ja problÄ“ma nav acÄ«mredzama. JĹ«s arÄ« varat pÄrskatÄ«t ziņojuma datus, pirms nosĹ«tīšanas."> -<!ENTITY comment.lengthWarning "JĹ«su komentÄra garums pÄrsniedz 1000 simbolus. Tikai pirmie 1000 simboli tiks nosĹ«tÄ«ti."> -<!ENTITY typeSelector.falseNegative.description "IzvÄ“laties šo opciju ja reklÄma tiek attÄ“lota neskatoties uz to ka Adblock Plus ir ieslÄ“gts."> -<!ENTITY sendPage.waitMessage "LĹ«dzu uzgaidiet kamÄ“r Adblock Plus sĹ«ta JĹ«su ziņojumu."> -<!ENTITY dataCollector.heading "Laipni lĹ«dzu problÄ“mu ziņotÄjÄ"> -<!ENTITY screenshot.heading "Pievienojiet ekrÄn-šÄviņu"> -<!ENTITY sendPage.heading "SĹ«tÄ«t ziņojumu"> -<!ENTITY issues.subscriptionCount.description "IzskatÄs, ka JĹ«s abonÄ“jat pÄrÄk daudz abonementu. Ĺ Äda konfigurÄcija netiek rekomendÄ“ta, jo tas palielina problÄ“mu iespÄ“jamÄ«bu. MÄ“s nespÄ“jam pieņemt ziņojumu, jo nav skaidrs kuram filtru abonementam ir jÄrÄ«kojas. LĹ«dzu noņemiet visu izņemot tiešÄm nepieciešamos abonementus un pÄrbaudiet vai problÄ“ma joprojÄm pastÄv."> -<!ENTITY screenshot.mark.label "Ie&zÄ«mÄ“t problÄ“mu"> -<!ENTITY privacyPolicy.label "PrivÄtuma politika"> -<!ENTITY issues.description "Adblock Plus ir atradis problÄ“mu JĹ«su konfigurÄcijÄ, kas varÄ“tu bĹ«t atbildÄ«ga par šo problÄ“mu vai arÄ« apgrĹ«tinÄs ziņojuma izmeklēšanu."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sidebar.dtd deleted file mode 100644 index 97a127a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash vienÄ«bas malas"> -<!ENTITY address.label "Adrese"> -<!ENTITY context.open.label "AtvÄ“rt jaunÄ cilnÄ“"> -<!ENTITY type.label "Tips"> -<!ENTITY tooltip.filterSource.label "Filtra avots:"> -<!ENTITY noitems.label "Nav bloÄ·Ä“jamu vienÄ«bu"> -<!ENTITY filter.label "Filtrs"> -<!ENTITY tooltip.size.label "IzmÄ“rs:"> -<!ENTITY reattach.label "Pievienot atpakaÄĽ"> -<!ENTITY search.label "&MeklÄ“t:"> -<!ENTITY docDomain.thirdParty "(treĹˇÄ puse)"> -<!ENTITY filterSource.label "Filtra avots"> -<!ENTITY tooltip.docDomain.label "Dokumenta avots:"> -<!ENTITY context.copy.label "KopÄ“t vienÄ«bas adresi"> -<!ENTITY tooltip.type.label "Tips:"> -<!ENTITY context.disablefilter.label "AtspÄ“jot filtru ?1?"> -<!ENTITY context.copyFilter.label "KopÄ“t filtru"> -<!ENTITY context.block.label "BloÄ·Ä“t šo vienÄ«bu"> -<!ENTITY context.enablefilter.label "IespÄ“jot filtru ?1?"> -<!ENTITY detach.label "AtdalÄ«t"> -<!ENTITY whitelisted.label "Lapa ir baltajÄ sarakstÄ"> -<!ENTITY context.disablefilteronsite.label "AtspÄ“jot šo filtru ?1?"> -<!ENTITY detached.title "Adblock Plus: BloÄ·Ä“jamÄs vienÄ«bas (atdalÄ«ts)"> -<!ENTITY docDomain.firstParty "(pirmÄ puse)"> -<!ENTITY tooltip.type.whitelisted "(baltajÄ sarakstÄ)"> -<!ENTITY tooltip.filter.label "AktÄ«vais filtrs:"> -<!ENTITY tooltip.filter.disabled "(atspÄ“jots)"> -<!ENTITY context.editfilter.label "RediÄŁÄ“t aktÄ«vo filtru"> -<!ENTITY tooltip.type.blocked "(bloÄ·Ä“ts)"> -<!ENTITY size.label "IzmÄ“rs"> -<!ENTITY context.whitelist.label "Pievienot izņēmuma noteikumu šai vienÄ«bai"> -<!ENTITY context.selectAll.label "IezÄ«mÄ“t visu"> -<!ENTITY state.label "StÄvoklis"> -<!ENTITY docDomain.label "Dokumenta avots"> -<!ENTITY tooltip.address.label "Adrese:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/subscriptionSelection.dtd deleted file mode 100644 index dca19de..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/lv/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Pievienot arÄ« filtra abonementu "?1?""> -<!ENTITY list.download.failed "Adblock Plus neizdevÄs ielÄdÄ“t abonentu sarakstu."> -<!ENTITY list.download.retry "Mēģiniet vÄ“lreiz"> -<!ENTITY title.label "Abonemen&ta nosaukums:"> -<!ENTITY list.download.website "SkatÄ«t tÄ«mekÄĽa vietni"> -<!ENTITY supplementMessage "Ĺ Ä« filtra abonements ir paredzÄ“ts lietošanai kopÄ ar filtra abonementu "?1?" kuru jĹ«s vÄ“l neizmantojat."> -<!ENTITY viewList.label "SkatÄ«t filtrus"> -<!ENTITY visitHomepage.label "ApmeklÄ“t mÄjaslapu"> -<!ENTITY addSubscription.label "Pievienot abonementu"> -<!ENTITY dialog.title "Pievienot Adblock Plus filtra abonementu"> -<!ENTITY location.label "Fi&ltru saraksta atrašanÄs vieta:"> -<!ENTITY fromWeb.description "LĹ«dzu, apstipriniet, ka vÄ“laties pievienot šī filtra abonementu. JĹ«s varat mainÄ«t abonementa nosaukumu vai atrašanÄs vietu pirms pievienošanas."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/composer.dtd deleted file mode 100644 index 5b2264c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "p&ada akhir alamat"> -<!ENTITY domainRestriction.label "Terhad pada domain: (&s)"> -<!ENTITY collapse.default.no.label "Gunakan default (tidak)"> -<!ENTITY firstParty.label "Pihak per&tama sahaja"> -<!ENTITY preferences.label "Papar penapi&s sedia ada..."> -<!ENTITY pattern.label "Lihat pola"> -<!ENTITY thirdParty.label "Pihak keti&ga sahaja"> -<!ENTITY filter.label "Penapis &baru:"> -<!ENTITY collapse.label "&Jatuhkan yang disekat:"> -<!ENTITY match.warning "Pola yang anda masukkan tidak lagi memadani alamat yang akan disekat/dikecualikan dan tidak akan berkesan kepadanya."> -<!ENTITY anchor.start.label "pada per&mulaan alamat"> -<!ENTITY matchCase.label "&Kes sepadan"> -<!ENTITY custom.pattern.label "&Ubah suai:"> -<!ENTITY unselectAllTypes.label "Tidak pilih"> -<!ENTITY type.whitelist.label "Peraturan penge&cualian"> -<!ENTITY regexp.warning "Pola yang anda masukkan akan diinterpretasi sebagai ungkapan biasa di mana ia boleh melambatkan penjelajahan web. Jika anda tidak berniat untuk menggunakan ungkapan biasa, tambah simbol (*) diakhir pola."> -<!ENTITY dialog.title "Tambah peraturan penapis Adblock Plus"> -<!ENTITY basic.label "Paparan biasa"> -<!ENTITY type.filter.label "&Penapis penyekat"> -<!ENTITY types.label "Gunakan pada jenis:"> -<!ENTITY shortpattern.warning "Pola yang anda masukkan terlalu pendek untuk dioptimumkan dan kemungkinan boleh melambatkan penjelajahan web. Anda digalakkan memilih masukan yang lebih panjang untuk penapis ini supaya Adbolck Plus dapat memproses penapis ini dengan lebih berkesan."> -<!ENTITY collapse.yes.label "Ya"> -<!ENTITY anchors.label "Terima pola sahaja:"> -<!ENTITY collapse.default.yes.label "Gunakan default (ya)"> -<!ENTITY domainRestriction.help "Gunakan pilihan ini untuk tentukan satu atau lebih domain secara berasingan dengan simbol "|". Penapis hanya akan digunakan pada domain terpilih sahaja. Simbol "~" sebelum domain bermaksud penapis tidak akan digunakan pada domain tersebut."> -<!ENTITY accept.label "Tambah penapis"> -<!ENTITY options.label "Pilihan"> -<!ENTITY disabled.warning "Adblock Plus telah dinyahaktifkan. Anda masih boleh menambah penapis tetapi ia tidak akan aktif sehingga anda [link]aktifkan Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "pada per&mulaan nama domain"> -<!ENTITY collapse.no.label "Tidak"> -<!ENTITY selectAllTypes.label "Pilih semua"> -<!ENTITY advanced.label "Paparan mahir"> -<!ENTITY pattern.explanation "Pola boleh jadi mana-mana bahagian alamat; simbol (*) bertujuan sebagai wildcards. Penapis hanya digunakan pada alamat yang sepadan dengan pola."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/filters.dtd deleted file mode 100644 index 9d3541d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "Semua penapis khas anda akan digantikan dengan kandungan fail yang dipilih. Adakah anda pasti?"> -<!ENTITY slow.column "&Lambatkan penapis"> -<!ENTITY enabled.column "&Diaktifkan"> -<!ENTITY subscription.lastDownload.checksumMismatch "Gagal, checksum tidak sepadan"> -<!ENTITY noFiltersInGroup.text "Kumpulan yang dipilih adalah kosong."> -<!ENTITY subscription.actions.label "Aksi-aksi"> -<!ENTITY filter.selectAll.label "Pilih Semua"> -<!ENTITY backupButton.label "Backup dan Re&store"> -<!ENTITY restore.minVersion.warning "Amaran: fail ini dibuat menggunakan versi Adblock Plus terbaru. Anda harus mendapatkan versi Adblock Plus terbaru sebelum anda restore dari fail ini."> -<!ENTITY restore.error "Data fail tidak dapat diprosese, mungkin ini bukan fail backup Adblock Plus?"> -<!ENTITY sort.ascending.label "Susun&an A > Z"> -<!ENTITY sort.label "Susun &dengan"> -<!ENTITY subscription.source.label "Senarai penapis"> -<!ENTITY hitcount.column "&Hit"> -<!ENTITY noFilters.text "Anda tiada penapis khas."> -<!ENTITY backup.custom.title "Penapis khas sahaja"> -<!ENTITY subscription.external.label "Dikemaskini oleh extension lain"> -<!ENTITY subscription.delete.label "Buang"> -<!ENTITY noGroupSelected.text "Anda perlu memilih satu kumpulan penapis sebelum penapisnya dapat dipaparkan."> -<!ENTITY filter.cut.label "Potong"> -<!ENTITY restore.default.label "Restore backup dari ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Memuat-turun..."> -<!ENTITY subscriptions.tab.label "Langganan penapis"> -<!ENTITY sort.descending.label "Susunan &Z > A"> -<!ENTITY filters.remove.warning "Adakah anda pasti mahu membuang semua penapis yang dipilih?"> -<!ENTITY filter.delete.label "Padam"> -<!ENTITY addSubscriptionAdd.label "Tambah"> -<!ENTITY viewMenu.label "Papar"> -<!ENTITY subscription.lastDownload.unknown "tiada maklumat"> -<!ENTITY addSubscriptionCancel.label "Batal"> -<!ENTITY subscription.enabled.label "Diaktifkan"> -<!ENTITY noSubscriptions.text "Anda belum menambah langganan penapis. Adblock Plus tidak akan menapis - apa-apa tanpa penapis, sila guna "Tambah langganan penapis" untuk menambah."> -<!ENTITY subscription.update.label "Kemaskini penapis"> -<!ENTITY dialog.title "Pilihan Penapis Adblock Plus"> -<!ENTITY addFilter.label "&Tambah penapis"> -<!ENTITY subscription.minVersion.warning "Langganan penapis ini memerlukan versi Adblock Plus terbaru, anda perlu mendapatkan versi Adblock Plus terbaru."> -<!ENTITY subscription.lastDownload.invalidURL "Gagal, bukan alamat yang sah"> -<!ENTITY backup.error "Terdapat ralat semasa menulis penapis pada fail. Sila pastikan fail tidak write protected atau digunakan oleh aplikasi lain."> -<!ENTITY filter.moveUp.label "Pindah atas"> -<!ENTITY addGroup.label "Tambah &kumpulan penapis"> -<!ENTITY filter.edit.label "Ubahsuai"> -<!ENTITY subscription.showHideFilters.label "Tunjuk/sembunyi penapis"> -<!ENTITY acceptableAds2.label "Benarkan iklan yan&g tidak mengganggu"> -<!ENTITY addSubscriptionOther.label "Tambah langganan lain"> -<!ENTITY close.label "Tutup"> -<!ENTITY sort.none.label "&Tidak disusun"> -<!ENTITY filter.actions.label "Aksi penapis"> -<!ENTITY filter.copy.label "Salin"> -<!ENTITY filter.moveDown.label "Pindah bawah"> -<!ENTITY filter.resetHitCounts.label "Reset statistik"> -<!ENTITY readMore.label "Baca lebih"> -<!ENTITY subscription.moveUp.label "Pindah ke atas"> -<!ENTITY addSubscription.label "Tambah &langganan penapis"> -<!ENTITY subscription.homepage.label "Laman rumah"> -<!ENTITY backup.complete.title "Semua penapis dan langganan"> -<!ENTITY restore.own.label "Restore backup sendiri"> -<!ENTITY restore.complete.warning "Semua pilihan penapis anda akan digantikan dengan kandungan fail yang dipilih. Adakah anda pasti?"> -<!ENTITY filters.tab.label "Penapis khas"> -<!ENTITY backup.label "Buat backup baru"> -<!ENTITY find.label "&Cari"> -<!ENTITY subscription.moveDown.label "Pindah ke bawah"> -<!ENTITY subscription.lastDownload.connectionError "Gagal, kegagalan memuat-turun"> -<!ENTITY subscription.lastDownload.success "Berjaya"> -<!ENTITY subscription.lastDownload.invalidData "Gagal, bukan senarai penapis yang sah"> -<!ENTITY filter.paste.label "Tampal"> -<!ENTITY subscription.disabledFilters.enable "Aktifkan penapis yang telah dinyaktifkan."> -<!ENTITY lasthit.column "Hit t&erakhir"> -<!ENTITY subscription.editTitle.label "Ubahsuai tajuk"> -<!ENTITY subscription.disabledFilters.warning "Sesetengah penapis dalam langganan ini telah dinyahaktifkan."> -<!ENTITY filter.column "Pe&raturan penapis"> -<!ENTITY subscription.lastDownload.label "Muat-turun terakhir:"> -<!ENTITY viewList.label "Lihat senarai"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/firstRun.properties deleted file mode 100644 index d119e0b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Lihat secara peribadi dengan menyahdayakan pengesanan - menyembunyikan trek anda dari syarikat-syarikat iklan yang akan menjejaki setiap langkah anda. -firstRun_toggle_off=TUTUP -firstRun_feature_tracking=Menyahdayakan pengesanan -firstRun_feature_malware=Menyekat perisian berniat jahat -firstRun_title=Adblock Plus telah dipasang -firstRun_acceptableAdsExplanation=Kami ingin menggalakkan Laman web untuk menggunakan pengiklanan terus-terang, tidak mengganggu. Itulah sebabnya mengapa kita telah menetapkan <a>garis panduan yang ketat</a> untuk mengenalpasti iklan yang boleh diterima, yang ditunjukkan di bawah seting lalai. Jika anda masih mahu menyekat iklan setiap anda boleh <a>menyahdayakan</a> ini dalam beberapa saat. -firstRun_toggle_on=Pada -firstRun_contributor_credits=Kredit sebagai penyumbang -firstRun_dataCorruptionWarning=Adakah laman ini muncul tidak terhenti-henti? <a>Klik di sini!</a> -firstRun_acceptableAdsHeadline=Annoying iklan akan kini menjadi disekat -firstRun_share=Beritahu rakan-rakan anda -firstRun_share_headline=<a>Berikan tangan</a> dalam membuat laman web yang lebih baik -firstRun_features=Adblock Plus boleh melakukan lebih daripada iklan yang menghalang -firstRun_feature_malware_description=Membuat pelayaran anda lebih selamat dengan menyekat domain dikenali perisian berniat jahat. -firstRun_feature_social_description=Secara automatik membuang pengalaman menyemak lalu anda daripada butang media sosial, seperti Facebook Like, yang muncul di laman web dan mengesan tingkah laku anda. -firstRun_donate=mendermakan -firstRun_donate_label=Menyokong projek kami -firstRun_feature_social=Mengalih keluar butang Media sosial -firstRun_legacySafariWarning=Anda menggunakan versi lama Safari yang tidak disokong oleh Adblock Plus. Ia mungkin tidak berfungsi dengan betul atau menjejaskan pengalaman pengguna di sesetengah tapak web. Kami amat mengesyorkan sama ada mengemaskini Safari 6 atau lebih tinggi (yang tersedia untuk Mac OS X 10.8 Mountain Lion) dan lebih tinggi(OS X 10.9 Mavericks), atau untuk menggunakan versi terkini pelayar Mozilla Firefox, Google Chrome atau Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/global.properties deleted file mode 100644 index 54428fe..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Tiada item yang boleh disekat pada laman semasa -action3_tooltip=Klik untuk aktifkan/nyahaktifkan Adblock Plus. -notification_antiadblock_title=Sembunyi Mesej-mesej yang disasarkan? -type_label_script=skrip -filter_elemhide_nocriteria=Tiada kriteria yang dinyatakan untuk mengenal pasti elemen untuk disembunyikan -blockingGroup_title=Peraturan Penapisan Iklan -whitelisted_tooltip=Adblock Plus dinyahaktifkan pada laman semasa. -type_label_stylesheet=lembaran stail -blocked_count_tooltip=?1? daripada ?2? -type_label_font=font -type_label_popup=tetingkap pop-up -filter_regexp_tooltip=Penapis ini hanya ungkapan biasa atau terlalu pendek untuk dioptimumkan. Terlalu banyak penapis mungkin akan melambatkan penjelajahan web. -action0_tooltip=Klik untuk mengeluarkan menu konteks, klik tengah untuk aktifkan/nyahaktifkan. -whitelisted_page=Adblock Plus telah dinyahaktifkan untuk laman semasa -remove_group_warning=Adakah anda pasti mahu membuang kumpulan ini? -action1_tooltip=Klik untuk membuka/menutup item yang boleh disekat, klik tengah untuk aktifkan/nyahaktifkan. -type_label_xmlhttprequest=permintaan XML -active_tooltip=Adblock Plus telah diaktifkan, ?1? langganan penapis dan ?2? penapis sendiri digunakan. -type_label_document=dokumen -type_label_object_subrequest=subpermintaan objek -whitelistGroup_title=Peraturan Pengecualian -disabled_tooltip=Adblock Plus telah dinyahaktifkan. -filter_elemhide_duplicate_id=Hanya satu ID elemen untuk disembunyikan boleh dinyatakan -type_label_object=objek -action2_tooltip=Klik untuk buka tatarajah, klik tengah untuk aktifkan/nyahaktifkan. -type_label_subdocument=bingkai -clearStats_warning=Ini akan mengreset semua statistik dan menyahaktifkan kiraan penapis. Teruskan? -notification_antiadblock_message=Laman web ini telah dikenali untuk menunjukkan mesej yang disasarkan kepada pengguna Adblock Plus. Adakah anda mahu Adblock Plus untuk menyembunyikan mesej yang disasarkan? -blocked_count_addendum=(juga dikecualikan: ?1?, disembunyikan: ?2? -subscription_invalid_location=Lokasi senarai penapis sama ada URL atau nama fail adalah tidak sah. -type_label_image=imej -remove_subscription_warning=Adakah anda mahu membuang langganan ini? -type_label_other=lain -mobile_menu_enable=ABP:Aktifkan -type_label_media=audio/video -mobile_menu_disable_site=ABP:Nyahaktifkan untuk ?1? -elemhideGroup_title=Peraturan Penyembunyian Elemen -mobile_menu_enable_site=ABP:Nyahaktifkan untuk ?1? -type_label_elemhide=disembunyikan -newGroup_title=Kumpulan penapis baru -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/overlay.dtd deleted file mode 100644 index 5fc0085..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ya"> -<!ENTITY notification.button.no "&Tiada"> -<!ENTITY sync.label "Syn&c tatacara Adblock Plus"> -<!ENTITY whitelist.site.label "Nyahaktifkan pada ?1?"> -<!ENTITY filters.label "&Tatarajah penapis"> -<!ENTITY disable.label "Nyahaktif di semua tempat"> -<!ENTITY objecttab.title "Sekat"> -<!ENTITY objecttab.tooltip "Klik di sini untuk menyekat objek ini dengan Adblock Plus"> -<!ENTITY menuitem.label "&Pilihan Adblock Plus"> -<!ENTITY objecttabs.label "Paparkan &tab pada Flash dan Java"> -<!ENTITY sendReport.label "&Lapor isu pada laman ini"> -<!ENTITY whitelist.page.label "Nyahaktifkan pada laman ini sahaja"> -<!ENTITY context.image.label "Adblock Plus: Sekat imej"> -<!ENTITY counthits.label "&Kira kiraan penapis"> -<!ENTITY opensidebar.label "Buka &item yang boleh disekat"> -<!ENTITY notification.button.close "&Tutup"> -<!ENTITY contribute.label "Sumbang kepada Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Sekat bingkai"> -<!ENTITY blocked.tooltip "Item yang disekat pada laman ini:"> -<!ENTITY hideplaceholders.label "Sembun&yikan placeholders elemen tersembunyi"> -<!ENTITY showinstatusbar.label "Papar&kan di bar status"> -<!ENTITY sidebar.title "Item yang boleh disekat pada laman semasa"> -<!ENTITY options.label "Piliha&n"> -<!ENTITY context.object.label "Adblock Plus: Sekat objek"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Aktifkan semula pada laman ini"> -<!ENTITY filters.tooltip "Penapis yang paling aktif:"> -<!ENTITY closesidebar.label "Tutup &item yang boleh disekat"> -<!ENTITY showintoolbar.label "Papa&rkan di bar alatan"> -<!ENTITY status.tooltip "Keadaan:"> -<!ENTITY context.media.label "Adblock Plus: Sekat audio/video"> -<!ENTITY subscription.update.label "Kemaskini penapis"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sendReport.dtd deleted file mode 100644 index ae861c6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Undur (&K)"> -<!ENTITY issues.disabledgroups.description "Langganan penapis/kumpulan penapis berikut telah dinyahaktifkan, tetapi ia mungkin masih membawa kesan pada laman ini:"> -<!ENTITY showData.label "Tunjuk data laporan"> -<!ENTITY typeSelector.falsePositive.label "Terlalu &banyak disekat Adblock Plus"> -<!ENTITY issues.change.description "Konfigurasi anda telah diubah. Sila reload laman tersebut untuk menguji perubahan yang dilakukan dan hantar laporan jika isu tersebut masih tidak diselesaikan oleh perubahan yang dilakukan."> -<!ENTITY email.label "&E-mel:"> -<!ENTITY issues.openPreferences.label "Buka tatarajah penapis"> -<!ENTITY sendPage.confirmation "Laporan anda telah disimpan. Anda boleh mengaksesnya di alamat berikut:"> -<!ENTITY copyLink.label "&Salin pautan laporan"> -<!ENTITY issues.nofilters.description "Adblock Plus tidak menyekat apa-apa pada laman semasa. Isu yang diperhatikan ini kemungkinan besar tidak berkaitan dengan Adblock Plus."> -<!ENTITY sendPage.knownIssue "Isu yang dilaporkan kemungkinan telah dikenalpasti. Maklumat lanjut:"> -<!ENTITY typeSelector.other.description "Pilih pilihan ini jika anda mencurigai isu pada Adblock Plus sendiri dan bukan disebabkan langganan."> -<!ENTITY issues.disabledgroups.enable.label "Aktifkan langganan penapis/kumpula penapis"> -<!ENTITY typeWarning.override.label "Saya &faham dan ingin menghantar laporan juga"> -<!ENTITY issues.disabled.enable.label "Aktifkan Adblock Plus"> -<!ENTITY update.fixed.description "Langganan anda yang dikemaskini kemungkinan besar telahpun menyelesaikan masalah yang anda laporkan. Sila reload halaman tersebut dan cuba sekali lagi. Laporkan sekali lagi jika masalah tetap ada."> -<!ENTITY anonymous.label "Penyerahan &tanpa nama"> -<!ENTITY reloadButton.label "Reload laman (&t)"> -<!ENTITY recentReports.clear.label "&Padam semua laporan"> -<!ENTITY typeSelector.description "Tingkap ini akan membimbing anda dengan langkah-langkah yang diperlukan untuk mengemukakan laporan isu Adblock Plus. Pertama sekali, sila pilih jenis isu yang dialami pada laman ini:"> -<!ENTITY screenshot.remove.label "Pa&dam data sensitif"> -<!ENTITY issues.ownfilters.description "Sebahagian penapis yang digunakan pada laman ini ditentukan pengguna. Sila nyahaktifkan penapis tersebut yang mungkin menyebabkan isu itu."> -<!ENTITY update.inProgress.description "Adblock Plus perlu mengemaskini langganan penapis anda untuk memastikan isu tersebut belum diselesaikan. Sila tunggu"...""> -<!ENTITY sendPage.retry.label "Hantar sekali lagi"> -<!ENTITY data.label "&Lapor data"> -<!ENTITY recentReports.label "Laporan yang dihantar baru-baru ini oleh saya"> -<!ENTITY typeWarning.description "Anda didapati ingin melaporkan isu berkaitan Adblock Plus dan bukan masalah dengan penapis. Sila ambil perhatian bahawa isu sebegini paling bagus dilaporkan di [link]Adblock Plus[/link]. Anda patut hanya menggunakan pelapor isu untuk menambah info pada perbincangan yang sedia ada, kerana tiada siapa akan perasan laporan itu kecuali anda membekalkan mereka dengan pautannya. Pautan yang dihasilkan secara automatik akan dibekalkan selepas laporan dihantar."> -<!ENTITY issues.disabled.description "Adblock Plus telah dinyahaktifkan, ia tidak akan menyekat apa-apa."> -<!ENTITY attachExtensions.label "Lampirkan senarai e&xtension aktif pada laporan untuk menentukan samada masalah disebabkan konflik add-on"> -<!ENTITY issues.nosubscriptions.add.label "Tambah langganan penapis"> -<!ENTITY issues.disabledfilters.enable.label "Aktifkan penapis"> -<!ENTITY issues.override.label "&Konfigurasi adalah betul, sila teruskan dengan laporan"> -<!ENTITY issues.nosubscriptions.description "Anda didapati tidak melanggan mana-mana penapis yang direka khas untuk membuang isi yang tidak diperlukan pada laman web secara automatik."> -<!ENTITY typeSelector.falsePositive.description "Pilih pilihan ini jika laman tersebut kekurangan isi penting, salah paparannya atau gagal berfungsi dengan betul. Anda boleh menentukan sama ada Adblock Plus ialah penyebab masalah tersebut dengan menyahaktifkannya buat sementara waktu."> -<!ENTITY typeSelector.other.label "&Isu lain"> -<!ENTITY emailComment.label "Kami menggalakkan anda memasukkan alamat email yang sah supaya kami boleh menghubungi anda jika ada pertanyaan tentang laporan anda. Ia juga akan membolehkan kita untuk mengiktiraf sumbangan anda dan memberi keutamaan kepada mereka dengan lebih tinggi."> -<!ENTITY issues.whitelist.remove.label "Aktifkan kembali Adblock Plus pada laman ini"> -<!ENTITY outdatedSubscriptions.description "Langganan penapis yang disenaraikan belum dikemaskini sekurang-kurangnya 2 minggu. Sila kemaskini langganan tersebut sebelum menghantar laporan, isu tersebut mungkin telahpun diselesaikan."> -<!ENTITY dataCollector.description "Sila tunggu sebentar sementara Adblock Plus mengumpul data yang diperlukan."> -<!ENTITY sendButton.label "&Hantar laporan"> -<!ENTITY comment.label "K&omen(optional)"> -<!ENTITY sendPage.errorMessage "Cubaan untuk menghantar laporan gagal dengan kod error "?1?". Sila pastikan internet anda berfungsi dan cuba lagi. Jika masalah berterusan sila minta bantuan di [link]Adblock Plus forum[/link]."> -<!ENTITY showRecentReports.label "Paparkan laporan yang dihantar baru-baru ini"> -<!ENTITY commentPage.heading "Masukkan komen"> -<!ENTITY update.start.label "Mulakan kemaskini sekarang"> -<!ENTITY issues.disabledfilters.description "Penapis berikut telah dinyahaktifkan, tetapi ia mungkin masih membawa kesan pada laman ini:"> -<!ENTITY screenshot.description "Laman yang sama mungkin kelihatan berbeza untuk individu yang berbeza. Ia mungkin membantu kami memahami masalahnya jika screenshot dilampirkan bersama laporan anda. Anda boleh memadam bahagian-bahagian yang mengandungi info sensitif di samping menanda bahagian-bahagian di mana masalah itu jelas kelihatan. Untuk berbuat demikian klik butang berkaitan dan pilih sebahagian imej dengan tetikus anda."> -<!ENTITY screenshot.attach.label "La&mpir imej laman pada laporan"> -<!ENTITY issues.whitelist.description "Adblock Plus telah dinyahaktifkan pada laman yang anda ingin laporkan. Sila aktifkannya kembali dan reload laman tersebut sebelum menghantar laporan."> -<!ENTITY typeSelector.falseNegative.label "Adbloc&k Plus tidak menyekat iklan"> -<!ENTITY typeSelector.heading "Pilih jenis isu"> -<!ENTITY anonymity.warning "Kita tidak akan dapat kembali kepada anda dan mungkin akan mengutamakan laporan yang lebih rendah."> -<!ENTITY wizard.title "Pelapor isu"> -<!ENTITY issues.ownfilters.disable.label "Nyahaktifkan penapis"> -<!ENTITY commentPage.description "Bahagian di bawah membenarkan anda memasukkan komen untuk membantu kami memahami isu tersebut. Langkah ini adalah optional tetapi disyorkan jika masalah tersebut tidak jelas. Anda juga boleh memeriksa data laporan sebelum menghantarnya."> -<!ENTITY comment.lengthWarning "Panjang komen anda melebihi 1000 huruf. Hanya 1000 huruf pertama sahaja akan dihantar."> -<!ENTITY typeSelector.falseNegative.description "Pilih pilihan ini jika iklan dipaparkan walaupun Adblock Plus telah diaktifkan."> -<!ENTITY sendPage.waitMessage "Sila tunggu sementara Adblock Plus menghantar laporan anda."> -<!ENTITY dataCollector.heading "Selamat datang ke pelapor isu"> -<!ENTITY screenshot.heading "Lampir screenshot"> -<!ENTITY sendPage.heading "Hantar laporan"> -<!ENTITY issues.subscriptionCount.description "Didapati anda melanggan terlalu banyak langganan penapis. Ini tidak disyorkan kerana ia mungkin akan mewujudkan masalah. Kami juga tidak dapat menerima laporan anda kerana ia kurang jelas penulis langganan penapis mana yang perlu mengambil tindakan. Sila buang semua langganan penapis kecuali yang diperlukan dan uji samada masalah masih berterusan."> -<!ENTITY screenshot.mark.label "&Tanda masalah tersebut"> -<!ENTITY privacyPolicy.label "Polisi privasi"> -<!ENTITY issues.description "Adblock Plus telah mengesan isu pada konfigurasi anda yang mungkin penyebab isu ini atau akan menyukarkan penyiasatan laporan."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sidebar.dtd deleted file mode 100644 index c2f2cd8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Jelaskan sempadan item"> -<!ENTITY address.label "Alamat"> -<!ENTITY context.open.label "Buka dalam Tab Baru"> -<!ENTITY type.label "Jenis"> -<!ENTITY tooltip.filterSource.label "Sumber penapis:"> -<!ENTITY noitems.label "Tiada item yang boleh disekat"> -<!ENTITY filter.label "Penapis"> -<!ENTITY tooltip.size.label "Saiz:"> -<!ENTITY reattach.label "Lampir semula"> -<!ENTITY search.label "&Cari:"> -<!ENTITY docDomain.thirdParty "(pihak ketiga)"> -<!ENTITY filterSource.label "Sumber penapis"> -<!ENTITY tooltip.docDomain.label "Sumber dokumen:"> -<!ENTITY context.copy.label "Salin alamat item"> -<!ENTITY tooltip.type.label "Jenis:"> -<!ENTITY context.disablefilter.label "Nyahaktif penapis ?1?"> -<!ENTITY context.copyFilter.label "Salin penapis"> -<!ENTITY context.block.label "Sekat item ini"> -<!ENTITY context.enablefilter.label "Aktifkan kembali penapis ?1?"> -<!ENTITY detach.label "Asingkan"> -<!ENTITY whitelisted.label "Laman yang disenarai putih"> -<!ENTITY context.disablefilteronsite.label "Nyahaktif penapis ini pada ?1?"> -<!ENTITY detached.title "Adblock Plus: Item yang boleh disekat (diasingkan)"> -<!ENTITY docDomain.firstParty "(pihak pertama)"> -<!ENTITY tooltip.type.whitelisted "(senarai putih)"> -<!ENTITY tooltip.filter.label "Penapis yang digunakan:"> -<!ENTITY tooltip.filter.disabled "(dinyahaktifkan)"> -<!ENTITY context.editfilter.label "Ubah penapis yang digunakan"> -<!ENTITY tooltip.type.blocked "(disekat)"> -<!ENTITY size.label "Saiz"> -<!ENTITY context.whitelist.label "Tambah peraturan pengecualian untuk item"> -<!ENTITY context.selectAll.label "Pilih semua"> -<!ENTITY state.label "Keadaan"> -<!ENTITY docDomain.label "Sumber dokumen"> -<!ENTITY tooltip.address.label "Alamat:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/subscriptionSelection.dtd deleted file mode 100644 index cdf6791..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ms/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Tam&bah langganan penapis "?1?" juga"> -<!ENTITY list.download.failed "Adblock Plus gagal memuat-turun senarai langganan."> -<!ENTITY list.download.retry "Cuba lagi"> -<!ENTITY title.label "Ta&juk langganan"> -<!ENTITY list.download.website "Papar laman web"> -<!ENTITY supplementMessage "Langganan penapis ini bertujuan untuk digunakan bersama langganan penapis "?1?" yang tidak digunakan oleh anda lagi."> -<!ENTITY viewList.label "Papar penapis"> -<!ENTITY visitHomepage.label "Lawat laman web Adblock Plus"> -<!ENTITY addSubscription.label "Tambah langganan"> -<!ENTITY dialog.title "Tambah langganan penapis Adblock Plus"> -<!ENTITY location.label "L&okasi senarai penapis:"> -<!ENTITY fromWeb.description "Sila pastikan anda mahu menambah langganan penapis ini. Anda boleh mengubah tajuk langganan atau lokasi sebelum menambahnya."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/composer.dtd deleted file mode 100644 index 3292cd0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "pĂĄ slutte&n av adressen"> -<!ENTITY domainRestriction.label "Begrens til &domene:"> -<!ENTITY collapse.default.no.label "Bruk standard (nei)"> -<!ENTITY firstParty.label "Kun elementer fra hovedsiden"> -<!ENTITY preferences.label "Vi&s eksisterende filtre..."> -<!ENTITY pattern.label "Se etter mønster"> -<!ENTITY thirdParty.label "Kun &tredjeparts"> -<!ENTITY filter.label "Nytt &filter:"> -<!ENTITY collapse.label "Minimer b&lokkerte:"> -<!ENTITY match.warning "Mønsteret du laget stemmer ikke lenger overens med adressen som skal blokkeres/hvitelistes, og vil ikke ha noen effekt."> -<!ENTITY anchor.start.label "pĂĄ starten av adressen (&g)"> -<!ENTITY matchCase.label "&Ta hensyn til stor og liten forbokstav (A/a)"> -<!ENTITY custom.pattern.label "Egendefinert: (&C)"> -<!ENTITY unselectAllTypes.label "Velg ingen"> -<!ENTITY type.whitelist.label "Unntaksregel (&x)"> -<!ENTITY regexp.warning "Mønsteret du har laget vil bli tolket som et standarduttrykk, og kan ikke behandles effektivt av Adblock Plus, som igjen vil gjøre nettleseren din tregere. Hvis du ikke hadde tenkt til ĂĄ lage et standarduttrykk, kan du legge til en stjerne (*) pĂĄ slutten av mønsteret."> -<!ENTITY dialog.title "Legg til filtreringsregel for Adblock Plus"> -<!ENTITY basic.label "Grunnleggende visning"> -<!ENTITY type.filter.label "&Blokkeringsfilter"> -<!ENTITY types.label "Bruk pĂĄ:"> -<!ENTITY shortpattern.warning "Mønsteret du skrev inn er for kort til ĂĄ bli optimert, og kan gjøre nettleseren din tregere. Vi anbefaler at du lager en lengre tekstsekvens for dette filteret, slik at Adblock Plus kan behandle filteret mer effektivt."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Aksepter kun mønster:"> -<!ENTITY collapse.default.yes.label "Bruk standard (ja)"> -<!ENTITY domainRestriction.help "Bruk dette valget til ĂĄ spesifisere ett domene eller flere domener, separert med vertikalstreker (|). Filteret vil kun brukes pĂĄ domenet eller domenene som er valgt. En tilde (~) foran et domenenavn indikerer at filteret ikke skal brukes pĂĄ det domenet."> -<!ENTITY accept.label "Legg til filter"> -<!ENTITY options.label "Alternativer"> -<!ENTITY disabled.warning "Adblock Plus er deaktivert. Du kan fremdeles legge til filtre, men de blir ikke aktivert med mindre du [link]aktiverer Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "pĂĄ starten av domenenavnet (&g)"> -<!ENTITY collapse.no.label "Nei"> -<!ENTITY selectAllTypes.label "Velg alle"> -<!ENTITY advanced.label "Avansert visning"> -<!ENTITY pattern.explanation "Mønsteret kan være hvilken som helst del av adressen; stjerner (*) fungerer som frie symboler. Filteret vil kun bli aktivert for adresser som stemmer overens med sekvensen du har definert."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/filters.dtd deleted file mode 100644 index ac2bc21..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Alle dine egenkomponerte filtre vil bli erstattet av innholdet i filen du har valgt. Vil du fortsette?"> -<!ENTITY slow.column "Trege filtre (&w)"> -<!ENTITY enabled.column "Aktivert (&n)"> -<!ENTITY subscription.lastDownload.checksumMismatch "Mislyktes - kontrollsummen stemmer ikke"> -<!ENTITY noFiltersInGroup.text "Den valgte gruppen er tom."> -<!ENTITY subscription.actions.label "Handlinger"> -<!ENTITY filter.selectAll.label "Velg alle"> -<!ENTITY backupButton.label "Sikkerhetskopier og gjenopprett (&B)"> -<!ENTITY restore.minVersion.warning "Advarsel: Filen har blitt laget med en nyere versjon av Adblock Plus. Du bør oppdatere til nyeste versjon av Adblock Plus før du bruker denne filen."> -<!ENTITY restore.error "Informasjonen i filen kunne ikke bli behandlet. Kanskje dette ikke er en backup-fil for Adblock Plus?"> -<!ENTITY sort.ascending.label "&SortĂ©r fra A til Ă…"> -<!ENTITY sort.label "&Sorter etter"> -<!ENTITY subscription.source.label "Filterliste"> -<!ENTITY hitcount.column "Treff (&H)"> -<!ENTITY noFilters.text "Du har ingen egendefinerte filtre ennĂĄ."> -<!ENTITY backup.custom.title "Kun egendefinerte filtre"> -<!ENTITY subscription.external.label "Oppdatert av et annet tillegg"> -<!ENTITY subscription.delete.label "Slett"> -<!ENTITY noGroupSelected.text "Du mĂĄ velge en filtergruppe før tilhørende filtre kan vises."> -<!ENTITY filter.cut.label "Klipp ut"> -<!ENTITY restore.default.label "Gjenopprett sikkerhetskopi fra ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Laster ned..."> -<!ENTITY subscriptions.tab.label "Filterabonnementer"> -<!ENTITY sort.descending.label "&SortĂ©r fra Ă… til A"> -<!ENTITY filters.remove.warning "Ănsker du virkelig ĂĄ fjerne alle valgte filtre?"> -<!ENTITY filter.delete.label "Slett"> -<!ENTITY addSubscriptionAdd.label "Legg til"> -<!ENTITY viewMenu.label "Vis"> -<!ENTITY subscription.lastDownload.unknown "Ikke tilgjengelig"> -<!ENTITY addSubscriptionCancel.label "Avbryt"> -<!ENTITY subscription.enabled.label "Aktivert"> -<!ENTITY noSubscriptions.text "Du har ikke lagt til noen filterabonnementer ennĂĄ. Adblock Plus blokkerer ikke noe uten filtre. Vennligst bruk "Legg til filterabonnement" for ĂĄ legge til filtre."> -<!ENTITY subscription.update.label "Oppdater filtre"> -<!ENTITY dialog.title "Filtervalg for Adblock Plus"> -<!ENTITY addFilter.label "Legg til filter (&d)"> -<!ENTITY subscription.minVersion.warning "Dette filterabonnementet krever en nyere versjon av Adblock Plus. Du bør oppdatere til nyeste versjon av Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Feilet, ikke en gyldig adresse"> -<!ENTITY backup.error "Det oppstod en feil under lagring av filtrene til filen. Sjekk at ikke filen er skrivebeskyttet, eller at den brukes av et annet program."> -<!ENTITY filter.moveUp.label "Flytt opp"> -<!ENTITY addGroup.label "Le&gg til filtergruppe"> -<!ENTITY filter.edit.label "Rediger"> -<!ENTITY subscription.showHideFilters.label "Vis/skjul filtre"> -<!ENTITY acceptableAds2.label "Tillat noen ikke-pĂĄtrengende annonser"> -<!ENTITY addSubscriptionOther.label "Legg til et annet abonnement"> -<!ENTITY close.label "Lukk"> -<!ENTITY sort.none.label "&Usortert"> -<!ENTITY filter.actions.label "Filterhandlinger"> -<!ENTITY filter.copy.label "Kopier"> -<!ENTITY filter.moveDown.label "Flytt ned"> -<!ENTITY filter.resetHitCounts.label "Nullstill treffstatistikker"> -<!ENTITY readMore.label "Les mer"> -<!ENTITY subscription.moveUp.label "Flytt opp"> -<!ENTITY addSubscription.label "Legg til &filterabonnement"> -<!ENTITY subscription.homepage.label "Hjemmeside"> -<!ENTITY backup.complete.title "Alle filtre og abonnenter"> -<!ENTITY restore.own.label "Gjenopprett egen sikkerhetskopi"> -<!ENTITY restore.complete.warning "Alle filtervalgene dine vil bli erstattet av innholdet i filen du har valgt. Vil du fortsette?"> -<!ENTITY filters.tab.label "Egendefinerte filtre"> -<!ENTITY backup.label "Opprett ny sikkerhetskopi"> -<!ENTITY find.label "Fi&nn"> -<!ENTITY subscription.moveDown.label "Flytt ned"> -<!ENTITY subscription.lastDownload.connectionError "Feilet, nedlastingsfeil"> -<!ENTITY subscription.lastDownload.success "Vellykket"> -<!ENTITY subscription.lastDownload.invalidData "Feilet, ikke en gyldig filterliste"> -<!ENTITY filter.paste.label "Lim inn"> -<!ENTITY subscription.disabledFilters.enable "Aktiver deaktiverte filtre"> -<!ENTITY lasthit.column "Siste treff (&L)"> -<!ENTITY subscription.editTitle.label "Rediger tittel"> -<!ENTITY subscription.disabledFilters.warning "Noen filtre i dette abonnementet er deaktivert."> -<!ENTITY filter.column "&Filterregel"> -<!ENTITY subscription.lastDownload.label "Siste nedlasting:"> -<!ENTITY viewList.label "Vis liste"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/firstRun.properties deleted file mode 100644 index dc51602..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Vær privat pĂĄ nettet ved ĂĄ hindre sporing - gjem sporene dine fra reklameselskaper som ellers registrerer alt du gjør. -firstRun_toggle_off=AV -firstRun_feature_tracking=SlĂĄ av sporing -firstRun_feature_malware=Blokkering av skadeprogram -firstRun_title=Adblock Plus har blitt installert -firstRun_toggle_on=PĂ… -firstRun_acceptableAdsExplanation=Vi vil oppfordre nettsider til ĂĄ bruke standard, ikke-pĂĄtrengende annonser. Derfor har vi laget <a>strenge retningslinjer</a> for ĂĄ identifisere akseptable annonser, som vises nĂĄr man har aktivert standardinnstillingene. Hvis du ønsker ĂĄ blokkere alle annonser, kan du <a>velge bort</a> dette straks. -firstRun_contributor_credits=Takk til -firstRun_dataCorruptionWarning=Dukker denne siden stadig opp? <a>Klikk her!</a> -firstRun_acceptableAdsHeadline=Irriterende annonser blir fra nĂĄ av blokkert -firstRun_share=Fortell dette til vennene dine -firstRun_share_headline=<a>Hjelp oss</a> med ĂĄ gjøre Internett til et bedre sted -firstRun_feature_social_description=Bli kvitt knapper for sosiale medier, slik som "Liker" fra Facebook, som dukker opp pĂĄ nettsider og sporer handlingene dine. -firstRun_filterlistsReinitializedWarning=Det kan se ut som at en feil i systemet gjorde at alle filtrene ble fjernet, og vi var ute av stand til ĂĄ gjenopprette sikkerhetskopien. Vi har derfor mĂĄttet nullstille alle filtrene og innstillingene for Akseptable annonser. Vennligst kontroller filterlistene dine og innstillingene for Akseptable annonser i valgalternativene til <a>Adblock Plus options</a>. -firstRun_feature_malware_description=Gjør nettlesingen din tryggere ved ĂĄ blokkere domener som er kjent for ĂĄ være skadelige. -firstRun_features=Adblock Plus kan gjøre mer enn ĂĄ bare blokkere annonser -firstRun_donate=donĂ©r -firstRun_donate_label=Støtt prosjektet vĂĄrt -firstRun_feature_social=Fjern sosiale media-knapper -firstRun_legacySafariWarning=Du bruker en gammel versjon av Safari som ikke støttes av Adblock Plus, og det kan hende Adblock Plus ikke fungerer, eller forverrer brukeropplevelsen pĂĄ enkelte nettsteder. Vi anbefaler sterkt at du enten oppdaterer til Safari 6.1.1 eller nyere (tilgjengelig for Mac OS X 10.8 Mountain Lion), Safari 7.0.1 (tilgjengelig for OS X 10.9 Mavericks) eller nyere, eller bruker den nyeste versjonen av Mozilla Firefox, Google Chrome eller Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/global.properties deleted file mode 100644 index 45be984..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Ingen blokkerbare elementer pĂĄ nĂĄværende side -action3_tooltip=Klikk for ĂĄ aktivere/deaktivere Adblock Plus. -notification_antiadblock_title=Skjul meldinger til Adblock Plus brukere? -type_label_script=script -filter_elemhide_nocriteria=Du har ikke spesifisert kriterier for ĂĄ gjenkjenne elementet som skal skjules -blockingGroup_title=Regler for annonseblokkering -whitelisted_tooltip=Adblock Plus er deaktivert pĂĄ nĂĄværende side. -type_label_stylesheet=stilark -blocked_count_tooltip=?1? av ?2? -type_label_font=font -type_label_popup=sprettoppvindu -filter_regexp_tooltip=Dette filteret er enten et standarduttrykk eller er for kort til ĂĄ bli optimalisert. For mange slike filtre kan gjøre nettleseren din tregere. -action0_tooltip=Trykk her for ĂĄ vise kontekstmenyen. Midtklikk for ĂĄ aktivere/deaktivere. -whitelisted_page=Adblock Plus har blitt deaktivert for nĂĄværende side -remove_group_warning=Ănsker du virkelig ĂĄ fjerne denne gruppen? -action1_tooltip=Klikk her for ĂĄ ĂĄpne/lukke elementer som kan blokkeres. Midtklikk for ĂĄ aktivere/deaktivere. -type_label_xmlhttprequest=XML-forespørsel -active_tooltip=Adblock Plus er aktivert. ?1? filterabonnementer og ?2? egendefinerte filtre i bruk. -type_label_document=dokument -type_label_object_subrequest=underforespørsel fra objektet -whitelistGroup_title=Unntaksregler -disabled_tooltip=Adblock Plus er deaktivert. -filter_elemhide_duplicate_id=Du kan kun angi ett ID for elementet som skal skjules -type_label_object=objekt -action2_tooltip=Klikk her for ĂĄ ĂĄpne innstillingsvalgene. Midtklikk for ĂĄ aktivere/deaktivere. -type_label_subdocument=ramme -clearStats_warning=Dette vil nullstille alle treffstatistikker for filtre og deaktivere telleren. Vil du fortsette? -notification_antiadblock_message=Dette omrĂĄdet er kjent for ĂĄ vise meldinger som henvender seg til AdBlock Plus brukere. Vil du at Adblock Plus skal skjule disse meldingene? -blocked_count_addendum=(ogsĂĄ hvitelistet: ?1?, skjult: ?2?) -subscription_invalid_location=Filterlistens plassering er verken en gyldig URL eller et gyldig filnavn. -type_label_image=bilde -remove_subscription_warning=Ănsker du virkelig ĂĄ fjerne dette abonnementet? -type_label_other=annet -mobile_menu_enable=ABP: Aktiver -type_label_media=lyd/video -mobile_menu_disable_site=ABP: Deaktiver pĂĄ ?1? -elemhideGroup_title=Regler for ĂĄ skjule elementer -mobile_menu_enable_site=ABP: Aktiver pĂĄ ?1? -type_label_elemhide=skjult -newGroup_title=Ny filtergruppe -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/overlay.dtd deleted file mode 100644 index 9d89b41..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ja"> -<!ENTITY notification.button.no "&Nei"> -<!ENTITY sync.label "Synkroniser innstillinger for Adblo&ck Plus"> -<!ENTITY whitelist.site.label "Deaktiver pĂĄ ?1?"> -<!ENTITY filters.label "&Filterinnstillinger"> -<!ENTITY disable.label "Deaktiver overalt"> -<!ENTITY objecttab.title "Blokker"> -<!ENTITY objecttab.tooltip "Klikk her for ĂĄ blokkere dette elementet med Adblock Plus"> -<!ENTITY menuitem.label "Adblock Plus innstillinger"> -<!ENTITY objecttabs.label "Vis faner pĂĄ Flash og Java"> -<!ENTITY sendReport.label "&Rapporter problem pĂĄ denne siden"> -<!ENTITY whitelist.page.label "Deaktiv kun pĂĄ denne siden"> -<!ENTITY context.image.label "Adblock Plus: Blokker bilde"> -<!ENTITY counthits.label "Tell filtertreff (&h)"> -<!ENTITY opensidebar.label "Ă…pne &blokkerbare elementer"> -<!ENTITY notification.button.close "&Lukk"> -<!ENTITY contribute.label "Bidra til Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Blokker ramme"> -<!ENTITY blocked.tooltip "Blokkerte elementer pĂĄ denne siden:"> -<!ENTITY hideplaceholders.label "Skjul plassbeholder for blokkerte elementer"> -<!ENTITY showinstatusbar.label "Vis i statuslinjen"> -<!ENTITY sidebar.title "Blokkerbare elementer pĂĄ nĂĄværende side"> -<!ENTITY options.label "Alternativer (&O)"> -<!ENTITY context.object.label "Adblock Plus: Blokker objekt"> -<!ENTITY context.removeWhitelist.label "Reaktiver pĂĄ denne siden"> -<!ENTITY filters.tooltip "Mest aktive filtre:"> -<!ENTITY closesidebar.label "Lukk &blokkĂ©rbare elementer"> -<!ENTITY showintoolbar.label "Vis pĂĄ verktøylinje (&b)"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Blokker lyd/video"> -<!ENTITY subscription.update.label "Oppdater filtre"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sendReport.dtd deleted file mode 100644 index 1cc95f1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Angre (&U)"> -<!ENTITY issues.disabledgroups.description "Disse filterabonnementene/filtergruppene er deaktivert, men de kan ha en effekt pĂĄ denne siden likevel:"> -<!ENTITY showData.label "Vis rapportdata"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokkerer for &mye"> -<!ENTITY issues.change.description "Konfigurasjonene dine er endret. Last inn siden pĂĄ nytt for ĂĄ teste forandringene, og send inn en ny rapport hvis problemene er vedvarende."> -<!ENTITY email.label "E-post: (&m)"> -<!ENTITY issues.openPreferences.label "Ă…pne filterinnstillinger"> -<!ENTITY sendPage.confirmation "Rapporten er lagret. Du kan fĂĄ tilgang til den ved følgende internettadresse:"> -<!ENTITY copyLink.label "Kopier rapportlink (&C)"> -<!ENTITY issues.nofilters.description "Adblock Plus blokkerer ingenting pĂĄ denne siden. Problemer du opplever er trolig urelatert til Adblock Plus."> -<!ENTITY sendPage.knownIssue "Problemet du rapporterte inn er allerede kjent for oss. Mer informasjon:"> -<!ENTITY typeSelector.other.description "Velg dette alternativet hvis du mistenker at det er et problem med Adblock Plus som program, i motsetning til filterene."> -<!ENTITY issues.disabledgroups.enable.label "Aktiver filterabonnement / filtergruppe"> -<!ENTITY typeWarning.override.label "Jeg for&stĂĄr og ønsker likevel ĂĄ sende rapporten"> -<!ENTITY issues.disabled.enable.label "Aktiver Adblock Plus"> -<!ENTITY update.fixed.description "Oppdateringen av filterabonnemenetene dine løste trolig problemet du rapporterte inn. Vennligst last inn siden pĂĄ nytt. Rapporter inn problemet pĂĄ nytt hvis problemet fremdeles eksisterer."> -<!ENTITY anonymous.label "&Anonym innsending"> -<!ENTITY reloadButton.label "Last side pĂĄ nytt (&R)"> -<!ENTITY recentReports.clear.label "Fje&rn alle rapporter"> -<!ENTITY typeSelector.description "Dette vinduet vil veilede deg gjennom de nødvendige stegene som trengs for ĂĄ sende inn en problemrapport til Adblock Plus. Velg først hvilket type problem du har pĂĄ denne siden:"> -<!ENTITY screenshot.remove.label "Fje&rn sensitive data"> -<!ENTITY issues.ownfilters.description "Noen av filterene som er aktivert pĂĄ denne siden er brukerdefinerte. Vennligst deaktiver filterene som kan ha forĂĄrsaket problemet:"> -<!ENTITY update.inProgress.description "Adblock Plus behøver ĂĄ oppdatere filterabonnementene for ĂĄ forsikre seg at problemet ikke har blitt løst allerede. Vennligst vent..."> -<!ENTITY sendPage.retry.label "Send pĂĄ nytt"> -<!ENTITY data.label "Ra&pportdata:"> -<!ENTITY recentReports.label "Dine nylig innsendte rapporter"> -<!ENTITY typeWarning.description "Du har angitt at du vil rapportere inn et generelt problem vedrørende Adblock Plus, istedenfor et problem vedrørende filtrene. Vennligst legg merke til at slike problemer helst bør rapporteres inn pĂĄ [link]Adblock Plus forum[/link]. Du burde kun bruke rapportingsfunksjonen til ĂĄ supplementere til en eksisterende diskusjon, siden ingen vil legge merke til din rapport sĂĄfremt du ikke legger ved en link. En automatisk generert link vil bli gitt deg etter at du har sendt inn en rapport."> -<!ENTITY issues.disabled.description "Adblock Plus er deaktivert, og vil ikke blokkere noenting i denne tilstanden."> -<!ENTITY attachExtensions.label "Legg ved en liste over aktive tillegg til rapporten, i tilfelle det er en "add-on" som er grunnen til problemet"> -<!ENTITY issues.nosubscriptions.add.label "Legg til filterabonnement"> -<!ENTITY issues.disabledfilters.enable.label "Aktiver filter"> -<!ENTITY issues.override.label "Følgende konfigurasjon er korrekt; fortsetter med rapporteringen"> -<!ENTITY issues.nosubscriptions.description "Det virker som om du ikke har abonnert pĂĄ noen av de forhĂĄndsdefinerte listene som fjerner uønsket innhold fra internettsider."> -<!ENTITY typeSelector.falsePositive.description "Velg dette alternativet hvis siden mangler viktig innhold, vises feil eller ikke fungerer sĂĄnn det skal. Du kan finne ut om Adblock Plus er roten til problemet ved ĂĄ deaktivere Adblock Plus midlertidig."> -<!ENTITY typeSelector.other.label "Anne&t problem"> -<!ENTITY emailComment.label "Vi oppfordrer deg til ĂĄ oppgi en gyldig e-postadresse, slik at vi kan kontakte deg hvis vi har spørsmĂĄl angĂĄende denne rapporten. Det vil ogsĂĄ gjøre at vi kan gjenkjenne dine bidrag, og prioritere dem høyere."> -<!ENTITY issues.whitelist.remove.label "Reaktiver Adblock Plus for denne siden"> -<!ENTITY outdatedSubscriptions.description "Disse filterabonnementene har ikke blitt oppdatert pĂĄ minst to uker. Vennligst oppdater disse filterabonnementene før du sender inn en problemrapport; problemet kan ha blitt løst allerede."> -<!ENTITY dataCollector.description "Vennligst vent pĂĄ at Adblock Plus samler inn de nødvendige data."> -<!ENTITY sendButton.label "Se&nd rapport"> -<!ENTITY comment.label "Kommentar (valgfritt): (&C)"> -<!ENTITY sendPage.errorMessage "Et forsøk pĂĄ ĂĄ sende inn rapporten feilet, med feilkoden "?1?". Vennligst kontrollĂ©r at du har internettilgang, og prøv pĂĄ nytt. Hvis problemet vedvarer kan du be om hjelp i [link]Adblock Plus forum[/link]."> -<!ENTITY showRecentReports.label "Vis nylig innsendte rapporter"> -<!ENTITY commentPage.heading "Skriv inn kommentar"> -<!ENTITY update.start.label "Start oppdatering nĂĄ"> -<!ENTITY issues.disabledfilters.description "Følgende filter er deaktiver, men det kan alikevell ha en effekt pĂĄ denne siden:"> -<!ENTITY screenshot.description "En internettside kan se annerledes ut for forskjellige personer. Det vil muligens hjelpe oss til ĂĄ forstĂĄ problemet hvis du du sender med en skjermdump, sammen med rapporten. Du kan fjerne sensitiv informasjon, sĂĄvell som markere omrĂĄdet hvor problemet er merkbart. For ĂĄ gjøre dette mĂĄ du klikke tilsvarende knapp, og velge omrĂĄdet du vil markere med datamusen."> -<!ENTITY screenshot.attach.label "Legg ved et bilde til rapporten"> -<!ENTITY issues.whitelist.description "Adblock Plus er for tiden deaktivert for siden du ønkser ĂĄ rapportere inn. Vennligst reaktiver Adblock Plus for denne siden, og last inn siden pĂĄ nytt før sender inn rapporten."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus blokkerer ikke et reklameelement"> -<!ENTITY typeSelector.heading "Velg type problem"> -<!ENTITY anonymity.warning "Vi vil ikke kunne svare deg, og det vil sannsynligvis gjøre at rapporten fĂĄr lavere prioritet."> -<!ENTITY wizard.title "Problemrapporterer"> -<!ENTITY issues.ownfilters.disable.label "Deaktiver filter"> -<!ENTITY commentPage.description "I tekstfeltet nedenfor kan du skrive en kommentar som kan hjelpe oss til ĂĄ forstĂĄ problemet. Dette er valgfritt, men anbefalt hvis problemet ikke ĂĄpenbart. Du kan ogsĂĄ se pĂĄ rapportdataene før de sendes."> -<!ENTITY comment.lengthWarning "Lengden pĂĄ din kommentar er lenger enn 1000 bokstav. Bare de første 1000 bokstavene vil bli inkludert i rapporten."> -<!ENTITY typeSelector.falseNegative.description "Velg dette alternativet hvis et reklameelement vises, selv om Adblock Plus er aktivert."> -<!ENTITY sendPage.waitMessage "Vennligst vent mens Adblock Plus sender inn din rapport."> -<!ENTITY dataCollector.heading "Velkommen til problemrapportereren"> -<!ENTITY screenshot.heading "Legg ved skjermdump"> -<!ENTITY sendPage.heading "Send rapport"> -<!ENTITY issues.subscriptionCount.description "Det virker som om du har abonnert pĂĄ for mange filterabonnementer. Dette oppsettet er ikke oppsettet er ikke anbefalt, da det ofte vil resultere i at du opplever flere problemer med Adblock plus. Vi kan heller ikke ta imot din rapport, siden det er usikkert hvilken filterforfatter det er som eventuelt mĂĄ fikse filteret sitt. Vennligst fjern alle ikke-nødvendige filtere, og se om samme problem oppstĂĄr da."> -<!ENTITY screenshot.mark.label "Markèr problemet"> -<!ENTITY privacyPolicy.label "Personvern"> -<!ENTITY issues.description "Adblock Plus oppdaget problemer med konfigurasjonene som kan være grunnen til problemet, eller som kan gjøre det vanskelig ĂĄ undersøke problemet."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sidebar.dtd deleted file mode 100644 index 1e4e45b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "FremhĂ©v elementets kanter"> -<!ENTITY address.label "Adresse"> -<!ENTITY context.open.label "Ă…pne i ny fane"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Filterkilde:"> -<!ENTITY noitems.label "Ingen blokkerbare elementer"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Størrelse:"> -<!ENTITY reattach.label "Gjentilkoble"> -<!ENTITY search.label "&Søk:"> -<!ENTITY docDomain.thirdParty "(tredjeparts)"> -<!ENTITY filterSource.label "Filterkilde"> -<!ENTITY tooltip.docDomain.label "Dokumentkilde:"> -<!ENTITY context.copy.label "Kopier elementets adresse"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY context.disablefilter.label "Deaktiver filter ?1?"> -<!ENTITY context.copyFilter.label "Kopier filter"> -<!ENTITY context.block.label "Blokker dette elementet"> -<!ENTITY context.enablefilter.label "Reaktiver filter ?1?"> -<!ENTITY detach.label "Frakoble"> -<!ENTITY whitelisted.label "Hvitelistet side"> -<!ENTITY context.disablefilteronsite.label "Deaktiver dette filteret pĂĄ ?1?"> -<!ENTITY detached.title "Adblock Plus: BlokkĂ©rbare elementer(frittstĂĄende)"> -<!ENTITY docDomain.firstParty "(førsteparts)"> -<!ENTITY tooltip.type.whitelisted "(hvitelistet)"> -<!ENTITY tooltip.filter.label "Gjeldende filter:"> -<!ENTITY tooltip.filter.disabled "(deaktivert)"> -<!ENTITY context.editfilter.label "RedigĂ©r gjeldende filter"> -<!ENTITY tooltip.type.blocked "(blokkert)"> -<!ENTITY size.label "Størrelse"> -<!ENTITY context.whitelist.label "Legg til unntaksregel for elementet"> -<!ENTITY context.selectAll.label "Velg alle"> -<!ENTITY state.label "Tilstand"> -<!ENTITY docDomain.label "Dokumentkilde"> -<!ENTITY tooltip.address.label "Adresse:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/subscriptionSelection.dtd deleted file mode 100644 index 14ae574..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nb-NO/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Legg til filterabonnement "?1?" ogsĂĄ"> -<!ENTITY list.download.failed "Adblock Plus mislyktes i ĂĄ hente listen med abonnementene."> -<!ENTITY list.download.retry "Prøv igjen"> -<!ENTITY title.label "Abonnemen&tstittel:"> -<!ENTITY list.download.website "Vis nettside"> -<!ENTITY supplementMessage "Dette filter abonnementet er ment ĂĄ brukes sammen med filter abonnementet "?1?" som du ikke bruker ennĂĄ."> -<!ENTITY viewList.label "Vis filtre"> -<!ENTITY visitHomepage.label "Besøk hjemmeside"> -<!ENTITY addSubscription.label "Legg til abonnement"> -<!ENTITY dialog.title "Legg til filterabonnement for Adblock Plus"> -<!ENTITY location.label "Filterabonnementets plassering:"> -<!ENTITY fromWeb.description "Vennligst bekreft at du vil legge til dette filterabonnementet. Du kan forandre tittelen pĂĄ abonnementet, eller plasseringen til abonnementet, før det legges til."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/composer.dtd deleted file mode 100644 index 1ae748e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "aan het e&ind van het adres"> -<!ENTITY domainRestriction.label "Tot domein be&perken:"> -<!ENTITY collapse.default.no.label "Standaard gebruiken (nee)"> -<!ENTITY firstParty.label "A&lleen van eigen website"> -<!ENTITY preferences.label "Bestaande filters &weergeven…"> -<!ENTITY pattern.label "Naar patroon zoeken"> -<!ENTITY thirdParty.label "Alleen van &derden"> -<!ENTITY filter.label "&Nieuwe filter:"> -<!ENTITY collapse.label "&Geblokkeerd onderdeel inklappen:"> -<!ENTITY match.warning "Het door u ingegeven patroon komt niet meer overeen met het te blokkeren/op de witte lijst te plaatsen adres en zal er geen effect op hebben."> -<!ENTITY anchor.start.label "aan &het begin van het adres"> -<!ENTITY matchCase.label "H&oofdlettergevoelig"> -<!ENTITY custom.pattern.label "&Aangepast:"> -<!ENTITY unselectAllTypes.label "Niets selecteren"> -<!ENTITY type.whitelist.label "&Uitzonderingsregel"> -<!ENTITY regexp.warning "Het patroon dat u heeft gegeven zal worden behandeld als een reguliere expressie. Deze kunnen niet efficiĂ«nt worden verwerkt door Adblock Plus en kunnen uw browser traag maken. Als het niet uw bedoeling was een reguliere expressie te schrijven, voeg dan een asterisk (*) aan het eind van het patroon toe."> -<!ENTITY dialog.title "Adblock Plus-filterregel toevoegen"> -<!ENTITY basic.label "Eenvoudige weergave"> -<!ENTITY type.filter.label "&Blokkeringsfilter"> -<!ENTITY types.label "Toepassen op types:"> -<!ENTITY shortpattern.warning "Het patroon dat u heeft gegeven is te kort om te worden geoptimaliseerd en kan uw browser traag maken. U kunt beter een langere regel voor dit filter kiezen, zodat Adblock Plus het filter efficiĂ«nter kan toepassen."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Alleen patronen accepteren:"> -<!ENTITY collapse.default.yes.label "Standaard gebruiken (ja)"> -<!ENTITY domainRestriction.help "Gebruik deze optie om één of meer domeinen te specificeren, gescheiden door een lijn (|). Het filter zal alleen op deze domeinen worden toegepast. Een tilde (~) voor een domein betekent dat het filter niet moet worden toegepast op dat domein."> -<!ENTITY accept.label "Filter toevoegen"> -<!ENTITY options.label "Opties"> -<!ENTITY disabled.warning "Adblock Plus is momenteel uitgeschakeld. U kunt nog wel filters toevoegen, maar ze worden niet toegepast tenzij u [link]Adblock Plus weer inschakelt[/link]."> -<!ENTITY anchor.start.flexible.label "aan &het begin van de domeinnaam"> -<!ENTITY collapse.no.label "Nee"> -<!ENTITY selectAllTypes.label "Alles selecteren"> -<!ENTITY advanced.label "Geavanceerde weergave"> -<!ENTITY pattern.explanation "Het patroon kan ieder gedeelte zijn van het adres, waarbij een asterisk (*) als wildcard geldt. Het filter wordt alleen toegepast op adressen die met het patroon overeenkomen."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/filters.dtd deleted file mode 100644 index f04172e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Al uw aangepaste filters worden vervangen door de inhoud van het geselecteerde bestand. Wilt u doorgaan?"> -<!ENTITY slow.column "T&rage filters"> -<!ENTITY enabled.column "&Ingeschakeld"> -<!ENTITY subscription.lastDownload.checksumMismatch "Mislukt, afwijkend controlecijfer"> -<!ENTITY noFiltersInGroup.text "De geselecteerde groep is leeg."> -<!ENTITY subscription.actions.label "Acties"> -<!ENTITY filter.selectAll.label "Alles selecteren"> -<!ENTITY backupButton.label "&Back-up en herstel"> -<!ENTITY restore.minVersion.warning "Waarschuwing: het bestand is gemaakt met een nieuwere versie van Adblock Plus. U dient bij te werken naar de laatste versie voordat u kunt herstellen vanuit dit bestand."> -<!ENTITY restore.error "De gegevens in het bestand kunnen niet worden verwerkt, wellicht is het geen back-up-bestand van Adblock Plus?"> -<!ENTITY sort.ascending.label "&A > Z sortering"> -<!ENTITY sort.label "&Sorteren op"> -<!ENTITY subscription.source.label "Filterlijst"> -<!ENTITY hitcount.column "&Treffers"> -<!ENTITY noFilters.text "U heeft nog geen aangepaste filters."> -<!ENTITY backup.custom.title "Alleen aangepaste filters"> -<!ENTITY subscription.external.label "Bijgewerkt door een andere extensie"> -<!ENTITY subscription.delete.label "Verwijderen"> -<!ENTITY noGroupSelected.text "U dient een filtergroep te selecteren voordat de filters kunnen worden weergegeven."> -<!ENTITY filter.cut.label "Knippen"> -<!ENTITY restore.default.label "Back-up van ?1? terugzetten"> -<!ENTITY subscription.lastDownload.inProgress "Downloaden…"> -<!ENTITY subscriptions.tab.label "Filterabonnementen"> -<!ENTITY sort.descending.label "&Z > A sortering"> -<!ENTITY filters.remove.warning "Wilt u echt alle geselecteerde filters verwijderen?"> -<!ENTITY filter.delete.label "Verwijderen"> -<!ENTITY addSubscriptionAdd.label "Toevoegen"> -<!ENTITY viewMenu.label "Beeld"> -<!ENTITY subscription.lastDownload.unknown "Onbekend"> -<!ENTITY addSubscriptionCancel.label "Annuleren"> -<!ENTITY subscription.enabled.label "Ingeschakeld"> -<!ENTITY noSubscriptions.text "U heeft nog geen filterabonnementen toegevoegd. Adblock Plus blokkeert niets zonder filters, gebruik â€Filterabonnement toevoegen’ om er één toe te voegen."> -<!ENTITY subscription.update.label "Filters bijwerken"> -<!ENTITY dialog.title "Adblock Plus-filtervoorkeuren"> -<!ENTITY addFilter.label "Fil&ter toevoegen"> -<!ENTITY subscription.minVersion.warning "Dit filterabonnement vereist een nieuwere versie van Adblock Plus, u dient bij te werken naar de nieuwste versie."> -<!ENTITY subscription.lastDownload.invalidURL "Mislukt, geen geldig adres"> -<!ENTITY backup.error "Er is een fout opgetreden bij het wegschrijven van de filters. Zorg ervoor dat het bestand niet tegen schrijven beveiligd is of wordt gebruikt door een andere toepassing."> -<!ENTITY filter.moveUp.label "Omhoog"> -<!ENTITY addGroup.label "&Filtergroep toevoegen"> -<!ENTITY filter.edit.label "Bewerken"> -<!ENTITY subscription.showHideFilters.label "Filters weergeven/verbergen"> -<!ENTITY acceptableAds2.label "&Enkele niet-opdringerige advertenties toestaan"> -<!ENTITY addSubscriptionOther.label "Een ander abonnement toevoegen"> -<!ENTITY close.label "Sluiten"> -<!ENTITY sort.none.label "&Ongesorteerd"> -<!ENTITY filter.actions.label "Filteracties"> -<!ENTITY filter.copy.label "KopiĂ«ren"> -<!ENTITY filter.moveDown.label "Omlaag"> -<!ENTITY filter.resetHitCounts.label "Trefferstatistieken opnieuw instellen"> -<!ENTITY readMore.label "Lees meer"> -<!ENTITY subscription.moveUp.label "Omhoog"> -<!ENTITY addSubscription.label "&Filterabonnement toevoegen"> -<!ENTITY subscription.homepage.label "Startpagina"> -<!ENTITY backup.complete.title "Alle filters en abonnementen"> -<!ENTITY restore.own.label "Eigen back-up terugzetten"> -<!ENTITY restore.complete.warning "Al uw filtervoorkeuren worden vervangen door de inhoud van het geselecteerde bestand. Wilt u doorgaan?"> -<!ENTITY filters.tab.label "Aangepaste filters"> -<!ENTITY backup.label "Nieuwe back-up maken"> -<!ENTITY find.label "Z&oeken"> -<!ENTITY subscription.moveDown.label "Omlaag"> -<!ENTITY subscription.lastDownload.connectionError "Mislukt, downloadprobleem"> -<!ENTITY subscription.lastDownload.success "Gelukt"> -<!ENTITY subscription.lastDownload.invalidData "Mislukt, geen geldige filterlijst"> -<!ENTITY filter.paste.label "Plakken"> -<!ENTITY subscription.disabledFilters.enable "Uitgeschakelde filters inschakelen"> -<!ENTITY lasthit.column "&Laatste treffer"> -<!ENTITY subscription.editTitle.label "Titel bewerken"> -<!ENTITY subscription.disabledFilters.warning "Enkele filters in dit abonnement zijn uitgeschakeld."> -<!ENTITY filter.column "&Filterregel"> -<!ENTITY subscription.lastDownload.label "Laatste download:"> -<!ENTITY viewList.label "Lijst bekijken"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/firstRun.properties deleted file mode 100644 index 309fdcd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Browse privĂ© door 'tracking' uit te schakelen - verberg uw gegevens voor advertentiebedrijven die al uw surfgedrag zouden volgen. -firstRun_toggle_off=UIT -firstRun_feature_tracking=Tracking uitschakelen -firstRun_feature_malware=Malware Blokkering -firstRun_title=Adblock plus is geĂŻnstalleerd -firstRun_acceptableAdsExplanation=Wij zouden websites willen aanmoedigen eenvoudige, niet-opdringerige advertenties te gebruiken. Daarom hebben we <a>strikte richtlijnen</a> opgesteld om acceptabele advertenties te identificeren, die worden getoond onder Standaardinstellingen. Als u alsnog alle advertenties wilt blokkeren, kunt u dit in een paar seconden <a>uitschakelen</a>. -firstRun_toggle_on=AAN -firstRun_contributor_credits=Bijdrager Credits -firstRun_dataCorruptionWarning=Blijft deze pagina verschijnen? <a>Klik hier!</a> -firstRun_acceptableAdsHeadline=Vervelende advertenties zullen nu worden geblokkeerd -firstRun_share=Vertel uw vrienden -firstRun_share_headline=<a>Help ons</a> om van het web een betere plek te maken -firstRun_features=Adblock Plus kan meer doen dan advertenties blokkeren -firstRun_feature_malware_description=Maak het browsen veiliger door het blokkeren van bekende malware domeinen. -firstRun_feature_social_description=Verwijder social media-knoppen (zoals de Facebook "Like" knop) automatisch, omdat die op webpagina's verschijnen en uw surfgedrag volgen. -firstRun_donate=doneren -firstRun_donate_label=Steun ons project -firstRun_feature_social=Verwijder Social Media knoppen -firstRun_legacySafariWarning=U gebruikt een oude versie van Safari die niet wordt ondersteund door Adblock Plus. Sommige websites kunnen daardoor onjuist worden weergegeven. Wij raden u aan een update uit te voeren naar Safari versie 6.1.1 of hoger (voor Mac OS X 10.8 Mountain Lion), Safari versie 7.0.1 of hoger (voor Mac OS X 10.9 Mavericks) of de laatste versie van Mozilla Firefox, Google Chrome of Opera te gebruiken. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/global.properties deleted file mode 100644 index 15b65fd..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Geen blokkeerbare onderdelen op deze pagina -action3_tooltip=Klik om Adblock Plus in/uit te schakelen. -notification_antiadblock_title=Gerichte berichten verbergen? -type_label_script=script -filter_elemhide_nocriteria=Geen criteria opgegeven om het te verbergen element te herkennen -blockingGroup_title=Advertentieblokkaderegels -whitelisted_tooltip=Adblock Plus is ingeschakeld maar staat uit voor deze pagina. -type_label_stylesheet=stylesheet -blocked_count_tooltip=?1? van de ?2? -type_label_font=lettertype -type_label_popup=pop-upvenster -filter_regexp_tooltip=Dit filter is een reguliere expressie of te kort om te kunnen worden geoptimaliseerd. Te veel van dit soort filters kan uw browser traag maken. -action0_tooltip=Klik om het contextmenu te openen, middelklik om in/uit te schakelen. -whitelisted_page=Adblock Plus is uitgeschakeld voor deze pagina -remove_group_warning=Wilt u echt deze groep verwijderen? -action1_tooltip=Klik om blokkeerbare onderdelen te openen/sluiten, middelklik om in/uit te schakelen. -type_label_xmlhttprequest=XML-verzoek -active_tooltip=Adblock Plus is actief, ?1? filterabonnement(en) en ?2? aangepast(e) filter(s) in gebruik. -type_label_document=document -type_label_object_subrequest=object-subverzoek -whitelistGroup_title=Uitzonderingsregels -disabled_tooltip=Adblock Plus is uitgeschakeld. -filter_elemhide_duplicate_id=Er kan slechts één ID van het te verbergen element worden opgegeven -type_label_object=object -action2_tooltip=Klik om voorkeuren te openen, middelklik om in/uit te schakelen. -type_label_subdocument=frame -clearStats_warning=Dit stelt alle filtertrefferstatistieken opnieuw in en schakelt het tellen van filtertreffers uit. Wilt u doorgaan? -notification_antiadblock_message=Deze website staat er om bekend dat ze berichten laat zien die op Adblock plus gebruikers gericht zijn. Wilt u dat Adblock Plus deze verbergt? -blocked_count_addendum=(ook op witte lijst: ?1?, verborgen: ?2?) -subscription_invalid_location=Deze filterlijstlocatie is geen geldige URL en ook geen geldige bestandsnaam. -type_label_image=afbeelding -remove_subscription_warning=Weet u zeker dat u dit abonnement wilt verwijderen? -type_label_other=anders -mobile_menu_enable=ABP: Inschakelen -type_label_media=audio/video -mobile_menu_disable_site=ABP: Uitschakelen op ?1? -elemhideGroup_title=Elementverbergingsregels -mobile_menu_enable_site=ABP: Inschakelen op ?1? -type_label_elemhide=verborgen -newGroup_title=Nieuwe filtergroep -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/overlay.dtd deleted file mode 100644 index 9537253..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ja"> -<!ENTITY notification.button.no "&Nee"> -<!ENTITY sync.label "Syn&chroniseer Adblock Plus instellingen"> -<!ENTITY whitelist.site.label "Uitschakelen op ?1?"> -<!ENTITY filters.label "&Filtervoorkeuren"> -<!ENTITY disable.label "Overal uitschakelen"> -<!ENTITY objecttab.title "Blokkeren"> -<!ENTITY objecttab.tooltip "Klik hier om dit object te blokkeren met Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus-voorkeuren"> -<!ENTITY objecttabs.label "&Tabs weergeven op Flash en Java"> -<!ENTITY sendReport.label "&Probleem op deze pagina rapporteren"> -<!ENTITY whitelist.page.label "Alleen op deze pagina uitschakelen"> -<!ENTITY context.image.label "Adblock Plus: Afbeelding blokkeren"> -<!ENTITY counthits.label "&Filtertreffers tellen"> -<!ENTITY opensidebar.label "&Blokkeerbare onderdelen openen"> -<!ENTITY notification.button.close "&Sluit"> -<!ENTITY contribute.label "Draag bij aan Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Deelvenster blokkeren"> -<!ENTITY blocked.tooltip "Geblokkeerde onderdelen op deze pagina:"> -<!ENTITY hideplaceholders.label "P&laatshouders van geblokkeerde elementen verbergen"> -<!ENTITY showinstatusbar.label "In &statusbalk weergeven"> -<!ENTITY sidebar.title "Blokkeerbare onderdelen op deze pagina"> -<!ENTITY options.label "&Opties"> -<!ENTITY context.object.label "Adblock Plus: Object blokkeren"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Opnieuw inschakelen op deze pagina"> -<!ENTITY filters.tooltip "Meest actieve filters:"> -<!ENTITY closesidebar.label "&Blokkeerbare onderdelen sluiten"> -<!ENTITY showintoolbar.label "In werk&balk weergeven"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Audio/video blokkeren"> -<!ENTITY subscription.update.label "Filters bijwerken"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sendReport.dtd deleted file mode 100644 index 90265fb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "Onge&daan maken"> -<!ENTITY issues.disabledgroups.description "De volgende filterabonnementen / filtergroepen zijn uitgeschakeld, maar ze hebben mogelijk wel een effect op deze pagina:"> -<!ENTITY showData.label "Rapportgegevens weergeven"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokkeert te &veel"> -<!ENTITY issues.change.description "Uw configuratie is gewijzigd. Laad de pagina opnieuw om de wijzigingen te testen en een rapport in te dienen als het probleem niet is opgelost door de wijzigingen."> -<!ENTITY email.label "E-&mailadres:"> -<!ENTITY issues.openPreferences.label "Filtervoorkeuren openen"> -<!ENTITY sendPage.confirmation "Uw rapport is opgeslagen. U kunt het bekijken op het volgende adres:"> -<!ENTITY copyLink.label "Rapport&koppeling kopiĂ«ren"> -<!ENTITY issues.nofilters.description "Adblock Plus blokkeert niets op de huidige pagina. Het door u ervaren probleem hangt hoogstwaarschijnlijk niet samen met Adblock Plus."> -<!ENTITY sendPage.knownIssue "Het door u gemelde probleem is waarschijnlijk al bekend. Meer informatie:"> -<!ENTITY typeSelector.other.description "Selecteer deze optie als u een probleem met Adblock Plus zelf vermoedt in plaats van met de filters."> -<!ENTITY issues.disabledgroups.enable.label "Filterabonnement / filtergroep inschakelen"> -<!ENTITY typeWarning.override.label "Ik be&grijp het en wil het rapport toch indienen"> -<!ENTITY issues.disabled.enable.label "Adblock Plus inschakelen"> -<!ENTITY update.fixed.description "De updates voor uw filterabonnementen hebben waarschijnlijk het door u gerapporteerde probleem verholpen. Laad de pagina opnieuw en probeer het nog eens, en druk opnieuw op Rapporteren als het probleem aanhoudt."> -<!ENTITY anonymous.label "&Anonieme bijdrage"> -<!ENTITY reloadButton.label "Pagina opnie&uw laden"> -<!ENTITY recentReports.clear.label "Alle rappor&ten verwijderen"> -<!ENTITY typeSelector.description "Dit venster leidt u door de stappen die nodig zijn voor het indienen van een Adblock Plus-probleemrapport. Selecteer eerst het probleemtype dat u ervaart op deze pagina:"> -<!ENTITY screenshot.remove.label "Gevoelige gegevens ver&wijderen"> -<!ENTITY issues.ownfilters.description "Enkele van de op deze pagina toegepaste filters zijn door een gebruiker gedefinieerd. Schakel de filters uit die mogelijk het probleem hebben veroorzaakt:"> -<!ENTITY update.inProgress.description "Adblock Plus dient uw filterabonnementen bij te werken om te controleren of het probleem niet al is opgelost. Een ogenblik…"> -<!ENTITY sendPage.retry.label "Opnieuw verzenden"> -<!ENTITY data.label "Ra&pportgegevens:"> -<!ENTITY recentReports.label "Uw onlangs ingediende rapporten"> -<!ENTITY typeWarning.description "U hebt aangegeven dat u een algemeen probleem met Adblock Plus wilt rapporteren in plaats van een probleem met de filters. Merk op dat dergelijke problemen het beste kunnen worden gerapporteerd in het [link]Adblock Plus-forum[/link]. U dient de probleemrapportage alleen te gebruiken om een bestaande discussie aan te vullen, aangezien niemand uw rapport zal opmerken tenzij u een koppeling ernaartoe geeft. De automatisch aangemaakte koppeling wordt weergegeven na indienenvan het rapport."> -<!ENTITY issues.disabled.description "Adblock Plus is uitgeschakeld, in de huidige staat zal het niets blokkeren."> -<!ENTITY attachExtensions.label "Voeg een lijst met actieve e&xtensies toe aan het rapport voor het geval conflicterende add-ons de oorzaak van het probleem zijn"> -<!ENTITY issues.nosubscriptions.add.label "Filterabonnement toevoegen"> -<!ENTITY issues.disabledfilters.enable.label "Filter inschakelen"> -<!ENTITY issues.override.label "De &configuratie is juist, doorgaan met rapportage"> -<!ENTITY issues.nosubscriptions.description "Het lijkt er op dat u geen abonnement heeft op een filterlijst die automatisch ongewenste inhoud van websites verwijdert."> -<!ENTITY typeSelector.falsePositive.description "Selecteer deze optie als de pagina belangrijke inhoudt niet weergeeft, onjuist wordt weergegeven of niet goed werkt. U kunt bepalen of Adblock Plus de oorzaak hiervan is door het tijdelijk uit te schakelen."> -<!ENTITY typeSelector.other.label "&Overige problemen"> -<!ENTITY emailComment.label "We raden u aan een geldig e-mailadres in te voeren, zodat we contact met u op kunnen nemen als er vragen zijn over uw verslag. Hierdoor kunnen wij uw bijdragen ook herkennen en ze hoger prioriteren."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus weer inschakelen op deze pagina"> -<!ENTITY outdatedSubscriptions.description "De volgende filterabonnementen zijn ten minste twee weken niet meer bijgewerkt. Werk ze eerst bij voordat u een rapport indient, het probleem is mogelijk al verholpen."> -<!ENTITY dataCollector.description "Wacht enkele momenten terwijl Adblock Plus de benodigde gegevens verzamelt."> -<!ENTITY sendButton.label "Rapport ver&zenden"> -<!ENTITY comment.label "Opme&rking (optioneel):"> -<!ENTITY sendPage.errorMessage "De poging om het rapport te verzenden is mislukt met foutcode â€?1?’. Controleer uw internetverbinding en probeer het opnieuw. Als het probleem aanhoudt, vraag dan om hulp op het [link]Adblock Plus-forum[/link]."> -<!ENTITY showRecentReports.label "Onlangs ingediende rapporten weergeven"> -<!ENTITY commentPage.heading "Opmerking toevoegen"> -<!ENTITY update.start.label "Nu bijwerken"> -<!ENTITY issues.disabledfilters.description "De volgende filters zijn uitgeschakeld, maar ze hebben mogelijk wel een effect op deze pagina:"> -<!ENTITY screenshot.description "Dezelfde pagina kan er verschillend uitzien voor verschillende personen. We begrijpen het probleem misschien beter als u een schermafbeelding toevoegt aan uw rapport. U kunt secties met gevoelige informatie verwijderen en gebieden waar het probleem zich voordoet markeren. Klik op de bijbehorende knop om dit te doen en selecteer een sectie van de afbeelding met uw muis."> -<!ENTITY screenshot.attach.label "Een pagina-afbeelding bi&j het rapport bijvoegen"> -<!ENTITY issues.whitelist.description "Adblock Plus is momenteel uitgeschakeld op de door u gerapporteerde pagina. Schakel het weer in en herlaad de pagina voordat u het rapport indient om te helpen bij het onderzoeken van dit probleem."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus blokk&eert een advertentie niet"> -<!ENTITY typeSelector.heading "Selecteer probleemtype"> -<!ENTITY anonymity.warning "We kunnen niet met u in contact komen en zullen uw verslag daarom waarschijnlijk lager prioriteren."> -<!ENTITY wizard.title "Probleemrapportage"> -<!ENTITY issues.ownfilters.disable.label "Filter uitschakelen"> -<!ENTITY commentPage.description "In het onderstaande tekstveld kunt u een opmerking toevoegen om ons te helpen het probleem te begrijpen. Deze stap is optioneel maar wordt aanbevolen als het probleem niet evident is. U kunt de rapportgegevens ook nakijken voordat u het rapport verstuurt."> -<!ENTITY comment.lengthWarning "De lengte van uw opmerking overschrijdt 1000 tekens. Alleen de eerste 1000 tekens worden verzonden."> -<!ENTITY typeSelector.falseNegative.description "Selecteer deze optie als een advertentie wordt weergegeven ondanks het feit dat Adblock Plus is ingeschakeld."> -<!ENTITY sendPage.waitMessage "Een ogenblik terwijl Adblock Plus uw rapport indient."> -<!ENTITY dataCollector.heading "Welkom bij de probleemrapportage"> -<!ENTITY screenshot.heading "Schermafbeelding toevoegen"> -<!ENTITY sendPage.heading "Rapport verzenden"> -<!ENTITY issues.subscriptionCount.description "Het lijkt er op dat u op te veel filterabonnementen geabonneerd bent. Dit is niet aanbevolen, want het verhoogt de kans op problemen. Wij kunnen ook geen probleemmeldingen accepteren, omdat het niet duidelijk is van welk filterabonnement de auteur actie dient te ondernemen. Verwijder alstublieft alle filterabonnementen op de hoogst nodige na en controleer of het probleem dan nog steeds optreedt."> -<!ENTITY screenshot.mark.label "Het problee&m markeren"> -<!ENTITY privacyPolicy.label "Privacybeleid"> -<!ENTITY issues.description "Adblock plus heeft problemen met uw configuratie gedetecteerd die mogelijk verantwoordelijk zijn voor dit probleem of het onderzoeken van het rapport bemoeilijken."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sidebar.dtd deleted file mode 100644 index d715dff..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Randen laten knipperen"> -<!ENTITY address.label "Adres"> -<!ENTITY context.open.label "Openen in een nieuw tabblad"> -<!ENTITY type.label "Type"> -<!ENTITY tooltip.filterSource.label "Filterbron:"> -<!ENTITY noitems.label "Geen blokkeerbare onderdelen"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Grootte:"> -<!ENTITY reattach.label "Vastkoppelen"> -<!ENTITY search.label "&Zoeken:"> -<!ENTITY docDomain.thirdParty "(derden)"> -<!ENTITY filterSource.label "Filterbron"> -<!ENTITY tooltip.docDomain.label "Documentbron:"> -<!ENTITY context.copy.label "Adres kopiĂ«ren"> -<!ENTITY tooltip.type.label "Type:"> -<!ENTITY context.disablefilter.label "Filter ?1? uitschakelen"> -<!ENTITY context.copyFilter.label "Filter kopiĂ«ren"> -<!ENTITY context.block.label "Dit onderdeel blokkeren"> -<!ENTITY context.enablefilter.label "Filter ?1? inschakelen"> -<!ENTITY detach.label "Loskoppelen"> -<!ENTITY whitelisted.label "Toegestane pagina"> -<!ENTITY context.disablefilteronsite.label "Filter uitschakelen op ?1?"> -<!ENTITY detached.title "Adblock Plus: Blokkeerbare onderdelen (losgekoppeld)"> -<!ENTITY docDomain.firstParty "(rechtstreeks)"> -<!ENTITY tooltip.type.whitelisted "(toegestaan)"> -<!ENTITY tooltip.filter.label "Toegepast filter:"> -<!ENTITY tooltip.filter.disabled "(uitgeschakeld)"> -<!ENTITY context.editfilter.label "Toegepast filter bewerken"> -<!ENTITY tooltip.type.blocked "(geblokkeerd)"> -<!ENTITY size.label "Grootte"> -<!ENTITY context.whitelist.label "Uitzonderingsregel voor dit onderdeel toevoegen"> -<!ENTITY context.selectAll.label "Alles selecteren"> -<!ENTITY state.label "Status"> -<!ENTITY docDomain.label "Documentbron"> -<!ENTITY tooltip.address.label "Adres:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/subscriptionSelection.dtd deleted file mode 100644 index cfc0f76..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/nl/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Filterabonnement “?1?” oo&k toevoegen"> -<!ENTITY list.download.failed "Adblock Plus kan de lijst met abonnementen niet ophalen."> -<!ENTITY list.download.retry "Opnieuw proberen"> -<!ENTITY title.label "A&bonnementstitel:"> -<!ENTITY list.download.website "Website bekijken"> -<!ENTITY supplementMessage "Dit filterabonnement is bedoeld om samen gebruikt te worden met het filterabonnement “?1?”, dat u nog niet gebruikt."> -<!ENTITY viewList.label "Filters bekijken"> -<!ENTITY visitHomepage.label "Startpagina bezoeken"> -<!ENTITY addSubscription.label "Abonneren"> -<!ENTITY dialog.title "Adblock Plus filterabonnement toevoegen"> -<!ENTITY location.label "Fi&lterlijstlocatie:"> -<!ENTITY fromWeb.description "Bevestig a.u.b. dat u dit filterabonnement wilt toevoegen. U kunt de abonnementstitel of -locatie wijzigen voor toevoegen."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/composer.dtd deleted file mode 100644 index 37e1edc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na &koĹ„cu adresu"> -<!ENTITY domainRestriction.label "Ogranicz do dom&eny:"> -<!ENTITY collapse.default.no.label "UĹĽyj domyĹ›lnej (nie)"> -<!ENTITY firstParty.label "Tylko pie&rwszy czĹ‚on"> -<!ENTITY preferences.label "WyĹ›wietl istniejÄ…ce &filtry…"> -<!ENTITY pattern.label "Poszukaj wzorca"> -<!ENTITY thirdParty.label "Tylko trze&ci czĹ‚on"> -<!ENTITY filter.label "&Nowy filtr:"> -<!ENTITY collapse.label "&ZwiĹ„ zablokowane:"> -<!ENTITY match.warning "Podany wzorzec nie pasuje do ĹĽadnego blokowanego/dozwolonego adresu i nie bÄ™dzie miaĹ‚ zastosowania."> -<!ENTITY anchor.start.label "na &poczÄ…tku adresu"> -<!ENTITY matchCase.label "&UwzglÄ™dniaj wielkość liter"> -<!ENTITY custom.pattern.label "WĹ‚a&sny:"> -<!ENTITY unselectAllTypes.label "Odznacz wszystko"> -<!ENTITY type.whitelist.label "ReguĹ‚a &wyjÄ…tku"> -<!ENTITY regexp.warning "Podany wzorzec bÄ™dzie interpretowany jako wyraĹĽenie regularne, ktĂłre nie moĹĽe być skutecznie przetwarzane przez Adblock Plusa i moĹĽe powodować spowolnienie dziaĹ‚ania przeglÄ…darki. JeĹ›li nie zamierzasz uĹĽywać wyraĹĽenia regularnego, dodaj gwiazdkÄ™ (*) na koĹ„cu wzorca."> -<!ENTITY dialog.title "Dodawanie reguĹ‚y filtra"> -<!ENTITY basic.label "WyglÄ…d podstawowy"> -<!ENTITY type.filter.label "Filtr &blokujÄ…cy"> -<!ENTITY types.label "Zastosuj do typĂłw:"> -<!ENTITY shortpattern.warning "Podany wzorzec jest zbyt krĂłtki, by go zoptymalizować i moĹĽe spowolnić dziaĹ‚anie przeglÄ…darki. Zaleca siÄ™ dla tego filtra wybrać dĹ‚uĹĽszy ciÄ…g znakĂłw, by umoĹĽliwić Adblock Plusowi bardziej efektywne zastosowanie tego filtra."> -<!ENTITY collapse.yes.label "Tak"> -<!ENTITY anchors.label "Akceptuj tylko wzorzec:"> -<!ENTITY collapse.default.yes.label "UĹĽyj domyĹ›lnej (tak)"> -<!ENTITY domainRestriction.help "UĹĽyj tej opcji do okreĹ›lania jednej lub kilku domen, oddzielajÄ…c ich nazwy znakiem (|). Filtr bÄ™dzie stosowany jedynie dla wybranych domen. Znak tyldy (~) umieszczony przed nazwÄ… domeny wskazuje, ĹĽe filtr nie zostanie zastosowany w tej domenie."> -<!ENTITY accept.label "Dodaj filtr"> -<!ENTITY options.label "Opcje"> -<!ENTITY disabled.warning "Adblock Plus jest aktualnie wyłączony. MoĹĽesz nadal dodawać filtry, ale nie bÄ™dÄ… one dziaĹ‚aĹ‚y do czasu [link]włączenia Adblock Plusa[/link]."> -<!ENTITY anchor.start.flexible.label "na p&oczÄ…tku nazwy domeny"> -<!ENTITY collapse.no.label "Nie"> -<!ENTITY selectAllTypes.label "Zaznacz wszystko"> -<!ENTITY advanced.label "WyglÄ…d zaawansowany"> -<!ENTITY pattern.explanation "Wzorzec moĹĽe być częściÄ… adresu – gwiazdka (*) dziaĹ‚a jako wieloznacznik. Filtr bÄ™dzie stosowany tylko w adresach pasujÄ…cych do tego wzorca."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/filters.dtd deleted file mode 100644 index 3d08e0f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Wszystkie wĹ‚asne filtry zostanÄ… zastÄ…pione zawartoĹ›ciÄ… wybranego pliku. Czy chcesz kontynuować?"> -<!ENTITY slow.column "&Wolne filtry"> -<!ENTITY enabled.column "A&ktywny"> -<!ENTITY subscription.lastDownload.checksumMismatch "Nie powiodĹ‚o siÄ™ – niepoprawna suma kontrolna"> -<!ENTITY noFiltersInGroup.text "Wybrana grupa jest pusta"> -<!ENTITY subscription.actions.label "CzynnoĹ›ci"> -<!ENTITY filter.selectAll.label "Zaznacz wszystko"> -<!ENTITY backupButton.label "&Tworzenie i odtwarzanie kopii"> -<!ENTITY restore.minVersion.warning "OstrzeĹĽenie! Plik zostaĹ‚ utworzony za pomocÄ… najnowszej wersji Adblock Plusa. Przed odtworzeniem zawartoĹ›ci tego pliku, naleĹĽy zainstalować najnowszÄ… wersjÄ™ Adblock Plusa."> -<!ENTITY restore.error "Nie moĹĽna przetworzyć danych filtra. MoĹĽe to nie jest plik kopii zapasowej Adblock Plusa?"> -<!ENTITY sort.ascending.label "Kierunek sortow&ania A > Z"> -<!ENTITY sort.label "&Sortuj wg"> -<!ENTITY subscription.source.label "Zawartość zestawu"> -<!ENTITY hitcount.column "&UĹĽycie"> -<!ENTITY noFilters.text "Nie masz jeszcze ĹĽadnych wĹ‚asnych filtrĂłw."> -<!ENTITY backup.custom.title "Tylko wĹ‚asne filtry"> -<!ENTITY subscription.external.label "Zaktualizowany przez inne rozszerzenie"> -<!ENTITY subscription.delete.label "UsuĹ„"> -<!ENTITY noGroupSelected.text "Aby filtry mogĹ‚y być wyĹ›wietlane, naleĹĽy najpierw wybrać grupÄ™."> -<!ENTITY filter.cut.label "Wytnij"> -<!ENTITY restore.default.label "OdtwĂłrz kopiÄ™ z dnia ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Pobieranie…"> -<!ENTITY subscriptions.tab.label "Zestawy filtrĂłw"> -<!ENTITY sort.descending.label "Kierunek sortowania &Z > A"> -<!ENTITY filters.remove.warning "Czy na pewno chcesz usunąć wszystkie wybrane filtry?"> -<!ENTITY filter.delete.label "UsuĹ„"> -<!ENTITY addSubscriptionAdd.label "Dodaj"> -<!ENTITY viewMenu.label "Widok"> -<!ENTITY subscription.lastDownload.unknown "nieznane"> -<!ENTITY addSubscriptionCancel.label "Anuluj"> -<!ENTITY subscription.enabled.label "Aktywny"> -<!ENTITY noSubscriptions.text "Jeszcze nie dodano ĹĽadnego zestawu filtrĂłw. Adblock Plus nie moĹĽe nic blokować bez filtrĂłw. NaciĹ›nij przycisk „Dodaj zestaw filtrĂłw…”, by dodać jakiĹ› filtr."> -<!ENTITY subscription.update.label "Aktualizuj filtry"> -<!ENTITY dialog.title "Add Adblock Plus – ustawienia filtrĂłw"> -<!ENTITY addFilter.label "Dodaj fi&ltr"> -<!ENTITY subscription.minVersion.warning "Ten zestaw filtrĂłw dziaĹ‚a z najnowszÄ… wersjÄ… Adblock Plusa. Zaktualizuj Adblock Plusa."> -<!ENTITY subscription.lastDownload.invalidURL "Nie powiodĹ‚o siÄ™ – nieprawidĹ‚owy adres"> -<!ENTITY backup.error "W trakcie zapisu filtrĂłw wystÄ…piĹ‚ błąd. SprawdĹş, czy czasami plik nie ma zabezpieczenia przed zapisem lub nie jest uĹĽywany przez innÄ… aplikacjÄ™."> -<!ENTITY filter.moveUp.label "PrzenieĹ› w gĂłrÄ™"> -<!ENTITY addGroup.label "Dodaj &grupÄ™ filtrĂłw"> -<!ENTITY filter.edit.label "Edytuj"> -<!ENTITY subscription.showHideFilters.label "WyĹ›wietl/ukryj filtry"> -<!ENTITY acceptableAds2.label "Zezwalaj na nie natrÄ™tne rekla&my"> -<!ENTITY addSubscriptionOther.label "Wybierz inny zestaw"> -<!ENTITY close.label "Zamknij"> -<!ENTITY sort.none.label "Ni&eposortowane"> -<!ENTITY filter.actions.label "CzynnoĹ›ci filtrĂłw"> -<!ENTITY filter.copy.label "Kopiuj"> -<!ENTITY filter.moveDown.label "PrzenieĹ› w dół"> -<!ENTITY filter.resetHitCounts.label "Resetuj statystyki uĹĽycia"> -<!ENTITY readMore.label "Dowiedz siÄ™ wiÄ™cej"> -<!ENTITY subscription.moveUp.label "PrzenieĹ› w gĂłrÄ™"> -<!ENTITY addSubscription.label "&Dodaj zestaw filtrĂłw"> -<!ENTITY subscription.homepage.label "Strona domowa"> -<!ENTITY backup.complete.title "Wszystkie filtry i zestawy"> -<!ENTITY restore.own.label "OdtwĂłrz wĹ‚asnÄ… kopiÄ™"> -<!ENTITY restore.complete.warning "Wszystkie ustawienia filtrĂłw zostanÄ… zastÄ…pione zawartoĹ›ciÄ… wybranego pliku. Czy chcesz kontynuować?"> -<!ENTITY filters.tab.label "WĹ‚asne filtry"> -<!ENTITY backup.label "UtwĂłrz nowÄ… kopiÄ™"> -<!ENTITY find.label "Z&najdĹş"> -<!ENTITY subscription.moveDown.label "PrzenieĹ› w dół"> -<!ENTITY subscription.lastDownload.connectionError "Nie powiodĹ‚o siÄ™ – błąd pobierania"> -<!ENTITY subscription.lastDownload.success "ZakoĹ„czono pomyĹ›lnie"> -<!ENTITY subscription.lastDownload.invalidData "Nie powiodĹ‚o siÄ™ – nieprawidĹ‚owy zestaw filtrĂłw"> -<!ENTITY filter.paste.label "Wklej"> -<!ENTITY subscription.disabledFilters.enable "Włącz wyłączone filtry"> -<!ENTITY lasthit.column "&Ostatnie uĹĽycie"> -<!ENTITY subscription.editTitle.label "Edytuj nazwÄ™ zestawu"> -<!ENTITY subscription.disabledFilters.warning "NiektĂłre filtry w tym zestawie sÄ… wyłączone."> -<!ENTITY filter.column "&ReguĹ‚a filtru"> -<!ENTITY subscription.lastDownload.label "Ostatnie pobieranie:"> -<!ENTITY viewList.label "Zobacz listÄ™"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/firstRun.properties deleted file mode 100644 index dee4d0f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=PrzeglÄ…daj, zachowujÄ…c prywatność poprzez wyłączenie Ĺ›ledzenia, ukrywajÄ…c swoje Ĺ›lady przed firmami reklamowymi, ktĂłre chciaĹ‚yby Ĺ›ledzić kaĹĽdy twĂłj ruch. -firstRun_toggle_off=WYĹ. -firstRun_feature_tracking=Wyłączenie Ĺ›ledzenia -firstRun_feature_malware=Blokowanie zĹ‚oĹ›liwego oprogramowania -firstRun_title=Adblock Plus zostaĹ‚ zainstalowany -firstRun_toggle_on=WĹ. -firstRun_acceptableAdsExplanation=ChcielibyĹ›my zachÄ™cić witryny do uĹĽywania prostych, dyskretnych reklam. Dlatego mamy zdefiniowane<a> Ĺ›cisĹ‚e wytyczne </ a>okreĹ›lajÄ…ce akceptowalne reklamy wyĹ›wietlane na podstawie tych ustawieĹ„. JeĹ›li chcesz blokować kaĹĽdÄ… reklamÄ™, moĹĽesz tÄ™ funkcjÄ™ <a> wyłączyć </ a> w ciÄ…gu kilku sekund. -firstRun_contributor_credits=PodziÄ™kowania dla współtwĂłrcĂłw -firstRun_dataCorruptionWarning=Czy ta strona ma być wyĹ›wietlana? <a>Kliknij tutaj!</a> -firstRun_acceptableAdsHeadline=IrytujÄ…ce reklamy bÄ™dÄ… teraz blokowane -firstRun_share=Powiedz znajomym -firstRun_share_headline=<a>Pomóż nam</a> uczynić internet lepszym miejscem -firstRun_feature_social_description=Automatycznie pozbÄ…dĹş siÄ™ przyciskĂłw dodawanych przez media spoĹ‚ecznoĹ›ciowe, takich jak facebookowy „LubiÄ™ to!”, ktĂłre Ĺ›ledzÄ… twoje zachowanie. -firstRun_filterlistsReinitializedWarning=WyglÄ…da na to, ĹĽe w wyniku błędu wszystkie filtry zostaĹ‚y usuniÄ™te i nie udaĹ‚o siÄ™ ich przywrĂłcić z kopii zapasowej, dlatego twoje filtry i ustawienia akceptowalnych reklam zostaĹ‚y zresetowane. SprawdĹş swoje listy filtrĂłw i ustawienia akceptowalnych reklam w <a>opcjach Adblock Plusa</a>. -firstRun_feature_malware_description=Spraw, by twoje przeglÄ…danie byĹ‚o bardziej bezpieczne, blokujÄ…c znane domeny ze zĹ‚oĹ›liwym oprogramowaniem. -firstRun_features=Adblock Plus umoĹĽliwia wiÄ™cej niĹĽ blokowanie reklam -firstRun_donate=Wspomóż nas -firstRun_donate_label=Wesprzyj nasz projekt -firstRun_feature_social=Usuwanie przyciskĂłw serwisĂłw spoĹ‚ecznoĹ›ciowych -firstRun_legacySafariWarning=UĹĽywasz starej, nie obsĹ‚ugiwanej juĹĽ przez Adblock Plusa wersji Safari. MoĹĽe to powodować nieprawidĹ‚owe dziaĹ‚anie lub zakłócać przeglÄ…danie niektĂłrych witryn. Zalecamy uaktualnienie Safari w systemie OS X Mountain Lion do wersji 6.1.1 lub nowszej, lub do wersji 7.0.1 lub nowszej w systemie OS X 10.9 Maverick. MoĹĽesz takĹĽe uĹĽyć najnowszych wersji przeglÄ…darek Firefox, Chrome lub Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/global.properties deleted file mode 100644 index 36c805e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Nieblokowalne elementy na aktywnej stronie -action3_tooltip=Kliknij l.p.m., aby włączyć/wyłączyć Adblock Plus -notification_antiadblock_title=Ukrywanie ukierunkowanych informacji -type_label_script=skrypt -filter_elemhide_nocriteria=Nie okreĹ›lono kryteriĂłw rozpoznania elementu do ukrycia -blockingGroup_title=ReguĹ‚y blokowania reklam -whitelisted_tooltip=Adblock Plus jest aktywny, ale wyłączony na oglÄ…danej stronie. -type_label_stylesheet=arkusz stylĂłw -blocked_count_tooltip=?1? z ?2? -type_label_font=czcionka -type_label_popup=wyskakujÄ…ce okno -filter_regexp_tooltip=Ten filtr jest wyraĹĽeniem regularnym albo jest za krĂłtki, aby go zoptymalizować. Zbyt duĹĽo filtrĂłw tego rodzaju moĹĽe powodować spowolnienie przeglÄ…dania internetu. -action0_tooltip=Kliknij l.p.m., aby otworzyć menu kontekstowe, Ĺ›.p.m., aby włączyć/wyłączyć -whitelisted_page=Adblock Plus zostaĹ‚ wyłączony dla tej strony -remove_group_warning=Czy na pewno chcesz usunąć tÄ™ grupÄ™? -action1_tooltip=Kliknij l.p.m., aby otworzyć/zamknąć listÄ™ blokowalnych elementĂłw, Ĺ›.p.m., aby włączyć/wyłączyć -type_label_xmlhttprequest=ĹĽÄ…danie XML -active_tooltip=Adblock Plus jest aktywny. Subskrybowane zestawy: ?1? i wĹ‚asne filtry: ?2?. -type_label_document=dokument -type_label_object_subrequest=subĹĽÄ…danie obiektu -whitelistGroup_title=ReguĹ‚y wyjÄ…tkĂłw -disabled_tooltip=Adblock Plus jest wyłączony -filter_elemhide_duplicate_id=MoĹĽe być okreĹ›lony tylko jeden ID elementu do ukrycia -type_label_object=obiekt -action2_tooltip=Kliknij l.p.m., aby otworzyć opcje, Ĺ›.p.m., aby włączyć/wyłączyć -type_label_subdocument=ramka -clearStats_warning=Spowoduje to zresetowanie wszystkich statystyk uĹĽycia filtra i wyłączenie zliczania kolejnych uĹĽyć. Czy chcesz kontynuować? -notification_antiadblock_message=Ta witryna wyĹ›wietla uĹĽytkownikom Adblock Plusa ukierunkowane dla nich informacje. Czy chcesz, by Adblock Plus ukrywaĹ‚ tego typu informacje? -blocked_count_addendum=(dozwolone:?1?, ukryte:?2?) -subscription_invalid_location=Lokalizacja zestawu filtrĂłw ma niewĹ‚aĹ›ciwÄ… nazwÄ™ pliku, albo adres URL -type_label_image=obrazek -remove_subscription_warning=Czy chcesz usunąć ten zestaw? -type_label_other=inne -mobile_menu_enable=ABP:Włącz -type_label_media=audio/wideo -mobile_menu_disable_site=ABP:Wyłącz na ?1? -elemhideGroup_title=ReguĹ‚y ukrywania elementĂłw -mobile_menu_enable_site=ABP:Włącz na ?1? -type_label_elemhide=ukryty -newGroup_title=Nowa grupa filtrĂłw -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/overlay.dtd deleted file mode 100644 index 115752e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Tak"> -<!ENTITY notification.button.no "&Nie"> -<!ENTITY sync.label "&Synchronizuj ustawienia Adblock Plusa"> -<!ENTITY whitelist.site.label "Wyłącz blokowanie na ?1?"> -<!ENTITY filters.label "&Ustawienia filtra"> -<!ENTITY disable.label "Wyłącz wszÄ™dzie"> -<!ENTITY objecttab.title "Zablokuj"> -<!ENTITY objecttab.tooltip "Kliknij tutaj, aby zablokować ten obiekt"> -<!ENTITY menuitem.label "&Adblock Plus - ustawienia"> -<!ENTITY objecttabs.label "WyĹ›wietlaj przycis&ki blokowania na elementach Flasha i Javy"> -<!ENTITY sendReport.label "&ZgĹ‚oĹ› problem na tej stronie"> -<!ENTITY whitelist.page.label "Wyłącz blokowanie tylko na tej stronie"> -<!ENTITY context.image.label "Zablokuj obrazek"> -<!ENTITY counthits.label "Zli&czaj uĹĽycie filtra"> -<!ENTITY opensidebar.label "OtwĂłrz listÄ™ &blokowalnych elementĂłw"> -<!ENTITY notification.button.close "&Zamknij"> -<!ENTITY contribute.label "Wspomóż Adblock Plusa"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Zablokuj ramkÄ™"> -<!ENTITY blocked.tooltip "Zablokowane elementy na tej stronie:"> -<!ENTITY hideplaceholders.label "Ukrywaj za&mienniki blokowanych elementĂłw"> -<!ENTITY showinstatusbar.label "&WyĹ›wietlaj ikonÄ™ Adblock Plusa na pasku stanu"> -<!ENTITY sidebar.title "Blokowalne elementy na aktywnej stronie"> -<!ENTITY options.label "&Opcje"> -<!ENTITY context.object.label "Zablokuj obiekt"> -<!ENTITY context.removeWhitelist.label "Włącz ponownie na tej stronie"> -<!ENTITY filters.tooltip "Najczęściej stosowane filtry:"> -<!ENTITY closesidebar.label "Zamknij listÄ™ blokowal&nych elementĂłw"> -<!ENTITY showintoolbar.label "WyĹ›wietlaj ikonÄ™ Adblock Plusa na pasku na&rzÄ™dzi"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Zablokuj wideo/audio"> -<!ENTITY subscription.update.label "Aktualizuj filtry"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sendReport.dtd deleted file mode 100644 index 7ab04d9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Cofnij"> -<!ENTITY issues.disabledgroups.description "NastÄ™pujÄ…ce zestawy filtrĂłw/grupy filtrĂłw sÄ… wyłączone, ale mogÄ… oddziaĹ‚ywać na tÄ™ stronÄ™:"> -<!ENTITY showData.label "WyĹ›wietl dane zgĹ‚oszenia"> -<!ENTITY typeSelector.falsePositive.label "&Adblock Plus zbyt duĹĽo blokuje"> -<!ENTITY issues.change.description "Twoja konfiguracja zostaĹ‚a zmieniona. By wykonać test zmian, odĹ›wieĹĽ stronÄ™ i wyĹ›lij zgĹ‚oszenie, jeĹ›li dokonane zmiany nie rozwiÄ…zaĹ‚y problemu."> -<!ENTITY email.label "Em&ail:"> -<!ENTITY issues.openPreferences.label "OtwĂłrz ustawienia filtra"> -<!ENTITY sendPage.confirmation "ZgĹ‚oszenie zostaĹ‚o zapisane. MoĹĽesz zobaczyć je pod nastÄ™pujÄ…cym adresem:"> -<!ENTITY copyLink.label "&Kopiuj odnoĹ›nik zgĹ‚oszenia"> -<!ENTITY issues.nofilters.description "Na aktualnej stronie Adblock Plus nic nie blokuje. Obserwowany problem najprawdopodobniej nie jest zwiÄ…zany z Adblock Plusem."> -<!ENTITY sendPage.knownIssue "Prawdopodobnie zgĹ‚aszany problem jest juĹĽ znany. WiÄ™cej informacji:"> -<!ENTITY typeSelector.other.description "Wybierz tÄ™ opcjÄ™, jeĹ›li podejrzewasz, ĹĽe problem zwiÄ…zany jest z samym Adblock Plusem, a nie z filtrami."> -<!ENTITY issues.disabledgroups.enable.label "Włącz zestawy filtrĂłw/grupy filtrĂłw"> -<!ENTITY typeWarning.override.label "Rozu&miem i mimo wszystko chcÄ™ wysĹ‚ać zgĹ‚oszenie"> -<!ENTITY issues.disabled.enable.label "Włącz Adblock Plusa"> -<!ENTITY update.fixed.description "Aktualizacja zestawu filtrĂłw prawdopodobnie rozwiÄ…zaĹ‚a zgĹ‚aszany problem. OdĹ›wieĹĽ stronÄ™ i sprĂłbuj ponownie, naciĹ›nij przycisk ZgĹ‚oĹ›, jeĹ›li problem nadal wystÄ™puje."> -<!ENTITY anonymous.label "&WyĹ›lij anonimowo"> -<!ENTITY reloadButton.label "&OdĹ›wieĹĽ stronÄ™"> -<!ENTITY recentReports.clear.label "&UsuĹ„ wszystkie zgĹ‚oszenia"> -<!ENTITY typeSelector.description "Tutaj moĹĽesz wykonać czynnoĹ›ci niezbÄ™dne do wysĹ‚ania zgĹ‚oszenia problemu zwiÄ…zanego z Adblock Plusem. Najpierw wybierz typ problemu, jaki wystÄ™puje na tej stronie:"> -<!ENTITY screenshot.remove.label "&Ukryj poufne dane"> -<!ENTITY issues.ownfilters.description "Część filtrĂłw stosowanych na tej stronie jest zdefiniowanych przez ciebie. Wyłącz filtry, ktĂłre mogĹ‚y spowodować problem:"> -<!ENTITY update.inProgress.description "Aby upewnić siÄ™, ĹĽe problem zostaĹ‚ juĹĽ rozwiÄ…zany, Adblock Plus musi zaktualizować twĂłj zestaw filtrĂłw. ProszÄ™ czekać…"> -<!ENTITY sendPage.retry.label "WyĹ›lij ponownie"> -<!ENTITY data.label "Dan&e zgĹ‚oszenia"> -<!ENTITY recentReports.label "Twoje ostatnio wysĹ‚ane zgĹ‚oszenia"> -<!ENTITY typeWarning.description "Chcesz zgĹ‚osić ogĂłlny problem dotyczÄ…cy Adblock Plusa, a nie problem z filtrami. Tego rodzaju problemy najlepiej jest zgĹ‚aszać na [link]forum Adblock Plusa[/link]. Reportera błędĂłw powinno siÄ™ uĹĽywać do uzupeĹ‚nienia dyskusji na forum, poniewaĹĽ nikt nie zauwaĹĽy zgĹ‚oszenia, chyba ĹĽe dołączysz do niego odnoĹ›nik. Automatycznie generowany odnoĹ›nik zostanie dołączony po wysĹ‚aniu zgĹ‚oszenia."> -<!ENTITY issues.disabled.description "Adblock Plus jest wyłączony. Obecnie nic nie bÄ™dzie blokowaĹ‚."> -<!ENTITY attachExtensions.label "Dołącz do zgĹ‚oszenia listÄ™ aktywnych &rozszerzeĹ„, gdy przyczynÄ… problemu jest konflikt z innym rozszerzeniem."> -<!ENTITY issues.nosubscriptions.add.label "Subskrybuj filtry"> -<!ENTITY issues.disabledfilters.enable.label "Włącz filtr"> -<!ENTITY issues.override.label "&Konfiguracja jest prawidĹ‚owa – kontynuuj zgĹ‚oszenie"> -<!ENTITY issues.nosubscriptions.description "WyglÄ…da na to, ĹĽe nie subskrybujesz ĹĽadnej gotowej listy filtrĂłw, ktĂłre automatycznie usuwajÄ… niepoĹĽÄ…danÄ… zawartość ze stron internetowych."> -<!ENTITY typeSelector.falsePositive.description "Wybierz tÄ™ opcjÄ™, jeĹ›li strona nie zawiera waĹĽnych treĹ›ci, jest wyĹ›wietlana nieprawidĹ‚owo lub dziaĹ‚a niepoprawnie. MoĹĽesz okreĹ›lić, czy Adblock Plus jest przyczynÄ… problemu, wyłączajÄ…c go chwilowo."> -<!ENTITY typeSelector.other.label "&Inny problem"> -<!ENTITY emailComment.label "ZachÄ™camy do podania prawidĹ‚owego adresu e-mail, abyĹ›my mogli skontaktować siÄ™ z tobÄ… w przypadku, gdy moĹĽe to uĹ‚atwić rozwiÄ…zanie problemu. Pozwoli to rĂłwnieĹĽ rozpoznać naszych współpracownikĂłw i nadać ich raportom wyĹĽszy priorytet."> -<!ENTITY issues.whitelist.remove.label "Włącz ponownie Adblock Plusa na tej stronie"> -<!ENTITY outdatedSubscriptions.description "Od dwĂłch tygodni nastÄ™pujÄ…ce zestawy filtrĂłw nie byĹ‚y aktualizowane. Przed wysĹ‚aniem zgĹ‚oszenia zaktualizuj te zestawy. Być moĹĽe rozwiÄ…ĹĽe to twĂłj problem."> -<!ENTITY dataCollector.description "ProszÄ™ poczekać kilka chwil, aĹĽ Adblock Plus zbierze wymagane dane."> -<!ENTITY sendButton.label "&WyĹ›lij zgĹ‚oszenie"> -<!ENTITY comment.label "O&bjaĹ›nienia (opcjonalne):"> -<!ENTITY sendPage.errorMessage "PrĂłba wysĹ‚ania zgĹ‚oszenia nie powiodĹ‚a siÄ™ z powodu „?1?” SprawdĹş połączenie z Internetem i ponĂłw prĂłbÄ™. JeĹ›li problem bÄ™dzie nadal wystÄ™powaĹ‚, poproĹ› o pomoc na [link]forum Adblock Plusa[/link]."> -<!ENTITY showRecentReports.label "WyĹ›wietl ostatnio wysĹ‚ane zgĹ‚oszenia"> -<!ENTITY commentPage.heading "Dodaj objaĹ›nienie"> -<!ENTITY update.start.label "Aktualizuj teraz"> -<!ENTITY issues.disabledfilters.description "NastÄ™pujÄ…ce filtry sÄ… wyłączone, ale mogÄ… oddziaĹ‚ywać na tÄ™ stronÄ™:"> -<!ENTITY screenshot.description "Ta sama strona moĹĽe wyglÄ…dać różnie dla różnych osĂłb. Dołączenie zrzutu ekranu do zgĹ‚oszenia moĹĽe pomĂłc nam w zrozumieniu problemu. MoĹĽesz usunąć miejsca, gdzie wystÄ™pujÄ… informacje poufne, jak rĂłwnieĹĽ zaznaczyć obszary, gdzie problem jest zauwaĹĽalny. W tym celu naciĹ›nij odpowiedni przycisk i wybierz fragment obrazka za pomocÄ… myszy."> -<!ENTITY screenshot.attach.label "Dołącz obrazek &strony do zgĹ‚oszenia"> -<!ENTITY issues.whitelist.description "Adblock Plus jest obecne wyłączony na zgĹ‚aszanej stronie. By uĹ‚atwić zbadanie tego problemu, przed jego zgĹ‚oszeniem włącz ponownie Adblock Plusa i odĹ›wieĹĽ stronÄ™."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus nie blokuje &reklam"> -<!ENTITY typeSelector.heading "Wybierz typ problemu"> -<!ENTITY anonymity.warning "Nie bÄ™dziemy w stanie siÄ™ z tobÄ… skontaktować, co moĹĽe spowodować nadanie raportowi niĹĽszego priorytetu."> -<!ENTITY wizard.title "Reporter problemĂłw"> -<!ENTITY issues.ownfilters.disable.label "Wyłącz filtr"> -<!ENTITY commentPage.description "W poniĹĽszym polu tekstowym moĹĽesz podać objaĹ›nienie, ktĂłre pomoĹĽe nam zrozumieć problem. Jest to opcjonalne, ale zalecane, jeĹ›li problem nie jest oczywisty. MoĹĽesz rĂłwnieĹĽ sprawdzić dane zawarte w zgĹ‚oszeniu przed jego wysĹ‚aniem."> -<!ENTITY comment.lengthWarning "Treść objaĹ›nienia przekroczyĹ‚a dopuszczalny limit 1000 znakĂłw. Zostanie wysĹ‚ane tylko pierwsze 1000 znakĂłw."> -<!ENTITY typeSelector.falseNegative.description "Wybierz tÄ™ opcjÄ™, jeĹ›li reklama jest wyĹ›wietlana pomimo tego, ĹĽe Adblock Plus jest włączony."> -<!ENTITY sendPage.waitMessage "WysyĹ‚anie zgĹ‚oszenia… ProszÄ™ czekać."> -<!ENTITY dataCollector.heading "Witamy w reporterze problemĂłw"> -<!ENTITY screenshot.heading "Dołącz zrzut ekranu"> -<!ENTITY sendPage.heading "WyĹ›lij zgĹ‚oszenie"> -<!ENTITY issues.subscriptionCount.description "Wydaje siÄ™, ĹĽe wybrano subskrypcje zbyt duĹĽej liczby filtrĂłw. Nie jest to zalecane, poniewaĹĽ zwiÄ™kszy prawdopodobieĹ„stwo wystÄ…pienia problemĂłw. JeĹ›li w zwiÄ…zku z tym wystÄ…piÄ… problemy, nie bÄ™dziemy przyjmowali zgĹ‚oszeĹ„ tych problemĂłw, poniewaĹĽ nie bÄ™dziemy w stanie rozpoznać autora filtrĂłw i powiadomić go, by podjÄ…Ĺ‚ odpowiednie dziaĹ‚ania. UsuĹ„ wszystkie subskrybowane filtry i sprawdĹş czy problem nadal wystÄ™puje."> -<!ENTITY screenshot.mark.label "O&znacz problem"> -<!ENTITY privacyPolicy.label "Zasady ochrony prywatnoĹ›ci"> -<!ENTITY issues.description "Adblock Plus wykryĹ‚ problemy z twojÄ… konfiguracjÄ…, ktĂłre mogÄ… być odpowiedzialne za powstanie tego problemu lub mogÄ… utrudniać jego zbadanie."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sidebar.dtd deleted file mode 100644 index bbb27b6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "PokaĹĽ element w mrugajÄ…cej ramce"> -<!ENTITY address.label "Adres"> -<!ENTITY context.open.label "OtwĂłrz w nowej karcie"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "ĹąrĂłdĹ‚o filtra:"> -<!ENTITY noitems.label "Elementy nieblokowalne"> -<!ENTITY filter.label "Filtr"> -<!ENTITY tooltip.size.label "Rozmiar:"> -<!ENTITY reattach.label "Przyłącz"> -<!ENTITY search.label "&Szukaj:"> -<!ENTITY docDomain.thirdParty "(trzeci czĹ‚on adresu)"> -<!ENTITY filterSource.label "ĹąrĂłdĹ‚o filtra"> -<!ENTITY tooltip.docDomain.label "ĹąrĂłdĹ‚o dokumentu:"> -<!ENTITY context.copy.label "Kopiuj adres elementu"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Wyłącz filtr ?1?"> -<!ENTITY context.copyFilter.label "Kopiuj filtr"> -<!ENTITY context.block.label "Zablokuj ten element"> -<!ENTITY context.enablefilter.label "Włącz filtr ?1?"> -<!ENTITY detach.label "Odłącz"> -<!ENTITY whitelisted.label "Nieblokowana strona"> -<!ENTITY context.disablefilteronsite.label "Wyłącz ten filtr na ?1?"> -<!ENTITY detached.title "Adblock Plus – elementy blokowalne (odłączony)"> -<!ENTITY docDomain.firstParty "(pierwszy czĹ‚on adresu)"> -<!ENTITY tooltip.type.whitelisted "(nieblokowane)"> -<!ENTITY tooltip.filter.label "DziaĹ‚ajÄ…ce filtry:"> -<!ENTITY tooltip.filter.disabled "(wyłączony)"> -<!ENTITY context.editfilter.label "Edytuj filtr w rzeczywistoĹ›ci"> -<!ENTITY tooltip.type.blocked "(zablokowany)"> -<!ENTITY size.label "Rozmiar"> -<!ENTITY context.whitelist.label "Dodaj regułę wyjÄ…tku dla elementu"> -<!ENTITY context.selectAll.label "Zaznacz filtr"> -<!ENTITY state.label "Stan"> -<!ENTITY docDomain.label "ĹąrĂłdĹ‚o elementu"> -<!ENTITY tooltip.address.label "Adres:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/subscriptionSelection.dtd deleted file mode 100644 index 18c1b41..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pl/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Dodaj takĹĽe ze&staw „?1?”"> -<!ENTITY list.download.failed "Nie udaĹ‚o siÄ™ pobrać listy zestawĂłw."> -<!ENTITY list.download.retry "SprĂłbuj jeszcze raz"> -<!ENTITY title.label "&Nazwa zestawu:"> -<!ENTITY list.download.website "Zobacz witrynÄ™"> -<!ENTITY supplementMessage "Ten zestaw filtrĂłw musi być uĹĽywany z zestawem „?1?”, ktĂłry nie jest jeszcze subskrybowany."> -<!ENTITY viewList.label "Zobacz filtry"> -<!ENTITY visitHomepage.label "PrzejdĹş na stronÄ™ zestawu"> -<!ENTITY addSubscription.label "Subskrybuj zestaw"> -<!ENTITY dialog.title "Add Adblock Plus – zestawy filtrĂłw"> -<!ENTITY location.label "&Lokalizacja zestawu:"> -<!ENTITY fromWeb.description "PotwierdĹş zamiar dodania tego zestawu filtrĂłw. Przed dodaniem zestawu moĹĽesz zmienić jego nazwÄ™ lub lokalizacjÄ™."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/composer.dtd deleted file mode 100644 index d8b038d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "no f&inal do endereço"> -<!ENTITY domainRestriction.label "Restringir domĂnio:"> -<!ENTITY collapse.default.no.label "Usar padrĂŁo (nĂŁo)"> -<!ENTITY firstParty.label "So&mente mesmo domĂnio"> -<!ENTITY preferences.label "Mostrar filtros existentes..."> -<!ENTITY pattern.label "Procurar padrĂŁo"> -<!ENTITY thirdParty.label "So&mente de terceiros"> -<!ENTITY filter.label "Novo &filtro:"> -<!ENTITY collapse.label "Es&tado de crise bloqueado:"> -<!ENTITY match.warning "O padrĂŁo que vocĂŞ digitou nĂŁo corresponde mais ao endereço a ser bloqueado/liberado e nĂŁo terá efeito sobre ele."> -<!ENTITY anchor.start.label "no &começo do endereço"> -<!ENTITY matchCase.label "&Diferenciar maiĂşsculas/minĂşsculas"> -<!ENTITY custom.pattern.label "&Personalizado:"> -<!ENTITY unselectAllTypes.label "Desmarcar todos"> -<!ENTITY type.whitelist.label "E&xceção"> -<!ENTITY regexp.warning "O padrĂŁo que vocĂŞ digitou será interpretado como uma expressĂŁo regular que pode nĂŁo ser eficientemente processada pelo Adblock Plus e pode retardar sua experiĂŞncia de navegação. Se vocĂŞ nĂŁo pretende usar uma expressĂŁo regular, adicione um asterisco (*) atĂ© o fim do padrĂŁo."> -<!ENTITY dialog.title "Adicionar regra de filtro do Adblock Plus"> -<!ENTITY basic.label "Visualização básica"> -<!ENTITY type.filter.label "&Filtro de Bloqueio"> -<!ENTITY types.label "Aplicar a tipos:"> -<!ENTITY shortpattern.warning "O padrĂŁo digitado Ă© curto demais para ser otimizado e poderá causar lentidĂŁo na sua experiĂŞncia de navegação. É recomendável que vocĂŞ escolha uma "string"(sequĂŞncia de caracteres) mais longa para esse filtro para permitir que o Adblock Plus processe o filtro mais eficientemente."> -<!ENTITY collapse.yes.label "Sim"> -<!ENTITY anchors.label "Aceitar somente padrĂŁo:"> -<!ENTITY collapse.default.yes.label "Usar padrĂŁo (sim)"> -<!ENTITY domainRestriction.help "Use esta opção para especificar um ou mais domĂnios separados pelo sĂmbolo "|". O filtro será aplicado somente nos domĂnios selecionados. O sĂmbolo "~" antes de um domĂnio significa que o filtro nĂŁo deve ser aplicado naquele domĂnio."> -<!ENTITY accept.label "Adicionar filtro"> -<!ENTITY options.label "Opções"> -<!ENTITY disabled.warning "O Adblock Plus está desativado atualmente. VocĂŞ pode adicionar filtros mesmo assim, mas eles nĂŁo serĂŁo aplicados atĂ© que vocĂŞ [link]ative o Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "no &começo do nome do domĂnio"> -<!ENTITY collapse.no.label "NĂŁo"> -<!ENTITY selectAllTypes.label "Selecionar todos"> -<!ENTITY advanced.label "Visualização avançada"> -<!ENTITY pattern.explanation "O padrĂŁo pode ser qualquer parte do endereço; o sĂmbolo * funciona como curinga. O filtro somente será aplicado se o endereço corresponder ao padrĂŁo."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/filters.dtd deleted file mode 100644 index 9db67d1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Todos os seus filtros personalizados serĂŁo substituĂdos pelo conteĂşdo do arquivo selecionado. VocĂŞ deseja continuar?"> -<!ENTITY slow.column "Filtros l&entos"> -<!ENTITY enabled.column "&Ativado"> -<!ENTITY subscription.lastDownload.checksumMismatch "Falhou, checksum deu errado"> -<!ENTITY noFiltersInGroup.text "O grupo selecionado está vazio."> -<!ENTITY subscription.actions.label "Ações"> -<!ENTITY filter.selectAll.label "Selecionar tudo"> -<!ENTITY backupButton.label "&Backup e restauração"> -<!ENTITY restore.minVersion.warning "Atenção! O arquivo foi criado com um versĂŁo mais nova do Adblock Plus. Por favor, atualize o Adblock Plus para a versĂŁo mais recente antes de restaurar esse arquivo."> -<!ENTITY restore.error "NĂŁo foi possĂvel processar os dados desse arquivo. Talvez ele nĂŁo seja um arquivo de backup do Adblock Plus."> -<!ENTITY sort.ascending.label "Ordenar &A > Z"> -<!ENTITY sort.label "&Organizar por"> -<!ENTITY subscription.source.label "lista de filtros"> -<!ENTITY hitcount.column "A&certos"> -<!ENTITY noFilters.text "VocĂŞ ainda nĂŁo tem nenhum filtro personalizado."> -<!ENTITY backup.custom.title "Somente filtros personalizados"> -<!ENTITY subscription.external.label "Atualizado por outra extensĂŁo"> -<!ENTITY subscription.delete.label "Excluir"> -<!ENTITY noGroupSelected.text "VocĂŞ precisa selecionar um grupo de filtros antes para que os filtros sejam mostrados."> -<!ENTITY filter.cut.label "Recortar"> -<!ENTITY restore.default.label "Restaurar backup de ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Fazendo download..."> -<!ENTITY subscriptions.tab.label "Inscrições de filtros"> -<!ENTITY sort.descending.label "Ordenar &Z > A"> -<!ENTITY filters.remove.warning "VocĂŞ realmente deseja remover todos os filtros selecionados?"> -<!ENTITY filter.delete.label "Excluir"> -<!ENTITY addSubscriptionAdd.label "Adicionar"> -<!ENTITY viewMenu.label "Visualizar"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Ativado"> -<!ENTITY noSubscriptions.text "VocĂŞ ainda nĂŁo adicionou nenhuma inscrição de filtros. O Adblock Plus nĂŁo vai bloquear nada sem filtros. Por favor, clique em "Adicionar inscrição de filtros"."> -<!ENTITY subscription.update.label "Atualizar filtros"> -<!ENTITY dialog.title "Opções de Filtros do Adblock Plus"> -<!ENTITY addFilter.label "A&dicionar filtro"> -<!ENTITY subscription.minVersion.warning "Esta inscrição de filtros exige uma versĂŁo mais nova do Adblock Plus. Por favor, atualize o Adblock Plus para a versĂŁo mais recente."> -<!ENTITY subscription.lastDownload.invalidURL "Falhou, nĂŁo Ă© um endereço válido"> -<!ENTITY backup.error "Ocorreu um erro ao gravar os filtros no arquivo. Verifique se o arquivo está protegido contra gravação ou se está em uso por outro programa."> -<!ENTITY filter.moveUp.label "Para cima"> -<!ENTITY addGroup.label "Adicionar &grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Exibir/ocultar filtros"> -<!ENTITY acceptableAds2.label "Permitir algumas propagandas nĂŁo-&invasivas"> -<!ENTITY addSubscriptionOther.label "Adicionar outra inscrição"> -<!ENTITY close.label "Fechar"> -<!ENTITY sort.none.label "&NĂŁo Organizado"> -<!ENTITY filter.actions.label "Ações de filtros"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Mover para baixo"> -<!ENTITY filter.resetHitCounts.label "Limpar estatĂstica de acertos"> -<!ENTITY readMore.label "Saiba mais"> -<!ENTITY subscription.moveUp.label "Para cima"> -<!ENTITY addSubscription.label "Adicionar inscrição de &filtros"> -<!ENTITY subscription.homepage.label "página da inscrição"> -<!ENTITY backup.complete.title "Todos os filtros e inscrições"> -<!ENTITY restore.own.label "Restaurar backup prĂłprio"> -<!ENTITY restore.complete.warning "Todas as suas opções de filtros serĂŁo substituĂdas pelo conteĂşdo do arquivo selecionado. VocĂŞ deseja continuar?"> -<!ENTITY filters.tab.label "Filtros personalizados"> -<!ENTITY backup.label "Criar novo backup"> -<!ENTITY find.label "&Localizar"> -<!ENTITY subscription.moveDown.label "Para baixo"> -<!ENTITY subscription.lastDownload.connectionError "Falhou, falha no download"> -<!ENTITY subscription.lastDownload.success "ĂŠxito"> -<!ENTITY subscription.lastDownload.invalidData "Falhou, nĂŁo Ă© uma lista de filtros válida"> -<!ENTITY filter.paste.label "Colar"> -<!ENTITY subscription.disabledFilters.enable "Ativar filtros desativados"> -<!ENTITY lasthit.column "Ăš&ltimo acerto"> -<!ENTITY subscription.editTitle.label "Editar tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "Alguns filtros nesta inscrição estĂŁo desativados."> -<!ENTITY filter.column "Regra de &Filtro"> -<!ENTITY subscription.lastDownload.label "Ăšltimo download:"> -<!ENTITY viewList.label "Ver lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/firstRun.properties deleted file mode 100644 index 19fb73f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navegar em modo privado desabilitando o acompanhamento - esconde seus rastros de empresas de anĂşncio que iria acompanhar cada movimento seu. -firstRun_toggle_off=DESLIGADO -firstRun_feature_tracking=Desativa o Rastreamento -firstRun_feature_malware=Bloqueio de Malware -firstRun_title=O Adblock Plus foi instalado -firstRun_toggle_on=LIGADO -firstRun_acceptableAdsExplanation=GostarĂamos de incentivar sites com publicidade discreta, Ă© simples de usar. É por isso que estabelecemos <a>diretrizes rĂgidas</a> para identificarmos anĂşncios aceitáveis, que sĂŁo mostrados em configurações padrĂŁo. Se vocĂŞ ainda deseja bloquear todos os anĂşncios vocĂŞ pode <a>desativar</a> isso em poucos segundos. -firstRun_contributor_credits=CrĂ©ditos dos contribuidores -firstRun_dataCorruptionWarning=Esta página continua aparecendo? <a>Clique aqui!</a> -firstRun_acceptableAdsHeadline=AnĂşncios chatos serĂŁo bloqueados -firstRun_share=Indique a seus amigos -firstRun_share_headline=<a>Ajude-nos</a> a tornar a web um lugar melhor -firstRun_feature_social_description=Automaticamente melhore sua experiĂŞncia de navegação livrando-se de botões de redes sociais, como o Like do Facebook, que aparecem em páginas da web e que controlam seu comportamento. -firstRun_filterlistsReinitializedWarning=Parece que algum um problema causou a remoção de todos os filtros e fomos incapazes de restaurá-los por backup. Portanto tivemos que resetar seus filtros e as configurações de anĂşncios toleráveis. Por favor verifique a lista de filtros a as configurações de anĂşncios aceitáveis em <a>Opções do Adblock Plus</a>. -firstRun_feature_malware_description=Tornar sua navegação mais segura atravĂ©s do bloqueio de sites conhecidos com malwares. -firstRun_features=O Adblock Plus pode fazer mais do que bloquear anĂşncios -firstRun_donate=Doar -firstRun_donate_label=Apoiar o projeto -firstRun_feature_social=Remove Botões de Redes Sociais -firstRun_legacySafariWarning=VocĂŞ está usando uma versĂŁo antiga do Safari nĂŁo suportada pelo Adblock Plus. Ele pode nĂŁo funcionar corretamente ou prejudicar a experiĂŞncia do usuário em alguns sites. Recomendamos fortemente atualizar para o Safari 6.1.1 ou superior (no OS X 10.8 Mountain Lion) ou Safari 7.0.1 ou superior (no OS X 10.9 Mavericks), ou usar a Ăşltima versĂŁo do Mozilla Firefox, Google Chrome ou Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/global.properties deleted file mode 100644 index 1a882de..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Nenhum item bloqueável na página atual -action3_tooltip=Clique para ativar/desativar o Adblock Plus. -notification_antiadblock_title=Ocultar mensagens direcionadas? -type_label_script=script -filter_elemhide_nocriteria=Nenhum critĂ©rio especificado para reconhecer o elemento a ser ocultado -blockingGroup_title=Regras de bloqueio de propaganda -whitelisted_tooltip=O Adblock Plus está ativo, mas desativado na página atual. -type_label_stylesheet=folha de estilos -blocked_count_tooltip=?1? de ?2? -type_label_font=fonte -type_label_popup=janela popup -filter_regexp_tooltip=Este filtro Ă© tambĂ©m uma expressĂŁo regular ou curta demais para ser otimizada. Muitos desses filtros podem causar lentidĂŁo na navegação. -action0_tooltip=Clique para mostrar o menu de contexto, e com o botĂŁo do meio para ativar/desativar. -whitelisted_page=O Adblock Plus foi desativado para a página atual -remove_group_warning=VocĂŞ realmente deseja remover este grupo? -action1_tooltip=Clique para abrir/fechar itens bloqueáveis, e com o botĂŁo do meio para ativar/desativar. -type_label_xmlhttprequest=requisição XML -active_tooltip=O Adblock Plus está ativado, com ?1? inscrições de filtros e ?2? filtros personalizados. -type_label_document=documento -type_label_object_subrequest=sub-requisição do objeto -whitelistGroup_title=Regras de exceção -disabled_tooltip=O Adblock Plus está desativado. -filter_elemhide_duplicate_id=Somente uma ID do elemento a ser ocultado pode ser especificada -type_label_object=objeto -action2_tooltip=Clique para abrir as preferĂŞncias, e com o botĂŁo do meio para ativar/desativar. -type_label_subdocument=frame -clearStats_warning=Isso vai reiniciar todas as estatĂsticas de acertos dos filtros e desativar o contador de acertos dos filtros. VocĂŞ deseja continuar? -notification_antiadblock_message=Este site Ă© conhecido por mostrar mensagens direcionadas a usuários do Adblock Plus. VocĂŞ quer que o Adblock Plus esconda mensagens direcionadas? -blocked_count_addendum=(e tambĂ©m liberados: ?1?, ocultos: ?2?) -subscription_invalid_location=O local da lista de filtros nĂŁo Ă© nem uma URL válida nem um nome válido de arquivo. -type_label_image=imagem -remove_subscription_warning=VocĂŞ realmente deseja remover esta inscrição? -type_label_other=outro -mobile_menu_enable=ABP: Ativado -type_label_media=áudio/vĂdeo -mobile_menu_disable_site=ABP: Desativado em ?1? -elemhideGroup_title=Regras de ocultamento de elementos -mobile_menu_enable_site=ABP: Ativado em ?1? -type_label_elemhide=oculto -newGroup_title=Novo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/overlay.dtd deleted file mode 100644 index 58def63..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Sim"> -<!ENTITY notification.button.no "&NĂŁo"> -<!ENTITY sync.label "S&incronizar configurações do Adblock Plus"> -<!ENTITY whitelist.site.label "Desativar em ?1?"> -<!ENTITY filters.label "Opções de &filtros"> -<!ENTITY disable.label "Desativar em todas as páginas"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "Clique aqui para bloquear este objeto com o Adblock Plus"> -<!ENTITY menuitem.label "PreferĂŞncias do Ad&block Plus"> -<!ENTITY objecttabs.label "Mostrar abas em Flash e &Java"> -<!ENTITY sendReport.label "&Reportar problema nesta página"> -<!ENTITY whitelist.page.label "Desativar somente nesta página"> -<!ENTITY context.image.label "Adblock Plus: Bloquear imagem"> -<!ENTITY counthits.label "Cont&ar acertos de filtros"> -<!ENTITY opensidebar.label "A&brir itens bloqueáveis"> -<!ENTITY notification.button.close "&Fechar"> -<!ENTITY contribute.label "Contribuir com o Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Bloquear quadro"> -<!ENTITY blocked.tooltip "Itens bloqueados nesta página:"> -<!ENTITY hideplaceholders.label "Ocultar &marcadores de elementos bloqueados"> -<!ENTITY showinstatusbar.label "&Mostrar na barra de status"> -<!ENTITY sidebar.title "Itens bloqueáveis na página atual"> -<!ENTITY options.label "&Opções"> -<!ENTITY context.object.label "Adblock Plus: Bloquear objeto"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Reativar nessa página"> -<!ENTITY filters.tooltip "Filtros mais ativos:"> -<!ENTITY closesidebar.label "Fechar itens &bloqueáveis"> -<!ENTITY showintoolbar.label "Mostrar na barra de &ferramentas"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Bloquear áudio/vĂdeo"> -<!ENTITY subscription.update.label "Atualizar filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sendReport.dtd deleted file mode 100644 index 4f2bfd5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Desfazer"> -<!ENTITY issues.disabledgroups.description "Os seguintes grupos e inscrições de filtros está desativados, mas eles podem estar afetando essa página:"> -<!ENTITY showData.label "Exibir os dados do relatĂłrio"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus está bloqueando de&mais"> -<!ENTITY issues.change.description "Sua configuração foi alterada. Por favor, atualize a página para testar as alterações e enviar um relatĂłrio caso o erro continue a ocorrer."> -<!ENTITY email.label "E&mail:"> -<!ENTITY issues.openPreferences.label "Abrir configuração de filtros"> -<!ENTITY sendPage.confirmation "Seu relatĂłrio foi salvo. VocĂŞ pode acessá-lo no seguinte endereço:"> -<!ENTITY copyLink.label "&Copiar endereço do relatĂłrio"> -<!ENTITY issues.nofilters.description "O Adblock Plus nĂŁo está bloqueando nada nessa página. É improvável que o erro observado esteja relacionado com o Adblock Plus."> -<!ENTITY sendPage.knownIssue "O problema que vocĂŞ informou provavelmente já Ă© conhecido. Mais informações:"> -<!ENTITY typeSelector.other.description "Escolha esta opção se vocĂŞ suspeita que há um erro no prĂłprio Adblock Plus e nĂŁo nos filtros."> -<!ENTITY issues.disabledgroups.enable.label "Ativar grupo ou inscrição de filtros"> -<!ENTITY typeWarning.override.label "&Eu entendo e quero enviar o relatĂłrio mesmo assim"> -<!ENTITY issues.disabled.enable.label "Ativar o Adblock Plus"> -<!ENTITY update.fixed.description "A atualização de suas inscrições de filtros provavelmente resolveu o problema que vocĂŞ estava reportando. Por favor, atualize a página e verifique. Se o problema persistir, clique novamente em "Reportar problema com esta página"."> -<!ENTITY anonymous.label "Envio &anĂ´nimo"> -<!ENTITY reloadButton.label "&Recarregar a página"> -<!ENTITY recentReports.clear.label "&Remover todos os relatĂłrios"> -<!ENTITY typeSelector.description "Este assistente conduzirá vocĂŞ pelos passos necessários para enviar um relatĂłrio de erro do Adblock Plus. Primeiro, selecione o tipo de erro que vocĂŞ está tendo nessa página:"> -<!ENTITY screenshot.remove.label "&Remove dados confidenciais"> -<!ENTITY issues.ownfilters.description "Alguns dos filtros aplicados nesta página foram definidos pelo usuário. Por favor, desative os filtros que podem ter causado o problema:"> -<!ENTITY update.inProgress.description "O Adblock Plus precisa atualizar suas inscrições de filtros para ter certeza que o problema nĂŁo foi resolvido ainda. Por favor, aguarde..."> -<!ENTITY sendPage.retry.label "Enviar novamente"> -<!ENTITY data.label "&Dados do relatĂłrio:"> -<!ENTITY recentReports.label "Seus relatĂłrios enviados recentemente"> -<!ENTITY typeWarning.description "VocĂŞ indicou que deseja comunicar um erro geral no Adblock Plus em vez de um problema com os filtros. Por favor, note que problemas desse tipo devem ser tratados no [link]fĂłrum do Adblock Plus[/link]. Envie um relatĂłrio apenas para complementar uma discussĂŁo existente no fĂłrum, pois ninguĂ©m vai notá-lo a menos que vocĂŞ informe o endereço do relatĂłrio. O endereço gerado automaticamente será apresentado apĂłs o envio do relatĂłrio."> -<!ENTITY issues.disabled.description "O Adblock Plus está desativado; ele nĂŁo vai bloquear nada no seu estado atual."> -<!ENTITY attachExtensions.label "Ane&xar ao relatĂłrio uma lista de extensões ativas caso haja um conflito entre elas"> -<!ENTITY issues.nosubscriptions.add.label "Adicionar inscrição de filtros"> -<!ENTITY issues.disabledfilters.enable.label "Ativar filtro"> -<!ENTITY issues.override.label "A &configuração está correta, continue com o relatĂłrio"> -<!ENTITY issues.nosubscriptions.description "Parece que vocĂŞ nĂŁo adicionou nenhuma das inscrições de filtros que removem automaticamente os conteĂşdos indesejados dos sites."> -<!ENTITY typeSelector.falsePositive.description "Escolha esta opção se a página carece de algum conteĂşdo importante, se aparece de forma incorreta ou se nĂŁo funciona corretamente. VocĂŞ pode verificar se o Adblock Plus Ă© a causa do problema desativando-o temporariamente."> -<!ENTITY typeSelector.other.label "Ou&tro problema"> -<!ENTITY emailComment.label "NĂłs encorajamos vocĂŞ a digitar um endereço de e-mail válido para que possamos entrar em contato se houverem quaisquer dĂşvidas sobre o seu relatĂłrio. A inserção de um e-mail válido tambĂ©m irá permitir-nos reconhecer suas contribuições e dar-lhes uma prioridade maior."> -<!ENTITY issues.whitelist.remove.label "Reativar o Adblock Plus nessa página"> -<!ENTITY outdatedSubscriptions.description "As seguintes inscrições de filtros nĂŁo foram atualizadas há pelo menos duas semanas. Por favor, atualize essas inscrições antes de enviar um relatĂłrio de erro, pois o problema pode já ter sido resolvido."> -<!ENTITY dataCollector.description "Por favor, aguarde um momento enquanto Adblock Plus coleta os dados necessários."> -<!ENTITY sendButton.label "E&nviar relatĂłrio"> -<!ENTITY comment.label "&Comentário (opcional):"> -<!ENTITY sendPage.errorMessage "Uma tentativa de enviar o relatĂłrio falhou com cĂłdigo de erro "?1?". Por favor, assegure que vocĂŞ está conectado Ă Internet e tente novamente. Se o problema persistir, por favor, solicite ajuda no [link]fĂłrum do Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Exibir relatĂłrios enviados recentemente"> -<!ENTITY commentPage.heading "Digitar comentário"> -<!ENTITY update.start.label "Atualizar agora"> -<!ENTITY issues.disabledfilters.description "Os seguintes filtros estĂŁo desativados, mas eles podem estar afetando essa página:"> -<!ENTITY screenshot.description "Uma mesma página pode parecer diferente para diferentes pessoas. Pode nos ajudar a compreender o problema, vocĂŞ pode anexar uma imagem ao seu relatĂłrio. VocĂŞ pode remover partes da imagem contendo informações confidenciais, bem como marcar áreas onde se encontra o problema. Para isso, clique no botĂŁo correspondente e selecione com o mouse uma área da imagem."> -<!ENTITY screenshot.attach.label "Ane&xar uma imagem da página ao relatĂłrio"> -<!ENTITY issues.whitelist.description "O Adblock Plus está desativado atualmente nessa página. Para ajudar na investigação do problema, por favor, reative o Adblock Plus e atualize a página antes de enviar o relatĂłrio."> -<!ENTITY typeSelector.falseNegative.label "O Adblock Plus &nĂŁo está bloqueando uma propaganda"> -<!ENTITY typeSelector.heading "Selecionar tipo de erro"> -<!ENTITY anonymity.warning "NĂłs nĂŁo vamos ser capazes de entrar em contato com vocĂŞ e, portanto, seus relatĂłrios terĂŁo baixa prioridade."> -<!ENTITY wizard.title "RelatĂłrio de erro"> -<!ENTITY issues.ownfilters.disable.label "Desativar filtro"> -<!ENTITY commentPage.description "O campo abaixo permite vocĂŞ digitar um comentário para nos ajudar a entender o problema. Este passo Ă© opcional mas Ă© recomendado se o problema nĂŁo for Ăłbvio. VocĂŞ tambĂ©m pode verificar os dados do relatĂłrio antes de enviar."> -<!ENTITY comment.lengthWarning "O tamanho do seu comentário excedeu 1000 caracteres. Apenas os primeiros 1000 caracteres serĂŁo enviadas."> -<!ENTITY typeSelector.falseNegative.description "Escolha esta opção se uma propaganda Ă© exibida mesmo com o Adblock Plus ativado."> -<!ENTITY sendPage.waitMessage "Por favor aguarde enquanto o Adblock Plus está enviando seu relatĂłrio."> -<!ENTITY dataCollector.heading "Bem-vindo ao relatĂłrio de erro"> -<!ENTITY screenshot.heading "Anexar imagem"> -<!ENTITY sendPage.heading "Enviar relatĂłrio"> -<!ENTITY issues.subscriptionCount.description "Parece que vocĂŞ adicionou inscrições de filtros em excesso. Essa configuração nĂŁo Ă© recomendada porque aumenta a possibilidade de ocorrĂŞncia de erros. NĂŁo podemos aceitar o seu relatĂłrio porque nĂŁo Ă© possĂvel determinar qual autor de inscrição de filtros deve tratar o problema. Por favor, remova todos as inscrições exceto as realmente necessárias e verifique se o problema ainda ocorre."> -<!ENTITY screenshot.mark.label "&Marcar o problema"> -<!ENTITY privacyPolicy.label "PolĂtica de privacidade"> -<!ENTITY issues.description "O Adblock Plus detectou problemas com a configuração atual que podem ser a causa do erro ou que podem dificultar a análise do relatĂłrio."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sidebar.dtd deleted file mode 100644 index dd8262b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Realçar bordas do item"> -<!ENTITY address.label "Endereço"> -<!ENTITY context.open.label "Abrir em nova aba"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Fonte do filtro:"> -<!ENTITY noitems.label "Nenhum item bloqueável"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamanho:"> -<!ENTITY reattach.label "Ancorar"> -<!ENTITY search.label "&Localizar:"> -<!ENTITY docDomain.thirdParty "(domĂnio diferente)"> -<!ENTITY filterSource.label "Fonte do filtro"> -<!ENTITY tooltip.docDomain.label "Origem do documento:"> -<!ENTITY context.copy.label "Copiar endereço do item"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Desativar filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar filtro"> -<!ENTITY context.block.label "Bloquear este item"> -<!ENTITY context.enablefilter.label "Reativar filtro ?1?"> -<!ENTITY detach.label "Destacar"> -<!ENTITY whitelisted.label "Página na lista branca"> -<!ENTITY context.disablefilteronsite.label "Desativar esse filtro em ?1?"> -<!ENTITY detached.title "Adblock Plus: Itens bloqueáveis (destacada)"> -<!ENTITY docDomain.firstParty "(mesmo domĂnio)"> -<!ENTITY tooltip.type.whitelisted "(na lista branca)"> -<!ENTITY tooltip.filter.label "Filtro em ação:"> -<!ENTITY tooltip.filter.disabled "(desativado)"> -<!ENTITY context.editfilter.label "Editar filtro em efeito"> -<!ENTITY tooltip.type.blocked "(bloqueado)"> -<!ENTITY size.label "Tamanho"> -<!ENTITY context.whitelist.label "Adicionar exceção para o item"> -<!ENTITY context.selectAll.label "Selecionar todos"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Origem do documento"> -<!ENTITY tooltip.address.label "Endereço:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/subscriptionSelection.dtd deleted file mode 100644 index 7982acb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-BR/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Adicionar tambĂ©m a inscrição de &filtros "?1?""> -<!ENTITY list.download.failed "O Adblock Plus nĂŁo conseguiu obter a lista de inscrições."> -<!ENTITY list.download.retry "Tentar novamente"> -<!ENTITY title.label "&TĂtulo da inscrição:"> -<!ENTITY list.download.website "Abrir página da lista de inscrições"> -<!ENTITY supplementMessage "Essa inscrição de filtros foi feita para ser usada com inscrição de filtros "?1?", que vocĂŞ ainda nĂŁo está usando."> -<!ENTITY viewList.label "Visualizar filtros"> -<!ENTITY visitHomepage.label "Abrir página da inscrição"> -<!ENTITY addSubscription.label "Adicionar inscrição"> -<!ENTITY dialog.title "Adicionar inscrição de filtros do Adblock Plus"> -<!ENTITY location.label "&Endereço da lista de filtros:"> -<!ENTITY fromWeb.description "Por favor, confirme que vocĂŞ deseja adicionar essa inscrição de filtros. VocĂŞ pode alterar o tĂtulo ou o endereço da inscrição antes de adicionar."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/composer.dtd deleted file mode 100644 index c864644..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "&no final do endereço"> -<!ENTITY domainRestriction.label "Restringir ao domĂnio:"> -<!ENTITY collapse.default.no.label "Usar por defeito (nĂŁo)"> -<!ENTITY firstParty.label "Apenas primários"> -<!ENTITY preferences.label "Mostrar filtros existentes"> -<!ENTITY pattern.label "Procurar um padrĂŁo"> -<!ENTITY thirdParty.label "De &terceiros"> -<!ENTITY filter.label "Novo &filtro:"> -<!ENTITY collapse.label "Colapsar bloqueados:"> -<!ENTITY match.warning "O padrĂŁo que inseriu já nĂŁo corresponde ao endereço a ser bloqueado/desbloqueado e nĂŁo surtirá efeito."> -<!ENTITY anchor.start.label "no &inĂcio do endereço"> -<!ENTITY matchCase.label "MaiĂşsculas/ minĂşsculas"> -<!ENTITY custom.pattern.label "&Personalização:"> -<!ENTITY unselectAllTypes.label "Desseleccionar"> -<!ENTITY type.whitelist.label "Regra de e&xceção"> -<!ENTITY regexp.warning "O padrĂŁo inserido será interpretado como expressĂŁo regular e nĂŁo será processado corretamente pelo Adblock Plus e pode tornar o navegador mais lento. Se nĂŁo pretendia utilizar expressões regulares adicione um asterisco (*) no final do padrĂŁo."> -<!ENTITY dialog.title "Adicionar regra de filtro ao Adblock Plus"> -<!ENTITY basic.label "Vista básica"> -<!ENTITY type.filter.label "Filtro bloqueador"> -<!ENTITY types.label "Aplicar aos tipos:"> -<!ENTITY shortpattern.warning "O padrĂŁo inserido Ă© demasiado curto para ser otimizado e pode tornar o navegador mais lento. Deve utilizar um padrĂŁo mais extenso para este filtro de modo a que o Adblock Plus processe o filtro de forma correta."> -<!ENTITY collapse.yes.label "Sim"> -<!ENTITY anchors.label "Aceitar o padrĂŁo apenas:"> -<!ENTITY collapse.default.yes.label "Usar por defeito (sim)"> -<!ENTITY domainRestriction.help "Especificar um ou mais domĂnios separados pelo sĂmbolo "|", o filtro será aplicado apenas a estes domĂnios. O sĂmbolo "~" antes de um domĂnio implica que o filtro nĂŁo seja aplicado nesse domĂnio."> -<!ENTITY accept.label "Adicionar filtro"> -<!ENTITY options.label "Opções"> -<!ENTITY disabled.warning "O Adblock Plus está inativo. Pode adicionar filtros mas estes nĂŁo serĂŁo aplicados atĂ© que [link]ative o Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "no &inĂcio do nome de domĂnio"> -<!ENTITY collapse.no.label "NĂŁo"> -<!ENTITY selectAllTypes.label "Seleccionar todos"> -<!ENTITY advanced.label "Vista avançada"> -<!ENTITY pattern.explanation "O padrĂŁo pode ser qualquer parte do endereço; o asterisco (*) funciona como wildcard. O filtro sĂł será aplicado ao(s) endereço(s) que correspondam ao padrĂŁo indicado."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/filters.dtd deleted file mode 100644 index 3466a3d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Todas os seus filtros personalizados serĂŁo substituĂdos pelo conteĂşdo do ficheiro selecionado. Continuar?"> -<!ENTITY slow.column "Fi&ltros lentos"> -<!ENTITY enabled.column "A&tivo"> -<!ENTITY subscription.lastDownload.checksumMismatch "Erro de verificação (checksum)"> -<!ENTITY noFiltersInGroup.text "O grupo selecionado está vazio."> -<!ENTITY subscription.actions.label "Ações"> -<!ENTITY filter.selectAll.label "Selecionar tudo"> -<!ENTITY backupButton.label "&Backup e restauro"> -<!ENTITY restore.minVersion.warning "Atenção: o ficheiro foi criado com uma versĂŁo mais recente do Adblock Plus. Deve atualizar para a versĂŁo mais recente do Adblock Plus antes de restaurar este ficheiro."> -<!ENTITY restore.error "A informação do ficheiro nĂŁo foi processada com sucesso. Tem a certeza que Ă© um ficheiro válido?"> -<!ENTITY sort.ascending.label "Ordenar &A > Z"> -<!ENTITY sort.label "&Ordenar por"> -<!ENTITY subscription.source.label "Lista de filtros"> -<!ENTITY hitcount.column "&Contagem"> -<!ENTITY noFilters.text "Ainda nĂŁo tem qualquer filtro personalizado."> -<!ENTITY backup.custom.title "Apenas filtros personalizados"> -<!ENTITY subscription.external.label "Atualizado por outra extensĂŁo"> -<!ENTITY subscription.delete.label "Eliminar"> -<!ENTITY noGroupSelected.text "Tem que selecionar um grupo de filtros para que os mesmos sejam exibidos."> -<!ENTITY filter.cut.label "Cortar"> -<!ENTITY restore.default.label "Restaurar backup de ?1?"> -<!ENTITY subscription.lastDownload.inProgress "A transferir..."> -<!ENTITY subscriptions.tab.label "Subscrições de filtros"> -<!ENTITY sort.descending.label "Ordenar &Z > A"> -<!ENTITY filters.remove.warning "Quer mesmo remover todos os filtros selecionados?"> -<!ENTITY filter.delete.label "Eliminar"> -<!ENTITY addSubscriptionAdd.label "Adicionar"> -<!ENTITY viewMenu.label "Ver"> -<!ENTITY subscription.lastDownload.unknown "N/D"> -<!ENTITY addSubscriptionCancel.label "Cancelar"> -<!ENTITY subscription.enabled.label "Ativo"> -<!ENTITY noSubscriptions.text "Ainda nĂŁo adicionou uma subscrição de filtros. O Adblock Plus nĂŁo bloqueará -elementos sem filtros. Por favor utilize "Adicionar subscrição de filtros" para -um filtro."> -<!ENTITY subscription.update.label "Atualizar filtros"> -<!ENTITY dialog.title "PreferĂŞncias de filtros do Adblock Plus"> -<!ENTITY addFilter.label "A&dicionar filtro"> -<!ENTITY subscription.minVersion.warning "Esta subscrição de filtros requer uma versĂŁo mais recente do Adblock Plus. Deve atualizar para a versĂŁo mais recente do Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Endereço inválido"> -<!ENTITY backup.error "Ocorreu um erro ao guardar os filtros no ficheiro. Certifique-se que o ficheiro nĂŁo está protegido contra escrita ou a ser utilizado por outra aplicação."> -<!ENTITY filter.moveUp.label "Mover para cima"> -<!ENTITY addGroup.label "Adicionar &grupo de filtros"> -<!ENTITY filter.edit.label "Editar"> -<!ENTITY subscription.showHideFilters.label "Mostrar/ocultar filtros"> -<!ENTITY acceptableAds2.label "Perm&itir alguma publicidade nĂŁo intrusiva"> -<!ENTITY addSubscriptionOther.label "Adicionar outra subscrição"> -<!ENTITY close.label "Fechar"> -<!ENTITY sort.none.label "&NĂŁo ordenar"> -<!ENTITY filter.actions.label "Ações de filtros"> -<!ENTITY filter.copy.label "Copiar"> -<!ENTITY filter.moveDown.label "Mover para baixo"> -<!ENTITY filter.resetHitCounts.label "Reiniciar estatĂsticas"> -<!ENTITY readMore.label "Saber mais"> -<!ENTITY subscription.moveUp.label "Mover para cima"> -<!ENTITY addSubscription.label "Adicionar subscrição de &filtros"> -<!ENTITY subscription.homepage.label "Página web"> -<!ENTITY backup.complete.title "Todos os filtros e subscrições"> -<!ENTITY restore.own.label "Restaurar outro backup"> -<!ENTITY restore.complete.warning "Todas as preferĂŞncias de filtros serĂŁo substituĂdas pelo conteĂşdo do ficheiro selecionado. Continuar?"> -<!ENTITY filters.tab.label "Filtros personalizados"> -<!ENTITY backup.label "Criar novo backup"> -<!ENTITY find.label "&Localizar"> -<!ENTITY subscription.moveDown.label "Mover para baixo"> -<!ENTITY subscription.lastDownload.connectionError "TransferĂŞncia falhada"> -<!ENTITY subscription.lastDownload.success "Bem sucedido"> -<!ENTITY subscription.lastDownload.invalidData "NĂŁo Ă© uma lista válida"> -<!ENTITY filter.paste.label "Colar"> -<!ENTITY subscription.disabledFilters.enable "Ativar filtros inativos"> -<!ENTITY lasthit.column "Ăšltima &utilização"> -<!ENTITY subscription.editTitle.label "Editar tĂtulo"> -<!ENTITY subscription.disabledFilters.warning "Alguns filtros desta subscrição estĂŁo inativos."> -<!ENTITY filter.column "Regra de &filtro"> -<!ENTITY subscription.lastDownload.label "Ăšltima atualização:"> -<!ENTITY viewList.label "Ver lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/firstRun.properties deleted file mode 100644 index 29d3e16..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navegue na web desativando a monitorização. Oculte o seu registo de navegação das companhias que monitorizam os seus movimentos. -firstRun_toggle_off=Desligado -firstRun_feature_tracking=Desativar monitorização -firstRun_feature_malware=Bloqueio de malware -firstRun_title=O Adblock Plus foi instalado -firstRun_toggle_on=Ligado -firstRun_acceptableAdsExplanation=Gostamos de incentivar os sĂtios web de publicidade a utilizar anĂşncios nĂŁo intrusivos. Foi por essa razĂŁo que estabelecemos <a>polĂticas restritas</a> para identificar os anĂşncios aceitáveis e que sĂŁo mostrados em definições padrĂŁo. No entanto, se vocĂŞ quiser bloquear todos os anĂşncios, pode <a>desativar</a> essa opção facilmente. -firstRun_contributor_credits=CrĂ©ditos -firstRun_dataCorruptionWarning=Esta página continua a aparecer? <a>Clique aqui!</a> -firstRun_acceptableAdsHeadline=A publicidade será bloqueada -firstRun_share=Publicite o programa -firstRun_share_headline=<a>Ajude-nos</a> a melhorar a web -firstRun_feature_social_description=Remova os botões das redes sociais, tais como o Facebook Like, que aparecem nas páginas web e que monitorizam o seu comportamento. -firstRun_filterlistsReinitializedWarning=Parece que ocorreu um erro que causou a remoção de todos os filtros e nĂłs nĂŁo conseguimos restaurar a cĂłpia de segurança. Neste sentido, os filtros e as definições de anĂşncios aceitáveis foram reiniciados, Analise os seus filtros e os anĂşncios aceitáveis nas definições do <a>Adblock Plus.</a>. -firstRun_feature_malware_description=Melhore a navegação web bloqueando os domĂnios duvidosos. -firstRun_features=O Adblock Plus pode fazer mais do que bloquear publicidade -firstRun_donate=donativos -firstRun_donate_label=Ajude o nosso projeto -firstRun_feature_social=Remover botões sociais -firstRun_legacySafariWarning=VocĂŞ está a utilizar uma versĂŁo do Safari que nĂŁo Ă© suportada pelo Adblock Plus. A aplicação pode nĂŁo funcionar corretamente e prejudicar a navegação em alguns sĂtios web. Deve atualizar para o Safari 6.1.1 ou mais recente (disponĂvel para o Mac OS X 10.8 Mountain Lion), para a versĂŁo 7.0.1 ou mais recente (disponĂvel no OS x 10.9 Mavericks) ou utilizar uma versĂŁo recente dos navegadores Mozilla Firefox, Google Chrome ou Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/global.properties deleted file mode 100644 index a8730e8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=NĂŁo há itens bloqueáveis nesta página -action3_tooltip=Clique para ativar/desativar o Adblock Plus. -notification_antiadblock_title=Ocultar mensagens? -type_label_script=script -filter_elemhide_nocriteria=Nenhum critĂ©rio especificado para reconhecimento de elementos a bloquear -blockingGroup_title=Regras de bloqueio de anĂşncios -whitelisted_tooltip=O Adblock Plus está está inativo nesta página. -type_label_stylesheet=folha de estilo -blocked_count_tooltip=?1? de ?2? -type_label_font=tipo de letra -type_label_popup=janela pop-up -filter_regexp_tooltip=Este filtro Ă© uma expressĂŁo regular ou demasiado curto para ser otimizado. Demasiados filtros com estas caracterĂsticas podem tornar o navegador mais lento. -action0_tooltip=Clique para mostrar o menu de contexto, clique na roda do rato para ativar/desativar. -whitelisted_page=O Adblock Plus foi desativado nesta página -remove_group_warning=Quer mesmo remover este grupo? -action1_tooltip=Clique para abrir/fechar itens bloqueáveis, clique na roda do rato para ativar/desativar. -type_label_xmlhttprequest=pedido XML -active_tooltip=O Adblock Plus está ativo. ?1? subscrições de filtros e ?2? filtros personalizados. -type_label_document=documento -type_label_object_subrequest=subpedido de objeto -whitelistGroup_title=Regras de exceção -disabled_tooltip=O Adblock Plus está inativo. -filter_elemhide_duplicate_id=Apenas pode especificar uma ID do elemento a ocultar -type_label_object=objeto -action2_tooltip=Clique para abrir as preferĂŞncias, clique na roda do rato para ativar/desativar. -type_label_subdocument=moldura -clearStats_warning=Irá reiniciar as estatĂsticas de todos os filtros e desativar a contagem de bloqueios. Continuar? -notification_antiadblock_message=Este sĂtio Ă© conhecido por enviar mensagens dirigidas aos utilizadores do Adblock Plus. Gostaria de ocultar essas mensagens? -blocked_count_addendum=(na lista de permissões: ?1?, ocultos: ?2?) -subscription_invalid_location=A localização da lista de filtros nĂŁo Ă© um endereço ou nome de ficheiro válido. -type_label_image=imagem -remove_subscription_warning=Quer mesmo remover esta subscrição? -type_label_other=outro -mobile_menu_enable=ABP: Ativar -type_label_media=áudio/vĂdeo -mobile_menu_disable_site=ABP: Desativar em ?1? -elemhideGroup_title=Regras de bloqueio de elementos -mobile_menu_enable_site=ABP: Ativar em ?1? -type_label_elemhide=oculto -newGroup_title=Novo grupo de filtros -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/overlay.dtd deleted file mode 100644 index fbcb8c8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Sim"> -<!ENTITY notification.button.no "&NĂŁo"> -<!ENTITY sync.label "Sin&cronizar definições do Adblock Plus"> -<!ENTITY whitelist.site.label "Desativar em ?1?"> -<!ENTITY filters.label "Pre&ferĂŞncias de filtros"> -<!ENTITY disable.label "Desativar em todas as páginas"> -<!ENTITY objecttab.title "Bloquear"> -<!ENTITY objecttab.tooltip "Clique aqui para bloquear este objecto com o Adblock Plus"> -<!ENTITY menuitem.label "PreferĂŞncias do Ad&block Plus"> -<!ENTITY objecttabs.label "Mos&trar separadores em flash e java"> -<!ENTITY sendReport.label "&Reportar erros nesta página"> -<!ENTITY whitelist.page.label "Desativar apenas nesta página"> -<!ENTITY context.image.label "Bloquear imagem"> -<!ENTITY counthits.label "&Contar bloqueios do filtro"> -<!ENTITY opensidebar.label "A&brir itens bloqueáveis"> -<!ENTITY notification.button.close "Fe&char"> -<!ENTITY contribute.label "Colaborar no Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Bloquear moldura"> -<!ENTITY blocked.tooltip "Itens bloqueados nesta página:"> -<!ENTITY hideplaceholders.label "Ocultar &locais de elementos bloqueados"> -<!ENTITY showinstatusbar.label "Mo&strar na barra de estado"> -<!ENTITY sidebar.title "Elementos bloqueáveis nesta página"> -<!ENTITY options.label "&Opções"> -<!ENTITY context.object.label "Bloquear objeto"> -<!ENTITY context.removeWhitelist.label "Reativar nesta página"> -<!ENTITY filters.tooltip "Filtros mais ativos:"> -<!ENTITY closesidebar.label "Fechar itens &bloqueáveis"> -<!ENTITY showintoolbar.label "Mostrar na &barra de ferramentas"> -<!ENTITY status.tooltip "Estado:"> -<!ENTITY context.media.label "Bloquear áudio/vĂdeo"> -<!ENTITY subscription.update.label "Atualizar filtros"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sendReport.dtd deleted file mode 100644 index d4ac781..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "An&ular"> -<!ENTITY issues.disabledgroups.description "As seguintes subscrições/grupos de filtros estĂŁo inativos mas podem estar a interferir nesta página:"> -<!ENTITY showData.label "Mostrar dados do relatĂłrio"> -<!ENTITY typeSelector.falsePositive.label "O Adblock Plus está a bloquear de&masiado"> -<!ENTITY issues.change.description "A configuração foi alterada. Por favor recarregue a página para testar as alterações e submeter o relatĂłrio, caso o problema ainda persista."> -<!ENTITY email.label "E&mail:"> -<!ENTITY issues.openPreferences.label "Abrir preferĂŞncias de filtros"> -<!ENTITY sendPage.confirmation "O seu relatĂłrio foi guardado. Pode aceder ao relatĂłrio atravĂ©s do seguinte endereço:"> -<!ENTITY copyLink.label "&Copiar ligação do relatĂłrio"> -<!ENTITY issues.nofilters.description "O Adblock Plus nĂŁo está a bloquear elementos da página atual. Provavelmente o problema que está a ocorrer nĂŁo está relacionado com o Adblock Plus."> -<!ENTITY sendPage.knownIssue "O problema que reportou já Ă©, provavelmente, conhecido. Mais informação:"> -<!ENTITY typeSelector.other.description "Selecione esta opção se suspeita de um problema no Adblock Plus ao invĂ©s de um problema nos filtros."> -<!ENTITY issues.disabledgroups.enable.label "Ativar subscrição/grupo de filtros"> -<!ENTITY typeWarning.override.label "&Eu compreendo e pretendo enviar o relatĂłrio"> -<!ENTITY issues.disabled.enable.label "Ativar Adblock Plus"> -<!ENTITY update.fixed.description "A atualização dos seus filtros parece ter resolvido o problema que estava a reportar. Por favor recarregue a página e tente novamente. Envie um relatĂłrio se o problema persistir."> -<!ENTITY anonymous.label "SubmissĂŁo &anĂłnima"> -<!ENTITY reloadButton.label "&Recarregar página"> -<!ENTITY recentReports.clear.label "&Remover todos os relatĂłrios"> -<!ENTITY typeSelector.description "Esta janela guiá-lo-Ă atravĂ©s dos passos necessários para submeter o relatĂłrio de erros. Por favor selecione o tipo de erro que está a ocorrer nesta página:"> -<!ENTITY screenshot.remove.label "&Remover informação sensĂvel"> -<!ENTITY issues.ownfilters.description "Alguns dos filtros aplicados nesta página sĂŁo definidos pelo utilizador. Por favor desative os filtros que poderĂŁo estar a causar o problema:"> -<!ENTITY update.inProgress.description "O Adblock Plus necessita de atualizar as subscrições de filtros para se certificar que o problema nĂŁo foi resolvido. Por favor aguarde..."> -<!ENTITY sendPage.retry.label "Enviar novamente"> -<!ENTITY data.label "&Dados do relatĂłrio:"> -<!ENTITY recentReports.label "Os seus relatĂłrios recentes"> -<!ENTITY typeWarning.description "Indicou que pretende reportar um problema genĂ©rico do Adblock Plus em vez de um problema com os filtros. Esse tipo de problemas devem ser reportados no [link]fĂłrum Adblock Plus[/link]. SĂł deve utilizar esta funcionalidade para complementar uma discussĂŁo existente, uma vez que ninguĂ©m terá conhecimento do seu relatĂłrio se nĂŁo lhes disponibilizar a ligação. A ligação será disponibilizada depois de submeter o relatĂłrio."> -<!ENTITY issues.disabled.description "O Adblock Plus está inativo e nĂŁo bloqueará anĂşncios."> -<!ENTITY attachExtensions.label "Ane&xe a lista das extensões ativas ao relatĂłrio para verificarmos se alguma das extensões está a interferir com a aplicação"> -<!ENTITY issues.nosubscriptions.add.label "Adicionar subscrição de filtros"> -<!ENTITY issues.disabledfilters.enable.label "Ativar filtro"> -<!ENTITY issues.override.label "A &configuração está correta. Continuar com o relatĂłrio"> -<!ENTITY issues.nosubscriptions.description "Parece que vocĂŞ ainda nĂŁo subscreveu qualquer lista de filtros que bloqueiam os anĂşncios dos sĂtios web."> -<!ENTITY typeSelector.falsePositive.description "Selecione esta opção se a página nĂŁo mostra ou mostra incorretamente o conteĂşdo importante ou se nĂŁo funciona corretamente. Pode verificar se o Adblock Plus Ă© o causador do problema destivando-o temporariamente."> -<!ENTITY typeSelector.other.label "Ou&tro erro"> -<!ENTITY emailComment.label "Deve indicar um endereço eletrĂłnico válido para que o possamos contactar, caso precisemos de ajuda para resolver o erro reportado no relatĂłrio. O endereço permite-nos tambĂ©m verificar os contributos e criar uma hierarquia."> -<!ENTITY issues.whitelist.remove.label "Reativar Adblock Plus nesta página"> -<!ENTITY outdatedSubscriptions.description "As seguintes subscrições nĂŁo sĂŁo atualizadas há mais de duas semanas. Por favor atualize as subscrições antes de submeter o relatĂłrio. O problema pode já ter sido resolvido."> -<!ENTITY dataCollector.description "Por favor aguarde um momento enquanto o Adblock Plus reĂşne os dados necessários."> -<!ENTITY sendButton.label "E&nviar relatĂłrio"> -<!ENTITY comment.label "&Comentário (opcional):"> -<!ENTITY sendPage.errorMessage "O envio do relatĂłrio falhou com o cĂłdigo de erro "?1?". Por favor certifique-se que está ligado Ă Internet e tente novamente. Se o problema persistir, aceda ao [link]fĂłrum do Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Mostrar relatĂłrios recentes"> -<!ENTITY commentPage.heading "Adicionar comentário"> -<!ENTITY update.start.label "Atualizar agora"> -<!ENTITY issues.disabledfilters.description "Os filtros seguintes estĂŁo inativos mas podem estar a interferir nesta página:"> -<!ENTITY screenshot.description "A página pode ter um aspeto diferente, consoante a configuração definida. Pode ajudar-nos a perceber o problema se anexar uma imagem ao seu relatĂłrio. Pode remover secções que contenham informação sensĂvel e marcar áreas onde o problema seja evidente. Para efetuar estas alterações, clique no botĂŁo respetivo e selecione a secção da imagem com o rato."> -<!ENTITY screenshot.attach.label "Anexar uma imagem ao rela&tĂłrio"> -<!ENTITY issues.whitelist.description "O Adblock Plus está inativo na página sobre a qual está a reportar. Por favor reative-o e recarregue a página antes de submeter um relatĂłrio para ajudar a analisar este problema."> -<!ENTITY typeSelector.falseNegative.label "O Adblock Plus nĂŁo bloqueia um anĂş&ncio"> -<!ENTITY typeSelector.heading "Selecione o tipo de erro"> -<!ENTITY anonymity.warning "Desta forma, nĂŁo o poderemos contactar e o mais provável Ă© que lhe iremos dar uma prioridade baixa."> -<!ENTITY wizard.title "Comunicação de erros"> -<!ENTITY issues.ownfilters.disable.label "Desativar filtro"> -<!ENTITY commentPage.description "O campo de texto seguinte permite-lhe adicionar um comentário para nos ajudar a perceber o problema. Este passo Ă© opcional mas recomendável se o problema nĂŁo for Ăłbvio. Pode rever o conteĂşdo do relatĂłrio antes de o enviar."> -<!ENTITY comment.lengthWarning "O comentário excede os 1000 caracteres. Apenas os primeiros 1000 caracteres serĂŁo enviados."> -<!ENTITY typeSelector.falseNegative.description "Selecione esta opção se o anĂşncio Ă© exibido e o Adblock Plus está ativo."> -<!ENTITY sendPage.waitMessage "Por favor aguarde enquanto o Adblock Plus submete o seu relatĂłrio."> -<!ENTITY dataCollector.heading "Bem-vindo Ă comunicação de erros"> -<!ENTITY screenshot.heading "Anexar imagem"> -<!ENTITY sendPage.heading "Enviar relatĂłrio"> -<!ENTITY issues.subscriptionCount.description "Parece ter subscrito demasiados filtros. Esta opção nĂŁo Ă© aconselhável e pode gerar problemas. NĂŁo podemos aceitar o seu relatĂłrio porque nĂŁo Ă© claro que filtros devem ser tidos em consideração. Por favor remova todos os filtros exceto os realmente necessários e verifique se o problema ainda ocorre."> -<!ENTITY screenshot.mark.label "&Marcar o problema"> -<!ENTITY privacyPolicy.label "PolĂtica de privacidade"> -<!ENTITY issues.description "O Adblock Plus detetou problemas na sua configuração que poderĂŁo ser os responsáveis pelo problema ou que poderĂŁo dificultar a análise do relatĂłrio."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sidebar.dtd deleted file mode 100644 index cdb4186..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Contorno do item flash"> -<!ENTITY address.label "Endereço"> -<!ENTITY context.open.label "Abrir em novo separador"> -<!ENTITY type.label "Tipo"> -<!ENTITY tooltip.filterSource.label "Origem do filtro:"> -<!ENTITY noitems.label "Sem itens bloqueáveis"> -<!ENTITY filter.label "Filtro"> -<!ENTITY tooltip.size.label "Tamanho:"> -<!ENTITY reattach.label "Reancorar"> -<!ENTITY search.label "&Procurar:"> -<!ENTITY docDomain.thirdParty "(terceiros)"> -<!ENTITY filterSource.label "CĂłdigo fonte do filtro"> -<!ENTITY tooltip.docDomain.label "Origem do documento:"> -<!ENTITY context.copy.label "Copiar endereço do item"> -<!ENTITY tooltip.type.label "Tipo:"> -<!ENTITY context.disablefilter.label "Desativar filtro ?1?"> -<!ENTITY context.copyFilter.label "Copiar filtro"> -<!ENTITY context.block.label "Bloquear este item"> -<!ENTITY context.enablefilter.label "Reativar filtro ?1?"> -<!ENTITY detach.label "Desancorar"> -<!ENTITY whitelisted.label "Página permitida"> -<!ENTITY context.disablefilteronsite.label "Desativar este filtro em ?1?"> -<!ENTITY detached.title "Itens bloqueáveis (desancorada)"> -<!ENTITY docDomain.firstParty "(primeira parte)"> -<!ENTITY tooltip.type.whitelisted "(permitido)"> -<!ENTITY tooltip.filter.label "Filtro ativo:"> -<!ENTITY tooltip.filter.disabled "(inativo)"> -<!ENTITY context.editfilter.label "Editar filtro ativo"> -<!ENTITY tooltip.type.blocked "(bloqueado)"> -<!ENTITY size.label "Tamanho"> -<!ENTITY context.whitelist.label "Adicionar exceção para o item"> -<!ENTITY context.selectAll.label "Selecionar tudo"> -<!ENTITY state.label "Estado"> -<!ENTITY docDomain.label "Origem do documento"> -<!ENTITY tooltip.address.label "Endereço:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/subscriptionSelection.dtd deleted file mode 100644 index 77179e8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/pt-PT/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Adicionar &subscrição de filtros "?1?""> -<!ENTITY list.download.failed "O Adblock Plus nĂŁo conseguiu obter a lista de subscrições."> -<!ENTITY list.download.retry "Tentar novamente"> -<!ENTITY title.label "&TĂtulo da subscrição:"> -<!ENTITY list.download.website "Visitar sĂtio web"> -<!ENTITY supplementMessage "Esta subscrição deve ser utilizada em conjunto com a subscrição "?1?", que ainda nĂŁo está a ser utilizada."> -<!ENTITY viewList.label "Ver filtros"> -<!ENTITY visitHomepage.label "Visitar página"> -<!ENTITY addSubscription.label "Adicionar subscrição"> -<!ENTITY dialog.title "Adicionar subscrição de filtro"> -<!ENTITY location.label "&Localização de lista de filtros:"> -<!ENTITY fromWeb.description "Por favor confirme a adição dessta subscrição de filtros. Pode alterar o tĂtulo ou a localização da subscrição antes de a adicionar."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/composer.dtd deleted file mode 100644 index 2bc9f86..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "la s&fârĹźitul adresei"> -<!ENTITY domainRestriction.label "AplicÄ &doar domeniului"> -<!ENTITY collapse.default.no.label "FoloseĹźte opĹŁiunea implicitÄ (nu)"> -<!ENTITY firstParty.label "Doar la pagina &vizitatÄ"> -<!ENTITY preferences.label "&AratÄ filtrele existente..."> -<!ENTITY pattern.label "Model de cÄutare pentru potrivire adrese"> -<!ENTITY thirdParty.label "La &pagini partener (3rd party)"> -<!ENTITY filter.label "Fil&tru nou:"> -<!ENTITY collapse.label "ElibereazÄ &spaĹŁiul blocat:"> -<!ENTITY match.warning "Modelul introdus nu mai corespunde adresei care trebuie blocatÄ/deblocatÄ Ĺźi de aceea nu va avea nici un efect asupra paginii curente."> -<!ENTITY anchor.start.label "la Ă®&nceputul adresei"> -<!ENTITY matchCase.label "Potrivire &majusculÄ"> -<!ENTITY custom.pattern.label "model &individual:"> -<!ENTITY unselectAllTypes.label "Nici unul"> -<!ENTITY type.whitelist.label "RegulÄ e&xcepĹŁii"> -<!ENTITY regexp.warning "Modelul introdus va fi interpretatÄ ca o expresie regulatÄ, ceea ce poate cauza Ă®ncetinirea navigÄrii. DacÄ nu doriĹŁi sÄ folosiĹŁi expresii regulate, introduceĹŁi * la sfârĹźitul modelului."> -<!ENTITY dialog.title "AdÄugare regulÄ de filtrare Adblock Plus"> -<!ENTITY basic.label "Vizualizare simplÄ"> -<!ENTITY type.filter.label "Filtru de &blocare"> -<!ENTITY types.label "Valabil pentru:"> -<!ENTITY shortpattern.warning "Modelul introdus este prea scurt pentru a fi optimizat, ceea ce poate cauza Ă®ncetinirea navigÄrii. Este recomandabil sÄ introduceĹŁi modele mai mai lungi."> -<!ENTITY collapse.yes.label "Da"> -<!ENTITY anchors.label "FoloseĹźte modelul introdus doar:"> -<!ENTITY collapse.default.yes.label "FoloseĹźte opĹŁiunea implicitÄ (da)"> -<!ENTITY domainRestriction.help "SpecificaĹŁi unul sau mai multe domenii internet, separate de cÄtre simbolul |, pentru care filtrul este valid. Simbolul ~ Ă®naintea numelui domeniului va face ca regula sÄ NU se aplice pe domeniul specificat."> -<!ENTITY accept.label "AdaugÄ filtru"> -<!ENTITY options.label "OpĹŁiuni"> -<!ENTITY disabled.warning "Adblock Plus este inactiv. PuteĹŁi sÄ adÄugaĹŁi filtre, Ă®nsÄ ele vor fi utilizate doar dupÄ ce [link]activaĹŁi Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "la Ă®&nceputul numelui de domeniu"> -<!ENTITY collapse.no.label "Nu"> -<!ENTITY selectAllTypes.label "Toate tipurile"> -<!ENTITY advanced.label "Vizualizare avansatÄ"> -<!ENTITY pattern.explanation "Filtrul va fi aplicat doar adreselor care corespund modelului definit mai jos, Ă®n care simbolul * acĹŁioneazÄ ca joker."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/filters.dtd deleted file mode 100644 index a74e04b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Toate filtrele proprii vor fi Ă®nlocuite de cÄtre conĹŁinutul fiĹźierului ales. DoriĹŁi sÄ continuaĹŁi?"> -<!ENTITY slow.column "Fi&ltre lente"> -<!ENTITY enabled.column "Activat (&S)"> -<!ENTITY subscription.lastDownload.checksumMismatch "EĹźuat, suma de control nu se potriveĹźte."> -<!ENTITY noFiltersInGroup.text "Grupul selectat este gol."> -<!ENTITY subscription.actions.label "AcČ›iuni"> -<!ENTITY filter.selectAll.label "SelecteazÄ toate"> -<!ENTITY backupButton.label "&Salvare Č™i Restaurare"> -<!ENTITY restore.minVersion.warning "Avertisment: acest fiĹźier a fost creat de cÄtre o versiune mai nouÄ de Adblock Plus. Se recomandÄ utilizarea celei mai noi versiuni."> -<!ENTITY restore.error "Datele din fiĹźier nu pot fi folosite. VerificaĹŁi dacÄ fiĹźierul a fost Ă®ntr-adevÄr create de cÄtre Adblock Plus."> -<!ENTITY sort.ascending.label "CrescÄtor (&A>Z)"> -<!ENTITY sort.label "&Ordonare"> -<!ENTITY subscription.source.label "ListÄ de filtre"> -<!ENTITY hitcount.column "&Contor"> -<!ENTITY noFilters.text "Nu aveĹŁi nici un filtru propriu."> -<!ENTITY backup.custom.title "Doar filtre proprii"> -<!ENTITY subscription.external.label "Actualizat de altÄ extensie"> -<!ENTITY subscription.delete.label "Čterge"> -<!ENTITY noGroupSelected.text "Pentru a vizualiza filtre, trebuie sÄ alegeĹŁi mai Ă®ntâi un grup."> -<!ENTITY filter.cut.label "Taie"> -<!ENTITY restore.default.label "RestaureazÄ salvarea din ?1?"> -<!ENTITY subscription.lastDownload.inProgress "DescÄrcare..."> -<!ENTITY subscriptions.tab.label "Abonamente filtre"> -<!ENTITY sort.descending.label "DescrescÄtor (&Z>A)"> -<!ENTITY filters.remove.warning "SunteĹŁi sigur cÄ doriĹŁi sÄ ĹźtergeĹŁi filtrele selectate?"> -<!ENTITY filter.delete.label "Ĺžterge"> -<!ENTITY addSubscriptionAdd.label "AdaugÄ"> -<!ENTITY viewMenu.label "Vizualizare"> -<!ENTITY subscription.lastDownload.unknown "Necunoscut"> -<!ENTITY addSubscriptionCancel.label "AnuleazÄ"> -<!ENTITY subscription.enabled.label "Activat"> -<!ENTITY noSubscriptions.text "Nu aĹŁi adÄugat nici un abonament de filtre. Adblock Plus nu blocheazÄ nimic dacÄ nu are filtre. PuteĹŁi folosi butonul AdaugÄ abonament filtre pentru a vÄ abona la câteva liste de filtre."> -<!ENTITY subscription.update.label "ActualizeazÄ filtre"> -<!ENTITY dialog.title "PreferinČ›e filtre Adblock Plus"> -<!ENTITY addFilter.label "A&daugÄ filtru"> -<!ENTITY subscription.minVersion.warning "Acest abonament necesitÄ o versiune mai nouÄ de Adblock Plus. Se recomandÄ utilizarea celei mai noi versiuni."> -<!ENTITY subscription.lastDownload.invalidURL "EĹźuat, adresa nu este validÄ"> -<!ENTITY backup.error "O eroare a apÄrut la scrierea fiĹźierului. AsiguraĹŁi-vÄ cÄ fiĹźierul nu este protejat la scriere sau folosit de cÄtre altÄ aplicaĹŁie."> -<!ENTITY filter.moveUp.label "MutÄ sus"> -<!ENTITY addGroup.label "Adau&gÄ grup filtre"> -<!ENTITY filter.edit.label "EditeazÄ"> -<!ENTITY subscription.showHideFilters.label "AratÄ/ascunde filtre"> -<!ENTITY acceptableAds2.label "&Permite publicitatea discretÄ"> -<!ENTITY addSubscriptionOther.label "AdaugÄ alt abonament"> -<!ENTITY close.label "ĂŽnchide"> -<!ENTITY sort.none.label "&Neordonat"> -<!ENTITY filter.actions.label "AcČ›iuni filtre"> -<!ENTITY filter.copy.label "CopiazÄ"> -<!ENTITY filter.moveDown.label "MutÄ jos"> -<!ENTITY filter.resetHitCounts.label "IniĹŁializeazÄ statisticile filtrelor"> -<!ENTITY readMore.label "CiteČ™te mai mult"> -<!ENTITY subscription.moveUp.label "MutÄ sus"> -<!ENTITY addSubscription.label "AdaugÄ a&bonament filtru"> -<!ENTITY subscription.homepage.label "Pagina de start"> -<!ENTITY backup.complete.title "Toate filtrele Č™i abonamentele"> -<!ENTITY restore.own.label "RestaureazÄ propria salvare"> -<!ENTITY restore.complete.warning "Toate opĹŁiunile filtrelor vor fi Ă®nlocuite de cÄtre conĹŁinutul fiĹźierului ales. DoriĹŁi sÄ continuaĹŁi?"> -<!ENTITY filters.tab.label "Filtre proprii"> -<!ENTITY backup.label "CreazÄ salvare nouÄ"> -<!ENTITY find.label "&CautÄ"> -<!ENTITY subscription.moveDown.label "MutÄ jos"> -<!ENTITY subscription.lastDownload.connectionError "EĹźuat, descÄrcare nereuĹźitÄ"> -<!ENTITY subscription.lastDownload.success "Succes"> -<!ENTITY subscription.lastDownload.invalidData "EĹźuat, lista nu este validÄ"> -<!ENTITY filter.paste.label "LipeĹźte"> -<!ENTITY subscription.disabledFilters.enable "ActiveazÄ filtrele inactive"> -<!ENTITY lasthit.column "&Ultima aplicare"> -<!ENTITY subscription.editTitle.label "EditeazÄ titlu"> -<!ENTITY subscription.disabledFilters.warning "Unele filtre din acest abonament sunt dezactivate."> -<!ENTITY filter.column "&RegulÄ de filtrare"> -<!ENTITY subscription.lastDownload.label "Ultima descÄrcare:"> -<!ENTITY viewList.label "AfiĹźare listÄ"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/firstRun.properties deleted file mode 100644 index f097877..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Navigare fÄrÄ urme prin eliminarea indiciilor plantate de cÄtre companiile publicitare care urmÄresc Č™i Ă®nregistreazÄ comportamentul dumneavoastrÄ. -firstRun_toggle_off=OFF -firstRun_feature_tracking=Dezactivare urmÄrire -firstRun_feature_malware=Blocare software rÄu intenĹŁionat -firstRun_title=Adblock Plus a fost instalat -firstRun_toggle_on=ON -firstRun_acceptableAdsExplanation=Dorim sÄ Ă®ncurajÄm site-urile web Ă®n a utiliza publicitate simplÄ, discretÄ. De aceea ne-am stabilit <a>reguli de orientare stricte</a> pentru a identifica anunČ›urile acceptabile, care sunt permise de cÄtre setÄrile implicite. DacÄ totuČ™i doriČ›i sÄ bloca toatÄ publicitatea, puteČ›i <a>dezactiva</a> aceste permisiuni Ă®n câteva secunde. -firstRun_contributor_credits=Contributori -firstRun_dataCorruptionWarning=AceastÄ paginÄ continuÄ sÄ aparÄ Č™i dupÄ terminarea instalÄrii? <a>FaceČ›i clic aici!</a> -firstRun_acceptableAdsHeadline=Reclamele enervante vor fi blocate acum -firstRun_share=SpuneČ›i prietenilor dumneavoastrÄ -firstRun_share_headline=<a>AjutaČ›i-ne</a> Ă®n a Ă®mbunÄtÄČ›i web-ul -firstRun_feature_social_description=Eliminare automatÄ a butoanelor mass-media socialÄ, cum ar fi Facebook, care apar pe paginile de web pentru a urmÄri Č™i Ă®nregistra comportamentul dumneavoastrÄ. -firstRun_filterlistsReinitializedWarning=Se pare cÄ din cauza unor probleme toate filtrele au fost eliminate Ĺźi a fost imposibil sÄ le recuperÄm. Prin urmare, am resetat filtrele Ĺźi setÄrile pentru publicitate acceptabilÄ. VÄ rugÄm sÄ verificaĹŁi listele de filtre Ĺźi setÄrile pentru publicitate acceptabilÄ Ă®n <a>OpĹŁiuni pentru Adblock Plus</a>. -firstRun_feature_malware_description=Securizarea navigÄrii prin blocarea domeniilor rÄu-intenČ›ionate cunoscute. -firstRun_features=Adblock Plus poate face mai mult decât sÄ blocheze publicitatea -firstRun_donate=DonaĹŁii -firstRun_donate_label=AjutaČ›i proiectul -firstRun_feature_social=Ascundere butoane Social Media -firstRun_legacySafariWarning=FolosiČ›i o versiune veche de Safari care nu este suportatÄ de Adblock Plus. Aceasta putea funcČ›iona incorect sau ar putea afecta navigarea pe unele site-uri. VÄ recomandÄm insistent sÄ instalaČ›i cel puČ›in Safari 6.1.1 (pe sistemul de operare Mac OS X 10.8 Mountain Lion), sau Safari 7.0.1 (pe OS X 10.9 Mavericks), sau sÄ utilizaČ›i cea mai recentÄ versiune de Mozilla Firefox, Google Chrome, sau Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/global.properties deleted file mode 100644 index e8ed998..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=ĂŽn paginÄ nu se gÄseČ™te nici un element blocabil -action3_tooltip=Clic pentru a activa/dezactiva Adblock Plus. -notification_antiadblock_title=Ascunde mesajele direcČ›ionate? -type_label_script=script -filter_elemhide_nocriteria=Nu s-a specificat nici un criteriu pentru a identifica elementul pentru ascundere. -blockingGroup_title=Reguli de blocare -whitelisted_tooltip=Adblock Plus este activ, dar inactiv Ă®n pagina curentÄ. -type_label_stylesheet=foaie de stiluri -blocked_count_tooltip=?1? din ?2? -type_label_font=corp caracter -type_label_popup=fereastrÄ pop-up -filter_regexp_tooltip=Acest filtru este bazat pe expresii regulate sau este prea scurt pentru a fi optimizat. Prea multe astfel de filtre pot duce la Ă®ncetinirea navigÄrii. -action0_tooltip=Clic pentru a afiĹźa meniul contextual, clic-mijloc pentru a activa/dezactiva. -whitelisted_page=Adblock Plus este inactiv pentru pagina curentÄ -remove_group_warning=Sigur doriĹŁi sÄ Ă®nlÄturaĹŁi acest grup? -action1_tooltip=Clic pentru a deschide lista elementelor blocabile, clic-mijloc pentru a activa/dezactiva. -type_label_xmlhttprequest=cerere XML -active_tooltip=Adblock Plus este activ, sunt folosite ?1? abonamente Ĺźi ?2? filtre proprii. -type_label_document=document -type_label_object_subrequest=subcerere obiect -whitelistGroup_title=Reguli excepĹŁii -disabled_tooltip=Adblock Plus este inactiv. -filter_elemhide_duplicate_id=Se poate specifica doar un singur identificator de element pentru ascundere. -type_label_object=obiect -action2_tooltip=Clic pentru a modifica opĹŁiuni, clic-mijloc pentru a activa/dezactiva. -type_label_subdocument=cadru (frame) -clearStats_warning=Toate statisticile filtrelor vor fi iniĹŁializate Ĺźi Ă®nregistrarea lor va fi dezactivatÄ. SunteĹŁi sigur cÄ doriĹŁi sÄ continuaĹŁi? -notification_antiadblock_message=Acest site trimite mesaje direcČ›ionate utilizatorilor Adblock Plus. Vrei ca Adblock Plus sÄ ascundÄ aceste mesaje direcČ›ionate? -blocked_count_addendum=(permisiuni explicite: ?1?, elemente ascunse: ?2?) -subscription_invalid_location=LocaĹŁia pentru filtre nu este validÄ -type_label_image=imagine -remove_subscription_warning=Sigur doriĹŁi sÄ Ă®ndepÄrtaĹŁi aceastÄ subscriere? -type_label_other=alt element -mobile_menu_enable=ABP: ActiveazÄ -type_label_media=audio-video -mobile_menu_disable_site=ABP: DezactiveazÄ pe ?1? -elemhideGroup_title=Reguli de ascuns elemente -mobile_menu_enable_site=ABP: ActiveazÄ pe ?1? -type_label_elemhide=ascuns -newGroup_title=Grup de filtre nou -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/overlay.dtd deleted file mode 100644 index 4da883a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Da"> -<!ENTITY notification.button.no "&Nu"> -<!ENTITY sync.label "Si&ncronizeazÄ setÄrile Adblock Plus"> -<!ENTITY whitelist.site.label "DezactiveazÄ Adblock Plus pe ?1?"> -<!ENTITY filters.label "Pre&ferinČ›e filtre"> -<!ENTITY disable.label "DezactiveazÄ peste tot"> -<!ENTITY objecttab.title "BlocheazÄ"> -<!ENTITY objecttab.tooltip "Click aici pentru a bloca obiectul utilizând Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus"> -<!ENTITY objecttabs.label "AratÄ &panouri lângÄ Flash Ĺźi Java"> -<!ENTITY sendReport.label "Rapor&teazÄ probleme pe aceastÄ paginÄ"> -<!ENTITY whitelist.page.label "DezactiveazÄ Adblock Plus doar pe pagina curentÄ"> -<!ENTITY context.image.label "Adblock Plus: blocheazÄ imagine"> -<!ENTITY counthits.label "ĂŽnre&gistreazÄ statisticile filtrelor"> -<!ENTITY opensidebar.label "Deschide &lista elementelor blocabile"> -<!ENTITY notification.button.close "ĂŽn&chide"> -<!ENTITY contribute.label "Contribuie la Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: blocheazÄ cadru"> -<!ENTITY blocked.tooltip "Elemente blocate Ă®n paginÄ:"> -<!ENTITY hideplaceholders.label "Ascunde &indicatoarele elementelor blocate"> -<!ENTITY showinstatusbar.label "AratÄ Ă®n bara de &stare"> -<!ENTITY sidebar.title "Adblock Plus: elemente blocabile Ă®n paginÄ"> -<!ENTITY options.label "&OpĹŁiuni"> -<!ENTITY context.object.label "Adblock Plus: blocheazÄ obiect"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: reactiveazÄ Ă®n pagina curentÄ"> -<!ENTITY filters.tooltip "Cele mai active filtre:"> -<!ENTITY closesidebar.label "ĂŽnchide &lista elementelor blocabile"> -<!ENTITY showintoolbar.label "AratÄ Ă®n bara de &unelte"> -<!ENTITY status.tooltip "Stare:"> -<!ENTITY context.media.label "Adblock Plus: blocheazÄ audio/video"> -<!ENTITY subscription.update.label "ActualizeazÄ filtre"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sendReport.dtd deleted file mode 100644 index 2787f00..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "An&uleazÄ ultima operaČ›ie"> -<!ENTITY issues.disabledgroups.description "Grupurile de filtre sau abonamentele urmÄtoare sunt inactive, deČ™i ar putea sÄ aibÄ efect pe pagina curentÄ:"> -<!ENTITY showData.label "AfiĹźare raportare"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blocheazÄ prea &mult"> -<!ENTITY issues.change.description "ConfiguraČ›ia a fost schimbatÄ. ReĂ®ncÄrcaČ›i pagina pentru a verifica dacÄ problema persistÄ. ĂŽn acest caz, creaČ›i o raportare de problemÄ."> -<!ENTITY email.label "&Email:"> -<!ENTITY issues.openPreferences.label "Deschide preferinČ›e filtre"> -<!ENTITY sendPage.confirmation "Raportarea a fost salvatÄ Č™i poate fi accesatÄ la adresa urmÄtoare:"> -<!ENTITY copyLink.label "&CopiazÄ legÄtura raportÄrii"> -<!ENTITY issues.nofilters.description "Adblock Plus nu blocheazÄ nimic Ă®n pagina curentÄ. Problema pe care o aveČ›i nu are probabil nici o legÄturÄ cu Adblock Plus."> -<!ENTITY sendPage.knownIssue "Problema pe care o aveČ›i este probabil cunoscutÄ. Detalii:"> -<!ENTITY typeSelector.other.description "AlegeČ›i aceastÄ opČ›iune dacÄ aveČ›i impresia cÄ Adblock Plus are o problemÄ internÄ."> -<!ENTITY issues.disabledgroups.enable.label "ActiveazÄ grupul de filtre / abonamentul"> -<!ENTITY typeWarning.override.label "Trimite rap&ortarea Ă®n orice caz"> -<!ENTITY issues.disabled.enable.label "ActiveazÄ Adblock Plus"> -<!ENTITY update.fixed.description "Actualizarea abonamentelor de filtre va rezolva probabil problema pe care doriČ›i sÄ o raportaČ›i. ReĂ®ncÄrcaČ›i pagina Č™i utilizaČ›i butonul de raportare dacÄ problema persistÄ."> -<!ENTITY anonymous.label "Prezentare an&onima"> -<!ENTITY reloadButton.label "&ReĂ®ncÄrcare paginÄ"> -<!ENTITY recentReports.clear.label "Čter&ge toate rapoartele"> -<!ENTITY typeSelector.description "AceastÄ fereastrÄ vÄ ghideazÄ prin paČ™ii necesari raportÄrii unei probleme Adblock Plus. Pentru Ă®nceput, alegeČ›i tipul problemei Ă®ntâlnite pe pagina curentÄ:"> -<!ENTITY screenshot.remove.label "Masc&heazÄ datele personale"> -<!ENTITY issues.ownfilters.description "Câteva din filtrele aplicate pe aceastÄ paginÄ sunt definite de cÄtre utilizator. DezactivaČ›i filtrele urmÄtoare, care sunt probabil cauza problemei:"> -<!ENTITY update.inProgress.description "Adblock Plus trebui sÄ actualizeze abonamentele de filtre pentru a verifica dacÄ problema a fost rezolvatÄ Ă®ntre timp. AČ™teptaČ›i un moment."> -<!ENTITY sendPage.retry.label "Retrimite"> -<!ENTITY data.label "&Datele reportÄrii"> -<!ENTITY recentReports.label "Rapoartele trimise recent"> -<!ENTITY typeWarning.description "AĹŁi indicat cÄ problema este generalÄ Č™i nu are legÄturÄ cu filtrele. Cel mai bine ar fi sÄ raportaČ›i problema Ă®n [link]forumul Adblock Plus[/link]. Raportarea automatÄ trebuie folositÄ numai ca unealtÄ suplimentarÄ pentru o discuČ›ie pe forum deja existentÄ. Pentru aceasta, folosiČ›i legÄtura generatÄ la sfârČ™itul operaČ›iunii curente. DacÄ nu postaČ›i legÄtura pe forum, este posibil ca nimeni sÄ nu citeascÄ raportarea."> -<!ENTITY issues.disabled.description "Adblock Plus este inactiv Č™i nu va bloca nimic Ă®n starea curentÄ."> -<!ENTITY attachExtensions.label "AtaČ™ea&zÄ lista suplimentelor active pentru a verifica conflictele potenČ›iale"> -<!ENTITY issues.nosubscriptions.add.label "AdaugÄ abonament filtre"> -<!ENTITY issues.disabledfilters.enable.label "ActiveazÄ filtrele"> -<!ENTITY issues.override.label "ConfiguraČ›ia es&te corectÄ, continuÄ raportarea"> -<!ENTITY issues.nosubscriptions.description "Se pare cÄ nu sunteČ›i abonat la nici o listÄ de filtre predefinitÄ."> -<!ENTITY typeSelector.falsePositive.description "AlegeČ›i aceastÄ opČ›iune dacÄ pagina este afiČ™atÄ incorect sau nu funcČ›ioneazÄ cum trebuie atunci când Adblock Plus este activ. VerificaČ›i dacÄ Adblock Plus este sursa problemei prin dezactivarea temporarÄ a suplimentului."> -<!ENTITY typeSelector.other.label "Al&tÄ problemÄ"> -<!ENTITY emailComment.label "VÄ recomandÄm sÄ introduceČ›i o adresÄ validÄ de email pentru a vÄ putea contacta cu posibile Ă®ntrebÄri despre acest raport. De asemenea, acest lucru ne ajutÄ la recunoaČ™terea contribuČ›iilor dumneavoastrÄ Č™i la prioritizarea mai bunÄ a acestora."> -<!ENTITY issues.whitelist.remove.label "ReactiveazÄ Adblock Plus pe pagina curentÄ"> -<!ENTITY outdatedSubscriptions.description "Abonamentele de filtre de mai jos nu au fost actualizate Ă®n ultimele douÄ sÄptÄmâni. ActualizaČ›i-le Ă®nainte de a trimite raportul, este posibil ca problema sÄ fi fost deja rezolvatÄ."> -<!ENTITY dataCollector.description "AČ™teptaČ›i un moment pânÄ ce Adblock Plus adunÄ datele necesare."> -<!ENTITY sendButton.label "Tr&imite raportare"> -<!ENTITY comment.label "&Comentariu (opČ›ional):"> -<!ENTITY sendPage.errorMessage "Eroare la trimitere, cod "?1?". VerificaČ›i dacÄ sunteČ›i conectat la internet. DacÄ problema persistÄ, cereČ›i ajutor Ă®n [link]forumul Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "AratÄ rapoartele trimise recent"> -<!ENTITY commentPage.heading "Introducere comentariu"> -<!ENTITY update.start.label "ActualizeazÄ acum"> -<!ENTITY issues.disabledfilters.description "Filtrele urmÄtoare sunt inactive, deČ™i ar putea sÄ aibÄ efect pe pagina curentÄ:"> -<!ENTITY screenshot.description "AceeaČ™i paginÄ poate fi afiČ™atÄ diferit pe calculatoare diferite. S-ar putea sÄ ne fie de ajutor la Ă®nČ›elegerea problemei dacÄ ne trimiteČ›i un instantaneu al paginii curente. AveČ›i posibilitatea de a Ă®nlÄtura datele confidenČ›iale, precum Č™i de a marca zonele cu probleme, folosind butoanele corespunzÄtoare Č™i apoi selectând cu mausul."> -<!ENTITY screenshot.attach.label "AtaČ™eazÄ &instantaneu ecran"> -<!ENTITY issues.whitelist.description "Adblock Plus este inactiv pe pagina curentÄ. Pentru a ajuta la investigarea problemei, activaČ›i Adblock Plus Č™i reĂ®ncÄrcaČ›i pagina Ă®nainte de a trimite un raport."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus &nu blocheazÄ o reclamÄ"> -<!ENTITY typeSelector.heading "AlegeČ›i tipul problemei"> -<!ENTITY anonymity.warning "Nu vom fi capabili sa venim inapoi la tine si sa acordam probabil raportul inferior."> -<!ENTITY wizard.title "Raportare problemÄ"> -<!ENTITY issues.ownfilters.disable.label "DezactiveazÄ filtre"> -<!ENTITY commentPage.description "PuteČ›i introduce aici e explicaČ›ie detaliatÄ care ne poate ajuta sÄ Ă®nČ›elegem mai bine problema (opČ›ional, Ă®nsÄ recomandat)."> -<!ENTITY comment.lengthWarning "Comentariul are mai mult de 1000 de litere. Doar primele 1000 vor fi trimise."> -<!ENTITY typeSelector.falseNegative.description "AlegeČ›i aceastÄ opČ›iune Ă®n caz cÄ o reclamÄ este afiČ™atÄ Ă®n ciuda faptului cÄ Adblock Plus este activ."> -<!ENTITY sendPage.waitMessage "AČ™teptaČ›i pânÄ când Adblock Plus trimite datele."> -<!ENTITY dataCollector.heading "Bine aČ›i venit la programul de raportat probleme"> -<!ENTITY screenshot.heading "AtaČ™are instantaneu ecran"> -<!ENTITY sendPage.heading "Trimite raportarea"> -<!ENTITY issues.subscriptionCount.description "Se pare cÄ sunteČ›i abonat la prea multe abonamente de filtru, ceea ce nu este recomandat, deoarece va cauza probabil probleme Ă®n viitor. De asemenea, nu poate accepta raportul problemÄ, deoarece nu este clar care dintre autorii abonamentelor trebuie sÄ ia mÄsuri. VÄ rugÄm sÄ pÄstraČ›i doar abonamentele absolut necesare Č™i sÄ Ă®ncercaČ›i dacÄ problema persistÄ."> -<!ENTITY screenshot.mark.label "&Marcare problemÄ"> -<!ENTITY privacyPolicy.label "Politica de confidenČ›ialitate"> -<!ENTITY issues.description "Adblock Plus a detectat inconsistenČ›e Ă®n configuraČ›ie care pot fi cauza problemei, sau care pot Ă®ngreuna trimiterea raportului."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sidebar.dtd deleted file mode 100644 index f6400b4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "EvidenĹŁiazÄ marginile elementelor"> -<!ENTITY address.label "AdresÄ"> -<!ENTITY context.open.label "Deschide Ă®n filÄ nouÄ"> -<!ENTITY type.label "Tip"> -<!ENTITY tooltip.filterSource.label "SursÄ filtru:"> -<!ENTITY noitems.label "Nici un element blocabil"> -<!ENTITY filter.label "Filtru"> -<!ENTITY tooltip.size.label "MÄrime:"> -<!ENTITY reattach.label "Prinde la loc"> -<!ENTITY search.label "&CautÄ:"> -<!ENTITY docDomain.thirdParty "(parte terĹŁÄ)"> -<!ENTITY filterSource.label "SursÄ filtru"> -<!ENTITY tooltip.docDomain.label "SursÄ document:"> -<!ENTITY context.copy.label "CopiazÄ adresa elementului"> -<!ENTITY tooltip.type.label "Tip:"> -<!ENTITY context.disablefilter.label "DezactiveazÄ filtru ?1?"> -<!ENTITY context.copyFilter.label "CopiazÄ filtru"> -<!ENTITY context.block.label "BlocheazÄ element"> -<!ENTITY context.enablefilter.label "ReactiveazÄ filtru ?1?"> -<!ENTITY detach.label "Desprinde"> -<!ENTITY whitelisted.label "Pagini sigure"> -<!ENTITY context.disablefilteronsite.label "DezactiveazÄ acest filtru pe ?1?"> -<!ENTITY detached.title "Adblock Plus: Lista elementelor blocabile Ă®n paginÄ (desprinsÄ)"> -<!ENTITY docDomain.firstParty "(parte implicatÄ)"> -<!ENTITY tooltip.type.whitelisted "(permis)"> -<!ENTITY tooltip.filter.label "Filtru Ă®n acĹŁiune:"> -<!ENTITY tooltip.filter.disabled "(dezactivat)"> -<!ENTITY context.editfilter.label "ModificÄ filtrul activ"> -<!ENTITY tooltip.type.blocked "(blocat)"> -<!ENTITY size.label "MÄrime"> -<!ENTITY context.whitelist.label "AdaugÄ regulÄ excepĹŁie pentru element"> -<!ENTITY context.selectAll.label "SelecteazÄ tot"> -<!ENTITY state.label "Stare"> -<!ENTITY docDomain.label "SursÄ document"> -<!ENTITY tooltip.address.label "AdresÄ:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/subscriptionSelection.dtd deleted file mode 100644 index ec7cdbf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ro/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "A&daugÄ Č™i abonamentul ?1?"> -<!ENTITY list.download.failed "Eroare la descÄrcarea listei de abonamente."> -<!ENTITY list.download.retry "ĂŽncearcÄ din nou"> -<!ENTITY title.label "&Titlul abonamentului:"> -<!ENTITY list.download.website "AratÄ pagina web"> -<!ENTITY supplementMessage "Acest abonament trebuie folosit Ă®mpreunÄ cu abonamentul ?1?,pe care nu Ă®l folosiČ›i Ă®ncÄ."> -<!ENTITY viewList.label "Vizualizare filtre"> -<!ENTITY visitHomepage.label "Vizualizare pagina de start"> -<!ENTITY addSubscription.label "AdaugÄ abonament"> -<!ENTITY dialog.title "AdÄugare abonamente pentru filtre Adblock Plus"> -<!ENTITY location.label "&LocaĹŁia listei de filtre:"> -<!ENTITY fromWeb.description "ConfirmaČ›i adÄugarea acestui abonament filtre. PuteČ›i schimba titlul sau localizarea Ă®nainte de a-l adÄuga."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/composer.dtd deleted file mode 100644 index a7fc2c5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "в кон&це адреŃа"> -<!ENTITY domainRestriction.label "Ограничить &доменом:"> -<!ENTITY collapse.default.no.label "ĐŃпользовать Ńтандартное значение (нет)"> -<!ENTITY firstParty.label "Только элементы Ń Ń‚Đľ&го же Ńайта"> -<!ENTITY preferences.label "Показать ŃŃ&щеŃтвŃющие фильтры..."> -<!ENTITY pattern.label "иŃкать Ńаблон"> -<!ENTITY thirdParty.label "Только Ńторонние элементы"> -<!ENTITY filter.label "Новый &фильтр:"> -<!ENTITY collapse.label "Đлементы заблокированны:"> -<!ENTITY match.warning "Введенный Ńаблон не ŃоответŃтвŃет адреŃŃ, для которого вы Ńоздаете правило, и никак не повлияет на него."> -<!ENTITY anchor.start.label "в на&чале адреŃа"> -<!ENTITY matchCase.label "&Учитывать региŃтр бŃкв"> -<!ENTITY custom.pattern.label "&ДрŃгой:"> -<!ENTITY unselectAllTypes.label "Убрать вŃе"> -<!ENTITY type.whitelist.label "ĐŃ&ключение"> -<!ENTITY regexp.warning "Введенный Ńаблон бŃдет понят как регŃлярное выражение. БольŃое количеŃтво регŃлярных выражений может отрицательно ŃказатьŃŃŹ на быŃтродейŃтвии ваŃего браŃзера. Đ•Ńли вы не ŃобиралиŃŃŚ иŃпользовать регŃлярные выражения, то проŃто добавьте Đ·Đ˛ĐµĐ·Đ´ĐľŃ‡ĐşŃ Đ˛ конце Ńаблона."> -<!ENTITY dialog.title "СоŃтавление фильтра для Adblock Plus"> -<!ENTITY basic.label "Стандартный вид"> -<!ENTITY type.filter.label "Правило &блокирования"> -<!ENTITY types.label "Применять Đş типам:"> -<!ENTITY shortpattern.warning "Введенный Ńаблон ŃлиŃком короткий и ĐżĐľŃ‚ĐľĐĽŃ Đ˝Đµ бŃдет оптимизирован. БольŃое количеŃтво таких Ńаблонов может отрицательно ŃказатьŃŃŹ на быŃтродейŃтвии ваŃего браŃзера. РекомендŃетŃŃŹ по возможноŃти иŃпользовать более длинный Ńаблон."> -<!ENTITY collapse.yes.label "Да"> -<!ENTITY anchors.label "Принимать Ńаблон только:"> -<!ENTITY collapse.default.yes.label "ĐŃпользовать Ńтандартное значение (да)"> -<!ENTITY domainRestriction.help "Укажите один или неŃколько доменов, разделенные Ńимволом «|», фильтр бŃдет применен только на этих доменах. Символ «~» перед именем домена означает, что фильтр не должен применятьŃŃŹ на этом домене."> -<!ENTITY accept.label "Добавить фильтр"> -<!ENTITY options.label "НаŃтройки..."> -<!ENTITY disabled.warning "Adblock Plus ŃĐµĐąŃ‡Đ°Ń ĐľŃ‚ĐşĐ»ŃŽŃ‡ĐµĐ˝. Đ’Ń‹ можете добавить фильтры, но чтобы они работали Đ˝Ńжно [link]включить Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "в на&чале имени домена"> -<!ENTITY collapse.no.label "Нет"> -<!ENTITY selectAllTypes.label "Пометить вŃе"> -<!ENTITY advanced.label "РаŃŃиренный вид"> -<!ENTITY pattern.explanation "Шаблоном может быть любая чаŃть адреŃа, причем звездочка (*) заменяет любое количеŃтво Ńимволов. Фильтр бŃдет применен только Đş тем адреŃам, которые ŃоответŃтвŃŃŽŃ‚ ŃаблонŃ."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/filters.dtd deleted file mode 100644 index d1a858b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "Đ’Ńе ŃобŃтвенные фильтры бŃĐ´ŃŃ‚ заменены данными этого файла. Продолжать?"> -<!ENTITY slow.column "&Медленное"> -<!ENTITY enabled.column "Đ’&ключено"> -<!ENTITY subscription.lastDownload.checksumMismatch "ĐžŃибка: проверочная ŃŃмма не Ńовпадает, возможно произоŃла ĐľŃибка загрŃзки"> -<!ENTITY noFiltersInGroup.text "Выбранная грŃппа фильтров ĐżŃŃта."> -<!ENTITY subscription.actions.label "ДейŃтвия"> -<!ENTITY filter.selectAll.label "Выбрать вŃе"> -<!ENTITY backupButton.label "Резервные &копии и воŃŃтановление"> -<!ENTITY restore.minVersion.warning "ПредŃпреждение: этот файл был запиŃан более новой верŃией Adblock Plus. РекомендŃетŃŃŹ обновить Adblock Plus Đ´Đľ поŃледней верŃии, прежде чем воŃŃтанавливать данные из этого файла."> -<!ENTITY restore.error "ĐžŃибка при обработке данных файла, может это не резервная копия, Ńозданная Adblock Plus?"> -<!ENTITY sort.ascending.label "Сортировка по ал&фавитŃ"> -<!ENTITY sort.label "Со&ртировка"> -<!ENTITY subscription.source.label "СпиŃок фильтров"> -<!ENTITY hitcount.column "Сра&батывания"> -<!ENTITY noFilters.text "ĐŁ Đ˛Đ°Ń ĐżĐľĐşĐ° что нет ŃобŃтвенных фильтров."> -<!ENTITY backup.custom.title "Только ŃобŃтвенные фильтры"> -<!ENTITY subscription.external.label "ОбновляетŃŃŹ Đ´Ń€Ńгим раŃŃирением"> -<!ENTITY subscription.delete.label "Удалить"> -<!ENTITY noGroupSelected.text "ĐťŃжно выбрать грŃппŃ, чтобы показать ее фильтры."> -<!ENTITY filter.cut.label "Вырезать"> -<!ENTITY restore.default.label "Đ’ĐľŃŃтановить копию от ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ŃейчаŃ..."> -<!ENTITY subscriptions.tab.label "ПодпиŃки"> -<!ENTITY sort.descending.label "Đ’ об&ратном порядке"> -<!ENTITY filters.remove.warning "Đ’Ń‹ дейŃтвительно хотите Ńдалить вŃе отмеченные фильтры?"> -<!ENTITY filter.delete.label "Удалить"> -<!ENTITY addSubscriptionAdd.label "Добавить"> -<!ENTITY viewMenu.label "Вид"> -<!ENTITY subscription.lastDownload.unknown "никогда"> -<!ENTITY addSubscriptionCancel.label "Отмена"> -<!ENTITY subscription.enabled.label "Включена"> -<!ENTITY noSubscriptions.text "ĐŁ Đ˛Đ°Ń ĐżĐľĐşĐ° нет подпиŃок на фильтры. Без фильтров Adblock Plus ничего не бŃдет - блокировать, пожалŃĐąŃта воŃпользŃйтеŃŃŚ кнопкой "Добавить подпиŃĐşŃ"."> -<!ENTITY subscription.update.label "Обновить фильтры"> -<!ENTITY dialog.title "НаŃтройки фильтров Adblock Plus"> -<!ENTITY addFilter.label "Добавить &фильтр"> -<!ENTITY subscription.minVersion.warning "Đтот ŃпиŃок фильтров требŃет более новой верŃии Adblock Plus, желательно обновить Adblock Plus Đ´Đľ поŃледней верŃии."> -<!ENTITY subscription.lastDownload.invalidURL "ĐžŃибка: неверный адреŃ"> -<!ENTITY backup.error "При запиŃи фильтров в файл произоŃла ĐľŃибка. Проверьте, может этот файл защищен от запиŃи или иŃпользŃетŃŃŹ Đ´Ń€Ńгой программой."> -<!ENTITY filter.moveUp.label "ПомеŃтить выŃе"> -<!ENTITY addGroup.label "Добавить &грŃĐżĐżŃ Ń„Đ¸Đ»ŃŚŃ‚Ń€ĐľĐ˛"> -<!ENTITY filter.edit.label "Редактировать"> -<!ENTITY subscription.showHideFilters.label "Спрятать/показать фильтры"> -<!ENTITY acceptableAds2.label "Разре&Ńить некоторŃŃŽ ненавязчивŃŃŽ рекламŃ"> -<!ENTITY addSubscriptionOther.label "Добавить Đ´Ń€ŃĐłŃŃŽ подпиŃĐşŃ"> -<!ENTITY close.label "Закрыть"> -<!ENTITY sort.none.label "Бе&Đ· Ńортировки"> -<!ENTITY filter.actions.label "ДейŃтвия Ń Ń„Đ¸Đ»ŃŚŃ‚Ń€Đ°ĐĽĐ¸"> -<!ENTITY filter.copy.label "Копировать"> -<!ENTITY filter.moveDown.label "ПомеŃтить ниже"> -<!ENTITY filter.resetHitCounts.label "ОбнŃлить ŃтатиŃŃ‚Đ¸ĐşŃ ĐżĐľĐżĐ°Đ´Đ°Đ˝Đ¸Đą"> -<!ENTITY readMore.label "Дополнительная информация"> -<!ENTITY subscription.moveUp.label "ПомеŃтить выŃе"> -<!ENTITY addSubscription.label "До&бавить подпиŃĐşŃ"> -<!ENTITY subscription.homepage.label "ДомаŃняя Ńтраница"> -<!ENTITY backup.complete.title "Đ’Ńе фильтры и подпиŃки"> -<!ENTITY restore.own.label "Đ’ĐľŃŃтановить ŃобŃтвеннŃŃŽ копию"> -<!ENTITY restore.complete.warning "Đ’Ńе ваŃи фильтры и подпиŃки бŃĐ´ŃŃ‚ заменены данными этого файла. Продолжать?"> -<!ENTITY filters.tab.label "СобŃтвенные фильтры"> -<!ENTITY backup.label "Создать новŃŃŽ резервнŃŃŽ копию"> -<!ENTITY find.label "&Найти фильтр"> -<!ENTITY subscription.moveDown.label "ПомеŃтить ниже"> -<!ENTITY subscription.lastDownload.connectionError "ĐžŃибка: невозможно загрŃзить"> -<!ENTITY subscription.lastDownload.success "OK"> -<!ENTITY subscription.lastDownload.invalidData "ĐžŃибка: неверный формат ŃпиŃка фильтров"> -<!ENTITY filter.paste.label "Đ’Ńтавить"> -<!ENTITY subscription.disabledFilters.enable "Включить отключенные фильтры"> -<!ENTITY lasthit.column "ПоŃ&леднее Ńрабатывание"> -<!ENTITY subscription.editTitle.label "Переименовать"> -<!ENTITY subscription.disabledFilters.warning "Некоторые фильтры в этой подпиŃке отключены."> -<!ENTITY filter.column "&Правило"> -<!ENTITY subscription.lastDownload.label "ПоŃледнее обновление:"> -<!ENTITY viewList.label "Открыть ŃпиŃок"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/firstRun.properties deleted file mode 100644 index 9de16d0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=ПроŃматривайте конфиденциально ĐżŃтем отключения отŃлеживания - Ńкрыв ваŃи дейŃтвия от объявления компаний, которые бŃĐ´ŃŃ‚ отŃлеживать каждый Đ˛Đ°Ń Ńаг. -firstRun_toggle_off=ВЫКЛ -firstRun_feature_tracking=Отключить Ńлежение -firstRun_feature_malware=Блокирование вредоноŃных программ -firstRun_title=Adblock Plus ŃŃтановлен -firstRun_toggle_on=ВКЛ -firstRun_acceptableAdsExplanation=Мы хотели бы призвать веб-Ńайты иŃпользовать проŃŃ‚ŃŃŽ, ненавязчивŃŃŽ рекламŃ. Вот ĐżĐľŃ‡ĐµĐĽŃ ĐĽŃ‹ ŃŃтановили <a>Ńтрогие принципы</a> для определения приемлемых объявлений, которые разреŃены в наŃтройках по Ńмолчанию. Đ•Ńли вы вŃе еще хотите блокировать каждое объявление вы можете <a>Отключить</a> это в течение неŃкольких ŃекŃнд. -firstRun_contributor_credits=Пожертвования -firstRun_dataCorruptionWarning=Đта Ńтраница вŃŃ‘ ещё отображаетŃŃŹ? <a>Щёлкните здеŃŃŚ!</a> -firstRun_acceptableAdsHeadline=НадоевŃая реклама теперь бŃдет заблокирована -firstRun_share=РаŃŃказать Đ´Ń€ŃĐ·ŃŚŃŹĐĽ -firstRun_share_headline=<a>протяните нам Ń€ŃĐşŃ ĐżĐľĐĽĐľŃ‰Đ¸</a> в Ńтремлении Ńделать Đнтернет Đ»ŃчŃе -firstRun_feature_social_description=ĐвтоматичеŃки избавляет Đ˛Đ°Ń ĐľŃ‚ проŃмотра кнопок Ńоциальных Ńетей, подобных Facebook, которые появляютŃŃŹ на веб-Ńтраницах и отŃлеживают ваŃе поведение. -firstRun_filterlistsReinitializedWarning=Похоже ĐľŃибка привела Đş томŃ, что вŃе фильтры Ńдалены, и ĐĽŃ‹ не можем их воŃŃтановить из резервной копии. ĐźĐľŃŤŃ‚ĐľĐĽŃ ĐĽŃ‹ ŃброŃили ваŃи фильтры и параметры "ненавязчивой" рекламы. ПожалŃĐąŃта проверьте ŃпиŃок ваŃих фильтров и параметры "ненавязчивой "рекламы в <a>параметры Adblock Plus</a>. -firstRun_feature_malware_description=Делает Đ˛Đ°Ń Đ±Ń€Đ°Ńзер более безопаŃным ĐżŃтем блокирования извеŃтных вредоноŃных доменов. -firstRun_features=AdBlock Plus ŃпоŃобен на больŃее, чем проŃто блокировать Ń€ĐµĐşĐ»Đ°ĐĽŃ -firstRun_donate=пожертвовать -firstRun_donate_label=Поддержать Đ˝Đ°Ń ĐżŃ€ĐľĐµĐşŃ‚ -firstRun_feature_social=Удалять кнопки Ńоциальных Ńетей -firstRun_legacySafariWarning=Đ’Ń‹ иŃпользŃете ŃтарŃŃŽ верŃию Safari, который не поддерживаетŃŃŹ Adblock Plus. Она может работать не правильно или ŃŃ…ŃĐ´Ńать качеŃтво работы пользователя на некоторых веб-Ńайтах. Мы наŃтоятельно рекомендŃем обновитьŃŃŹ Đ´Đľ Safari 6.1.1 или выŃе (в OS X 10.8 Mountain Lion), или Safari 7.0.1 или выŃе (в OS X 10.9 Mavericks), или иŃпользовать поŃледнюю верŃию Mozilla Firefox, Google Chrome или Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/global.properties deleted file mode 100644 index c279c00..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=На открытой Ńтранице нет элементов, которые можно было бы заблокировать -action3_tooltip=Щелкните здеŃŃŚ, чтобы включить или отключить Adblock Plus. -notification_antiadblock_title=Ńкрыть целевых Ńообщений? -type_label_script=Скрипт -filter_elemhide_nocriteria=Не Ńказано никаких признаков, чтобы опознать элемент, который Đ˝Ńжно Ńкрыть -blockingGroup_title=Правила блокирования -whitelisted_tooltip=Adblock Plus отключен на этой Ńтранице. -type_label_stylesheet=Стили -blocked_count_tooltip=?1? из ?2? -type_label_font=Шрифт -type_label_popup=Đ’Ńплывающее окно -filter_regexp_tooltip=Đтот фильтр либо являетŃŃŹ регŃлярным выражением, либо ŃлиŃком короткий для оптимизации. БольŃое количеŃтво таких фильтров может отрицательно ŃказатьŃŃŹ на быŃтродейŃтвии ваŃего браŃзера. -action0_tooltip=Щелкните здеŃŃŚ, чтобы открыть контекŃтное меню. Нажмите Ńреднюю клавиŃŃ ĐĽŃ‹Ńки, чтобы включить или отключить Adblock Plus. -whitelisted_page=Adblock Plus отключен на этой Ńтранице -remove_group_warning=Đ’Ń‹ Ńверены, что хотите Ńдалить ŃŤŃ‚Ń ĐłŃ€ŃппŃ? -action1_tooltip=Щелкните здеŃŃŚ, чтобы открыть/закрыть ŃпиŃок элементов. Нажмите Ńреднюю клавиŃŃ ĐĽŃ‹Ńки, чтобы включить или отключить Adblock Plus. -type_label_xmlhttprequest=XML-Đ·Đ°ĐżŃ€ĐľŃ -active_tooltip=Adblock Plus включен, иŃпользŃетŃŃŹ подпиŃок: ?1?, ŃобŃтвенных фильтров: ?2?. -type_label_document=ДокŃмент -type_label_object_subrequest=Đ—Đ°ĐżŃ€ĐľŃ ĐľĐ±ŃŠĐµĐşŃ‚Đ° -whitelistGroup_title=ĐŃключения -disabled_tooltip=Adblock Plus отключен. -filter_elemhide_duplicate_id=ĐŁ элемента, который Đ˝Ńжно Ńкрыть, может быть только один идентификатор -type_label_object=Объект -action2_tooltip=Щелкните здеŃŃŚ, чтобы открыть окно ŃŃтановок. Нажмите Ńреднюю клавиŃŃ ĐĽŃ‹Ńки, чтобы включить или отключить Adblock Plus. -type_label_subdocument=Фрейм -clearStats_warning=СтатиŃтика попаданий бŃдет обнŃлена для вŃех фильтров и в дальнейŃем больŃе не бŃдет запиŃыватьŃŃŹ. Продолжать? -notification_antiadblock_message=Đтот Ńайт, как извеŃтно, показывают целевые Ńообщения пользователям Adblock Plus. Хотите Adblock Plus, чтобы Ńкрыть целевых Ńообщений? -blocked_count_addendum=(также иŃключений: ?1?, Ńпрятано: ?2?) -subscription_invalid_location=Не ŃдалоŃŃŚ раŃпознать введенный Đ°Đ´Ń€ĐµŃ Đ˝Đ¸ как Đ°Đ´Ń€ĐµŃ Đ˛ интернете, ни как ĐżŃть файлŃ. -type_label_image=Đзображение -remove_subscription_warning=Đ’Ń‹ Ńверены, что хотите Ńдалить ŃŤŃ‚Ń ĐżĐľĐ´ĐżĐ¸ŃĐşŃ? -type_label_other=НеизвеŃтен -mobile_menu_enable=ABP: Включить -type_label_media=ĐŃдио/видео -mobile_menu_disable_site=ABP: Отключить на ?1? -elemhideGroup_title=Правила Ńкрытия -mobile_menu_enable_site=ABP: Включить на ?1? -type_label_elemhide=Скрыто -newGroup_title=Новая грŃппа фильтров -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/overlay.dtd deleted file mode 100644 index dd49760..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&да"> -<!ENTITY notification.button.no "&нет"> -<!ENTITY sync.label "Син&хронизировать наŃтройки Adblock Plus"> -<!ENTITY whitelist.site.label "Отключить на ?1?"> -<!ENTITY filters.label "НаŃтройки &фильтров"> -<!ENTITY disable.label "Отключить везде"> -<!ENTITY objecttab.title "Блокировать"> -<!ENTITY objecttab.tooltip "Нажмите здеŃŃŚ, чтобы Adblock Plus заблокировал этот объект"> -<!ENTITY menuitem.label "ĐŁŃтановки &Adblock Plus"> -<!ENTITY objecttabs.label "Показывать &ярлык на Flash и Java"> -<!ENTITY sendReport.label "&Сообщить Đľ проблеме на этой Ńтранице"> -<!ENTITY whitelist.page.label "Отключить только на этой Ńтранице"> -<!ENTITY context.image.label "Adblock Plus: заблокировать изображение"> -<!ENTITY counthits.label "С&читать Ńрабатывания фильтров"> -<!ENTITY opensidebar.label "Открыть Ń&пиŃок элементов"> -<!ENTITY notification.button.close "&близко"> -<!ENTITY contribute.label "Помочь ĐżŃ€ĐľĐµĐşŃ‚Ń Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: заблокировать фрейм"> -<!ENTITY blocked.tooltip "Заблокированные элементы на этой Ńтранице:"> -<!ENTITY hideplaceholders.label "Прятать &метки на меŃте заблокированных элементов"> -<!ENTITY showinstatusbar.label "Показывать в &Ńтроке ŃĐľŃтояния"> -<!ENTITY sidebar.title "Đлементы открытой Ńтраницы"> -<!ENTITY options.label "&НаŃтройки"> -<!ENTITY context.object.label "Adblock Plus: заблокировать объект"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: включить обратно на этой Ńтранице"> -<!ENTITY filters.tooltip "Наиболее чаŃто примененные фильтры:"> -<!ENTITY closesidebar.label "Закрыть Ń&пиŃок элементов"> -<!ENTITY showintoolbar.label "&Показывать в панели инŃтрŃментов"> -<!ENTITY status.tooltip "СтатŃŃ:"> -<!ENTITY context.media.label "Adblock Plus: заблокировать аŃдио/видео"> -<!ENTITY subscription.update.label "Обновить фильтры"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sendReport.dtd deleted file mode 100644 index 39b1b77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sendReport.dtd +++ /dev/null @@ -1,100 +0,0 @@ -<!ENTITY screenshot.undo.label "&Отменить"> -<!ENTITY issues.disabledgroups.description "СледŃющие подпиŃки / грŃппы фильтров отключены, но могли бы повлиять на ŃŤŃ‚Ń ŃтраницŃ:"> -<!ENTITY showData.label "Показать данные Ńообщения"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus блокирŃет ŃлиŃко&ĐĽ многое"> -<!ENTITY issues.change.description "ВаŃи наŃтройки изменилиŃŃŚ. ПожалŃĐąŃта, обновите ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Đ´Đ»ŃŹ проверки - внеŃенных изменений и отправьте Ńообщение, еŃли проблема не разреŃилаŃŃŚ."> -<!ENTITY email.label "E-&mail:"> -<!ENTITY issues.openPreferences.label "Открыть наŃтройки фильтров"> -<!ENTITY sendPage.confirmation "Сообщение отправлено и Ńохранено. Đ’Ń‹ можете проŃмотреть его по ŃледŃющей ŃŃылке:"> -<!ENTITY copyLink.label "С&копировать ŃŃŃ‹Đ»ĐşŃ Đ˝Đ° Ńообщение"> -<!ENTITY issues.nofilters.description "Adblock Plus ничего не блокирŃет на этой Ńтранице. Скорее вŃего, проблема, - которŃŃŽ вы наблюдаете, не Ńвязана Ń Adblock Plus."> -<!ENTITY sendPage.knownIssue "Возможно, что проблема, Đľ которой вы Ńообщили, Ńже извеŃтна. Дополнительная информация:"> -<!ENTITY typeSelector.other.description "Đ•Ńли вы подозреваете, что проблема в Ńамом раŃŃирении Adblock Plus, - а не в его фильтрах, то выберите этот вариант."> -<!ENTITY issues.disabledgroups.enable.label "Включить подпиŃĐşŃ / грŃĐżĐżŃ Ń„Đ¸Đ»ŃŚŃ‚Ń€ĐľĐ˛"> -<!ENTITY typeWarning.override.label "ĐŻ &понял и, тем не менее, Ń…ĐľŃ‡Ń ĐľŃ‚ĐżŃ€Đ°Đ˛Đ¸Ń‚ŃŚ Ńообщение"> -<!ENTITY issues.disabled.enable.label "Включить Adblock Plus"> -<!ENTITY update.fixed.description "Обновление ваŃих подпиŃок на фильтры Ńкорее вŃего реŃило проблемŃ, Đľ которой - вы хотели Ńообщить. ПожалŃĐąŃта загрŃзите заново ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Đ¸ попробŃйте еще раз. - Đ•Ńли проблема ĐľŃталоŃŃŚ, то поŃлите Ńообщение еще раз."> -<!ENTITY anonymous.label "Отпр&авить анонимно"> -<!ENTITY reloadButton.label "Об&новить ŃтраницŃ"> -<!ENTITY recentReports.clear.label "Уда&лить вŃе Ńообщения"> -<!ENTITY typeSelector.description "МаŃтер поможет вам отправить Ńообщение Đľ проблеме Ń Adblock Plus. - ПожалŃĐąŃта, Ńкажите на этой Ńтранице тип проблемы, Ń ĐşĐľŃ‚ĐľŃ€ĐľĐą вы ŃтолкнŃлиŃŃŚ:"> -<!ENTITY screenshot.remove.label "ĐŁ&далить конфиденциальные данные"> -<!ENTITY issues.ownfilters.description "Некоторые фильтры, которые применяютŃŃŹ на этой Ńтранице, вы добавили Ńами. - ПожалŃĐąŃта, отключите фильтры, которые могли вызвать ŃŤŃ‚Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ:"> -<!ENTITY update.inProgress.description "Adblock Plus должен обновить ваŃи подпиŃки на фильтры, чтобы ŃĐ´ĐľŃтоверитьŃŃŹ, - что проблема еще не была реŃена. Подождите, пожалŃĐąŃта..."> -<!ENTITY sendPage.retry.label "Отправить еще раз"> -<!ENTITY data.label "Да&нные Ńообщения:"> -<!ENTITY recentReports.label "ВаŃи недавно отправленные Ńообщения"> -<!ENTITY typeWarning.description "Đ’Ń‹ Ńказали, что хотите Ńообщить Đľ проблеме в Adblock Plus, а не в его фильтрах. - ПожалŃĐąŃта, Ńчтите, что Đľ таких проблемах Đ»ŃчŃе Ńообщать на - [link]форŃме Adblock Plus[/link]. МаŃтер отправки Ńообщения ŃледŃет - иŃпользовать лиŃŃŚ для добавления информации Đş обŃŃждению на форŃме, поŃĐşĐľĐ»ŃŚĐşŃ - никто не Ńвидит ваŃе Ńообщение, еŃли не ĐľŃтавить на него ŃŃылкŃ. Đ’Ń‹ - полŃчите автоматичеŃки ŃозданнŃŃŽ ŃŃŃ‹Đ»ĐşŃ ĐżĐľŃле отправки Ńообщения."> -<!ENTITY issues.disabled.description "Adblock Plus отключен и ничего не блокирŃет в этом ŃĐľŃтоянии."> -<!ENTITY attachExtensions.label "Đź&рикрепить ŃпиŃок включенных раŃŃирений Đş Ńообщению на ŃĐ»Ńчай, еŃли проблема вызвана конфликтом раŃŃирений"> -<!ENTITY issues.nosubscriptions.add.label "Добавить подпиŃĐşŃ"> -<!ENTITY issues.disabledfilters.enable.label "Включить фильтр"> -<!ENTITY issues.override.label "НаŃтройки в &порядке, продолжить отправление Ńообщения"> -<!ENTITY issues.nosubscriptions.description "Đ’Ń‹ не подпиŃаны ни на один из готовых ŃпиŃков фильтров, которые автоматичеŃки - блокирŃŃŽŃ‚ нежелательные элементы Ńтраниц."> -<!ENTITY typeSelector.falsePositive.description "Đ•Ńли на Ńтранице отŃŃŃ‚ŃтвŃŃŽŃ‚ важные чаŃти Ńодержимого, а также еŃли она - отображаетŃŃŹ или Ń„ŃнкционирŃет неправильно, то ŃледŃет выбрать этот вариант. - Đ’Ń‹ можете проверить, являетŃŃŹ ли Adblock Plus иŃточником проблемы, временно - отключив его."> -<!ENTITY typeSelector.other.label "&ДрŃгая проблема"> -<!ENTITY emailComment.label "Мы рекомендŃем ввеŃти e-mail адреŃ, по ĐşĐľŃ‚ĐľŃ€ĐľĐĽŃ ĐĽŃ‹ могли бы ŃвязатьŃŃŹ в ŃĐ»Ńчает вопроŃов по ваŃĐµĐĽŃ Ńообщению. Đто также позволит нам Ńзнавать ВаŃи взноŃŃ‹ и обрабатывать их в предпочтительном порядке."> -<!ENTITY issues.whitelist.remove.label "Включить Adblock Plus на этой Ńтранице"> -<!ENTITY outdatedSubscriptions.description "СледŃющие подпиŃки на фильтры не обновлялиŃŃŚ более двŃŃ… недель. ПожалŃĐąŃта, - обновите эти подпиŃки перед отправлением Ńообщения, поŃĐşĐľĐ»ŃŚĐşŃ ĐżŃ€ĐľĐ±Đ»ĐµĐĽĐ° Ńже - может быть реŃена."> -<!ENTITY dataCollector.description "ПожалŃĐąŃта, подождите неŃколько ŃекŃнд, пока Adblock Plus Ńобирает Đ˝Ńжные данные."> -<!ENTITY sendButton.label "От&править Ńообщение"> -<!ENTITY comment.label "&Комментарий (необязательно):"> -<!ENTITY sendPage.errorMessage "ĐžŃибка отправки Ńообщения: «?1?». ПожалŃĐąŃта, - ŃĐ´ĐľŃтоверьтеŃŃŚ, что ваŃе Ńоединение Ń Ńетью Đнтернет работает, и попробŃйте еще раз. - Đ•Ńли проблема ĐľŃтаетŃŃŹ, обратитеŃŃŚ в [link]форŃĐĽ Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Показать недавно отправленные Ńообщения"> -<!ENTITY commentPage.heading "Комментарий"> -<!ENTITY update.start.label "Обновить подпиŃки"> -<!ENTITY issues.disabledfilters.description "СледŃющие фильтры отключены, но могли бы повлиять на ŃŤŃ‚Ń ŃтраницŃ:"> -<!ENTITY screenshot.description "Одна и та же Ńтраница может выглядеть по-Ń€Đ°Đ·Đ˝ĐľĐĽŃ Đ´Đ»ŃŹ разных людей. Снимок экрана - может помочь нам понять проблемŃ. Đ’Ń‹ можете Ńдалить конфиденциальные чаŃти Ńнимка - или пометить облаŃть Ńнимка, в которой проявляетŃŃŹ проблема. Для этого - нажмите на ŃоответŃтвŃющŃŃŽ ĐşĐ˝ĐľĐżĐşŃ Đ¸ выберите ĐĽŃ‹Ńкой чаŃть Ńнимка."> -<!ENTITY screenshot.attach.label "При&крепить Ńнимок экрана Đş Ńообщению"> -<!ENTITY issues.whitelist.description "Adblock Plus отключен на Ńтранице, Đľ которой вы ŃобираетеŃŃŚ Ńообщить. ПожалŃĐąŃта, - включите Adblock Plus и обновите ŃтраницŃ, прежде чем поŃылать Ńообщение. - Đто поможет раŃŃмотрению ваŃего Ńообщения."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus не блоки&Ń€Ńет рекламŃ"> -<!ENTITY typeSelector.heading "Выбор типа проблемы"> -<!ENTITY anonymity.warning "Мы не Ńможем ŃвязатьŃŃŹ Ń Đ˛Đ°ĐĽĐ¸ и, вероятно, Ńделим меньŃе внимания ВаŃĐµĐĽŃ Ńообщению."> -<!ENTITY wizard.title "Сообщить Đľ проблеме"> -<!ENTITY issues.ownfilters.disable.label "Отключить фильтр"> -<!ENTITY commentPage.description "Đ’Đ˝Đ¸Đ·Ń Đ˛Ń‹ можете добавить комментарий, чтобы помочь нам понять проблемŃ. - Đто не обязательно, но рекомендŃетŃŃŹ для неочевидных проблем. - Также вы можете проверить данные Ńообщения, прежде чем оно бŃдет - отправлено."> -<!ENTITY comment.lengthWarning "Длина комментария превыŃает 1000 Ńимволов. Только первые 1000 Ńимволов бŃĐ´ŃŃ‚ отправлены."> -<!ENTITY typeSelector.falseNegative.description "Đ•Ńли неŃмотря на то, что Adblock Plus включен, на Ńтранице отображаетŃŃŹ реклама, - то ŃледŃет выбрать этот вариант."> -<!ENTITY sendPage.waitMessage "ПожалŃĐąŃта, подождите, пока Adblock Plus отправляет ваŃе Ńообщение."> -<!ENTITY dataCollector.heading "Добро пожаловать в маŃтер отправки Ńообщения"> -<!ENTITY screenshot.heading "Снимок экрана"> -<!ENTITY sendPage.heading "Отправка Ńообщения"> -<!ENTITY issues.subscriptionCount.description "Похоже, что вы подпиŃаны на ŃлиŃком больŃое количеŃтво ŃпиŃков фильтров. Đто - не рекомендŃетŃŃŹ, поŃĐşĐľĐ»ŃŚĐşŃ Ńильно возраŃтает вероятноŃть проблем. Помимо - этого, ĐĽŃ‹ не можем принять ваŃе Ńообщение, поŃĐşĐľĐ»ŃŚĐşŃ Đ˝ĐµŃŹŃно, какой из ŃпиŃков - фильтров Đ˝Ńжно иŃправлять. ПожалŃĐąŃта, Ńдалите вŃе ŃпиŃки фильтров кроме - дейŃтвительно Đ˝Ńжных. ПоŃле этого проверьте, проявляетŃŃŹ ли еще проблема."> -<!ENTITY screenshot.mark.label "&Пометить проблемŃ"> -<!ENTITY privacyPolicy.label "Правила конфиденциальноŃти"> -<!ENTITY issues.description "Adblock Plus обнарŃжил проблемы в ваŃих наŃтройках, которые, возможно, вызвали - даннŃŃŽ ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Đ¸Đ»Đ¸ ŃŃложнят раŃŃмотрение ваŃего Ńообщения."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sidebar.dtd deleted file mode 100644 index 7786487..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Показать раŃположение элемента"> -<!ENTITY address.label "ĐдреŃ"> -<!ENTITY context.open.label "Открыть в новой вкладке"> -<!ENTITY type.label "Тип"> -<!ENTITY tooltip.filterSource.label "ĐŃточник фильтра:"> -<!ENTITY noitems.label "Блокировать нечего"> -<!ENTITY filter.label "Фильтр"> -<!ENTITY tooltip.size.label "Размер:"> -<!ENTITY reattach.label "ПриŃоединить"> -<!ENTITY search.label "Đź&оиŃĐş:"> -<!ENTITY docDomain.thirdParty "(Đ·Đ°ĐżŃ€ĐľŃ Ń Đ´Ń€Ńгого Ńайта)"> -<!ENTITY filterSource.label "СпиŃок фильтров"> -<!ENTITY tooltip.docDomain.label "Домен Ńтраницы:"> -<!ENTITY context.copy.label "Копировать адреŃ"> -<!ENTITY tooltip.type.label "Тип:"> -<!ENTITY context.disablefilter.label "Отключить фильтр ?1?"> -<!ENTITY context.copyFilter.label "Копировать фильтр"> -<!ENTITY context.block.label "Заблокировать элемент"> -<!ENTITY context.enablefilter.label "Включить обратно фильтр ?1?"> -<!ENTITY detach.label "ОтŃоединить"> -<!ENTITY whitelisted.label "Отключен на этой Ńтранице"> -<!ENTITY context.disablefilteronsite.label "Отключить фильтр на ?1?"> -<!ENTITY detached.title "Adblock Plus: элементы открытой Ńтраницы (отŃоединены)"> -<!ENTITY docDomain.firstParty "(Đ·Đ°ĐżŃ€ĐľŃ Ń Ń‚ĐľĐłĐľ же Ńайта)"> -<!ENTITY tooltip.type.whitelisted "(иŃключение)"> -<!ENTITY tooltip.filter.label "Применен фильтр:"> -<!ENTITY tooltip.filter.disabled "(отключен)"> -<!ENTITY context.editfilter.label "Отредактировать примененный фильтр"> -<!ENTITY tooltip.type.blocked "(заблокирован)"> -<!ENTITY size.label "Размер"> -<!ENTITY context.whitelist.label "Добавить иŃключение для элемента"> -<!ENTITY context.selectAll.label "Выделить вŃŃ‘"> -<!ENTITY state.label "СтатŃŃ"> -<!ENTITY docDomain.label "Домен Ńтраницы"> -<!ENTITY tooltip.address.label "ĐдреŃ:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/subscriptionSelection.dtd deleted file mode 100644 index 080da8b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/ru/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Доба&вить подпиŃĐşŃ Đ˝Đ° ŃпиŃок фильтров «?1?»"> -<!ENTITY list.download.failed "При Ńкачивании ŃпиŃка подпиŃок произоŃла ĐľŃибка."> -<!ENTITY list.download.retry "Попробовать еще раз"> -<!ENTITY title.label "На&звание подпиŃки:"> -<!ENTITY list.download.website "Открыть ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Ń ĐżĐľĐ´ĐżĐ¸Ńками"> -<!ENTITY supplementMessage "Đтот ŃпиŃок фильтров должен иŃпользоватьŃŃŹ в комбинации ŃĐľ ŃпиŃком фильтров «?1?», который вы не иŃпользŃете."> -<!ENTITY viewList.label "ПроŃмотреть фильтры"> -<!ENTITY visitHomepage.label "ПоŃетить домаŃнюю ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń ŃпиŃка"> -<!ENTITY addSubscription.label "Добавить подпиŃĐşŃ"> -<!ENTITY dialog.title "Добавить подпиŃĐşŃ Đ´Đ»ŃŹ Adblock Plus"> -<!ENTITY location.label "Đ&Đ´Ń€ĐµŃ ŃпиŃка фильтров:"> -<!ENTITY fromWeb.description "ПожалŃĐąŃта, подтвердите, что вы дейŃтвительно хотите добавить подпиŃĐşŃ Đ˝Đ° этот ŃпиŃок фильтров. Đ’Ń‹ можете изменить название и Đ°Đ´Ń€ĐµŃ ĐżĐľĐ´ĐżĐ¸Ńки перед добавлением."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/composer.dtd deleted file mode 100644 index 23604b6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na konci a&dresy"> -<!ENTITY domainRestriction.label "Obm&edziĹĄ na domĂ©nu:"> -<!ENTITY collapse.default.no.label "PouĹľiĹĄ predvolenĂ© (nie)"> -<!ENTITY firstParty.label "&Len prvá strana"> -<!ENTITY preferences.label "&ZobraziĹĄ existujĂşce filtre..."> -<!ENTITY pattern.label "VyhÄľadaĹĄ vzor"> -<!ENTITY thirdParty.label "Len &tretie strany"> -<!ENTITY filter.label "NovĂ˝ &filter:"> -<!ENTITY collapse.label "Pád zabl&okovanĂ˝::"> -<!ENTITY match.warning "Vzor, ktorĂ˝ ste vloĹľili nezodpovedá blokovanej/povolenej adrese a nebude maĹĄ Ĺľiadny efekt."> -<!ENTITY anchor.start.label "&na zaÄŤiatku adresy"> -<!ENTITY matchCase.label "&ModelovĂ˝ prĂpad"> -<!ENTITY custom.pattern.label "&VlastnĂ©:"> -<!ENTITY unselectAllTypes.label "NezvoliĹĄ niÄŤ"> -<!ENTITY type.whitelist.label "ZákladnĂ© pravidlo"> -<!ENTITY regexp.warning "Vzor, ktorĂ˝ ste vloĹľili bude interpretovanĂ˝ ako regulárny vĂ˝raz. Mnoho regulárnych vĂ˝razov mĂ´Ĺľe spomaliĹĄ prehliadanie. Ak ste nemali v Ăşmysle pouĹľĂvaĹĄ regulárne vĂ˝razy, pridajte symbol * na koniec vzoru."> -<!ENTITY dialog.title "PridaĹĄ pravidlo filtra"> -<!ENTITY basic.label "JednoduchĂ˝ náhÄľad"> -<!ENTITY type.filter.label "Blokovanie filtra"> -<!ENTITY types.label "AplikovaĹĄ na typy:"> -<!ENTITY shortpattern.warning "Vzor, ktorĂ˝ ste vloĹľili je prĂliš krátky, aby mohol byĹĄ optimalizovanĂ˝, mnoho takĂ˝chto schĂ©m mĂ´Ĺľe spomaliĹĄ prehliadanie. Odporúčame, aby ste vybrali dlhšà reĹĄazec pre tento filter."> -<!ENTITY collapse.yes.label "Ăno"> -<!ENTITY anchors.label "PrijaĹĄ vzor len:"> -<!ENTITY collapse.default.yes.label "PouĹľiĹĄ predvolenĂ© (áno)"> -<!ENTITY domainRestriction.help "Ĺ pecifikujte jednu alebo viac domĂ©n oddelenĂ˝ch znaÄŤkou "|", filter bude obmedzenĂ˝ len pre tieto domĂ©ny. Symbol "~" pred názvom domĂ©ny znamená, Ĺľe filter by nemal byĹĄ aplikovanĂ˝ na tejto domĂ©ne."> -<!ENTITY accept.label "PridaĹĄ filter"> -<!ENTITY options.label "MoĹľnosti"> -<!ENTITY disabled.warning "Adblock Plus je aktuálne vypnutĂ˝. MĂ´Ĺľete pridávaĹĄ filtre, ale tie nebudĂş aplikovanĂ© pokiaÄľ [link]nezapnete Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "&na zaÄŤiatku názvu domĂ©ny"> -<!ENTITY collapse.no.label "Nie"> -<!ENTITY selectAllTypes.label "VybraĹĄ všetko"> -<!ENTITY advanced.label "PokroÄŤilĂ˝ náhÄľad"> -<!ENTITY pattern.explanation "Vzor mĂ´Ĺľe byĹĄ nejaká ÄŤasĹĄ adresy, symbol * ako divoká karta. Filter ešte len bude aplikovanĂ˝ na adresy zodpovedajĂşce vzoru."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/filters.dtd deleted file mode 100644 index ed28642..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Všetky vaše vlastnĂ© filtre budĂş nahradenĂ© obsahom zo zvolenĂ©ho sĂşboru. Prajete si pokraÄŤovaĹĄ?"> -<!ENTITY slow.column "&VoÄľnĂ© filtre"> -<!ENTITY enabled.column "&ZapnutĂ©"> -<!ENTITY subscription.lastDownload.checksumMismatch "Zlyhalo, chybnĂ© prispĂ´sobenie kontrolnĂ©ho súčtu"> -<!ENTITY noFiltersInGroup.text "Zvolená skupiny je prázdna"> -<!ENTITY subscription.actions.label "Ăšlohy"> -<!ENTITY filter.selectAll.label "VybraĹĄ všetko"> -<!ENTITY backupButton.label "&Záloha a Obnova"> -<!ENTITY restore.minVersion.warning "Upozornenie: sĂşbor bol vytvorenĂ˝ novšou verziuo Adblock Plus. Mali by ste aktualizovaĹĄ na novšiu verziu predtĂ˝m, neĹľ obnovĂte z tohto sĂşboru."> -<!ENTITY restore.error "Ăšdaje sĂşborov nemĂ´Ĺľu byĹĄ spacovanĂ©, moĹľno to nie zálohovacĂ sĂşbor Adblock Plus?"> -<!ENTITY sort.ascending.label "TriediĹĄ od &A > Z"> -<!ENTITY sort.label "&TriediĹĄ podÄľa"> -<!ENTITY subscription.source.label "Zoznam filtrov"> -<!ENTITY hitcount.column "&PoÄŤĂtadlá"> -<!ENTITY noFilters.text "ZatiaÄľ nemáte Ĺľiadne vlastnĂ© filtre."> -<!ENTITY backup.custom.title "Len vlastnĂ© filtre"> -<!ENTITY subscription.external.label "AktualizovanĂ© inĂ˝m rozšĂrenĂm"> -<!ENTITY subscription.delete.label "ZmazaĹĄ"> -<!ENTITY noGroupSelected.text "MusĂte vybraĹĄ skupinu filtrov predtĂ˝m, neĹľ sa tieto filtre zobrazia."> -<!ENTITY filter.cut.label "Vystrihnúť"> -<!ENTITY restore.default.label "ObnoviĹĄ zálohu z ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Preberanie..."> -<!ENTITY subscriptions.tab.label "Odbery filtrov"> -<!ENTITY sort.descending.label "Trie&diĹĄ od Z > A"> -<!ENTITY filters.remove.warning "Naozaj chcete odstrániĹĄ všetky vybratĂ© filtre?"> -<!ENTITY filter.delete.label "OdstrániĹĄ"> -<!ENTITY addSubscriptionAdd.label "PridaĹĄ"> -<!ENTITY viewMenu.label "ZobraziĹĄ"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "ZrušiĹĄ"> -<!ENTITY subscription.enabled.label "ZapnutĂ©"> -<!ENTITY noSubscriptions.text "ZiataÄľ nie sĂş pridanĂ© Ĺľiadne odbery filtrov. Adblock Plus nebude blokovaĹĄ - niÄŤ bez filtrov, pouĹľite, prosĂm "PridaĹĄ odber filtra" pre - pridanie."> -<!ENTITY subscription.update.label "AktualizovaĹĄ filtre"> -<!ENTITY dialog.title "Nastavenia filtra"> -<!ENTITY addFilter.label "PridaĹĄ filt&er"> -<!ENTITY subscription.minVersion.warning "Odoberanie tohto filtra vyĹľaduje novšiu verziu Adblock Olus, mĂ´Ĺľete aktualizovaĹĄ na ostatnĂş verziu Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Zlyhanie, neplatná adresa"> -<!ENTITY backup.error "Pri zápise filtra do sĂşboru sa vyskytla chyba. Uistite sa, Ĺľe sĂşbor nie je chránenĂ˝ proti zapisovaniu alebo nie je pouĹľĂvanĂ˝ inou aplikáciou."> -<!ENTITY filter.moveUp.label "Posunúť hore"> -<!ENTITY addGroup.label "PridaĹĄ skupinu &filtrov"> -<!ENTITY filter.edit.label "UpraviĹĄ"> -<!ENTITY subscription.showHideFilters.label "ZobraziĹĄ/skryĹĄ filter"> -<!ENTITY acceptableAds2.label "Povol&iĹĄ niektorĂ© nevtieravĂ© reklamy"> -<!ENTITY addSubscriptionOther.label "PridaĹĄ inĂ© odoberania"> -<!ENTITY close.label "ZatvoriĹĄ"> -<!ENTITY sort.none.label "&NetriedenĂ©"> -<!ENTITY filter.actions.label "Ăšlohy filtrov"> -<!ENTITY filter.copy.label "KopĂrovaĹĄ"> -<!ENTITY filter.moveDown.label "Posunúť dole"> -<!ENTITY filter.resetHitCounts.label "ResetovaĹĄ štatistiku poÄŤĂtadla"> -<!ENTITY readMore.label "ZobraziĹĄ viac"> -<!ENTITY subscription.moveUp.label "Posunúť hore"> -<!ENTITY addSubscription.label "P&ridaĹĄ povolenie filtra"> -<!ENTITY subscription.homepage.label "Domovská stránka"> -<!ENTITY backup.complete.title "Všetky filtre a odbery"> -<!ENTITY restore.own.label "ObnoviĹĄ vlastnĂş zálohu"> -<!ENTITY restore.complete.warning "Všetky nastavenia filtrov budĂş nahradenĂ© obsahom zo zvolenĂ©ho sĂşboru. Prajete si pokraÄŤovaĹĄ?"> -<!ENTITY filters.tab.label "VlastnĂ© filtre"> -<!ENTITY backup.label "VytvoriĹĄ novĂş zálohu"> -<!ENTITY find.label "Náj&sĹĄ"> -<!ENTITY subscription.moveDown.label "Posunúť dole"> -<!ENTITY subscription.lastDownload.connectionError "Zlyhanie, sĹĄahovanie neĂşspešnĂ©"> -<!ENTITY subscription.lastDownload.success "ĂšspešnĂ©"> -<!ENTITY subscription.lastDownload.invalidData "Zlyhanie, neplatnĂ˝ zoznam filtrov"> -<!ENTITY filter.paste.label "PrilepiĹĄ"> -<!ENTITY subscription.disabledFilters.enable "Zapnúť vypnutĂ© filtre"> -<!ENTITY lasthit.column "Po&slednĂ˝ zápis"> -<!ENTITY subscription.editTitle.label "UpraviĹĄ názov"> -<!ENTITY subscription.disabledFilters.warning "NiektorĂ© filtre tohto odberu sĂş vypnutĂ©."> -<!ENTITY filter.column "Pravidlo &filtra"> -<!ENTITY subscription.lastDownload.label "PoslednĂ© prevzatie:"> -<!ENTITY viewList.label "ZobraziĹĄ zoznam"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/firstRun.properties deleted file mode 100644 index 6a3ce81..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=PrechádzaĹĄ sĂşkromne vypnutĂm sledovania - skryĹĄ vaše skladby z reklamnĂ© spoloÄŤnosti, ktorĂ© by sledovali kaĹľdĂ˝ váš pohyb. -firstRun_toggle_off=OFF -firstRun_feature_tracking=ZakázaĹĄ sledovanie -firstRun_feature_malware=Blokovanie malvĂ©ru -firstRun_title=Adblock Plus bol nainštalovanĂ˝ -firstRun_toggle_on=ON -firstRun_acceptableAdsExplanation=Radi by sme povzbudili webovĂ© stránky aby pouĹľĂvali jednoduchĂ© a nevtieravĂ© inzercie. To je dĂ´vod, preÄŤo sme zaviedli <a>prĂsne pravidlá</a> na identifikáciu prijateÄľnĂ© reklamy, ktorĂ© sĂş uvedenĂ© v ÄŤasti predvolenĂ© nastavenie. Ak si napriek tomu chcete blokovaĹĄ kaĹľdĂş reklamu mĂ´Ĺľete <a>vypnúť</a> toto za pár sekĂşnd. -firstRun_contributor_credits=Zásluhy autorov -firstRun_dataCorruptionWarning=Chcete stále vidieĹĄ tĂşto stránku? <a>Klikni tu!</a> -firstRun_acceptableAdsHeadline=OtravnĂ© reklamy budĂş teraz blokovanĂ© -firstRun_share=Povedzte svojim priateÄľom -firstRun_share_headline=<a>PomuoĹľte nám</a> urobiĹĄ web lepšĂm miestom -firstRun_feature_social_description=Automaticky zbaviĹĄ prehliadanie webu tlaÄŤidiel sociálnych mĂ©diĂ, ako naprĂklad Facebook podobne, ktorĂ© sĂş uvedenĂ© na webovĂ˝ch stránkach a sledujĂ vaše správanie. -firstRun_filterlistsReinitializedWarning=Zdá sa, Ĺľe problĂ©m spĂ´sobil, Ĺľe všetky filtre boli odstránenĂ© a nie sme schopnĂ obnoviĹĄ zálohu. Preto sme museli resetovaĹĄ vaše filtre a prijateÄľnĂ© nastavenia reklám. ProsĂm, skontrolujte filter zoznamov a prijateÄľnĂ© nastavenia reklamy v <a>Nastavenia Adblock Plus</a>. -firstRun_feature_malware_description=ZabezpeÄŤenie prezeranie pomocou blokovanie známych domĂ©n s malware. -firstRun_features=Adblock Plus mĂ´Ĺľe urobiĹĄ viac, ako blokovaĹĄ reklamy -firstRun_donate=prispejte -firstRun_donate_label=PodporĹĄe náš projekt -firstRun_feature_social=Odstránenie tlaÄŤidiel sociálnych mĂ©diĂ -firstRun_legacySafariWarning=PouĹľĂvate starĂş verziu Safari, ktorá nepodporuje Adblock Plus. Nemusel by pracovaĹĄ správne alebo by mohol narušiĹĄ pouĹľĂvateÄľskĂ© skĂşsenosti na niektorĂ˝ch webovĂ˝ch stránkach. DĂ´razne odporúčame aktualizovaĹĄ na Safari 6.1.1 alebo vyššà (k dispozĂcii pre Mac OS X 10,8 Mountain Lion), alebo Safari 7.0.1 a vyššie (pre OS X 10.9 Mavericks), alebo pouĹľiĹĄ najnovšiu verziu Mozilla Firefox, Google Chrome alebo Opera. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/global.properties deleted file mode 100644 index 2294515..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Na aktuálnej stránke nie sĂş blokovateÄľnĂ© poloĹľky -action3_tooltip=Kliknúť pre OtvoriĹĄ/ZavrieĹĄ Adblock Plus. -notification_antiadblock_title=SkryĹĄ cielenĂ© správy? -type_label_script=skript -filter_elemhide_nocriteria=Ĺ˝iadne kritĂ©ria neboli špecifikovanĂ© pre rozpoznanie prvku na skrytie -blockingGroup_title=Pravidlá blokovania -whitelisted_tooltip=Adblock Plus je aktĂvny, ale vypnutĂ˝ na aktuálnej stránke. -type_label_stylesheet=Ĺ tĂ˝ly -blocked_count_tooltip=?1? mimo ?2? -type_label_font=pĂsmo -type_label_popup=vyskakovacie okno -filter_regexp_tooltip=Tento filter je buÄŹ regulárny vĂ˝raz alebo je prĂliš krátky, aby mohol byĹĄ optimalizovanĂ˝. PrĂliš mnoho z tĂ˝chto filtrov mĂ´Ĺľu spomaliĹĄ prehliadanie. -action0_tooltip=Kliknúť na vyvolanie kontextovej ponuky, kliknutie prostrednĂ˝m pre Zapnúť/Vypnúť. -whitelisted_page=Adblock Plus bol zakázanĂ˝ pre aktuálnu stránku -remove_group_warning=Naozaj chcete odstrániĹĄ tĂşto skupinu? -action1_tooltip=Kliknúť pre OtvoriĹĄ/ZavrieĹĄ blokovateÄľnĂ© poloĹľky, kliknutie prostrednĂ˝m pre Zapnúť/Vypnúť. -type_label_xmlhttprequest=XML poĹľiadavka -active_tooltip=Adblock Plus je aktĂvny,?1? popis filtra(ov) a ?2? vlastnĂ˝ filtr(e) sa pouĹľĂva . -type_label_document=dokument -type_label_object_subrequest=podĹľiadosĹĄ predmetu -whitelistGroup_title=VĂ˝nimky pravidiel -disabled_tooltip=Adblock Plus je vypnutĂ˝. -filter_elemhide_duplicate_id=Len jedno ID prvku na skrytie mĂ´Ĺľe byĹĄ špecifikovanĂ© -type_label_object=predmet -action2_tooltip=Kliknúť pre otvorenie nastavenĂ, kliknutie prostrednĂ˝m pre Zapnúť/Vypnúť. -type_label_subdocument=rámec -clearStats_warning=Toto resetuje všetky štatistiky filtrov a vypne poÄŤĂtadlo. Chcete pokraÄŤovaĹĄ? -notification_antiadblock_message=Táto stránka bola známa zobrazenĂm cielenĂ˝ch správ pre pouĹľĂvateÄľa Adblock Plus. Chcete, aby Adblock Plus skryl cielenĂ© správy? -blocked_count_addendum=(tieĹľ biely zoznam: ?1?, skrytĂ˝: ?2?) -subscription_invalid_location=Umiestnenie zoznamu filtrov nemá platnĂş URL alebo platnĂ˝ názov sĂşboru. -type_label_image=obrázok -remove_subscription_warning=Naozaj si Ĺľeláte odstrániĹĄ toto povolenie? -type_label_other=inĂ˝ -mobile_menu_enable=ABP: Zapnúť -type_label_media=zvuk/video -mobile_menu_disable_site=ABP: Vypnúť na ?1? -elemhideGroup_title=Pravidlá skrytia prvkov -mobile_menu_enable_site=ABP: Zapnúť na ?1? -type_label_elemhide=skrytĂ˝ -newGroup_title=Nová skupina filtrov -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/overlay.dtd deleted file mode 100644 index fb1b256..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Ăno"> -<!ENTITY notification.button.no "&Nie"> -<!ENTITY sync.label "Syn&chronizovaĹĄ nastavenia Adblock Plus"> -<!ENTITY whitelist.site.label "Vypnúť na ?1?"> -<!ENTITY filters.label "&Nastavenia filtrov"> -<!ENTITY disable.label "Vypnúť všade"> -<!ENTITY objecttab.title "BlokovaĹĄ"> -<!ENTITY objecttab.tooltip "Kliknúť sem pre blokovanie tohto objektu s Adblock Plus"> -<!ENTITY menuitem.label "&Adblock Plus"> -<!ENTITY objecttabs.label "ZobraziĹĄ karty pre &Flash a Java"> -<!ENTITY sendReport.label "&OhlásiĹĄ problĂ©m na tejto stránke"> -<!ENTITY whitelist.page.label "Vypnúť len na tejto stránke"> -<!ENTITY context.image.label "Adblock obrázok"> -<!ENTITY counthits.label "P&oÄŤĂtadlo"> -<!ENTITY opensidebar.label "OtvoriĹĄ &blokovateÄľnĂ© poloĹľky"> -<!ENTITY notification.button.close "&ZatvoriĹĄ"> -<!ENTITY contribute.label "PrispieĹĄ na Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock rámec"> -<!ENTITY blocked.tooltip "BlokovaĹĄ poloĹľky na tejto stránke:"> -<!ENTITY hideplaceholders.label "Sk&ryĹĄ symboly blokovanĂ˝ch prvkov"> -<!ENTITY showinstatusbar.label "ZobraziĹĄ v &stavovom riadku"> -<!ENTITY sidebar.title "BlokovateÄľnĂ© poloĹľky na aktuálnej stránke"> -<!ENTITY options.label "&MoĹľnosti"> -<!ENTITY context.object.label "Adblock objekt"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Znovu zapnúť tĂşto stránku"> -<!ENTITY filters.tooltip "NajaktĂvnejšie filtre:"> -<!ENTITY closesidebar.label "ZatvoriĹĄ &blokovateÄľnĂ© poloĹľky"> -<!ENTITY showintoolbar.label "ZobraziĹĄ v pane&li nástrojov"> -<!ENTITY status.tooltip "Stav:"> -<!ENTITY context.media.label "Adblock Plus: BlokovaĹĄ audio/video"> -<!ENTITY subscription.update.label "AktualizovaĹĄ filtre"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sendReport.dtd deleted file mode 100644 index 0bd2884..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Späť"> -<!ENTITY issues.disabledgroups.description "NasledujĂşce odbery filtrov / skupiny filtrov sĂş vypnutĂ©, ešte je moĹľnĂ©, Ĺľe by mali mali účinok na tejto stránke:"> -<!ENTITY showData.label "ZobraziĹĄ Ăşdaje správy"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokuje pri&veÄľa"> -<!ENTITY issues.change.description "Nastavenie bolo zmenenĂ©. Opäť naÄŤĂtajte stránku na otestovanie zmien a potvrÄŹte správu ak problĂ©m nebol odstránenĂ˝."> -<!ENTITY email.label "Email:"> -<!ENTITY issues.openPreferences.label "OtvoriĹĄ nastavenia filtra"> -<!ENTITY sendPage.confirmation "Vaša správa bola uloĹľená. MĂ´Ĺľete ju sprĂstupniĹĄ na tejto adrese:"> -<!ENTITY copyLink.label "&KopĂrovaĹĄ odkaz správy"> -<!ENTITY issues.nofilters.description "Adblock Plus neblokuje niÄŤ na aktuálnej stránke. ProblĂ©m, ktorĂ˝ pozorujete pravdepodobne nesĂşvisĂ s Adblock Plus."> -<!ENTITY sendPage.knownIssue "ProblĂ©m, ktorĂ˝ ste ohlásili je pravdepodobne známy. Viac informáciĂ:"> -<!ENTITY typeSelector.other.description "Vyberte tĂşto moĹľnosĹĄ ak máte podozrenie na problĂ©m s Adblock Plus skĂ´r neĹľ na jeho filtre."> -<!ENTITY issues.disabledgroups.enable.label "Zapnúť odber filtra / skupinu filtrov"> -<!ENTITY typeWarning.override.label "Rozu&miem a chcem potvrdiĹĄ správu"> -<!ENTITY issues.disabled.enable.label "Zapnúť Adblock Plus"> -<!ENTITY update.fixed.description "Aktualizácie filtra odberov mĂ´Ĺľu vyriešiĹĄ problĂ©m, ktorĂ˝ ste nahlásili. ProsĂm, skĂşste stránku naÄŤĂtaĹĄ znova a skĂşste zadaĹĄ správu znovu, ak problĂ©m pretrváva."> -<!ENTITY anonymous.label "&AnonymnĂ˝ návrh"> -<!ENTITY reloadButton.label "&Opäť naÄŤĂtaĹĄ stránku"> -<!ENTITY recentReports.clear.label "Ods&trániĹĄ všetky správy"> -<!ENTITY typeSelector.description "Toto okno Vás prevedie krokmi potrebnĂ˝mi pre podanie hlásenia o chybe Adblock Plus. Najprv zvoÄľte typ problĂ©mu, ktorĂ˝ ste zistili na tejto stránke:"> -<!ENTITY screenshot.remove.label "Odst&rániĹĄ citlivĂ© Ăşdaje"> -<!ENTITY issues.ownfilters.description "NiektorĂ© filtre aplikovanĂ© na tejto stránke sĂş definovanĂ© pouĹľĂvateÄľom. Vypnite filtre, ktorĂ© by mohli spĂ´sobovaĹĄ problĂ©m:"> -<!ENTITY update.inProgress.description "Adblock Plus potrebuje aktualizovaĹĄ váš filter odberov, aby sa ubezpeÄŤil, ÄŤi problĂ©m uĹľ nie je vyriešenĂ˝. ÄŚakajte prosĂm"> -<!ENTITY sendPage.retry.label "PoslaĹĄ znova"> -<!ENTITY data.label "Ăš&daje správy:"> -<!ENTITY recentReports.label "Vaše nedávno potvrdenĂ© správy"> -<!ENTITY typeWarning.description "NaznaÄŤili ste, Ĺľe chcete ohlásiĹĄ všeobecnĂ˝ problĂ©m s Adblock Plus radšej ako problĂ©m s filtrami. Všimnite si, Ĺľe tieto otázky sa lepšie riešia na [link]fĂłrume Adblock Plus[/link]. Mali by ste pouĹľiĹĄ reportĂ©r problĂ©mov pre doplnenie existujĂşcej diskusie, inak si nikto nevšimne vašu správu skĂ´r, neĹľ ju poskytnete na danom odkaze. Automaticky vygenerovanĂ˝ odkaz bude poskytnutĂ˝ po potvrdenĂ správy."> -<!ENTITY issues.disabled.description "Adblock Plus je vypnutĂ˝, v danom stave nebude niÄŤ blokovaĹĄ."> -<!ENTITY attachExtensions.label "PriloĹľiĹĄ &zoznam aktĂvnych rozšĂrenĂ k tejto správe pre prĂpad, Ĺľe rozšĂrenie spĂ´sobuje tento problĂ©m"> -<!ENTITY issues.nosubscriptions.add.label "PridaĹĄ odber filtra"> -<!ENTITY issues.disabledfilters.enable.label "Zapnúť filter"> -<!ENTITY issues.override.label "Nasta&venie je správne, pokraÄŤovaĹĄ so správou"> -<!ENTITY issues.nosubscriptions.description "Neodvolávajte sa na odoberanĂ˝ predpripravenĂ˝ zoznam filtrov, ktorĂ˝ automaticky odstraĹuje neznámy obsah z webovej stránky."> -<!ENTITY typeSelector.falsePositive.description "TĂşto moĹľnosĹĄ vyberte, ak stránka postráda dĂ´leĹľitĂ˝ obsah, nesprávne sa zobrazuje alebo zlyháva funkÄŤnosĹĄ. MĂ´Ĺľete urÄŤiĹĄ, ÄŤi je Adblock Plus prĂÄŤinou problĂ©mu jeho doÄŤasnĂ˝m vypnutĂm."> -<!ENTITY typeSelector.other.label "I&nĂ© problĂ©my"> -<!ENTITY emailComment.label "Odporúčame vám zadaĹĄ platnĂş e-mailovĂş adresu, aby sme vás mohli kontaktovaĹĄ, ak sa vyskytnĂş otázky o vašej správe. TaktieĹľ nám to umoĹľnĂ rozpoznaĹĄ vaše prĂspevky a pripĂsaĹĄ im vyššiu prioritu."> -<!ENTITY issues.whitelist.remove.label "Zapnúť opäť Adblock Plus na tejto stránke"> -<!ENTITY outdatedSubscriptions.description "NasledujĂşci filter odberov nebol aktualizovanĂ˝ najmenej po dobu dvoch týždĹov. ProsĂm, aktualizujte tieto odbery pred predloĹľenĂm správy, problĂ©m uĹľ mĂ´Ĺľe byĹĄ vyriešenĂ˝."> -<!ENTITY dataCollector.description "PoÄŤkajte, prosĂm, kĂ˝m Adblock Plus zĂska poĹľadovanĂ© Ăşdaje."> -<!ENTITY sendButton.label "Pos&laĹĄ správu"> -<!ENTITY comment.label "Komentá&r (nepovinnĂ©):"> -<!ENTITY sendPage.errorMessage "Pokus o zaslanie správy zlyhal s kĂłdom chyby "?1?". PresvedÄŤte sa, ÄŤi ste pripojenĂ˝ na internet a skĂşste to znova. Ak problĂ©m pretrváva, poĹľiadajte o pomoc na [link]fĂłrume Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "ZobraziĹĄ nedávno potvrdenĂ© správy"> -<!ENTITY commentPage.heading "VloĹľiĹĄ komentár"> -<!ENTITY update.start.label "SpustiĹĄ aktualizáciu teraz"> -<!ENTITY issues.disabledfilters.description "NasledujĂşce filtre sĂş vypnutĂ©, ešte je moĹľnĂ©, Ĺľe by mali mali účinok na tejto stránke:"> -<!ENTITY screenshot.description "Rovnaká stránka vyzerá rozdielne pre rĂ´znych ÄľudĂ. MĂ´Ĺľe nám pomĂ´cĹĄ pochopiĹĄ problĂ©m, ak priloĹľĂte k správe screenshot. MĂ´Ĺľete odstrániĹĄ ÄŤasĹĄ s citlivĂ˝mi Ăşdajmi, ak oznaÄŤĂte len ÄŤasĹĄ, kde je problĂ©m zrejmĂ˝. Kliknite na tlaÄŤidlo a vyberte ÄŤasĹĄ obrázka."> -<!ENTITY screenshot.attach.label "Pripo&jiĹĄ obrázok stránky ku správu"> -<!ENTITY issues.whitelist.description "Adblock Plus je na stránke, ktorĂş chcete ohlásiĹĄ, vypnutĂ˝. Zapnite ho, prosĂm, znova a opäť naÄŤĂtajte stránku skĂ´r, neĹľ potvrdĂte hlásenie."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus neblokuje &reklamy"> -<!ENTITY typeSelector.heading "ZvoÄľte typ problĂ©mu"> -<!ENTITY anonymity.warning "Nebudeme schopnĂ˝ sa k Vás kontaktovaĹĄ a vašej správe pravdepodobne priradĂme nižšiu prioritu."> -<!ENTITY wizard.title "Hlásenie problĂ©mov"> -<!ENTITY issues.ownfilters.disable.label "Vypnúť filter"> -<!ENTITY commentPage.description "TextovĂ© pole nižšie vám umoĹľĹuje vloĹľiĹĄ komentár pre vysvetlenie danĂ©ho problĂ©mu. Tento krok je nepovinnĂ˝, ale odporúčame ho ak problĂ©m nie je jasnĂ˝. MĂ´Ĺľete tieĹľ posĂşdiĹĄ správu skĂ´r, neĹľ ju odošlete."> -<!ENTITY comment.lengthWarning "Dĺžka váško komentára prevyšuje 1000 znakov. Bude odoslanĂ˝ch len prvĂ˝ch 1000 znakov."> -<!ENTITY typeSelector.falseNegative.description "Vyberte tĂşto moĹľnosĹĄ ak sa reklamy zobrazujĂş napriek zapnutĂ©mu Adblock Plus."> -<!ENTITY sendPage.waitMessage "PoÄŤkajte, prosĂm, kĂ˝m Adblock Plus potvrdĂ vašu správu."> -<!ENTITY dataCollector.heading "Vitajte v hlásenĂ problĂ©mov"> -<!ENTITY screenshot.heading "PripojiĹĄ screenshot"> -<!ENTITY sendPage.heading "PoslaĹĄ správu"> -<!ENTITY issues.subscriptionCount.description "Zdá sa, Ĺľe máte prĂliš veÄľa odberov filtrov. Toto nastavenie nie je odporúčanĂ©, pretoĹľe pravdepodobnosĹĄ vĂ˝skytu problĂ©mu je vyššia. TaktieĹľ nemĂ´Ĺľeme prijaĹĄ vašu správu o problĂ©me, pretoĹľe nie je jasnĂ©, ktorĂ˝ autor odberu filtra potrebuje prijaĹĄ opatrenie. ProsĂm, odstráĹte všetky odbery, okrem naozaj nevyhnutnĂ˝ch, a otestujte, ÄŤi problĂ©m pretrváva."> -<!ENTITY screenshot.mark.label "O&znaÄŤiĹĄ problĂ©m"> -<!ENTITY privacyPolicy.label "Zásady ochrany sĂşkromia"> -<!ENTITY issues.description "Adblock Plus zistil problĂ©m s vašou konfiguráciou, ktorĂ˝ by mohol byĹĄ zodpovednĂ˝ za danĂ˝ problĂ©m alebo robĂ zistenie problĂ©mu ĹĄažšĂm."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sidebar.dtd deleted file mode 100644 index f9e241c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "OhraniÄŤenie flashovĂ˝ch poloĹľiek"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "OtvoriĹĄ na novej karte"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "Zdroj filtra:"> -<!ENTITY noitems.label "NeblokovateÄľnĂ© poloĹľky"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "VeÄľkosĹĄ:"> -<!ENTITY reattach.label "Znovu pripojiĹĄ"> -<!ENTITY search.label "&HÄľadaĹĄ:"> -<!ENTITY docDomain.thirdParty "(tretia strana)"> -<!ENTITY filterSource.label "Zdroj filtra"> -<!ENTITY tooltip.docDomain.label "Zdroj dokumentu:"> -<!ENTITY context.copy.label "KopĂrovaĹĄ adresu poloĹľiek"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Vypnúť filter ?1?"> -<!ENTITY context.copyFilter.label "KopĂrovaĹĄ filter"> -<!ENTITY context.block.label "BlokovaĹĄ tĂşto poloĹľku"> -<!ENTITY context.enablefilter.label "Znovu zapnúť filter ?1?"> -<!ENTITY detach.label "OddeliĹĄ"> -<!ENTITY whitelisted.label "PovolenĂ© stránky"> -<!ENTITY context.disablefilteronsite.label "Vypnúť tento filter na ?1?"> -<!ENTITY detached.title "Adblock Plus: BlokovateÄľnĂ© poloĹľky (oddelenĂ˝)"> -<!ENTITY docDomain.firstParty "(prvá strana)"> -<!ENTITY tooltip.type.whitelisted "(povolenĂ˝)"> -<!ENTITY tooltip.filter.label "PlatnĂ˝ filter:"> -<!ENTITY tooltip.filter.disabled "(vypnutĂ˝)"> -<!ENTITY context.editfilter.label "UpraviĹĄ filter v skutoÄŤnosti"> -<!ENTITY tooltip.type.blocked "(blokovanĂ˝)"> -<!ENTITY size.label "VeÄľkosĹĄ"> -<!ENTITY context.whitelist.label "PridaĹĄ vĂ˝nimku pre poloĹľku"> -<!ENTITY context.selectAll.label "VybraĹĄ všetko"> -<!ENTITY state.label "Stav"> -<!ENTITY docDomain.label "Zdroj dokumentu"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/subscriptionSelection.dtd deleted file mode 100644 index de251ca..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sk/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "PridaĹĄ tieĹľ filter &odberu "?1?""> -<!ENTITY list.download.failed "Adblock Plus zlyhal pri zĂskavanĂ zoznamu odberov."> -<!ENTITY list.download.retry "SkĂşsiĹĄ znova"> -<!ENTITY title.label "Ná&zov povolenia:"> -<!ENTITY list.download.website "ZobraziĹĄ webovĂş stránku"> -<!ENTITY supplementMessage "Tento filter odberu je urÄŤenĂ˝ pre pouĹľitie s filtrom odberu "?1?"ktorĂ˝ ešte nepouĹľĂvate."> -<!ENTITY viewList.label "ZobraziĹĄ filtre"> -<!ENTITY visitHomepage.label "NavštĂviĹĄ domovskĂş stránku"> -<!ENTITY addSubscription.label "PridaĹĄ odber"> -<!ENTITY dialog.title "Odoberanie Add Adblock Plus filtrov"> -<!ENTITY location.label "U&miestnenie zoznamu filtrov:"> -<!ENTITY fromWeb.description "ProsĂm, potvrÄŹte, Ĺľe chcete pridaĹĄ tento filter odberu."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/composer.dtd deleted file mode 100644 index 4290a58..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "na &koncu naslova"> -<!ENTITY domainRestriction.label "Omeji na &domeno:"> -<!ENTITY collapse.default.no.label "Uporabi privzeto (ne)"> -<!ENTITY firstParty.label "Samo &prve stranke"> -<!ENTITY preferences.label "Poka&Ĺľi obstojeÄŤe filtre ..."> -<!ENTITY pattern.label "Išči vzorec"> -<!ENTITY thirdParty.label "Samo zu&nanje stranke"> -<!ENTITY filter.label "Nov &filter:"> -<!ENTITY collapse.label "St&rni blokirane:"> -<!ENTITY match.warning "Vzorec, ki ste ga vnesli, se ne ujema z naslovom, ki ga Ĺľelite blokirati in zato ne bo vplival nanj."> -<!ENTITY anchor.start.label "na &zaÄŤetku naslova"> -<!ENTITY matchCase.label "Razlikuj velike/male &ÄŤrke"> -<!ENTITY custom.pattern.label "Po &meri:"> -<!ENTITY unselectAllTypes.label "NiÄŤ ne izberi"> -<!ENTITY type.whitelist.label "Pravi&lo izjem"> -<!ENTITY regexp.warning "Vneseni vzorec bo obravnavan kot regularni izraz. Ĺ tevilni regularni izrazi lahko upoÄŤasnijo vaše brskanje. ÄŚe ne nameravate uporabljati regularnih izrazov, dodajte simbol * na konec vzorca."> -<!ENTITY dialog.title "Dodaj pravilo filtra Adblock Plus"> -<!ENTITY basic.label "Osnovni pogled"> -<!ENTITY type.filter.label "Filter &blokade"> -<!ENTITY types.label "Uporabi za vrste:"> -<!ENTITY shortpattern.warning "Vzorec, ki ste ga vnesli, je prekratek za optimizacijo, številni tovrstni vzorci lahko upoÄŤasnijo vaše brskanje. PriporoÄŤamo, da izberete daljši niz za ta filter."> -<!ENTITY collapse.yes.label "Da"> -<!ENTITY anchors.label "Sprejmi le vzorec:"> -<!ENTITY collapse.default.yes.label "Uporabi privzeto (da)"> -<!ENTITY domainRestriction.help "Navedite eno ali veÄŤ domen, loÄŤenih s simbolom "|", filter bo veljal le za te domene. Simbol "~" pred imenom domene pomeni, da filter za to domeno ne sme veljati."> -<!ENTITY accept.label "Dodaj filter"> -<!ENTITY options.label "MoĹľnosti"> -<!ENTITY disabled.warning "Adblock Plus je trenutno onemogoÄŤen. Ĺ e vedno lahko dodajate filtre, vendar ne bodo veljali, ÄŤe ne [link]omogoÄŤite Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "na &zaÄŤetku imena domene"> -<!ENTITY collapse.no.label "Ne"> -<!ENTITY selectAllTypes.label "Izberi vse"> -<!ENTITY advanced.label "Napredni pogled"> -<!ENTITY pattern.explanation "Vzorec je lahko kateri koli del naslova, simbol * velja kot poljuben znak. Filter bo le za naslove, ki ustrezajo vzorcu."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/filters.dtd deleted file mode 100644 index 68220ee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "Vsi tvoji filtri po meri bodo zamenjani z vsebino izbrane datoteke. Ĺ˝elite zagnati proces?"> -<!ENTITY slow.column "Po&ÄŤasni filtri"> -<!ENTITY enabled.column "O&mogoÄŤeno"> -<!ENTITY subscription.lastDownload.checksumMismatch "Neuspešno, kontrolna vsota se ne ujema"> -<!ENTITY noFiltersInGroup.text "Izbrana skupina je prazna."> -<!ENTITY subscription.actions.label "Dejanja"> -<!ENTITY filter.selectAll.label "Izberi vse"> -<!ENTITY backupButton.label "&Varnostno kopiraj in obnovi"> -<!ENTITY restore.minVersion.warning "Opozorilo: datoteka je bila ustvarjena z novejšo razliÄŤico Adblock Plus. Pred obnovitvijo iz te datoteke, najprej posodobi na najnovejšo razliÄŤico Adblock Plus."> -<!ENTITY restore.error "Podatkov datoteke ni bilo mogoÄŤe obdelat. Je datoteka res varnostna kopija programa Adblock Plus?"> -<!ENTITY sort.ascending.label "od &A > Z"> -<!ENTITY sort.label "Raz&vrsti"> -<!ENTITY subscription.source.label "Seznam filtrov"> -<!ENTITY hitcount.column "Za&detki"> -<!ENTITY noFilters.text "Svojega lastnega filtra še nimaš."> -<!ENTITY backup.custom.title "Samo filtri po meri"> -<!ENTITY subscription.external.label "Posodobljepreko druge razširitve"> -<!ENTITY subscription.delete.label "Izbriši"> -<!ENTITY noGroupSelected.text "Preden se filtre lahko prikaĹľe moraš izbrati filter skupino."> -<!ENTITY filter.cut.label "IzreĹľi"> -<!ENTITY restore.default.label "Obnovite varnostno kopijo z dne ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Prenos s streĹľnika ..."> -<!ENTITY subscriptions.tab.label "NaroÄŤnine na filtre"> -<!ENTITY sort.descending.label "od &Z > A"> -<!ENTITY filters.remove.warning "Ĺ˝elite res odstraniti vse izbrane filtre?"> -<!ENTITY filter.delete.label "Izbriši"> -<!ENTITY addSubscriptionAdd.label "Dodaj"> -<!ENTITY viewMenu.label "Pogled"> -<!ENTITY subscription.lastDownload.unknown "Ni na voljo"> -<!ENTITY addSubscriptionCancel.label "PrekliÄŤi"> -<!ENTITY subscription.enabled.label "OmogoÄŤeno"> -<!ENTITY noSubscriptions.text "Zaenkrat nimaš naroÄŤenega še nobenega filtra. Adblock Plus ne more -blokirati niÄŤesar brez filtrov, zato uporabi opcijo "Dodaj naroÄŤnino za filter" -in dodaj vsaj en filter."> -<!ENTITY subscription.update.label "Posodobi filtre"> -<!ENTITY dialog.title "Nastavitve filtrov za Adblock Plus"> -<!ENTITY addFilter.label "&Dodaj filter"> -<!ENTITY subscription.minVersion.warning "Ta filter potrebuje novejšo verzijo Adblock Plusa. Nadgradi Adblock plus z najnovešo razliÄŤico."> -<!ENTITY subscription.lastDownload.invalidURL "Neuspešno, ni veljaven naslov"> -<!ENTITY backup.error "Napaka pri zapisu filtrov v datoteko. Poskrbite, da datoteka ni zaščitena pred pisanjem ali v uporabi nekega drugega programa."> -<!ENTITY filter.moveUp.label "Premakni navzgor"> -<!ENTITY addGroup.label "Dodaj &skupino filtrov"> -<!ENTITY filter.edit.label "Uredi"> -<!ENTITY subscription.showHideFilters.label "PokaĹľi/skrij filtre"> -<!ENTITY acceptableAds2.label "Dovol&i nekatere nevsiljive oglase"> -<!ENTITY addSubscriptionOther.label "Dodaj novo naroÄŤnino"> -<!ENTITY close.label "Zapri"> -<!ENTITY sort.none.label "Nerazvr&ščeno"> -<!ENTITY filter.actions.label "Dejanja filtra"> -<!ENTITY filter.copy.label "Kopiraj"> -<!ENTITY filter.moveDown.label "Premakni navzdol"> -<!ENTITY filter.resetHitCounts.label "Ponastavi statistiko zadetkov"> -<!ENTITY readMore.label "Preberi veÄŤ"> -<!ENTITY subscription.moveUp.label "Premakni navzgor"> -<!ENTITY addSubscription.label "Dodaj &naroÄŤnino filtra"> -<!ENTITY subscription.homepage.label "DomaÄŤa stran"> -<!ENTITY backup.complete.title "Vsi filtri in naroÄŤnine"> -<!ENTITY restore.own.label "Obnovi lastno varnostno kopijo"> -<!ENTITY restore.complete.warning "Vsi nastavitve tvojih filtrov bodo zamenjane z vsebino izbrane datoteke. Ĺ˝elite zagnati proces?"> -<!ENTITY filters.tab.label "Filtri po meri"> -<!ENTITY backup.label "Ustvari novo varnostno kopijo"> -<!ENTITY find.label "Najdi"> -<!ENTITY subscription.moveDown.label "Premakni navzdol"> -<!ENTITY subscription.lastDownload.connectionError "Neuspešno, napaka prenosa"> -<!ENTITY subscription.lastDownload.success "Uspešno"> -<!ENTITY subscription.lastDownload.invalidData "Neuspešno, ni veljaven seznam filtrov"> -<!ENTITY filter.paste.label "Prilepi"> -<!ENTITY subscription.disabledFilters.enable "OmogoÄŤi onemogoÄŤene filtre"> -<!ENTITY lasthit.column "Zad&nji zadetek"> -<!ENTITY subscription.editTitle.label "Uredi naslov"> -<!ENTITY subscription.disabledFilters.warning "V tej naroÄŤnini so nekateri filtri onemogoÄŤeni."> -<!ENTITY filter.column "Pravilo &filtra"> -<!ENTITY subscription.lastDownload.label "Zadnji prenos:"> -<!ENTITY viewList.label "PokaĹľi seznam"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/firstRun.properties deleted file mode 100644 index d749c77..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Brskajte zasebno z onemogoÄŤanjem sledenja - zabrišite svoje sledi oglaševalskim agencijam, ki vam sledijo na vsakem koraku. -firstRun_toggle_off=IZKLOP -firstRun_feature_tracking=OnemogoÄŤite sledenje -firstRun_feature_malware=Blokiranje zlonamernih spletnih mest -firstRun_title=Adblock Plus je bil nameščen -firstRun_toggle_on=VKLOP -firstRun_acceptableAdsExplanation=Ĺ˝elimo spodbujati uporabo preprostih, nevsiljivih oglasov na spletnih straneh. Zato smo vpeljali <a>stroge kriterije</a> prepoznavanja sprejemljivih oglasov, ki so privzeto prikazani. ÄŚe vseeno Ĺľelite blokirati vse oglase, jih lahko <a>onemogoÄŤite</a> v nekaj sekundah. -firstRun_contributor_credits=Krediti sodelavcev -firstRun_dataCorruptionWarning=Se vam ta stran še vedno prikazuje? <a>Kliknite tukaj!</a> -firstRun_acceptableAdsHeadline=NadleĹľni oglasi bodo zdaj blokirani -firstRun_share=Povejte svojim prijateljem -firstRun_share_headline=<a>Podajte nam roko</a> v ustvarjanju boljšega spleta -firstRun_feature_social_description=Med brskanjem se samodejno izognite gumbom socialnih medijev, kot je Facebookov VšeÄŤ mi je, ki se pojavljajo na spletnih straneh in sledijo vašim navadam brskanja. -firstRun_filterlistsReinitializedWarning=OÄŤitno so bili zaradi teĹľave vsi filtri odstranjeni in varnostne kopije ni bilo mogoÄŤe obnoviti. Zato smo ponastavili vaše nastavitve filtrov in dovoljenih oglasov. Prosimo, preverite svoj seznam filtrov in nastavitve dovoljenih oglasov v <a>nastavitvah za Adblock Plus</a>. -firstRun_feature_malware_description=Brskajte po spletu varneje, tako da blokirate znane domene z zlonamerno programsko opremo. -firstRun_features=Adblock Plus zmore veÄŤ kot le blokirati oglase -firstRun_donate=prispevajte -firstRun_donate_label=Podprite naš projekt -firstRun_feature_social=Odstranite gumbe socialnih medijev -firstRun_legacySafariWarning=Uporabljate staro razliÄŤico Safarija, ki je Adblock Plus ne podpira. Morda ne bo pravilno deloval ali bo poslabšal uporabniško izkušnjo na nekaterih spletnih straneh. MoÄŤno priporoÄŤamo, da nadgradite na Safari 6.1.1 ali novejšega (na OS X 10.8 Mountain Lion), Safari 7.0.1 ali novejšega (na OS X 10.9 Mavericks), ali da uporabljate najnovejšo razliÄŤico Mozille Firefox, Google Chroma ali Opere. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/global.properties deleted file mode 100644 index e612a82..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Na trenutni strani ni elementov blokad -action3_tooltip=Kliknite za vkljuÄŤitev/izkljuÄŤitev Adblock Plus. -notification_antiadblock_title=Skrijem ciljana sporoÄŤila? -type_label_script=skript -filter_elemhide_nocriteria=Za razpoznavo elementa, ki naj bo skrit, ni navedenih pogojev -blockingGroup_title=Pravila blokiranja oglasov -whitelisted_tooltip=Adblock Plus je aktiven, vendar je za trenutno stran izkljuÄŤen. -type_label_stylesheet=predlogo strani -blocked_count_tooltip=?1? od ?2? -type_label_font=pisava -type_label_popup=pojavno okno -filter_regexp_tooltip=Ta filter je regularni izraz ali pa je prekratek za optimizacijo. PreveÄŤ filtrov lahko upoÄŤasni brskanje. -action0_tooltip=Kliknite za pojavni meni, s srednjim klikom vkljuÄŤite/izkljuÄŤite. -whitelisted_page=Za trenutno stran je bil Adblock Plus izkljuÄŤen -remove_group_warning=ResniÄŤno Ĺľelite odstraniti to skupino? -action1_tooltip=Kliknite za odprtje/zaprtje blokiranih elementov, s srednjim klikom vkljuÄŤite/izkljuÄŤite. -type_label_xmlhttprequest=Zahteva XML -active_tooltip=Adblock Plus je aktiven, ?1? naroÄŤnine na filtre in ?2? filtri po meri so v rabi. -type_label_document=dokument -type_label_object_subrequest=podzahteva predmeta -whitelistGroup_title=Pravila izjem -disabled_tooltip=Adblock Plus je izkljuÄŤen. -filter_elemhide_duplicate_id=Navedete lahko le eno identiteto elementa, ki naj bo skrit -type_label_object=predmet -action2_tooltip=Kliknite za nastavitve, s srednjim klikom vkljuÄŤite/izkljuÄŤite. -type_label_subdocument=okvir -clearStats_warning=S tem boste ponastavili vso statistiko zadetkov filtra in onemogoÄŤili štetje zadetkov filtra. Ĺ˝elite nadaljevati? -notification_antiadblock_message=Ta stran uporabnikom prikazuje ciljana sporoÄŤila. Ĺ˝elite, da Adblock Plus skrije ta sporoÄŤila? -blocked_count_addendum=(prav tako prikriti: ?1?, skriti: ?2?) -subscription_invalid_location=Mesto seznama filtrov ni niti veljaven URL niti veljavno ime datoteke. -type_label_image=sliko -remove_subscription_warning=Ĺ˝elite res odpovedati naroÄŤnino? -type_label_other=drugo -mobile_menu_enable=ABP: omogoÄŤi -type_label_media=zvok/video -mobile_menu_disable_site=ABP: onemogoÄŤi za ?1? -elemhideGroup_title=Pravila skrivanja elementov -mobile_menu_enable_site=ABP: omogoÄŤi za ?1? -type_label_elemhide=skrito -newGroup_title=Nova skupina filtrov -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/overlay.dtd deleted file mode 100644 index fabef17..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Da"> -<!ENTITY notification.button.no "&Ne"> -<!ENTITY sync.label "Sin&hroniziraj nastavitve Adblock Plus"> -<!ENTITY whitelist.site.label "OnemogoÄŤi na ?1?"> -<!ENTITY filters.label "Nastavitve &filtra"> -<!ENTITY disable.label "OnemogoÄŤi povsod"> -<!ENTITY objecttab.title "Blokiraj"> -<!ENTITY objecttab.tooltip "Kliknite sem za blokiranje tega predmeta z Adblock Plus"> -<!ENTITY menuitem.label "Ad&block Plus"> -<!ENTITY objecttabs.label "PokaĹľi &zavihke za Flash in Javo"> -<!ENTITY sendReport.label "&Javite teĹľavo na tej strani"> -<!ENTITY whitelist.page.label "OnemogoÄŤi samo na tej strani"> -<!ENTITY context.image.label "Adblock - slike"> -<!ENTITY counthits.label "Ĺ tej za&detke filtra"> -<!ENTITY opensidebar.label "Odpri &elemente blokad"> -<!ENTITY notification.button.close "&Zapri"> -<!ENTITY contribute.label "Sodelujte v Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock - okviri"> -<!ENTITY blocked.tooltip "Blokirani elementi na tej strani:"> -<!ENTITY hideplaceholders.label "Skrij ograde &blokoranih elementov"> -<!ENTITY showinstatusbar.label "PokaĹľi &v vrstici stanja"> -<!ENTITY sidebar.title "Elementi blokad na trenutni strani"> -<!ENTITY options.label "Mo&Ĺľnosti"> -<!ENTITY context.object.label "Adblock - predmeti"> -<!ENTITY context.removeWhitelist.label "Adblock Plus - ponovno omogoÄŤi na tej strani"> -<!ENTITY filters.tooltip "Najbolj aktivni filtri:"> -<!ENTITY closesidebar.label "Zapri &elemente blokad"> -<!ENTITY showintoolbar.label "Po&kaĹľi v orodni vrstici"> -<!ENTITY status.tooltip "Stanje:"> -<!ENTITY context.media.label "Adblock Plus: Blokiraj zvok/video"> -<!ENTITY subscription.update.label "Posodobi filtre"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sendReport.dtd deleted file mode 100644 index 47ebf1b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sendReport.dtd +++ /dev/null @@ -1,70 +0,0 @@ -<!ENTITY screenshot.undo.label "Ra&zveljavi"> -<!ENTITY issues.disabledgroups.description "Naslednje naroÄŤnine na filtre/skupine filtrov so onemogoÄŤene, ÄŤeprav lahko vplivajo na prikaz te strani:"> -<!ENTITY showData.label "PokaĹľi podatke poroÄŤila"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus bloki&ra preveÄŤ stvari"> -<!ENTITY issues.change.description "Vaša konfiguracija je bila spremenjena. Ponovno naloĹľite stran in preizkusite teĹľave ter pošljite poroÄŤilo, ÄŤe se s spremembami teĹľava ni odpravila."> -<!ENTITY email.label "E-&pošta:"> -<!ENTITY issues.openPreferences.label "Odpri nastavitve filtra"> -<!ENTITY sendPage.confirmation "Vaše poroÄŤilo je shranjeno. Do njega lahko dostopate na naslednjem naslovu:"> -<!ENTITY copyLink.label "Kopiraj po&vezavo poroÄŤila"> -<!ENTITY issues.nofilters.description "Adblock Plus ne blokira niÄŤesar na trenutni strani. TeĹľava, ki jo zaznavate, morda ni povezana z Adblock Plus."> -<!ENTITY sendPage.knownIssue "TeĹľava, ki ste jo javili, je najbrĹľ Ĺľe znana. VeÄŤ podatkov:"> -<!ENTITY typeSelector.other.description "Izberite to moĹľnost, ÄŤe sumite na teĹľavo v Adblock Plus in ne v njegovih filtrih."> -<!ENTITY issues.disabledgroups.enable.label "OmogoÄŤi naroÄŤnino na filter / skupino filtrov"> -<!ENTITY typeWarning.override.label "Razumem in &Ĺľelim vseeno oddati poroÄŤilo"> -<!ENTITY issues.disabled.enable.label "OmogoÄŤi Adblock Plus"> -<!ENTITY update.fixed.description "Posodobitev filtra je najverjetneje rešila problem, -o katerem ste poroÄŤali. OsveĹľite stran in poskusite znova. ÄŚe -se bo teĹľava ponovila, znova kliknite PoroÄŤaj."> -<!ENTITY anonymous.label "&Anonimna oddaja"> -<!ENTITY reloadButton.label "Po&novno naloĹľi stran"> -<!ENTITY recentReports.clear.label "O&dstrani vsa poroÄŤila"> -<!ENTITY typeSelector.description "To okno vas vodi po korakih do oddaje poroÄŤila o teĹľavi z Adblock Plus. Najprej izberite vrsto teĹľave, s katero ste se sreÄŤali na tej strani:"> -<!ENTITY screenshot.remove.label "Odstrani o&bÄŤutljive podatke"> -<!ENTITY issues.ownfilters.description "Nekateri filtri, uporabljeni na tej strani, so uporabniško doloÄŤeni. OnemogoÄŤite filtre, ki so lahko krivi za to teĹľavo:"> -<!ENTITY update.inProgress.description "Adblock mora posodobiti naroÄŤene filtre, da zagotovi, -da problem ni bil Ĺľe rešen. Prosim poÄŤakajte ..."> -<!ENTITY sendPage.retry.label "Pošlji znova"> -<!ENTITY data.label "Podatki poroÄŤila:"> -<!ENTITY recentReports.label "Vaša nedavno poslana poroÄŤila"> -<!ENTITY typeWarning.description "Nakazali ste, da Ĺľelite poroÄŤati o splošni teĹľavi z Adblock Plus, ne pa o teĹľavi s filtri. Upoštevajte, da je o takšnih teĹľavah najbolje poroÄŤati na [link]forumu Adblock Plus[/link]. PoroÄŤanje o teĹľavah uporabite le za podporo obstojeÄŤe razprave, saj sicer nihÄŤe ne bo opazil vašega poroÄŤila, razen ÄŤe ne podate povezavo nanj. Samodejno ustvarjena povezava bo na voljo po pošiljanju poroÄŤila."> -<!ENTITY issues.disabled.description "Adblock Plus je onemogoÄŤe, v trenutnem stanju ne more blokirati niÄŤesar."> -<!ENTITY attachExtensions.label "PoroÄŤi&lu priloĹľite seznam aktivnih razširitev, ÄŤe je vzrok teĹľave spor z dodatkom"> -<!ENTITY issues.nosubscriptions.add.label "Dodaj naroÄŤnino na filter"> -<!ENTITY issues.disabledfilters.enable.label "OmogoÄŤi filter"> -<!ENTITY issues.override.label "Kon&figuracija je pravilna, nadaljuj s poroÄŤilom"> -<!ENTITY issues.nosubscriptions.description "Kot kaĹľe, niste naroÄŤeni na noben seznam filtrov, ki samodejno odstranijo neĹľelene vsebine s spletnih strani."> -<!ENTITY typeSelector.falsePositive.description "Izberite to moĹľnost, ÄŤe strani manjka pomembna vsebina, ÄŤe se prikaĹľe nepravilno ali ne deluje pravilno. DoloÄŤite lahko, ali je Adblock Plus kriv teĹľav, tako da ga zaÄŤasno izkljuÄŤite."> -<!ENTITY typeSelector.other.label "Druga teĹľava"> -<!ENTITY emailComment.label "Bilo bi dobro, da vneseš veljaven email, tako da se na vas lahko obrnemo, ÄŤe bodo obstajala vprašanja glede poroÄŤila. Pravtako nam omogoÄŤa prepoznati vaše prispevke in tako laĹľje doloÄŤiti prioriteto višje."> -<!ENTITY issues.whitelist.remove.label "Ponovno omogoÄŤi Adblock Plus na tej strani"> -<!ENTITY outdatedSubscriptions.description "Ta filter ni bil posodobljen vsaj dva tedna. -Preden pošljete poroÄŤilo, posodobite vse naroÄŤene fitre, -saj je morda problem Ĺľe rešen."> -<!ENTITY dataCollector.description "PoÄŤakajte nekaj trenutkov, da Adblock Plus zbere potrebne podatke."> -<!ENTITY sendButton.label "Po&šlji poroÄŤilo"> -<!ENTITY comment.label "&Komentar (neobvezno):"> -<!ENTITY sendPage.errorMessage "Poskus pošiljanja poroÄŤila je bil neuspešen s kodo napake "?1?". Zagotovite, da ste povezani v splet in poskusite znova. ÄŚe teĹľave ni konec, poiščite pomoÄŤ na [link]forumu Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "PrikaĹľi nedavno poslana poroÄŤila"> -<!ENTITY commentPage.heading "Vnesite komentar"> -<!ENTITY update.start.label "ZaÄŤni s posodobitvijo zdaj"> -<!ENTITY issues.disabledfilters.description "Naslednji filtri so onemogoÄŤeni, ÄŤeprav lahko vplivajo na prikaz te strani:"> -<!ENTITY screenshot.description "Isto stran lahko razliÄŤni uporabniki vidijo drugaÄŤe. VÄŤasih pomaga, ÄŤe poroÄŤilu pripnete slikovni posnetek strani. Odstranite lahko dele strani z zasebnimi podatki, pa tudi oznaÄŤite obmoÄŤja, kjer se teĹľava opazi. Kliknite ustrezni gumb in izberite del slike z miško."> -<!ENTITY screenshot.attach.label "PoroÄŤilu priloĹľi &sliko strani"> -<!ENTITY issues.whitelist.description "Adblock Plus je trenutno na strani, o kateri poroÄŤate, onemogoÄŤen. OmogoÄŤite ga in ponovno naloĹľite stran, preden pošljete poroÄŤilo o teĹľavi."> -<!ENTITY typeSelector.falseNegative.label "Adbloc&k Plus ne blokira oglasa"> -<!ENTITY typeSelector.heading "Kakšno teĹľavo imate?"> -<!ENTITY anonymity.warning "Kontakta z vami ne bomo mogli vzpostaviti. Prioriteto poroÄŤilu pa bomo verjetno zniĹľali."> -<!ENTITY wizard.title "PoroÄŤilo o teĹľavah"> -<!ENTITY issues.ownfilters.disable.label "OnemogoÄŤi filter"> -<!ENTITY commentPage.description "Spodnje polje z besedilom omogoÄŤa vnos komentarja, ki nam pomaga razumeti teĹľavo. To je neobvezno, vendar priporoÄŤamo, ÄŤe teĹľava ni oÄŤitna. Pred pošiljanjem si lahko še enkrat ogledate podatke poroÄŤila."> -<!ENTITY comment.lengthWarning "DolĹľina vašega komentarja presega 1000 znakov. Poslanih bo le prvih 1000 znakov."> -<!ENTITY typeSelector.falseNegative.description "Izberite to moĹľnost, ÄŤe je oglas prikazan kljub temu, da je Adblock Plus omogoÄŤen."> -<!ENTITY sendPage.waitMessage "PoÄŤakajte, dokler Adblock Plus pošilja vaše poroÄŤilo."> -<!ENTITY dataCollector.heading "Dobrodošli v poroÄŤanje o teĹľavah"> -<!ENTITY screenshot.heading "PriloĹľite sliko strani"> -<!ENTITY sendPage.heading "Pošlji poroÄŤilo"> -<!ENTITY issues.subscriptionCount.description "Zdi se, da ste naroÄŤeni na preveÄŤ filtrov. Takšna nastavitev ni priporoÄŤena, saj je moĹľnost teĹľav veliko veÄŤja. Prav tako ne moremo obdelati vašega poroÄŤila o napaki, saj ni jasno, kateri avtor naroÄŤnine na filtre mora narediti popravke. Prosimo, da odstranite vse nepotrebne naroÄŤnine na filtre in preizkusite, ÄŤe še vedno prihaja do napake."> -<!ENTITY screenshot.mark.label "OznaÄŤi &teĹľavo"> -<!ENTITY privacyPolicy.label "Izjava o zasebnosti"> -<!ENTITY issues.description "Adblock Plus je zaznal teĹľave z vašo konfiguracijo, ki so lahko krive za to teĹľavo ali pa bodo raziskovanje poroÄŤila oteĹľile."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sidebar.dtd deleted file mode 100644 index 42347da..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Obrobe elementa naj utripajo"> -<!ENTITY address.label "Naslov"> -<!ENTITY context.open.label "Odpri v novem zavihku"> -<!ENTITY type.label "Vrsta"> -<!ENTITY tooltip.filterSource.label "Vir filtra:"> -<!ENTITY noitems.label "Ni elementov blokiranja"> -<!ENTITY filter.label "Filter"> -<!ENTITY tooltip.size.label "Velikost:"> -<!ENTITY reattach.label "Pripni"> -<!ENTITY search.label "&Najdi:"> -<!ENTITY docDomain.thirdParty "(tretja stran)"> -<!ENTITY filterSource.label "Vir filtra"> -<!ENTITY tooltip.docDomain.label "Vir dokumenta:"> -<!ENTITY context.copy.label "Kopiraj naslov elementa"> -<!ENTITY tooltip.type.label "Vrsta:"> -<!ENTITY context.disablefilter.label "OnemogoÄŤi filter ?1?"> -<!ENTITY context.copyFilter.label "Kopiraj filter"> -<!ENTITY context.block.label "Blokiraj ta element"> -<!ENTITY context.enablefilter.label "Ponovno omogoÄŤi filter ?1?"> -<!ENTITY detach.label "Odpni"> -<!ENTITY whitelisted.label "Dovoljena stran"> -<!ENTITY context.disablefilteronsite.label "OnemogoÄŤi ta filter na ?1?"> -<!ENTITY detached.title "Adblock Plus: elementi blokad (odpeti)"> -<!ENTITY docDomain.firstParty "(prva stran)"> -<!ENTITY tooltip.type.whitelisted "(dovoljeno)"> -<!ENTITY tooltip.filter.label "Trenutni filter:"> -<!ENTITY tooltip.filter.disabled "(onemogoÄŤeno)"> -<!ENTITY context.editfilter.label "Uredi trenutni filter"> -<!ENTITY tooltip.type.blocked "(blokirano)"> -<!ENTITY size.label "Velikost"> -<!ENTITY context.whitelist.label "Dodaj pravilo izjem za element"> -<!ENTITY context.selectAll.label "Izberi vse"> -<!ENTITY state.label "Stanje"> -<!ENTITY docDomain.label "Vir dokumenta"> -<!ENTITY tooltip.address.label "Naslov:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/subscriptionSelection.dtd deleted file mode 100644 index d8c15f3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sl/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Dodaj tudi naroÄŤnino na &filter ?1?"> -<!ENTITY list.download.failed "Pridobivanje seznama naroÄŤnin ni uspelo."> -<!ENTITY list.download.retry "Poskusi znova"> -<!ENTITY title.label "&Naslov naroÄŤnine:"> -<!ENTITY list.download.website "PokaĹľi spletno mesto"> -<!ENTITY supplementMessage "NaroÄŤnina na filter je mišljena za rabo z naroÄŤnino na filter ?1?, ki je še ne uporabljate."> -<!ENTITY viewList.label "PokaĹľi filtre"> -<!ENTITY visitHomepage.label "Obišči domaÄŤo stran"> -<!ENTITY addSubscription.label "Dodaj naroÄŤnino"> -<!ENTITY dialog.title "Dodaj naroÄŤnino na filtre Adblock Plus"> -<!ENTITY location.label "&Mesto seznama filtriranja:"> -<!ENTITY fromWeb.description "Potrdite, da Ĺľelite dodati to naroÄŤnino na filter. Naslov ali kraj naroÄŤnine lahko spremenite še pred dodajanjem."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/composer.dtd deleted file mode 100644 index 144de9e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "nĂ« fund tĂ« adresĂ«s"> -<!ENTITY domainRestriction.label "Kufizo nĂ« domain:"> -<!ENTITY collapse.default.no.label "PĂ«rdor tĂ« parazgjedhurĂ«n (jo):"> -<!ENTITY firstParty.label "VetĂ«m tĂ« parĂ«t"> -<!ENTITY preferences.label "Trego filtrin ekzistues..."> -<!ENTITY pattern.label "KĂ«rko pĂ«r motivin"> -<!ENTITY thirdParty.label "VetĂ«m tĂ« tretĂ«t"> -<!ENTITY filter.label "FiltĂ«r i ri:"> -<!ENTITY collapse.label "ShkatĂ«rro te bllokuarat:"> -<!ENTITY match.warning "Motivi qĂ« dhatĂ« nuk pĂ«rputhet mĂ« me adresat e bllokuara/lejuara dhe nuk ka mĂ« efekt mbi to."> -<!ENTITY anchor.start.label "nĂ« fillim tĂ« adresĂ«s"> -<!ENTITY matchCase.label "PĂ«rputh shembullin"> -<!ENTITY custom.pattern.label "PĂ«rshtatja:"> -<!ENTITY unselectAllTypes.label "Mos selekto asnjĂ«"> -<!ENTITY type.whitelist.label "Rregull pĂ«rjashtimi"> -<!ENTITY regexp.warning "Motivi qĂ« dhatĂ« do tĂ« interpretohet si shprehje e rregullt qĂ« nuk mund tĂ« pĂ«rdoret nga Adblock Plus dhe mund tĂ« ngadalsojĂ« hapjen e faqeve te internetit. NĂ«se nuk kishit ndĂ«rmend tĂ« pĂ«rdorni njĂ« shprehje tĂ« rregullt, shtoni njĂ« (*) nĂ« fund tĂ« motivit."> -<!ENTITY dialog.title "Shto njĂ« rregullore filtri nĂ« Adblock Plus"> -<!ENTITY basic.label "Pamje kryesore"> -<!ENTITY type.filter.label "Blloko filtrin"> -<!ENTITY types.label "Apliko nĂ« llojet:"> -<!ENTITY shortpattern.warning "Motivi qĂ« dhatĂ« Ă«shtĂ« shumĂ« i shkurtĂ«r qĂ« tĂ« optimizohet dhe mund tĂ« ngadalsojĂ« internetin. Rekomandohet qĂ« tĂ« zgjidhni njĂ« varg mĂ« tĂ« gjatĂ« pĂ«r kĂ«tĂ« filtĂ«r nĂ« menyrĂ« qĂ« tĂ« lejoj Adblock Plus ta pĂ«rpunoj filtrin mĂ« mirĂ«."> -<!ENTITY collapse.yes.label "Po"> -<!ENTITY anchors.label "Prano vetĂ«m motivin:"> -<!ENTITY collapse.default.yes.label "PĂ«rdor tĂ« parazgjedhurĂ«n (po):"> -<!ENTITY domainRestriction.help "PĂ«rdore kĂ«tĂ« opsion qĂ« tĂ« specifikosh njĂ« ose mĂ« shumĂ« adresa tĂ« ndara nga njĂ« (|). Filtri do tĂ« zbatohet vetĂ«m nĂ« adresat(s) e zgjedhura. NjĂ« (~) pĂ«rpara emrit tĂ« adresĂ«s tregon qĂ« filtri nuk do tĂ« zbatohet nĂ« atĂ« adresĂ«."> -<!ENTITY accept.label "Shto filtĂ«r"> -<!ENTITY options.label "MundĂ«sitĂ«"> -<!ENTITY disabled.warning "Adblock Plus nuk punon pĂ«r momentin. Mund tĂ« shtoni filtra por nuk do tĂ« funksionojnĂ« nĂ«se ju nuk [link]mundĂ«soni Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "nĂ« fillim tĂ« domain name"> -<!ENTITY collapse.no.label "Jo"> -<!ENTITY selectAllTypes.label "Selekto tĂ« gjitha"> -<!ENTITY advanced.label "Pamje e avancuar"> -<!ENTITY pattern.explanation "Motivi mund tĂ« jetĂ« çdo pjesĂ« e adresĂ«s; simboli (*) vepron si xhoker. Filtri do tĂ« zbatohet vetĂ«m nĂ« adresat qĂ« i pĂ«rshtaten motivit tĂ« dhĂ«nĂ«."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/filters.dtd deleted file mode 100644 index ac96eab..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Krejt filtrat tuaj tĂ« personalizuar do tĂ« zĂ«vendĂ«sohen nga lĂ«nda e kartelĂ«s sĂ« pĂ«rzgjedhur. DĂ«shironi tĂ« vazhdohet?"> -<!ENTITY slow.column "Filtruesit e ngadalshĂ«m"> -<!ENTITY enabled.column "Aktivizo"> -<!ENTITY subscription.lastDownload.checksumMismatch "Deshtoi,mosperputhje checksumi"> -<!ENTITY noFiltersInGroup.text "Grupi i pĂ«rzgjedhur Ă«shtĂ« i zbrazĂ«t."> -<!ENTITY subscription.actions.label "Veprime"> -<!ENTITY filter.selectAll.label "PĂ«rzgjidhi Krejt"> -<!ENTITY backupButton.label "&Kopjeruaje dhe Riktheje"> -<!ENTITY restore.minVersion.warning "Kujdes: kartela Ă«shtĂ« krijuar me njĂ« version Adblock Plus mĂ« tĂ« ri. Do tĂ« duhej ta pĂ«rditĂ«sonit Adblock Plus-in me versionin mĂ« tĂ« ri, pĂ«rpara se tĂ« riktheni tĂ« dhĂ«na prej kĂ«saj kartele."> -<!ENTITY restore.error "TĂ« dhĂ«nat e kartelĂ«s nuk pĂ«rpunohen dot, ndoshta kjo nuk Ă«shtĂ« kartelĂ« kopjeruajtjesh pĂ«r Adblock Plus?"> -<!ENTITY sort.ascending.label "A > Z radhitje"> -<!ENTITY sort.label "Radhit sipas"> -<!ENTITY subscription.source.label "Lista e filtrave"> -<!ENTITY hitcount.column "Shtypje"> -<!ENTITY noFilters.text "Nuk keni ende ndonjĂ« filtĂ«r tĂ« personalizuar."> -<!ENTITY backup.custom.title "VetĂ«m filtrat e personalizuar"> -<!ENTITY subscription.external.label "E rifreksuar nga nje shtese tjeter"> -<!ENTITY subscription.delete.label "Fshije"> -<!ENTITY noGroupSelected.text "PĂ«rpara se tĂ« shfaqen filtrat e tij, lypset tĂ« pĂ«rzgjidhni njĂ« grup filtrash."> -<!ENTITY filter.cut.label "Kopjo-largo"> -<!ENTITY restore.default.label "TĂ« rikthehet kopjeruajtja prej ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Duke u shkarkuar..."> -<!ENTITY subscriptions.tab.label "Filtroni abonimet"> -<!ENTITY sort.descending.label "Z > A radhitje"> -<!ENTITY filters.remove.warning "Doni vĂ«rtet tĂ« hiqen krejt filtrat e pĂ«rzgjedhur?"> -<!ENTITY filter.delete.label "FshijĂ«"> -<!ENTITY addSubscriptionAdd.label "Shto"> -<!ENTITY viewMenu.label "Shih"> -<!ENTITY subscription.lastDownload.unknown "N/D"> -<!ENTITY addSubscriptionCancel.label "Anulo"> -<!ENTITY subscription.enabled.label "E aktivizuar"> -<!ENTITY noSubscriptions.text "Ju nuk keni shtuar ndonje abonim per filter ende.Adblock Plus nuk do te bllokoje asgje pa filtra,ju lutem perdorin "Shto nje abonim filtri" per te shtuar disa."> -<!ENTITY subscription.update.label "PĂ«rditĂ«soni filtra"> -<!ENTITY dialog.title "Filtroni preferencat e Adblock Plus"> -<!ENTITY addFilter.label "Vendos filtrues"> -<!ENTITY subscription.minVersion.warning "Ky abonim filtri kerkon nje version me te ri te Adblock Plus,ti duhet te besh update ne versionin e fundit te Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Deshtoi,nje adrese e pavlefshme"> -<!ENTITY backup.error "Pati njĂ« gabim gjatĂ« shkrimit te kartela. Sigurohuni qĂ« kartela nuk Ă«shtĂ« e mbrojtur ndaj shkrimit ose qĂ« nuk po pĂ«rdoret nga njĂ« zbatim tjetĂ«r."> -<!ENTITY filter.moveUp.label "Ngjite sipĂ«r"> -<!ENTITY addGroup.label "Shtoni &grup filtrash"> -<!ENTITY filter.edit.label "PĂ«rpunojeni"> -<!ENTITY subscription.showHideFilters.label "Shfaqni/fshihni filtra"> -<!ENTITY acceptableAds2.label "Lejo ndoca reklamĂ« jo tĂ« &bezdisshme"> -<!ENTITY addSubscriptionOther.label "Shto nje abonim tjeter"> -<!ENTITY close.label "Mbylle"> -<!ENTITY sort.none.label "Pa radhitur"> -<!ENTITY filter.actions.label "Veprime filtrash"> -<!ENTITY filter.copy.label "Kopjo"> -<!ENTITY filter.moveDown.label "Zbrite poshtĂ«"> -<!ENTITY filter.resetHitCounts.label "Rinisi nga e para statistikat e vizitave"> -<!ENTITY readMore.label "Lexoni mĂ« tepĂ«r"> -<!ENTITY subscription.moveUp.label "Ngjite sipĂ«r"> -<!ENTITY addSubscription.label "Shto abonim per filter"> -<!ENTITY subscription.homepage.label "Kryefaqja"> -<!ENTITY backup.complete.title "Krejt filtrat dhe pajtimet"> -<!ENTITY restore.own.label "Rimerr vlera prej kopjeruajtjes sĂ« vet"> -<!ENTITY restore.complete.warning "Krejt parapĂ«lqimet tuaja pĂ«r filtrat do tĂ« zĂ«vendĂ«sohen nga lĂ«nda e kartelĂ«s sĂ« pĂ«rzgjedhur. DĂ«shironi tĂ« vazhdohet?"> -<!ENTITY filters.tab.label "Filtra te kostumizuar"> -<!ENTITY backup.label "Krijoni njĂ« kopjeruajtje tĂ« re"> -<!ENTITY find.label "KĂ«rko"> -<!ENTITY subscription.moveDown.label "Zbrite poshtĂ«"> -<!ENTITY subscription.lastDownload.connectionError "Deshtoi,gabim shkarkimi"> -<!ENTITY subscription.lastDownload.success "Sukses"> -<!ENTITY subscription.lastDownload.invalidData "Deshtoi,nje liste jo e vlefshme filtrash"> -<!ENTITY filter.paste.label "Hedh"> -<!ENTITY subscription.disabledFilters.enable "Aktivizoni filtrat e aktivizuar"> -<!ENTITY lasthit.column "Shtypja e fundit"> -<!ENTITY subscription.editTitle.label "PĂ«rpunoni titullin"> -<!ENTITY subscription.disabledFilters.warning "PĂ«r kĂ«tĂ« pajtim, disa nga filtrat janĂ« çaktivizuar."> -<!ENTITY filter.column "Rregulla e filtrimit"> -<!ENTITY subscription.lastDownload.label "Shkarkimi i fundit:"> -<!ENTITY viewList.label "Shihni listĂ«n"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/firstRun.properties deleted file mode 100644 index 21438b1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/firstRun.properties +++ /dev/null @@ -1,24 +0,0 @@ -firstRun_title=Adblock Plus has been installed -firstRun_dataCorruptionWarning=Does this page keep showing up? <a>Click here!</a> -firstRun_acceptableAdsHeadline=Annoying ads will now be blocked -firstRun_acceptableAdsExplanation=We'd like to encourage websites to use straightforward, unobtrusive advertising. That's why we've established <a>strict guidelines</a> to identify acceptable ads, which are shown under default settings. If you still want to block every ad you can <a>disable</a> this in a few seconds. -firstRun_legacySafariWarning=You are using an old version of Safari which is not supported by Adblock Plus. It might not work correctly or impair the user experience on some websites. We strongly recommend to either update to Safari 6.1.1 or higher (on OS X 10.8 Mountain Lion), or Safari 7.0.1 or higher (on OS X 10.9 Mavericks), or to use the latest version of Mozilla Firefox, Google Chrome or Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. - -firstRun_toggle_on=ON -firstRun_toggle_off=OFF - -firstRun_features=Adblock Plus can do more than block ads -firstRun_feature_malware=Malware Blocking -firstRun_feature_malware_description=Make your browsing more secure by blocking known malware domains. -firstRun_feature_social=Remove Social Media Buttons -firstRun_feature_social_description=Automatically rid your browsing experience of social media buttons, such as the Facebook Like, which appear on web pages and track your behavior. -firstRun_feature_tracking=Disable Tracking -firstRun_feature_tracking_description=Browse privately by disabling tracking - hiding your tracks from ad companies that would track your every move. - -firstRun_share_headline=<a>Give us a hand</a> in making the web a better place -firstRun_donate=donate -firstRun_donate_label=Support our project -firstRun_share=Tell your friends - -firstRun_contributor_credits=Contributor Credits diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/global.properties deleted file mode 100644 index 37f6dc5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -disabled_tooltip=Adblock Plus Ă«shtĂ« ç'aktiv. -blocked_count_tooltip=?1?jasht nga ?2? -action3_tooltip=Aktivizim/çaktivizo Adblock Plus. -no_blocking_suggestions=S'ka elemente bllokuese nĂ« kĂ«tĂ« faqe -type_label_object=objekti -type_label_popup=dritarja pop-up -type_label_image=figura -type_label_other=tjera -type_label_font=shkronjat -mobile_menu_enable=ABP: Mbroj -type_label_subdocument=ndarja -type_label_media=zĂ«/video -type_label_xmlhttprequest=kerkimi pĂ«r XML -type_label_script=skripta -type_label_elemhide=fshehur -type_label_document=dokumenti -whitelisted_tooltip=Adblock Plus Ă«shtĂ« aktiv por i pasivizuar nĂ« kĂ«tĂ« faqe. -default_dialog_title=Adblock Plus -type_label_stylesheet=stilet -notification_antiadblock_title=Hide targeted messages? -filter_elemhide_nocriteria=No criteria specified to recognize the element to be hidden -blockingGroup_title=Ad Blocking Rules -filter_regexp_tooltip=This filter is either a regular expression or too short to be optimized. Too many of these filters might slow down your browsing. -action0_tooltip=Click to bring up context menu, middle-click to enable/disable. -whitelisted_page=Adblock Plus has been disabled for the current page -remove_group_warning=Do you really want to remove this group? -action1_tooltip=Click to open/close blockable items, middle-click to enable/disable. -active_tooltip=Adblock Plus is enabled, ?1? filter subscription(s) and ?2? custom filter(s) in use. -type_label_object_subrequest=object subrequest -whitelistGroup_title=Exception Rules -filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified -action2_tooltip=Click to open preferences, middle-click to enable/disable. -clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? -blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?) -subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name. -remove_subscription_warning=Do you really want to remove this subscription? -mobile_menu_disable_site=ABP: Disable on ?1? -elemhideGroup_title=Element Hiding Rules -mobile_menu_enable_site=ABP: Enable on ?1? -newGroup_title=New filter group diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/overlay.dtd deleted file mode 100644 index 256509f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY opensidebar.label "Hap elementet &bllokuese"> -<!ENTITY options.label "MundĂ«sitĂ« (&O)"> -<!ENTITY context.object.label "Adblock Plus: Objektet e bllokuara"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Rilejo nĂ« kĂ«tĂ« faqe"> -<!ENTITY context.frame.label "Adblock Plus: PjesĂ«t e bllokuara"> -<!ENTITY filters.tooltip "Filtruesit mĂ« aktivĂ«:"> -<!ENTITY menuitem.label "ParapĂ«lqimet e Ad&block Plus"> -<!ENTITY closesidebar.label "M&byll elementet bllokuese"> -<!ENTITY whitelist.page.label "Çaktivizo vetĂ«m nĂ« kĂ«tĂ« faqe"> -<!ENTITY whitelist.site.label "Çaktivizo nĂ« ?1?"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.image.label "Adblock Plus: Figurat e bllokuara"> -<!ENTITY status.tooltip "Gjendja:"> -<!ENTITY objecttab.title "Blloko"> -<!ENTITY subscription.update.label "PĂ«rditĂ«soni filtra"> -<!ENTITY notification.button.yes "&Yes"> -<!ENTITY notification.button.no "&No"> -<!ENTITY sync.label "Syn&c Adblock Plus settings"> -<!ENTITY filters.label "&Filter preferences"> -<!ENTITY disable.label "Disable everywhere"> -<!ENTITY objecttab.tooltip "Click here to block this object with Adblock Plus"> -<!ENTITY objecttabs.label "Show &tabs on Flash and Java"> -<!ENTITY sendReport.label "&Report issue on this page"> -<!ENTITY counthits.label "Count filter &hits"> -<!ENTITY notification.button.close "&Close"> -<!ENTITY contribute.label "Contribute to Adblock Plus"> -<!ENTITY blocked.tooltip "Blocked items on this page:"> -<!ENTITY hideplaceholders.label "Hide p&laceholders of blocked elements"> -<!ENTITY showinstatusbar.label "&Show in status bar"> -<!ENTITY sidebar.title "Blockable items on current page"> -<!ENTITY showintoolbar.label "Show in tool&bar"> -<!ENTITY context.media.label "Adblock Plus: Block audio/video"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sendReport.dtd deleted file mode 100644 index a4139d6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sendReport.dtd +++ /dev/null @@ -1,71 +0,0 @@ -<!ENTITY screenshot.undo.label "Zhbeje (&U)"> -<!ENTITY issues.disabledgroups.description "Abonimet e meposhtme ne filtra/grupe filtrash jane te bllokuar, gjithashtu ata mund te kene efikasitet ne kete faqe:"> -<!ENTITY showData.label "Afisho permbajtjen e raportit"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus po bllokon shu&me"> -<!ENTITY issues.change.description "Konfigurimi juaj ka ndryshuar. Ju lutem ri-ngarkoni faqen per te provuar ndryshimet dhe per te derguar nje raportim nese problemi nuk eshte zgjidhur nga ndryshimet ne konfigurim."> -<!ENTITY email.label "Posta: (&m)"> -<!ENTITY issues.openPreferences.label "Hap parametrat e filtrave"> -<!ENTITY sendPage.confirmation "Raporti juaj eshte ruajtur. Ju mund ta shikoni ate ne kete adrese:"> -<!ENTITY copyLink.label "KOpjo adresen e raportit (&C)"> -<!ENTITY issues.nofilters.description "Adblock Plus nuk eshte duke bllokuar asgje ne faqen aktuale. Ky problem qe ju po vereni ka shume mundesi qe nuk ka fare lidhje me Adblock Plus."> -<!ENTITY sendPage.knownIssue "Problemi qe ju keni raportuar ka shume mundesi te jete i njohur. Per me shume informacion:"> -<!ENTITY typeSelector.other.description "Zgjidhni kete mundesi nese ju dyshoni se eshte nje problem me vete Adblock Plus ne vend te filtrave te tij."> -<!ENTITY issues.disabledgroups.enable.label "Aktivizo abonim filtri/grup filtrash"> -<!ENTITY typeWarning.override.label "Une kuptoj dhe de&shiroj te dergoj raportin gjithsesi"> -<!ENTITY issues.disabled.enable.label "Aktivizo Adblock Plus"> -<!ENTITY reloadButton.label "&Ringarko faqen"> -<!ENTITY recentReports.clear.label "Hiq gjithe &raportimet"> -<!ENTITY typeSelector.description "Kjo dritare do ju udhezoje neper gjithe hapat e nevojshem per dergimin e raportit te problemeve me Adblock Plus. Si fillim, ju lutem zgjidhni tipin e problemit qe ju vereni me kete faqe:"> -<!ENTITY screenshot.remove.label "Hiqni te dhenat pe&rsonale"> -<!ENTITY issues.ownfilters.description "Disa nga filtrat e aplikuar ne kete faqe jane te percaktuar nga perdoruesi. Ju lutem bllokoni filtrat te cilet mund te kene shkaktuar kete problem:"> -<!ENTITY sendPage.retry.label "Dergo perseri"> -<!ENTITY data.label "&Permbajtja e raportit:"> -<!ENTITY recentReports.label "Raportimet tuaja me te fundit"> -<!ENTITY typeWarning.description "Ju keni treguar se deshironi te raportoni nje problem te pergjithshem me Adblock Plus ne vend te nje problemi me filtrat. Ju lutem kini parasysh se keto probleme raportohen me mire ne [link]forumin Adblock Plus[/link]. Ju duhet te perdorni raportimin e problemeve vetem si shtese te nje diskutimi ekzistues, sepse askush nuk do ta vere re raportimin tuaj, vetem nese ju jepni nje adrese te problemit. Adrese e krijuar automatikisht do ju jepet pasi ju te keni derguar raportin."> -<!ENTITY issues.disabled.description "Adblock Plus eshte jo-aktiv, ai nuk do te bllokoje asnje gje ne gjendjen aktuale."> -<!ENTITY attachExtensions.label "Bashkangjisni nje liste te prapashtesave aktive ne raportim, ne rast se shkaku i problemit eshte nje konflikt ndermjet moduleve. (&x)"> -<!ENTITY issues.nosubscriptions.add.label "Shto abonim ne filtra"> -<!ENTITY issues.disabledfilters.enable.label "Aktivizo filtrin"> -<!ENTITY issues.override.label "Konfigurimi eshte i sakte, vazhdoni me raportimin (&c)"> -<!ENTITY issues.nosubscriptions.description "Duket sikur ju nuk keni asnje abonim ne filtrat e gatshem te cilet heqin automatikisht permbajtjen e padeshiruar nga faqet web."> -<!ENTITY typeSelector.other.label "Problem &tjeter"> -<!ENTITY issues.whitelist.remove.label "Ri-aktivizo Adblock Plus ne kete faqe"> -<!ENTITY typeSelector.falsePositive.description "Zgjidhni kete mundesi nese faqes i mungon permbajtja e rendesishme, shfaqet gabim ose nuk funksionon ne rregull. Ju mund te percaktoni nese problemi eshte Adblock Plus duke e fikur ate perkohesisht."> -<!ENTITY dataCollector.description "Ju lutem prisni disa momente deri sa Adblock Plus te mbledhe te gjitha te dhenat e nevojshme."> -<!ENTITY sendButton.label "Dergo raporti&n"> -<!ENTITY comment.label "Koment (fakultative): (&C)"> -<!ENTITY sendPage.errorMessage "Tentativa per te derguar raportin ngeci me kodin e gabimit "?1?". Ju lutem sigurohuni qe jeni te lidhur ne internet dhe provoni perseri. Nese ky problem perseritet kerkoni ndihme ne [link]forumin e Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Afisho raportimet e derguara se fundmi"> -<!ENTITY commentPage.heading "Koment"> -<!ENTITY update.start.label "Filloni pĂ«rditĂ«so tani"> -<!ENTITY issues.disabledfilters.description "Filtrat e meposhtem jane te bllokuar, gjithashtu ata mund te kene efikasitet ne kete faqe:"> -<!ENTITY screenshot.description "E njejta faqe mund te duket ndryshe per njerez te ndryshem. Mund te na ndihmoje ne kuptimin e problemit nese ju bashkangjisni nje foto raportimit tuaj. Ju mund te hiqni ose mbuloni fusha te cilat permbajne informacion te rendesishem dhe personal dhe gjithashtu mund te shenoni zonat ku eshte i dukshem problemi. Per te bere kete klikoni butonin e duhur dhe zgjidhni nje zone te fotos me mausin tuaj."> -<!ENTITY screenshot.attach.label "Bashkangji&t nje faqe me imazh ketij raportimi"> -<!ENTITY issues.whitelist.description "Adblock Plus eshte aktualisht jo-aktiv ne faqen ne te cilen ju po raportoni. Ju lutem ri-aktivizojeni ate dhe ringarkoni faqen perpara se te dergoni raportin i cili do te ndihmoje ne hetimin e metejshem te ketij problemi."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus nuk po bllokon nje reklame (&v)"> -<!ENTITY typeSelector.heading "Lloji i problemit"> -<!ENTITY wizard.title "Raportuesi i problemeve"> -<!ENTITY issues.ownfilters.disable.label "Blloko filtrin"> -<!ENTITY commentPage.description "Fusha e meposhtme ju lejon qe te jepni nje koment qe te na ndihmoje ne ta kuptojme me mire problemin. Ky hap eshte fakultativ por i rekomanduar nese problemi nuk eshte lehtesisht i dallueshem. Ju mund te rishikoni gjithashtu te dhenat e raportimit perpara se te dergohet."> -<!ENTITY comment.lengthWarning "Gjatesia e komentit tuaj i kapercent 1000 karaktere. Vetem 1000 karakteret e para do te dergohen se bashku me raportin."> -<!ENTITY typeSelector.falseNegative.description "Zgjidhni kete mundesi nese nje reklame shfaqet edhe pse Adblock Plus eshte aktiv."> -<!ENTITY sendPage.waitMessage "Ju lutem prisni sa Adblock Plus te dergoje raportin tuaj."> -<!ENTITY dataCollector.heading "Mire se vini ne raportuesin e problemeve"> -<!ENTITY screenshot.heading "Bashkangjit foto"> -<!ENTITY sendPage.heading "Dergo raportin"> -<!ENTITY issues.subscriptionCount.description "Duket sikur ju jeni abonuar ne shume filtra. Ky konfigurim nuk rekomandohet sepse to te shtoje rastet e problemeve te njejta. Gjithashtu ne nuk mund te pranojme raportimin tuaj te problemeve sepse eshet i paqarte se me ke abonim filtri autori duhet te veproje. Ju lutem hiqni te gjithe abonimet ne filtra perveç atyre te nevojshem dhe provoni nese problemi do te jete perseri."> -<!ENTITY screenshot.mark.label "Shenoni proble&min"> -<!ENTITY privacyPolicy.label "Rregulla PrivatĂ«sie"> -<!ENTITY issues.description "Adblock Plus ka dalluar probleme me konfigurimin tuaj i cili mund te jete pergjegjes per kete problem ose do te veshtiresoje hetimin e raportit."> -<!ENTITY update.fixed.description "The updates to your filter subscriptions likely resolved the issue that you - were reporting. Please reload the page and retry, hit Report again if the - problem remains."> -<!ENTITY anonymous.label "&Anonymous submission"> -<!ENTITY update.inProgress.description "Adblock Plus needs to update your filter subscriptions to make sure that the - issue hasn't been resolved already. Please wait..."> -<!ENTITY emailComment.label "We encourage you to enter a valid email address so that we can contact you if there are questions - about your report. It will also allow us to recognize your contributions and to prioritize them higher."> -<!ENTITY outdatedSubscriptions.description "The following filter subscriptions haven't been updated for at least two - weeks. Please update these subscriptions before submitting a report, the - issue might be resolved already."> -<!ENTITY anonymity.warning "We won't be able to come back to you and will likely prioritize the report lower."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sidebar.dtd deleted file mode 100644 index b953b23..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Blic kufijte e artikull"> -<!ENTITY address.label "Adresa"> -<!ENTITY context.open.label "Hape njĂ« njĂ« lidhje tĂ« re"> -<!ENTITY type.label "Lloji"> -<!ENTITY tooltip.filterSource.label "Burimi i filtruesit:"> -<!ENTITY noitems.label "S'ka elemente bllokuese"> -<!ENTITY filter.label "Filtruesi"> -<!ENTITY tooltip.size.label "MadhĂ«sia:"> -<!ENTITY reattach.label "BashkĂ«ngjit"> -<!ENTITY search.label "KĂ«rko: (&S)"> -<!ENTITY docDomain.thirdParty "(tĂ« tretĂ«t)"> -<!ENTITY filterSource.label "Burimi i filtrit"> -<!ENTITY tooltip.docDomain.label "Burimi i dokumentit:"> -<!ENTITY context.copy.label "Kopjo adresĂ«n e elementit"> -<!ENTITY tooltip.type.label "Lloji:"> -<!ENTITY context.disablefilter.label "Çaktivizo filtruesin ?1?"> -<!ENTITY context.copyFilter.label "Kopjo filtruesin"> -<!ENTITY context.block.label "Blloko kĂ«tĂ« send"> -<!ENTITY context.enablefilter.label "Ri mundĂ«so filtruesin ?1?"> -<!ENTITY detach.label "ShkĂ«put"> -<!ENTITY whitelisted.label "Lista e faqeve tĂ« lejueshme"> -<!ENTITY context.disablefilteronsite.label "PamundĂ«so filtruesin nĂ« ?1?"> -<!ENTITY detached.title "Adblock Plus: Artikuj per te bllokuar (i shkĂ«putur)"> -<!ENTITY docDomain.firstParty "(tĂ« parĂ«t)"> -<!ENTITY tooltip.type.whitelisted "(lejuar)"> -<!ENTITY tooltip.filter.label "Filtri nĂ« pĂ«rdorim:"> -<!ENTITY tooltip.filter.disabled "(qkyqur)"> -<!ENTITY context.editfilter.label "Vendos filtruesin nĂ« veprim"> -<!ENTITY tooltip.type.blocked "(bllokuar)"> -<!ENTITY size.label "MadhĂ«sia"> -<!ENTITY context.whitelist.label "shtoni pĂ«rjashtim pĂ«r sundimin artikull"> -<!ENTITY context.selectAll.label "Selekto tĂ« gjitha"> -<!ENTITY state.label "Gjendja"> -<!ENTITY docDomain.label "Burimi i dokumentit"> -<!ENTITY tooltip.address.label "Adresa:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/subscriptionSelection.dtd deleted file mode 100644 index e336024..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sq/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY list.download.failed "Adblock Plus dĂ«shtoj tĂ« lidhet me listĂ«n e abonimeve."> -<!ENTITY list.download.retry "Provo prap"> -<!ENTITY title.label "&Titulli i abonimit:"> -<!ENTITY list.download.website "Shiko faqen"> -<!ENTITY viewList.label "Shiko filtrat"> -<!ENTITY visitHomepage.label "Vizito faqen kryesore"> -<!ENTITY addSubscription.label "Shto abonim"> -<!ENTITY dialog.title "Shtoi Adblock Plus filtĂ«r abonimi"> -<!ENTITY location.label "Vendi i &listĂ«s sĂ« filtrit:"> -<!ENTITY fromWeb.description "Ju lutem konfirmoni qĂ« doni tĂ« shtoni kĂ«tĂ« filtĂ«r abonimi. Ju mund ta ndryshoni emrin e abonimit ose vendĂ«ndodhjen para se ta konfirmoni."> -<!ENTITY addMain.label "Add filter &subscription "?1?" as well"> -<!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/composer.dtd deleted file mode 100644 index 3a398e3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "на &краŃŃ Đ°Đ´Ń€ĐµŃе"> -<!ENTITY domainRestriction.label "Ограничи на &домен:"> -<!ENTITY collapse.default.no.label "ПодразŃмевано (не)"> -<!ENTITY firstParty.label "Само Ńа Đľ&ве адреŃе"> -<!ENTITY preferences.label "&Прикажи поŃтоŃеће филтере…"> -<!ENTITY pattern.label "Потражи образац"> -<!ENTITY thirdParty.label "Само Ńа Đ´Ń€Ńги&Ń… адреŃа"> -<!ENTITY filter.label "Нови &филтер:"> -<!ENTITY collapse.label "&СкŃпи блокирано:"> -<!ENTITY match.warning "Образац коŃи Ńте Ńнели виŃе Ńе не поклапа Ńа адреŃом коŃа треба да бŃде блокирана/одобрена и на ŃšŃ Đ˝ĐµŃ›Đµ Ńтицати."> -<!ENTITY anchor.start.label "на &ĐżĐľŃ‡ĐµŃ‚ĐşŃ Đ°Đ´Ń€ĐµŃе"> -<!ENTITY matchCase.label "&РазликŃŃ ĐĽĐ°Đ»Đ° и велика Ńлова"> -<!ENTITY custom.pattern.label "&Прилагођено:"> -<!ENTITY unselectAllTypes.label "ПониŃти избор"> -<!ENTITY type.whitelist.label "Đ&Đ·Ńзетак"> -<!ENTITY regexp.warning "Образац коŃи Ńте Ńнели ће бити кориŃћен као регŃларни израз. ПревиŃе регŃларних израза може ŃŃпорити прегледач интернет Ńтрана. Уколико не намеравате да кориŃтите регŃларне изразе, додаŃте Ńимбол * на краŃŃ ĐľĐ±Ń€Đ°Ńца."> -<!ENTITY dialog.title "Додавање правила за филтер Adblock Plus-а"> -<!ENTITY basic.label "ĐžŃновни приказ"> -<!ENTITY type.filter.label "Фи&лтер за блокирање"> -<!ENTITY types.label "Примени на типове:"> -<!ENTITY shortpattern.warning "Образац коŃи Ńте Ńнели Ńе прекратак за оптимизациŃŃ, превиŃе таквих образаца може ŃŃпорити прегледач интернет Ńтрана. ПрепорŃчљиво Ńе да кориŃтите Đ´Ńже изразе као филтере."> -<!ENTITY collapse.yes.label "Да"> -<!ENTITY anchors.label "Прихвати Ńамо образац:"> -<!ENTITY collapse.default.yes.label "ПодразŃмевано (да)"> -<!ENTITY domainRestriction.help "Наведите Ńедан или виŃе домена раздвоŃених знаком "|". Филтер ће бити Ńпотребљен Ńедино за ове домене. Знак "~" иŃпред домена значи да ће домен бити изŃзет од филтрирања."> -<!ENTITY accept.label "Đ”ĐľĐ´Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€"> -<!ENTITY options.label "ОпциŃе"> -<!ENTITY disabled.warning "Adblock Plus Ńе тренŃтно иŃкљŃчен. Рдаље можете додавати филтере, али ће они бити примењени тек kada [link]ŃкљŃчиte Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "на ĐżĐľŃ‡ĐµŃ‚ĐşŃ &домена"> -<!ENTITY collapse.no.label "Не"> -<!ENTITY selectAllTypes.label "Đзабери Ńве"> -<!ENTITY advanced.label "Напредни приказ"> -<!ENTITY pattern.explanation "Образац може бити било коŃи део адреŃе, Ńимбол * Ńе кориŃти као џокер. Филтер ће бити кориŃћен Ńедино ако Ńе адреŃа Ńлаже Ńа обраŃцем."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/filters.dtd deleted file mode 100644 index 0aae653..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Сви ваŃи прилагођени филтери ће бити замењени Ńа онима из изабрање датотеке. Желите ли да наŃтавите?"> -<!ENTITY slow.column "Спор&и филтери"> -<!ENTITY enabled.column "ОмогŃће&Đ˝"> -<!ENTITY subscription.lastDownload.checksumMismatch "НеŃŃпело, неŃлагање извеŃтаŃа"> -<!ENTITY noFiltersInGroup.text "Đзабрана грŃпа Ńе празна."> -<!ENTITY subscription.actions.label "Радње"> -<!ENTITY filter.selectAll.label "Đзабери Ńве"> -<!ENTITY backupButton.label "Нап&рави Ń€ĐµĐ·ĐµŃ€Đ˛Đ˝Ń ĐşĐľĐżĐ¸ŃŃ Đ¸ врати Ń ĐżŃ€ĐµŃ‚Ń…ĐľĐ´Đ˝Đľ Ńтање"> -<!ENTITY restore.minVersion.warning "Напомена: датотека Ńе направљена Ń Đ˝ĐľĐ˛Đ¸ŃĐľŃ Đ˛ĐµŃ€Đ·Đ¸Ńи додатка Adblock Plus. Требало би да доградите Adblock Plus на наŃновиŃŃ Đ˛ĐµŃ€Đ·Đ¸ŃŃ ĐżŃ€Đµ враћања претходног Ńтања из ове датотеке."> -<!ENTITY restore.error "Подаци из датотеке ниŃŃ ĐĽĐľĐłĐ»Đ¸ да бŃĐ´Ń ĐľĐ±Ń€Đ°Ń’ĐµĐ˝Đ¸. Да ли Ńе то заиŃта датотека резерве копиŃе Adblock Plus?"> -<!ENTITY sort.ascending.label "Од &Đ Đ´Đľ Ш"> -<!ENTITY sort.label "&ĐˇĐľŃ€Ń‚Đ¸Ń€Đ°Ń ĐżĐľ"> -<!ENTITY subscription.source.label "СпиŃак филтера"> -<!ENTITY hitcount.column "Бро&Ń ĐżĐľĐłĐľĐ´Đ°ĐşĐ°"> -<!ENTITY noFilters.text "Немате прилагођених филтера."> -<!ENTITY backup.custom.title "Само прилагођени филтери"> -<!ENTITY subscription.external.label "ĐжŃрира Đ´Ń€Ńги додатак"> -<!ENTITY subscription.delete.label "ĐзбриŃи"> -<!ENTITY noGroupSelected.text "Морате да изаберете грŃĐżŃ Ń„Đ¸Đ»Ń‚ĐµŃ€Đ° да би њени филтери били приказани."> -<!ENTITY filter.cut.label "ĐŃеци"> -<!ENTITY restore.default.label "Врати претходно Ńтање од ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ПреŃзимање..."> -<!ENTITY subscriptions.tab.label "Претплате на филтере"> -<!ENTITY sort.descending.label "Од &Ш Đ´Đľ Đ"> -<!ENTITY filters.remove.warning "Желите ли да Ńклоните Ńве изабране филтере?"> -<!ENTITY filter.delete.label "ĐзбриŃи"> -<!ENTITY addSubscriptionAdd.label "ДодаŃ"> -<!ENTITY viewMenu.label "Приказ"> -<!ENTITY subscription.lastDownload.unknown "Непознато"> -<!ENTITY addSubscriptionCancel.label "Откажи"> -<!ENTITY subscription.enabled.label "ОмогŃћено"> -<!ENTITY noSubscriptions.text "НиŃте додали ниŃĐµĐ´Đ˝Ń ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер. Adblock Plus неће блокирати ниŃта без њих, па притиŃните â€žĐ”ĐľĐ´Đ°Ń ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер”."> -<!ENTITY subscription.update.label "ĐжŃŃ€Đ¸Ń€Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€Đµ"> -<!ENTITY dialog.title "ПодеŃавања Adblock Plus филтера"> -<!ENTITY addFilter.label "&Đ”ĐľĐ´Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€"> -<!ENTITY subscription.minVersion.warning "Ова претплата на филтер захтева новиŃŃ Đ˛ĐµŃ€Đ·Đ¸ŃŃ Đ´ĐľĐ´Đ°Ń‚ĐşĐ° Adblock Plus. Молимо Đ˛Đ°Ń Đ´Đ° Ńнапредите додатак."> -<!ENTITY subscription.lastDownload.invalidURL "НеŃŃпело, неиŃправна адреŃа"> -<!ENTITY backup.error "ДоŃло Ńе Đ´Đľ греŃке приликом чŃвања филтера Ń Đ´Đ°Ń‚ĐľŃ‚ĐµĐşŃ. Проверите да датотека ниŃе Ńамо за читање или Ńе не корити нека Đ´Ń€Ńга апликациŃа."> -<!ENTITY filter.moveUp.label "Помери нагоре"> -<!ENTITY addGroup.label "Đ”ĐľĐ´Đ°Ń &грŃĐżŃ Ń„Đ¸Đ»Ń‚ĐµŃ€Đ°"> -<!ENTITY filter.edit.label "Уреди"> -<!ENTITY subscription.showHideFilters.label "Прикажи/ŃĐ°ĐşŃ€Đ¸Ń Ń„Đ¸Đ»Ń‚ĐµŃ€Đµ"> -<!ENTITY acceptableAds2.label "Дозволи &ненаметљиве рекламе"> -<!ENTITY addSubscriptionOther.label "Đ”ĐľĐ´Đ°Ń Đ´Ń€ŃĐłŃ ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń"> -<!ENTITY close.label "Затвори"> -<!ENTITY sort.none.label "Đť&епоређано"> -<!ENTITY filter.actions.label "Радње филтера"> -<!ENTITY filter.copy.label "КопираŃ"> -<!ENTITY filter.moveDown.label "Помери надоле"> -<!ENTITY filter.resetHitCounts.label "ПониŃти ŃтатиŃтике"> -<!ENTITY readMore.label "ĐˇĐ°Đ·Đ˝Đ°Ń Đ˛Đ¸Ńе"> -<!ENTITY subscription.moveUp.label "Помери нагоре"> -<!ENTITY addSubscription.label "Đ”ĐľĐ´Đ°Ń &ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер"> -<!ENTITY subscription.homepage.label "Матична Ńтраница"> -<!ENTITY backup.complete.title "Đ”ĐľĐ´Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€Đµ и претплате"> -<!ENTITY restore.own.label "Врати ŃопŃтвено претходно Ńтање"> -<!ENTITY restore.complete.warning "Све ваŃа подеŃавања филтера ће бити замењена Ńа онима из изабране датотеке. Желите ли да наŃтавите?"> -<!ENTITY filters.tab.label "Прилагођени филтери"> -<!ENTITY backup.label "Направи Đ˝ĐľĐ˛Ń Ń€ĐµĐ·ĐµŃ€Đ˛Đ˝Ń ĐşĐľĐżĐ¸ŃŃ"> -<!ENTITY find.label "Прона&ђи"> -<!ENTITY subscription.moveDown.label "Помери надоле"> -<!ENTITY subscription.lastDownload.connectionError "НеŃŃпело, греŃка Ń ĐżŃ€ĐµŃзимањŃ"> -<!ENTITY subscription.lastDownload.success "ĐŁŃпеŃно"> -<!ENTITY subscription.lastDownload.invalidData "НеŃŃпело, ниŃе лиŃта филтера"> -<!ENTITY filter.paste.label "Налепи"> -<!ENTITY subscription.disabledFilters.enable "ОмогŃћи онемогŃћене филтере"> -<!ENTITY lasthit.column "ПоŃ&ледњи погодак"> -<!ENTITY subscription.editTitle.label "Уреди наŃлов"> -<!ENTITY subscription.disabledFilters.warning "Неки филтери Ńа ŃпиŃка ŃŃ ĐľĐ˝ĐµĐĽĐľĐłŃћени."> -<!ENTITY filter.column "Правило &филтера"> -<!ENTITY subscription.lastDownload.label "ПоŃледње преŃзимање:"> -<!ENTITY viewList.label "ĐźĐľĐłĐ»ĐµĐ´Đ°Ń ŃпиŃак"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/firstRun.properties deleted file mode 100644 index cac5818..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=СŃрфŃŃте приватно Ńа онемогŃћеним праћењем - ŃкриваŃŃћи Ńе од рекламних компаниŃа коŃе прате Ńваки Đ˛Đ°Ń ĐżĐľŃ‚ĐµĐ·. -firstRun_toggle_off=ĐŃкљŃчен -firstRun_feature_tracking=ОнемогŃћи праћење -firstRun_feature_malware=Блокирање малвера -firstRun_title=Adblock Plus Ńе инŃталиран -firstRun_toggle_on=УкљŃчен -firstRun_acceptableAdsExplanation=Желели биŃĐĽĐľ да охрабримо ŃаŃтове да кориŃте фер и ненападно оглаŃавање, и зато ŃĐĽĐľ покренŃли <a>Ńтриктан правилник</a> Ń Ń†Đ¸Ń™Ń ĐżŃ€ĐµĐżĐľĐ·Đ˝Đ°Đ˛Đ°ŃšĐ° прихватљивих оглаŃа коŃи Ńе могŃће видети под подразŃмеваним поŃтавкама. Đко и даље желите да блокирате Ńве оглаŃе, можете <a>онемогŃћити</a> ĐľĐ˛Ń ĐľĐżŃ†Đ¸ŃŃ. -firstRun_contributor_credits=Кредитовани Ńарадници -firstRun_dataCorruptionWarning=Да ли Ńе ова Ńтраница наŃтавља поŃављивати? <a>Кликните овде!</a> -firstRun_acceptableAdsHeadline=ДоŃадне рекламе ће Ńада бити блокиране -firstRun_share=ПрепорŃчите Đ˝Đ°Ń ŃвоŃим приŃатељима -firstRun_share_headline=<a>Помози нам</a> да интернет поŃтане боље меŃто -firstRun_feature_social_description=ĐŃтоматŃки Ńчините ŃŃрфовање ĐľŃлобођеним од Đ´Ńгмића Đ´Ń€ŃŃтвених мрежа, као Ńто ŃŃ "Facebook Like" Đ´Ńгме, коŃи Ńе поŃављŃŃŃ Đ˝Đ° Ńтраницама и прате ваŃе понаŃање. -firstRun_filterlistsReinitializedWarning=Đзгледа да Ńе проблем Ńзроковао да Ńви филтери бŃĐ´Ń Ńклоњени, а резервне примерке ниŃе могŃће повратити. Због тога ŃĐĽĐľ морали да вратимо поŃтавке филтера и дозвољених оглаŃа на подразŃмеване вредноŃти. Проверите лиŃте филтера и дозвољене оглаŃе Ń <a>опциŃама Adblock Plus-а</a>. -firstRun_feature_malware_description=Учините ваŃе ŃŃрфовање ŃигŃрниŃим, блокираŃŃћи домене познате по злонамерним малвер програмима. -firstRun_features=Adblock Plus може виŃе од блокирања реклама -firstRun_donate=ДонираŃте -firstRun_donate_label=Подржите Đ˝Đ°Ń ĐżŃ€ĐľŃекат -firstRun_feature_social=Уклоните Đ´Ńгмиће Đ´Ń€ŃŃтвених мрежа -firstRun_legacySafariWarning=КориŃтите верзиŃŃ ĐˇĐ°Ń„Đ°Ń€Đ¸Ńа коŃŃ Adblock Plus не подржава, зато Ńе могŃће да неке веб Ńтранице неће бити оптимално приказане, или ABP ŃопŃте неће Ń„ŃнкциониŃати. ПрепорŃчŃŃемо да Ńнапредите Safari Ń Đ·Đ°Đ´ŃšŃ Đ˛ĐµŃ€Đ·Đ¸ŃŃ, или да кориŃтите Мозила ФаŃерфокŃ, Đ“Ńгл Кром или Опера браŃзер. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/global.properties deleted file mode 100644 index b7fe0ce..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=На ĐľĐ˛ĐľŃ Ńтрани нема Ńтавки коŃе ĐĽĐľĐłŃ Đ´Đ° Ńе блокираŃŃ -action3_tooltip=Кликните да биŃте ŃкљŃчили/иŃкљŃчили Adblock Plus. -notification_antiadblock_title=СакриŃте изабране порŃке? -type_label_script=Ńкрипт -filter_elemhide_nocriteria=НиŃе пронађен критериŃŃĐĽ за препознавање елемента коŃи ће бити Ńакривен. -blockingGroup_title=Правила за блокирање реклама -whitelisted_tooltip=Adblock Plus Ńе онемогŃћен на тренŃŃ‚Đ˝ĐľŃ Ńтрани. -type_label_stylesheet=Ńтил -blocked_count_tooltip=?1? од ?2? -type_label_font=фонт -type_label_popup=иŃкачŃћи прозор -filter_regexp_tooltip=Филтер Ńе или регŃларан израз или Ńе прекратак за оптимизациŃŃ. ПревиŃе таквих филтера може ŃŃпорити Đ˛Đ°Ń ĐżŃ€ĐµĐłĐ»ĐµĐ´Đ°Ń‡. -action0_tooltip=Кликните да биŃте отворили прирŃчни мени, а Ńредњи клик за ŃкљŃчивање/иŃкљŃчивање. -whitelisted_page=Adblock Plus Ńе иŃкљŃчен за ĐľĐ˛Ń ŃŃ‚Ń€Đ°Đ˝Ń -remove_group_warning=Желите ли да Ńклоните ĐľĐ˛Ń ĐłŃ€ŃĐżŃ? -action1_tooltip=Кликните да биŃте отворили Ńтавке коŃе Ńе ĐĽĐľĐłŃ Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń‚Đ¸, а Ńредњи клик за ŃкљŃчивање/иŃкљŃчивање. -type_label_xmlhttprequest=XML захтев -active_tooltip=Adblock Plus Ńе омогŃћен, ?1? претплата на филтере, ?2? прилагођених филтера Ń Ńпотреби. -type_label_document=докŃмент -type_label_object_subrequest=подзахтев за обŃектом -whitelistGroup_title=Правила за изŃзетке -disabled_tooltip=Adblock Plus Ńе онемогŃћен. -filter_elemhide_duplicate_id=Да би Ńте Ńакрили елеменат, морате дати Ńамо Ńедан идентитет елемента. -type_label_object=обŃекат -action2_tooltip=Кликните да биŃте отворили подеŃавања, а Ńредњи клик за омогŃћавање/онемогŃћавање. -type_label_subdocument=оквир -clearStats_warning=Ово ће пониŃтити ŃтатиŃтике Ńвих филтера и онемогŃћити даље броŃање. Желите ли да наŃтавите? -notification_antiadblock_message=Познато Ńе да ĐľĐ˛Đ°Ń ŃаŃŃ‚ приказŃŃе циљане порŃке кориŃницима Adblock Plus-а. Желите ли да ŃакриŃете те порŃке? -blocked_count_addendum=(такође допŃŃтено: ?1?, Ńакривено: ?2?) -subscription_invalid_location=НеиŃправна адреŃа и име датотеке Ńа ŃпиŃком филтера. -type_label_image=Ńлика -remove_subscription_warning=Желите ли да Ńклоните ĐľĐ˛Ń ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń? -type_label_other=Đ´Ń€Ńго -mobile_menu_enable=ABP: омогŃћи -type_label_media=аŃдио/видео -mobile_menu_disable_site=ABP: онемогŃћи на ?1? -elemhideGroup_title=Правила за блокирање елемената -mobile_menu_enable_site=ABP: омогŃћи на ?1? -type_label_elemhide=Ńакривен -newGroup_title=Нова грŃпа филтера -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/overlay.dtd deleted file mode 100644 index 52b43c7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Да"> -<!ENTITY notification.button.no "&Не"> -<!ENTITY sync.label "ПоŃтавке &ŃŃклађивања Adblock Plus-а"> -<!ENTITY whitelist.site.label "ОнемогŃћи на ?1?"> -<!ENTITY filters.label "ПодеŃавања &филтера"> -<!ENTITY disable.label "ОнемогŃћи ŃвŃда"> -<!ENTITY objecttab.title "БлокираŃ"> -<!ENTITY objecttab.tooltip "Кликните овде да биŃте блокирали обŃекат ĐżĐľĐĽĐľŃ›Ń Adblock Plus-а"> -<!ENTITY menuitem.label "Adblock Plus - подеŃа&вања"> -<!ENTITY objecttabs.label "Прикажи &Ńезичак на Flash и Java обŃектима"> -<!ENTITY sendReport.label "&ПриŃави проблеме на ĐľĐ˛ĐľŃ Ńтраници"> -<!ENTITY whitelist.page.label "ОнемогŃћи Ńамо на ĐľĐ˛ĐľŃ Ńтраници"> -<!ENTITY context.image.label "Đ‘Đ»ĐľĐşĐ¸Ń€Đ°Ń ŃликŃ"> -<!ENTITY counthits.label "Бр&ĐľŃ ĐżĐľĐłĐľŃ‚ĐşĐµ филтера"> -<!ENTITY opensidebar.label "Đž&твори Ńтавке коŃе Ńе ĐĽĐľĐłŃ Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń‚Đ¸"> -<!ENTITY notification.button.close "&Затвори"> -<!ENTITY contribute.label "ДопринеŃите Adblock Plus-Ń"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Đ‘Đ»ĐľĐşĐ¸Ń€Đ°Ń ĐľĐşĐ˛Đ¸Ń€"> -<!ENTITY blocked.tooltip "Блокиране Ńтавке на ĐľĐ˛ĐľŃ Ńтрани:"> -<!ENTITY hideplaceholders.label "ĐˇĐ°ĐşŃ€Đ¸Ń &држаче елемената блокираних Ńтавки"> -<!ENTITY showinstatusbar.label "Прикажи Ń &ŃтатŃŃĐ˝ĐľŃ Ń‚Ń€Đ°Ń†Đ¸"> -<!ENTITY sidebar.title "Ставке коŃе Ńе ĐĽĐľĐłŃ Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń‚Đ¸ на ĐľĐ˛ĐľŃ Ńтраници"> -<!ENTITY options.label "Оп&циŃе"> -<!ENTITY context.object.label "Đ‘Đ»ĐľĐşĐ¸Ń€Đ°Ń ĐľĐ±Ńекат"> -<!ENTITY context.removeWhitelist.label "Поново ŃкљŃчи на ĐľĐ˛ĐľŃ Ńтраници"> -<!ENTITY filters.tooltip "НаŃактивниŃи филтери:"> -<!ENTITY closesidebar.label "За&твори Ńтавке коŃе Ńе ĐĽĐľĐłŃ Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń‚Đ¸"> -<!ENTITY showintoolbar.label "Прикажи Ń &траци Ńа алаткама"> -<!ENTITY status.tooltip "Стање:"> -<!ENTITY context.media.label "Đ‘Đ»ĐľĐşĐ¸Ń€Đ°Ń Đ°Ńдио/видео"> -<!ENTITY subscription.update.label "ĐжŃŃ€Đ¸Ń€Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€Đµ"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sendReport.dtd deleted file mode 100644 index de0adef..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Опозови"> -<!ENTITY issues.disabledgroups.description "Следећа претплата на филтер претплатŃ, или грŃĐżŃ Ń„Đ¸Đ»Ń‚ĐµŃ€Đ° Ńе иŃкљŃчена, и можда има ŃтицаŃа на ŃтраницŃ:"> -<!ENTITY showData.label "Прикажи податке Ń Đ¸Đ·Đ˛ĐµŃтаŃŃ"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus блокира превиŃе (&ĐĽ)"> -<!ENTITY issues.change.description "ВаŃа подеŃавања ŃŃ Đ¸Đ·ĐĽĐµŃšĐµĐ˝Đ°. Поново ŃчитаŃте ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Đ´Đ° биŃте видели промене, па поŃаљите извеŃŃ‚Đ°Ń Đ°ĐşĐľ проблем и даље ниŃе реŃен."> -<!ENTITY email.label "Đ•-меŃĐ»: (&а)"> -<!ENTITY issues.openPreferences.label "Отвори подеŃавања филтера"> -<!ENTITY sendPage.confirmation "Đ’Đ°Ń Đ¸Đ·Đ˛ĐµŃŃ‚Đ°Ń Ńе ŃачŃван. Можете да ĐĽŃ ĐżŃ€Đ¸ŃŃ‚Ńпите на ŃĐ»ĐµĐ´ĐµŃ›ĐľŃ Đ°Đ´Ń€ĐµŃи:"> -<!ENTITY copyLink.label "ĐšĐľĐżĐ¸Ń€Đ°Ń &Đ˛ĐµĐ·Ń Đ´Đľ извеŃтаŃа"> -<!ENTITY issues.nofilters.description "Adblock Plus не блокира ниŃта на тренŃŃ‚Đ˝ĐľŃ Ńтраници. ĐžĐ˛Đ°Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽ наŃвероватниŃе ниŃе повезан Ńа Ńа Adblock Plus-ом."> -<!ENTITY sendPage.knownIssue "Проблем коŃи Ńте приŃавили Ńе вероватно већ познат. ВиŃе информациŃа:"> -<!ENTITY typeSelector.other.description "Đзаберите ĐľĐ˛Ń ĐľĐżŃ†Đ¸ŃŃ Đ°ĐşĐľ миŃлите да Ńâм Adblock Plus ŃзрокŃŃе проблем, а не филтери."> -<!ENTITY issues.disabledgroups.enable.label "ОмогŃћи ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер/грŃĐżŃ Ń„Đ¸Đ»Ń‚ĐµŃ€Đ°"> -<!ENTITY typeWarning.override.label "&РазŃмем и ипак желим да поŃаљем извеŃтаŃ"> -<!ENTITY issues.disabled.enable.label "ОмогŃћи Adblock Plus"> -<!ENTITY update.fixed.description "Претплате на Đ˛Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€ ŃŃ Đ˛ĐµŃ€ĐľĐ˛Đ°Ń‚Đ˝Đľ већ отклониле проблем коŃи Ńте приŃавили. Поново ŃчитаŃте ŃтраницŃ, па покŃŃаŃте поново. Đко проблем и даље поŃтоŃи, поново га приŃавите."> -<!ENTITY anonymous.label "&Đнонимна приŃава"> -<!ENTITY reloadButton.label "&Поново ŃŃ‡Đ¸Ń‚Đ°Ń ŃтраницŃ"> -<!ENTITY recentReports.clear.label "Уклони Ńве Đż&риŃаве"> -<!ENTITY typeSelector.description "ĐžĐ˛Đ°Ń ĐżŃ€ĐľĐ·ĐľŃ€ ће Đ’Đ°Ń Đ˛ĐľĐ´Đ¸Ń‚Đ¸ кроз кораке за реŃавање проблема Ń Adblock Plus-Ń Đ¸ њихово приŃављивање. За почетак, изаберите врŃŃ‚Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽĐ° на коŃи Ńте наиŃли на ĐľĐ˛ĐľŃ Ńтраници:"> -<!ENTITY screenshot.remove.label "&Уклони приватне податке"> -<!ENTITY issues.ownfilters.description "Неке филтере примењене на ĐľĐ˛ĐľŃ Ńтраници ŃŃ Ńтворили кориŃници. ОнемогŃћите оне за коŃе миŃлите да би могли бити Ńзрок проблема."> -<!ENTITY update.inProgress.description "Adblock Plus мора ажŃрирати ваŃе претплате на филтере ради како би проверио да ли Ńе проблем већ отклоњен. СачекаŃте..."> -<!ENTITY sendPage.retry.label "Поново поŃаљи"> -<!ENTITY data.label "Đź&одаци Ń Đ¸Đ·Đ˛ĐµŃтаŃŃ:"> -<!ENTITY recentReports.label "ВаŃи недавно поŃлати извеŃтаŃи"> -<!ENTITY typeWarning.description "Навели Ńте да желите приŃавити опŃти проблем Ńа Adblock Plus-ом, а не Ńа филтером. ĐмаŃте на ŃĐĽŃ Đ´Đ° Ńе такве проблеме наŃбоље приŃавити на [link]форŃĐĽŃ Adblock Plus-а[/link]. ĐžĐ˛Đ°Ń ŃиŃтем за приŃављивање биŃте требали да кориŃтите Ńамо као допŃĐ˝Ń Ń€Đ°Ńправи, Ńер нико неће видети Đ’Đ°Ń Đ¸Đ·Đ˛ĐµŃŃ‚Đ°Ń Đ´ĐľĐş ĐĽŃ Đ˝Đµ даднете Đ˛ĐµĐ·Ń Đ´Đľ њега. ĐŃтоматŃки Đ˝Đ°ĐżŃ€Đ°Đ˛Ń™ĐµĐ˝Ń Đ˛ĐµĐ·Ń Ń›ĐµŃ‚Đµ добити одмах након Ńлања извеŃтаŃа."> -<!ENTITY issues.disabled.description "Adblock Plus Ńе онемогŃћен и ниŃта неће блокирати."> -<!ENTITY attachExtensions.label "Приложите ŃпиŃак омогŃћених &додатака Ń Đ¸Đ·Đ˛ĐµŃтаŃ, Ń ŃĐ»ŃчаŃŃ Đ´Đ° њихов ŃŃкоб доводи Đ´Đľ проблема."> -<!ENTITY issues.nosubscriptions.add.label "Đ”ĐľĐ´Đ°Ń ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер"> -<!ENTITY issues.disabledfilters.enable.label "ОмогŃћите филтер"> -<!ENTITY issues.override.label "ПодеŃавања ŃŃ &иŃправна. НаŃтави Ńа приŃављивањем."> -<!ENTITY issues.nosubscriptions.description "Đзгледа да ниŃте претплаћени ни на Ńедан ŃпиŃак филтера коŃи аŃтоматŃки ŃклањаŃŃ Đ˝ĐµĐ¶ĐµŃ™ĐµĐ˝Đ¸ ŃĐ°Đ´Ń€Đ¶Đ°Ń Ńа Ńтраница."> -<!ENTITY typeSelector.falsePositive.description "Đзаберите ĐľĐ˛Ń ĐľĐżŃ†Đ¸ŃŃ Đ°ĐşĐľ Ńтраници недоŃтаŃŃ Đ˝ĐµĐşĐ¸ битни ŃадржаŃи, погреŃно изгледа или не ради како треба. ПробаŃте да привремено онемогŃћите Adblock Plus, па проверите да ли Ńе онда Ńве Ń Ń€ĐµĐ´Ń."> -<!ENTITY typeSelector.other.label "ДрŃги проблем (&Ń‚)"> -<!ENTITY emailComment.label "Молимо Đ˛Đ°Ń Đ´Đ° ŃнеŃете Đ˛Đ°Đ¶ĐµŃ›Ń Đ¸-меŃĐ» адреŃŃ Đ´Đ° биŃĐĽĐľ могли да Đ˛Đ°Ń ĐşĐľĐ˝Ń‚Đ°ĐşŃ‚Đ¸Ń€Đ°ĐĽĐľ Ńколико има питања Ń Đ˛ĐµĐ·Đ¸ Ńа ваŃом приŃавом. Такође, то ће нам допŃŃтити да препознамо ваŃе доприноŃе и да им дамо Đ˛ĐµŃ›Ń Đ˛Đ°Đ¶Đ˝ĐľŃŃ‚."> -<!ENTITY issues.whitelist.remove.label "ОмогŃћи Adblock Plus на ĐľĐ˛ĐľŃ Ńтраници"> -<!ENTITY outdatedSubscriptions.description "Следеће претплате на филтере ноŃŃ Đ°Đ¶Ńриране виŃе од две Ńедмице. ĐжŃрираŃте их пре него Ńто приŃавите проблем, Ńер би га то могло отклонити."> -<!ENTITY dataCollector.description "СачекаŃте неколико тренŃтака док Adblock Plus прибави потребне податке."> -<!ENTITY sendButton.label "&ПоŃаљите извеŃтаŃ"> -<!ENTITY comment.label "&Коментар (произвољно):"> -<!ENTITY sendPage.errorMessage "ПокŃŃĐ°Ń Ńлања извеŃтаŃа ниŃе ŃŃпео - греŃка „?1?”. Уверите Ńе да Ńте повезани Ńа Đнтернетом, па покŃŃаŃте поново. Đко проблем и даље поŃтоŃи, помоћ потражите на [link]форŃĐĽŃ Adblock Plus-а[/link]."> -<!ENTITY showRecentReports.label "Прикажи недавно поŃлате приŃаве"> -<!ENTITY commentPage.heading "УнеŃи коментар"> -<!ENTITY update.start.label "ĐжŃрираŃ"> -<!ENTITY issues.disabledfilters.description "Следећи филтери, иако онемогŃћени, можда имаŃŃ ŃтицаŃа на ŃтраницŃ:"> -<!ENTITY screenshot.description "ĐŃта Ńтраница може да изгледа различито код различитих ĐľŃоба, и помогло би нам ако приложите Ńнимак проблема коŃи приŃављŃŃете. Можете да Ńклоните или замаŃкирате приватне информациŃе, а да биŃте то Ńчинили кликните одговараŃŃће Đ´Ńгме, и миŃем изаберите жељени део Ńлике."> -<!ENTITY screenshot.attach.label "Приложите Ńнимак Ń&транице ŃĐ· извеŃтаŃ"> -<!ENTITY issues.whitelist.description "Adblock Plus Ńе тренŃтно онемогŃћен на Ńтраници коŃŃ ĐżŃ€Đ¸ŃављŃŃете. ОмогŃћите га и поново ŃчитаŃте ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń ĐżŃ€Đµ него Ńто поŃаљете ĐĽĐľĐ»Đ±Ń Đ·Đ° иŃпитивање проблема."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus не блокира рекламŃ/е (&в)"> -<!ENTITY typeSelector.heading "Đзаберите врŃŃ‚Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽĐ°"> -<!ENTITY anonymity.warning "Нећемо бити Ń ĐĽĐľĐłŃћноŃти да поново допремо Đ´Đľ Đ˛Đ°Ń Đ¸ то ће вероватно Ńнизити приоритет приŃаве."> -<!ENTITY wizard.title "ПриŃављивање греŃака"> -<!ENTITY issues.ownfilters.disable.label "ОнемогŃћи филтер"> -<!ENTITY commentPage.description "Доње поље за текŃŃ‚ омогŃћава вам да додате коментар, како биŃте нам помогли да лакŃе Ńхватимо проблем. ĐžĐ˛Đ°Ń ĐşĐľŃ€Đ°Đş Ńе произвољан али Ńе пожељан, ако проблем ниŃе лако Ńочљив. Можете и да ŃĐľŃ Ńедном прегледате извеŃŃ‚Đ°Ń ĐżŃ€Đµ него Ńто га поŃаљете."> -<!ENTITY comment.lengthWarning "Đ”Ńжина ваŃег коментара прелази 1000 знакова. Само првих 1000 знакова ће бити поŃлато."> -<!ENTITY typeSelector.falseNegative.description "Đзаберите ĐľĐ˛Ń ĐľĐżŃ†Đ¸ŃŃ Đ°ĐşĐľ Ńе реклама приказана иако Ńе Adblock Plus омогŃћен."> -<!ENTITY sendPage.waitMessage "СачекаŃте док Adblock Plus не поŃаље Đ’Đ°Ń Đ¸Đ·Đ˛ĐµŃтаŃ."> -<!ENTITY dataCollector.heading "Добро Đ´ĐľŃли Ń Đ´ĐµĐľ за приŃĐ°Đ˛Ń ĐłŃ€ĐµŃака"> -<!ENTITY screenshot.heading "Приложи Ńнимак"> -<!ENTITY sendPage.heading "ПоŃаљи извеŃтаŃ"> -<!ENTITY issues.subscriptionCount.description "Đзгледа да Ńте Ńе претплатили на превиŃе филтера. То ниŃе препорŃчљиво, Ńер повећава Đ˛ĐµŃ€ĐľĐ˛Đ°Ń‚Đ˝ĐľŃ›Ń Đ´Đ° наŃŃ‚Đ°Đ˝Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽĐ¸. Поред тога, не можемо да прихватимо Đ˛Đ°Ń Đ¸Đ·Đ˛ĐµŃŃ‚Đ°Ń Đľ греŃкама Ńер Ńе неŃаŃно коŃа претплата на филтер Ńадржи греŃĐşŃ. Молимо Đ˛Đ°Ń Đ´Đ° Ńклоните Ńве непотребне претплате на филтере и проверите да ли ŃĐľŃ Ńвек има проблема."> -<!ENTITY screenshot.mark.label "Đž&значи проблем"> -<!ENTITY privacyPolicy.label "Политика приватноŃти"> -<!ENTITY issues.description "Adblock Plus Ńе Ńочио проблем Ńа ВаŃим подеŃавањима, Ńто може бити Ńзрок овог проблема или отежати његово иŃпитивање."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sidebar.dtd deleted file mode 100644 index 98f3a7e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "ĐžŃветли границе Ńтавке"> -<!ENTITY address.label "ĐдреŃа"> -<!ENTITY context.open.label "Отвори на новом лиŃŃ‚Ń"> -<!ENTITY type.label "Đ’Ń€Ńта"> -<!ENTITY tooltip.filterSource.label "Đзвор филтера:"> -<!ENTITY noitems.label "Нема Ńтавки за блокирање"> -<!ENTITY filter.label "Филтер"> -<!ENTITY tooltip.size.label "Величина:"> -<!ENTITY reattach.label "Поново ŃпоŃи"> -<!ENTITY search.label "&Тражи:"> -<!ENTITY docDomain.thirdParty "(трећа Ńтрана)"> -<!ENTITY filterSource.label "Đзвор филтера"> -<!ENTITY tooltip.docDomain.label "Đзвор докŃмента:"> -<!ENTITY context.copy.label "Умножи адреŃŃ Ńтавке"> -<!ENTITY tooltip.type.label "Đ’Ń€Ńта:"> -<!ENTITY context.disablefilter.label "ОнемогŃћи филтер ?1?"> -<!ENTITY context.copyFilter.label "Умножи филтер"> -<!ENTITY context.block.label "Đ‘Đ»ĐľĐşĐ¸Ń€Đ°Ń ĐľĐ˛Ń ŃтавкŃ"> -<!ENTITY context.enablefilter.label "ОмогŃћи филтер ?1?"> -<!ENTITY detach.label "ОдвоŃи"> -<!ENTITY whitelisted.label "Бела лиŃта"> -<!ENTITY context.disablefilteronsite.label "ОнемогŃћи ĐľĐ˛Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€ на ?1?"> -<!ENTITY detached.title "Adblock Plus: Ńтавке коŃе Ńе ĐĽĐľĐłŃ Đ±Đ»ĐľĐşĐ¸Ń€Đ°Ń‚Đ¸ (одвоŃено)"> -<!ENTITY docDomain.firstParty "(прва Ńтрана)"> -<!ENTITY tooltip.type.whitelisted "(на Đ±ĐµĐ»ĐľŃ Đ»Đ¸Ńти)"> -<!ENTITY tooltip.filter.label "КориŃћени филтер:"> -<!ENTITY tooltip.filter.disabled "(онемогŃћено)"> -<!ENTITY context.editfilter.label "Уреди кориŃћени филтер"> -<!ENTITY tooltip.type.blocked "(блокирано)"> -<!ENTITY size.label "Величина"> -<!ENTITY context.whitelist.label "Đ”ĐľĐ´Đ°Ń Đ¸Đ·Ńзетак за ŃтавкŃ"> -<!ENTITY context.selectAll.label "Đзабери Ńве"> -<!ENTITY state.label "СтатŃŃ"> -<!ENTITY docDomain.label "Đзвор докŃмента"> -<!ENTITY tooltip.address.label "ĐдреŃа:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/subscriptionSelection.dtd deleted file mode 100644 index dd6291f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sr/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Đ”&ĐľĐ´Đ°Ń Đ¸ ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° филтер „?1?”"> -<!ENTITY list.download.failed "Adblock Plus ниŃе ŃŃпео да набави нови ŃпиŃак претплата."> -<!ENTITY list.download.retry "ПокŃŃĐ°Ń ĐżĐľĐ˝ĐľĐ˛Đľ"> -<!ENTITY title.label "&Назив претплате:"> -<!ENTITY list.download.website "Отвори веб ŃтраницŃ"> -<!ENTITY supplementMessage "Ова претплата на филтер Ńе предвиђена за кориŃћење Ńа филтером „?1?” коŃи ŃĐľŃ Ńвек не кориŃтите."> -<!ENTITY viewList.label "ĐźĐľĐłĐ»ĐµĐ´Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€Đµ"> -<!ENTITY visitHomepage.label "ПоŃети ĐĽĐ°Ń‚Đ¸Ń‡Đ˝Ń ŃтраницŃ"> -<!ENTITY addSubscription.label "Đ”ĐľĐ´Đ°Ń ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń"> -<!ENTITY dialog.title "Претплата на филтере Adblock Plus-а"> -<!ENTITY location.label "&ЛокациŃа ŃпиŃка Ńа филтерима:"> -<!ENTITY fromWeb.description "Потврдите да желите додати ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Ń Đ˝Đ° ĐľĐ˛Đ°Ń Ń„Đ¸Đ»Ń‚ĐµŃ€ (можете променити назив или локациŃŃ ĐżŃ€ĐµŃ‚ĐżĐ»Đ°Ń‚Đµ пре додавања)."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/composer.dtd deleted file mode 100644 index b16c505..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "I slutet av adressen"> -<!ENTITY domainRestriction.label "Begränsa till domän:"> -<!ENTITY collapse.default.no.label "Standard (nej)"> -<!ENTITY firstParty.label "Endast första part"> -<!ENTITY preferences.label "Visa existerande filter…"> -<!ENTITY pattern.label "Sök efter mönster"> -<!ENTITY thirdParty.label "Endast tredje part"> -<!ENTITY filter.label "Nytt filter:"> -<!ENTITY collapse.label "Dölj blockerade:"> -<!ENTITY match.warning "Mönstret du har angivit matchar inte längre adressen som skall blockeras/undantas och kommer därför inte att pĂĄverka den."> -<!ENTITY anchor.start.label "I början av adressen"> -<!ENTITY matchCase.label "S&kiftlägeskänslig"> -<!ENTITY custom.pattern.label "Eget:"> -<!ENTITY unselectAllTypes.label "Välj ingen"> -<!ENTITY type.whitelist.label "Regel för &undantag"> -<!ENTITY regexp.warning "Mönstret du angivit hanteras som ett reguljärt uttryck. MĂĄnga reguljära uttryck kan göra din surfning lĂĄngsam. Om du inte avsĂĄg att använda reguljära uttryck, lägg till en asterisk (*) i slutet av mönstret."> -<!ENTITY dialog.title "Lägg till filterregel för Adblock Plus"> -<!ENTITY basic.label "Standard"> -<!ENTITY type.filter.label "Blockerande filter"> -<!ENTITY types.label "Verkställ för:"> -<!ENTITY shortpattern.warning "Detta mönster är för kort för optimal prestanda och för mĂĄnga sĂĄdana mönster kan göra din surfning lĂĄngsam. Det rekommenderas att använda längre strängar för detta filter."> -<!ENTITY collapse.yes.label "Ja"> -<!ENTITY anchors.label "Acceptera endast mönster:"> -<!ENTITY collapse.default.yes.label "Standard (ja)"> -<!ENTITY domainRestriction.help "Ange en eller flera domäner avgränsade med lodrätt streck (|). Filtret kommer endast att tillämpas pĂĄ dessa valda domäner(na). Tilde-tecknet (~) framför en domän anger att filtret inte kommer att användas för den domänen."> -<!ENTITY accept.label "Lägg till filter"> -<!ENTITY options.label "Inställningar"> -<!ENTITY disabled.warning "Adblock Plus är inaktiverat. Du kan lägga till filter, men de kan inte användas förrän du [link]aktiverar Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "I början av domännamnet"> -<!ENTITY collapse.no.label "Nej"> -<!ENTITY selectAllTypes.label "Markera alla"> -<!ENTITY advanced.label "Avancerat"> -<!ENTITY pattern.explanation "Mönster är en del av en adress, symbolen * är jokertecken. Filtret används endast pĂĄ adresser som matchar mönstret."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/filters.dtd deleted file mode 100644 index 822ef32..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Alla dina egna filter kommer att ersättas av innehĂĄllet i den valda filen. Vill du fortsätta?"> -<!ENTITY slow.column "&LĂĄngsamma filter"> -<!ENTITY enabled.column "P&ĂĄ"> -<!ENTITY subscription.lastDownload.checksumMismatch "Fel kontrollsumma"> -<!ENTITY noFiltersInGroup.text "Den markerade gruppen är tom"> -<!ENTITY subscription.actions.label "Ă…tgärder"> -<!ENTITY filter.selectAll.label "Markera alla"> -<!ENTITY backupButton.label "Säkerhetskopiera och &Ă…terställ"> -<!ENTITY restore.minVersion.warning "Varning: Filen har skapats med en nyare version av Adblock Plus. Du bör uppdatera till den senaste Adblock Plus-versionen innan du ĂĄterställer frĂĄn denna fil."> -<!ENTITY restore.error "Filens data kunde inte bearbetas. Kanske är det här inte en Adblock Plus-säkerhetskopiefil?"> -<!ENTITY sort.ascending.label "Sortera A > Ă–"> -<!ENTITY sort.label "Sor&tering"> -<!ENTITY subscription.source.label "Filterlista"> -<!ENTITY hitcount.column "Tr&äffar"> -<!ENTITY noFilters.text "Du har inga egna filter än."> -<!ENTITY backup.custom.title "Endast egna filter"> -<!ENTITY subscription.external.label "Uppdateras av ett annat tillägg"> -<!ENTITY subscription.delete.label "Ta bort"> -<!ENTITY noGroupSelected.text "Du mĂĄste markera en filtergrupp innan dess filter kan visas."> -<!ENTITY filter.cut.label "Klipp ut"> -<!ENTITY restore.default.label "Ă…terställ säkerhetskopia frĂĄn ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Hämtar…"> -<!ENTITY subscriptions.tab.label "Filterprenumerationer"> -<!ENTITY sort.descending.label "Sortera &Ă– > A"> -<!ENTITY filters.remove.warning "Vill du verkligen ta bort alla markerade filter?"> -<!ENTITY filter.delete.label "Ta bort"> -<!ENTITY addSubscriptionAdd.label "Lägg till"> -<!ENTITY viewMenu.label "Visa"> -<!ENTITY subscription.lastDownload.unknown "Okänt"> -<!ENTITY addSubscriptionCancel.label "Avbryt"> -<!ENTITY subscription.enabled.label "Aktiverat"> -<!ENTITY noSubscriptions.text "Du har inte lagt till nĂĄgra filterprenumerationer än. Adblock Plus kommer inte blockera nĂĄgonting utan filter. Använd "Lägg till filterprenumeration" för att lägga till nĂĄgra."> -<!ENTITY subscription.update.label "Uppdatera filter"> -<!ENTITY dialog.title "Filterinställningar för Adblock Plus"> -<!ENTITY addFilter.label "Lägg till &filter"> -<!ENTITY subscription.minVersion.warning "Denna filterprenumeration kräver en nyare version av Adblock Plus, du bör uppdatera till den senaste Adblock Plus-versionen."> -<!ENTITY subscription.lastDownload.invalidURL "Ogiltig adress"> -<!ENTITY backup.error "Det uppstod ett fel vid skrivning av filter till filen. Säkerställ att filen inte är skrivskyddad eller används av ett annat program."> -<!ENTITY filter.moveUp.label "Flytta uppĂĄt"> -<!ENTITY addGroup.label "Lägg till filtergrupp"> -<!ENTITY filter.edit.label "Redigera"> -<!ENTITY subscription.showHideFilters.label "Visa/dölj filter"> -<!ENTITY acceptableAds2.label "TillĂĄt viss icke-störande reklam"> -<!ENTITY addSubscriptionOther.label "Lägg till en ny prenumeration"> -<!ENTITY close.label "Stäng"> -<!ENTITY sort.none.label "&Osorterad"> -<!ENTITY filter.actions.label "FilterĂĄtgärder"> -<!ENTITY filter.copy.label "Kopiera"> -<!ENTITY filter.moveDown.label "Flytta nedĂĄt"> -<!ENTITY filter.resetHitCounts.label "Ă…terställ träffstatistik"> -<!ENTITY readMore.label "Läs mer"> -<!ENTITY subscription.moveUp.label "Flytta uppĂĄt"> -<!ENTITY addSubscription.label "Lägg till filter&prenumeration"> -<!ENTITY subscription.homepage.label "Webbplats"> -<!ENTITY backup.complete.title "Alla filter och prenumerationer"> -<!ENTITY restore.own.label "Ă…terställ egen säkerhetskopia"> -<!ENTITY restore.complete.warning "Alla dina filterinställningar kommer att ersättas av innehĂĄllet i den valda filen. Vill du fortsätta?"> -<!ENTITY filters.tab.label "Egna filter"> -<!ENTITY backup.label "Skapa ny säkerhetskopia"> -<!ENTITY find.label "Sö&k"> -<!ENTITY subscription.moveDown.label "Flytta nedĂĄt"> -<!ENTITY subscription.lastDownload.connectionError "Fel vid hämtning"> -<!ENTITY subscription.lastDownload.success "Klart"> -<!ENTITY subscription.lastDownload.invalidData "Fel vid validering av filter"> -<!ENTITY filter.paste.label "Klistra in"> -<!ENTITY subscription.disabledFilters.enable "Aktivera inaktiverade filter"> -<!ENTITY lasthit.column "Senaste t&räff"> -<!ENTITY subscription.editTitle.label "Redigera rubrik"> -<!ENTITY subscription.disabledFilters.warning "Vissa filter i denna prenumeration är inaktiverade."> -<!ENTITY filter.column "Filterregler"> -<!ENTITY subscription.lastDownload.label "Senast hämtat:"> -<!ENTITY viewList.label "Visa lista"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/firstRun.properties deleted file mode 100644 index 5381477..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Surfa privat genom att inaktivera spĂĄrning - dölj dina spĂĄr frĂĄn reklamföretag som vill spĂĄra dina rörelser. -firstRun_toggle_off=AV -firstRun_feature_tracking=Inaktivera SpĂĄrning -firstRun_feature_malware=Malwareblockering -firstRun_title=Adblock Plus har installerats -firstRun_acceptableAdsExplanation=Vi vill uppmuntra webbplatser att använda enkel, diskret reklam. Det är därför vi har fastställt <a>strikta riktlinjer</a> för att identifiera acceptabla annonser, som visas under standardinställningar. Om du fortfarande vill blockera alla annonser kan du <a>inaktivera</a> detta inom ett par sekunder. -firstRun_toggle_on=PĂ… -firstRun_contributor_credits=Tack till -firstRun_dataCorruptionWarning=Fortsätter denna sida att visas? <a>Klicka här!</a> -firstRun_acceptableAdsHeadline=Irriterande annonser blockeras nu -firstRun_share=Berätta för dina vänner -firstRun_share_headline=<a>Hjälp oss</a> att göra webben till en bättre plats -firstRun_features=Adblock Plus kan göra mer än att blockera reklam -firstRun_feature_malware_description=Göra din surfning säkrare genom att blockera kända skadliga domäner. -firstRun_feature_social_description=Förbättrar automatiskt din webbupplevelse genom borttagning av sociala medier knappar, sĂĄsom Facebook Gilla, som visas pĂĄ webbsidor och spĂĄra ditt beteende. -firstRun_donate=donera -firstRun_donate_label=Stöd vĂĄrt projekt -firstRun_feature_social=Ta bort knappar för Sociala Medier -firstRun_legacySafariWarning=Du använder en äldre version av Safari som inte stödjs av Adblock Plus. Adblock Plus kanske inte fungerar korrekt eller försämrar användarupplevelsen pĂĄ vissa hemsidor. Vi rekommenderar starkt att antingen uppdatera till Safari 6.1.1 eller högre (tillgänglig pĂĄ OS X 10.8 Mountain Lion), Safari 7.0.1 eller högre (tillgänglig pĂĄ OS X 10.9 Mavericks), eller att använda den senaste versionen av Mozilla Firefox, Google Chrome eller Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/global.properties deleted file mode 100644 index 0bf2eab..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Det finns inget att blockera pĂĄ denna sida -action3_tooltip=Klicka för att slĂĄ pĂĄ/av Adblock Plus. -notification_antiadblock_title=Göm riktade budskap? -type_label_script=skript -filter_elemhide_nocriteria=Inga villkor för att gömma element har uppfyllts -blockingGroup_title=Reklamblockeringsregler -whitelisted_tooltip=Adblock Plus är pĂĄ, men inaktiverat för denna sida. -type_label_stylesheet=formatmall -blocked_count_tooltip=?1? av ?2? -type_label_font=teckensnitt -type_label_popup=popupfönster -filter_regexp_tooltip=Detta filter är ett reguljärt uttryck eller för kort för optimal funktion. För mĂĄnga av dessa filter kan göra din surfning lĂĄngsam. -action0_tooltip=Klicka för meny, mittenklicka för att slĂĄ pĂĄ/av Adblock Plus. -whitelisted_page=Adblock Plus är inaktiverat pĂĄ denna sida -remove_group_warning=Vill du verkligen radera denna grupp? -action1_tooltip=Klicka för att öppna/stänga listan med blockerbara objekt, mittenklicka för att slĂĄ pĂĄ/av Adblock Plus. -type_label_xmlhttprequest=XML-förfrĂĄgan -active_tooltip=Adblock Plus är aktiverat, ?1? filterprenumeration(er) och ?2? egna filter används. -type_label_document=dokument -type_label_object_subrequest=objektunderförfrĂĄgan -whitelistGroup_title=Undantagsregler -disabled_tooltip=Adblock Plus är av. -filter_elemhide_duplicate_id=Endast ett ID fĂĄr anges för elementet som skall döljas -type_label_object=objekt -action2_tooltip=Klicka för att öppna inställningarna, mittenklicka för att slĂĄ pĂĄ/av Adblock Plus. -type_label_subdocument=ram -clearStats_warning=Detta kommer att ĂĄterställa all filterträffstatistik och inaktivera räkning av filterträffar. Vill du fortsätta? -notification_antiadblock_message=Denna webbplats har varit känt för att visa riktade budskap till Adblock Plus användare. Vill du Adblock Plus att dölja riktade budskap? -blocked_count_addendum=(undantagna: ?1?, dolda: ?2?) -subscription_invalid_location=Platsen du angivit är antingen ogiltig eller sĂĄ har du angivit ett felaktigt filnamn. -type_label_image=bild -remove_subscription_warning=Vill du verkligen ta bort denna prenumeration? -type_label_other=annan -mobile_menu_enable=ABP: Aktivera -type_label_media=ljud/video -mobile_menu_disable_site=ABP: Inaktivera för ?1? -elemhideGroup_title=Elementdöljningsregler -mobile_menu_enable_site=ABP: Aktivera för ?1? -type_label_elemhide=dold -newGroup_title=Ny filtergrupp -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/overlay.dtd deleted file mode 100644 index 9e5694a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "Jag"> -<!ENTITY notification.button.no "Nej"> -<!ENTITY sync.label "Syn&kronisera Adblock Plus inställningar"> -<!ENTITY whitelist.site.label "Använd inte pĂĄ ?1?"> -<!ENTITY filters.label "Filterinställningar"> -<!ENTITY disable.label "Inaktivera för alla domäner"> -<!ENTITY objecttab.title "Blockera"> -<!ENTITY objecttab.tooltip "Klicka här för att blockera detta objekt med Adblock Plus"> -<!ENTITY menuitem.label "Inställning&ar för Adblock Plus"> -<!ENTITY objecttabs.label "&Visa flik vid Flash- och Java-reklam"> -<!ENTITY sendReport.label "Rapportera problem pĂĄ denna sida"> -<!ENTITY whitelist.page.label "Använd inte pĂĄ denna sida"> -<!ENTITY context.image.label "Adblock Plus: Blockera bild"> -<!ENTITY counthits.label "Räkna an&talet filterträffar"> -<!ENTITY opensidebar.label "Visa lista över blockerbara objekt"> -<!ENTITY notification.button.close "Sluta"> -<!ENTITY contribute.label "Bidra till Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Blockera ram"> -<!ENTITY blocked.tooltip "Blockerade objekt pĂĄ denna sida:"> -<!ENTITY hideplaceholders.label "Dölj platshĂĄllare för blockerade element"> -<!ENTITY showinstatusbar.label "Visa i statusfältet"> -<!ENTITY sidebar.title "Blockerbara objekt pĂĄ denna sida"> -<!ENTITY options.label "Alter&nativ"> -<!ENTITY context.object.label "Adblock Plus: Blockera objekt"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Ă…teraktivera pĂĄ denna sida"> -<!ENTITY filters.tooltip "Mest aktiva filter:"> -<!ENTITY closesidebar.label "Stäng listan över blockerbara objekt"> -<!ENTITY showintoolbar.label "Visa i verktygs&fältet"> -<!ENTITY status.tooltip "Status:"> -<!ENTITY context.media.label "Adblock Plus: Blockera ljud/video"> -<!ENTITY subscription.update.label "Uppdatera filter"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sendReport.dtd deleted file mode 100644 index 36e35d5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Ă…ngra"> -<!ENTITY issues.disabledgroups.description "Följande filterprenumerationer/filtergrupper är inaktiverade, men kan trots det pĂĄverka denna sida:"> -<!ENTITY showData.label "Visa rapportdata"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus blockerar alltför &mycket"> -<!ENTITY issues.change.description "Your configuration has been changed. Var vänlig uppdatera sidan för att testa ändringarna och skicka in en rapport om problemet inte har blivit löst trots förändringarna."> -<!ENTITY email.label "&E-Post:"> -<!ENTITY issues.openPreferences.label "Ă–ppna filterinställningarna"> -<!ENTITY sendPage.confirmation "Din rapport har sparats. Du kan nĂĄ den pĂĄ följande adress:"> -<!ENTITY copyLink.label "&Kopiera rapportlänk"> -<!ENTITY issues.nofilters.description "Adblock Plus blockerar ingenting pĂĄ den aktuella sidan. Problemet du har observerat har sannolikt ingenting att göra med Adblock Plus."> -<!ENTITY sendPage.knownIssue "Problemet du rapporterade är antagligen redan känt. Mer information:"> -<!ENTITY typeSelector.other.description "Välj detta alternativ om du misstänker ett problem med själva tillägget Adblock Plus, snarare än med dess filter."> -<!ENTITY issues.disabledgroups.enable.label "Aktivera filterprenumeration/filtergrupp"> -<!ENTITY typeWarning.override.label "&Jag förstĂĄr och vill skicka in rapporten i alla fall"> -<!ENTITY issues.disabled.enable.label "Aktivera Adblock Plus"> -<!ENTITY update.fixed.description "Uppdateringarna till dina filterprenumerationer löste troligtvis problemet du rapporterade. Var vänlig och uppdatera den berörda sidan och försök igen, tryck Skicka pĂĄ nytt om ditt problem kvarstĂĄr."> -<!ENTITY anonymous.label "Skick&a in anonymt"> -<!ENTITY reloadButton.label "&Uppdatera sidan"> -<!ENTITY recentReports.clear.label "&Ta bort alla rapporter"> -<!ENTITY typeSelector.description "Denna dialog kommer att guida dig igenom alla steg som krävs för att skicka in en problemrapport för Adblock Plus. Först och främst mĂĄste du välja den typ av problem som du upplever pĂĄ denna sida:"> -<!ENTITY screenshot.remove.label "Ta b&ort känslig data"> -<!ENTITY issues.ownfilters.description "NĂĄgra av de filter som tillämpas pĂĄ denna sida är användardefinierade. Var vänlig inaktivera de filter som kan ha orsakat problemet:"> -<!ENTITY update.inProgress.description "Adblock Plus behöver uppdatera dina filterprenumerationer för att kontrollera att ditt problem inte redan är löst."> -<!ENTITY sendPage.retry.label "Skicka igen"> -<!ENTITY data.label "Ra&pportdata:"> -<!ENTITY recentReports.label "Dina senaste inskickade rapporter"> -<!ENTITY typeWarning.description "Du har angivit att du vill rapportera ett allmänt problem med Adblock Plus snarare än ett problem med filtren. Var vänlig observera att sĂĄdana problem helst skall rapporteras i [link]Adblock Plus webbforum[/link]. Du bör endast använda problemrapportören för att göra ett tillägg till en befintlig diskussion, eftersom ingen kommer att märka din rapport om du inte ger dem en länk till den. Den automatiskt genererade länken kommer att bli tillgänglig efter att rapporten har skickats in."> -<!ENTITY issues.disabled.description "Adblock Plus är inaktiverat, det kommer inte att blockera nĂĄgonting i sitt nuvarande tillstĂĄnd."> -<!ENTITY attachExtensions.label "Bifoga en lista över aktiverade till&ägg till rapporten ifall en tilläggskonflikt är orsaken till problemet"> -<!ENTITY issues.nosubscriptions.add.label "Lägg till filterprenumeration"> -<!ENTITY issues.disabledfilters.enable.label "Aktivera filter"> -<!ENTITY issues.override.label "&Konfigurationen är korrekt, fortsätt med rapporten"> -<!ENTITY issues.nosubscriptions.description "Du verkar inte prenumerara pĂĄ nĂĄgot av de fördefinierade filterlistor som automatiskt tar bort icke önskvärt innehĂĄll frĂĄn webbplatser."> -<!ENTITY typeSelector.falsePositive.description "Välj detta alternativ om sidan saknar viktigt innehĂĄll, visas pĂĄ ett felaktigt sätt eller inte fungerar som den skall. Du kan ta reda pĂĄ huruvida Adblock Plus är orsaken till problemet genom att tillfälligtvis inaktivera det."> -<!ENTITY typeSelector.other.label "&Annat problem"> -<!ENTITY emailComment.label "Vi uppmanar dig att ange en giltig e-postadress sĂĄ att vi kan kontakta dig om det finns frĂĄgor om er rapport. Det tillĂĄter oss att erkänna era bidrag och prioritera dem högre."> -<!ENTITY issues.whitelist.remove.label "Ă…teraktivera Adblock Plus för denna sida"> -<!ENTITY outdatedSubscriptions.description "De följande filterprenumerationerna har inte uppdaterats pĂĄ ĂĄtminstone tvĂĄ veckor. Var vänlig och uppdatera dessa filterprenumerationer innan en rapport skickas, problemet kan redan vara löst."> -<!ENTITY dataCollector.description "Var vänlig vänta nĂĄgra ögonblick medan Adblock Plus samlar in nödvändig data."> -<!ENTITY sendButton.label "Ski&cka rapport"> -<!ENTITY comment.label "&Kommentar (valfritt):"> -<!ENTITY sendPage.errorMessage "Det gick inte att skicka rapporten. Felkod: "?1?". Var vänlig säkerställ att du är ansluten till Internet och försök sedan igen. Om problemet kvarstĂĄr, vänligen begär hjälp i [link]Adblock Plus webbforum[/link]."> -<!ENTITY showRecentReports.label "Visa senaste inskickade rapporter"> -<!ENTITY commentPage.heading "Ange kommentar"> -<!ENTITY update.start.label "Starta uppdatering nu"> -<!ENTITY issues.disabledfilters.description "Följande filter är inaktiverade, men kan trots det pĂĄverka denna sida:"> -<!ENTITY screenshot.description "Samma sida kan uppfattas olika av olika personer. Att bifoga en skärmdump till din rapport kan hjälpa oss att förstĂĄ problemet. Du kan ta bort delar som innehĂĄller känslig information sĂĄ väl som märka ut omrĂĄden där problemet är tydligt. För att göra det, klicka pĂĄ motsvarande knapp och markera en sektion av bilden med din mus."> -<!ENTITY screenshot.attach.label "&Bifoga en bild av sidan till rapporten"> -<!ENTITY issues.whitelist.description "Adblock Plus är för närvarande inaktiverat för sidan som du rapporterar. Var vänlig ĂĄteraktivera det och uppdatera sidan innan rapporten skickas in, för att underlätta utredningen av detta problem."> -<!ENTITY typeSelector.falseNegative.label "Ad&block Plus blockerar inte en annons"> -<!ENTITY typeSelector.heading "Välj problemtyp"> -<!ENTITY anonymity.warning "Vi kommer inte att kunna kontakta er och er rapport kan fĂĄ en lägre prioritering."> -<!ENTITY wizard.title "Rapportera problem"> -<!ENTITY issues.ownfilters.disable.label "Inaktivera filter"> -<!ENTITY commentPage.description "Textfältet nedan lĂĄter dig ange en kommentar för att hjälpa oss förstĂĄ problemet. Detta steg är valfritt, men rekommenderas om problemet inte är tydligt. Du kan även granska rapportdatan innan den skickas."> -<!ENTITY comment.lengthWarning "Längden pĂĄ din kommentar överskrider 1 000 tecken. Endast de första 1 000 tecknen kommer att skickas."> -<!ENTITY typeSelector.falseNegative.description "Välj detta alternativ om en annons visas trots att Adblock Plus är aktiverat."> -<!ENTITY sendPage.waitMessage "Var vänlig vänta medan Adblock Plus skickar ing din rapport."> -<!ENTITY dataCollector.heading "Välkommen till problemrapportören"> -<!ENTITY screenshot.heading "Bifoga skärmdump"> -<!ENTITY sendPage.heading "Skicka rapport"> -<!ENTITY issues.subscriptionCount.description "Det verkar som att du prenumererar pĂĄ alldeles för mĂĄnga filterprenumerationer. Den konfigurationen rekommenderas inte eftersom sannolikheten att drabbas av problem ökar. Vi kan heller inte acceptera din problemrapport eftersom det inte stĂĄr klart vilken filterprenumerationsskapare som mĂĄste vidta ĂĄtgärder. Var vänlig ta bort alla utom de absolut nödvändiga filterprenumerationerna och testa om problemet kvarstĂĄr."> -<!ENTITY screenshot.mark.label "&Märk ut problemet"> -<!ENTITY privacyPolicy.label "Sekretesspolicy"> -<!ENTITY issues.description "Adblock Plus har upptäckt problem med din konfiguration som kan vara orsaken till detta problem eller som kommer att försvĂĄra utredningen av rapporten."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sidebar.dtd deleted file mode 100644 index e159fbe..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Markera objektets ram"> -<!ENTITY address.label "Adress"> -<!ENTITY context.open.label "Ă–ppna i ny flik"> -<!ENTITY type.label "Typ"> -<!ENTITY tooltip.filterSource.label "Filterkälla:"> -<!ENTITY noitems.label "Inget att blockera"> -<!ENTITY filter.label "Filtrera"> -<!ENTITY tooltip.size.label "Storlek:"> -<!ENTITY reattach.label "Koppla ihop"> -<!ENTITY search.label "S&ök:"> -<!ENTITY docDomain.thirdParty "(tredje part)"> -<!ENTITY filterSource.label "Filterkälla"> -<!ENTITY tooltip.docDomain.label "Dokumentkälla:"> -<!ENTITY context.copy.label "Kopiera objektets adress"> -<!ENTITY tooltip.type.label "Typ:"> -<!ENTITY context.disablefilter.label "Inaktivera filtret ?1?"> -<!ENTITY context.copyFilter.label "Kopiera filter"> -<!ENTITY context.block.label "Blockera detta objekt"> -<!ENTITY context.enablefilter.label "Ă…teraktivera filtret ?1?"> -<!ENTITY detach.label "Koppla frĂĄn"> -<!ENTITY whitelisted.label "Undantagen sida"> -<!ENTITY context.disablefilteronsite.label "Inaktivera detta filter pĂĄ ?1?"> -<!ENTITY detached.title "Adblock Plus: Blockeringsbara objekt (frĂĄnkopplad)"> -<!ENTITY docDomain.firstParty "(första part)"> -<!ENTITY tooltip.type.whitelisted "(undantagen)"> -<!ENTITY tooltip.filter.label "Filter som används:"> -<!ENTITY tooltip.filter.disabled "(inaktiverat)"> -<!ENTITY context.editfilter.label "Blockeringsfilter är pĂĄ"> -<!ENTITY tooltip.type.blocked "(blockerad)"> -<!ENTITY size.label "Storlek"> -<!ENTITY context.whitelist.label "Lägg till undantag för objekt"> -<!ENTITY context.selectAll.label "Markera alla"> -<!ENTITY state.label "TillstĂĄnd"> -<!ENTITY docDomain.label "Dokumentkälla"> -<!ENTITY tooltip.address.label "Adress:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/subscriptionSelection.dtd deleted file mode 100644 index d096848..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/sv-SE/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "L&ägg även till filterprenumerationen "?1?""> -<!ENTITY list.download.failed "Adblock Plus kunde inte hämta listan med filterprenumerationer."> -<!ENTITY list.download.retry "Försök igen"> -<!ENTITY title.label "&Rubrik för prenumeration:"> -<!ENTITY list.download.website "Visa webbsidan"> -<!ENTITY supplementMessage "Denna filterprenumeration bör användas med filterprenumerationen "?1?", som för närvarande inte används."> -<!ENTITY viewList.label "Visa filter"> -<!ENTITY visitHomepage.label "Besök webbsidan"> -<!ENTITY addSubscription.label "Lägg till filterprenumeration"> -<!ENTITY dialog.title "Lägg till filterprenumeration för Adblock Plus"> -<!ENTITY location.label "Plats &för filter:"> -<!ENTITY fromWeb.description "Var vänlig bekräfta att du vill lägga till denna filterprenumeration. Du kan ändra rubrik eller plats innan du lägger till den."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/composer.dtd deleted file mode 100644 index 8116b1f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "&ทีŕąŕ¸—้ายๆขŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕą"> -<!ENTITY domainRestriction.label "ŕ¸ŕ¸łŕ¸ŕ¸±&ดโดเมน:"> -<!ENTITY collapse.default.no.label "ŕąŕ¸Šŕą‰ŕ¸„ŕąŕ¸˛ŕą€ŕ¸Łŕ¸´ŕąŕ¸ˇŕ¸•้น(ไมŕąŕąŕ¸Šŕą)"> -<!ENTITY firstParty.label "First-party เทŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™"> -<!ENTITY preferences.label "ŕąŕ¸Şŕ¸”งตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ˇŕ¸µ..."> -<!ENTITY pattern.label "ดูรูปŕąŕ¸šŕ¸š"> -<!ENTITY thirdParty.label "Third-party เทŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™"> -<!ENTITY filter.label "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸«ŕ¸ˇŕą:"> -<!ENTITY collapse.label "ŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕ¸—ีŕąŕ¸Ąŕą‰&มเหลว:"> -<!ENTITY match.warning "ŕąŕ¸šŕ¸šŕ¸Łŕ¸ąŕ¸›ŕ¸—ีŕąŕ¸„ุณเพิŕąŕ¸ˇŕą€ŕ¸‚้ามาไมŕąŕ¸Şŕ¸±ŕ¸ˇŕ¸žŕ¸±ŕ¸™ŕ¸ŕąŚŕ¸ŕ¸±ŕ¸šŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕąŕ¸—ีŕąŕ¸ŕ¸°ŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„มŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ มันŕ¸ŕ¸°ŕą„มŕąŕ¸ˇŕ¸µŕ¸śŕ¸Ąŕąŕ¸” ๆ"> -<!ENTITY anchor.start.label "ทีŕąŕ¸«&น้าๆขŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕą"> -<!ENTITY matchCase.label "&ŕ¸ŕ¸±ŕ¸šŕ¸„ูŕą"> -<!ENTITY custom.pattern.label "&ปรับเŕ¸ŕ¸‡:"> -<!ENTITY unselectAllTypes.label "ไมŕąŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸"> -<!ENTITY type.whitelist.label "ข้ŕ¸ŕ¸˘ŕ¸ŕą€ŕ¸§ŕą‰ŕ¸™"> -<!ENTITY regexp.warning "รูปŕąŕ¸šŕ¸šŕ¸—ีŕąŕ¸„ุณป้ŕ¸ŕ¸™ŕą€ŕ¸‚้าŕ¸ŕ¸°ŕ¸–ูŕ¸ŕąŕ¸›ŕ¸Ąŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Şŕ¸”งŕ¸ŕ¸ŕ¸ŕ¸—ัŕąŕ¸§ŕą„ป ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Şŕ¸”งŕ¸ŕ¸ŕ¸ŕ¸—ัŕąŕ¸§ŕą„ปมาŕ¸ŕą†ŕ¸ŕ¸°ŕ¸—ำŕąŕ¸«ŕą‰ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚้าเว็บช้าลง ถ้าคุณไมŕąŕ¸•ั้งŕąŕ¸ŕ¸ŕ¸°ŕąŕ¸Šŕą‰ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Şŕ¸”งŕ¸ŕ¸ŕ¸ŕ¸—ัŕąŕ¸§ŕą„ปŕąŕ¸«ŕą‰ŕąŕ¸Şŕąŕ¸Şŕ¸±ŕ¸Ťŕ¸Ąŕ¸±ŕ¸ŕ¸©ŕ¸“์ * ทีŕąŕ¸—้ายรูปŕąŕ¸šŕ¸š"> -<!ENTITY dialog.title "เพิŕąŕ¸ˇŕ¸ŕ¸Žŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ Adblock Plus"> -<!ENTITY basic.label "มุมมŕ¸ŕ¸‡ŕ¸žŕ¸·ŕą‰ŕ¸™ŕ¸ŕ¸˛ŕ¸™"> -<!ENTITY type.filter.label "ŕ¸ŕ¸˛ŕ¸Łŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸±ŕą‰ŕ¸™ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY types.label "ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸±ŕ¸šŕ¸Šŕ¸™ŕ¸´ŕ¸”:"> -<!ENTITY shortpattern.warning "รูปŕąŕ¸šŕ¸šŕ¸—ีŕąŕ¸„ุณป้ŕ¸ŕ¸™ŕą€ŕ¸‚้าสั้นเŕ¸ŕ¸´ŕ¸™ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸ŕ¸°ŕąŕ¸Šŕą‰ŕąŕ¸«ŕą‰ŕą€ŕ¸«ŕ¸ˇŕ¸˛ŕ¸°ŕ¸Şŕ¸ˇ รูปŕąŕ¸šŕ¸šŕ¸ˇŕ¸˛ŕ¸ŕą†ŕ¸ŕ¸°ŕ¸—ำŕąŕ¸«ŕą‰ŕą€ŕ¸‚้าเว็บช้า ŕąŕ¸™ŕ¸°ŕ¸™ŕ¸łŕąŕ¸«ŕą‰ŕąŕ¸Šŕą‰ŕ¸Łŕ¸ąŕ¸›ŕąŕ¸šŕ¸šŕ¸˘ŕ¸˛ŕ¸§ŕą†ŕ¸Şŕ¸łŕ¸«ŕ¸Łŕ¸±ŕ¸šŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰"> -<!ENTITY collapse.yes.label "ŕąŕ¸Šŕą"> -<!ENTITY anchors.label "รับเฉพาะรูปŕąŕ¸šŕ¸š:"> -<!ENTITY collapse.default.yes.label "ŕąŕ¸Šŕą‰ŕ¸„ŕąŕ¸˛ŕą€ŕ¸Łŕ¸´ŕąŕ¸ˇŕ¸•้น(ŕąŕ¸Šŕą)"> -<!ENTITY domainRestriction.help "ระบุโดเมนหนึŕąŕ¸‡ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕ¸«ŕ¸Ąŕ¸˛ŕ¸˘ŕąŕ¸«ŕąŕ¸‡ŕąŕ¸«ŕą‰ŕ¸„ัŕąŕ¸™ŕ¸”้วยสัญลัŕ¸ŕ¸©ŕ¸“์ "|" ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ŕ¸°ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸šŕ¸™ŕą‚ดเมนเหลŕąŕ¸˛ŕ¸™ŕ¸µŕą‰ŕą€ŕ¸—ŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™ ถ้าไมŕąŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕą‚ดเมนŕąŕ¸”ŕąŕ¸«ŕą‰ŕąŕ¸Şŕąŕ¸Şŕ¸±ŕ¸Ťŕ¸Ąŕ¸±ŕ¸ŕ¸©ŕ¸“์ "~" หน้าชืŕąŕ¸ŕą‚ดเมน"> -<!ENTITY accept.label "เพิŕąŕ¸ˇŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY options.label "ตัวเลืŕ¸ŕ¸"> -<!ENTITY disabled.warning "Adblock Plus ถูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸˘ŕ¸ąŕą ŕąŕ¸•ŕąŕ¸„ุณยังสามารถเพิŕąŕ¸ˇŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą„ด้ ŕąŕ¸•ŕąŕ¸§ŕąŕ¸˛ŕ¸ŕ¸°ŕ¸˘ŕ¸±ŕ¸‡ŕą„มŕąŕ¸–ูŕ¸ŕ¸™ŕ¸łŕą„ปŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸™ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸„ุณŕ¸ŕ¸°[link]เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ Adblock Plus[/link] ŕ¸ŕąŕ¸ŕ¸™"> -<!ENTITY anchor.start.flexible.label "สŕąŕ¸§&นต้นขŕ¸ŕ¸‡ŕ¸Šŕ¸·ŕąŕ¸ŕą‚ดเมน"> -<!ENTITY collapse.no.label "ไมŕąŕąŕ¸Šŕą"> -<!ENTITY selectAllTypes.label "เลืŕ¸ŕ¸ŕ¸—ั้งหมด"> -<!ENTITY advanced.label "มุมมŕ¸ŕ¸‡ŕ¸Ąŕ¸°ŕą€ŕ¸ŕ¸µŕ¸˘ŕ¸”"> -<!ENTITY pattern.explanation "รูปŕąŕ¸šŕ¸š (pattern) สามารถเป็นสŕąŕ¸§ŕ¸™ŕąŕ¸”สŕąŕ¸§ŕ¸™ŕ¸«ŕ¸™ŕ¸¶ŕąŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕą สัญลัŕ¸ŕ¸©ŕ¸“์ * เป็นŕ¸ŕ¸±ŕ¸ŕ¸‚ระŕąŕ¸”ๆ ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ŕ¸°ŕ¸–ูŕ¸ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸±ŕ¸šŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕąŕ¸—ีŕąŕą€ŕ¸«ŕ¸ˇŕ¸˛ŕ¸°ŕ¸Şŕ¸ˇŕ¸ŕ¸±ŕ¸šŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą€ŕ¸—ŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/filters.dtd deleted file mode 100644 index 9e27ded..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸šŕ¸šŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”เŕ¸ŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณทั้งหมดŕ¸ŕ¸°ŕ¸–ูŕ¸ŕąŕ¸—นที๠โดยเนื้ŕ¸ŕ¸«ŕ¸˛ŕ¸‚ŕ¸ŕ¸‡ŕą„ฟล์ทีŕąŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕą„ว้ คุณต้ŕ¸ŕ¸‡ŕ¸”ำเนินŕ¸ŕ¸˛ŕ¸Łŕ¸•ŕąŕ¸ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„มŕą"> -<!ENTITY slow.column "ทำŕąŕ¸«ŕą‰ŕ¸•ัวŕ¸ŕ¸Łŕ¸&งช้าลง"> -<!ENTITY enabled.column "เ&ปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY subscription.lastDownload.checksumMismatch "ล้มเหลว checksum ŕ¸ŕ¸±ŕ¸šŕ¸śŕ¸´ŕ¸”คูŕą"> -<!ENTITY noFiltersInGroup.text "ŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸—ีŕąŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸‡ŕą€ŕ¸›ŕ¸Ąŕąŕ¸˛"> -<!ENTITY subscription.actions.label "ŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸Łŕ¸°ŕ¸—ำ"> -<!ENTITY filter.selectAll.label "เลืŕ¸ŕ¸ŕ¸—ั้งหมด"> -<!ENTITY backupButton.label "ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸łŕ¸Łŕ¸ŕ¸‡ŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕąŕ¸Ą&ะคืนคŕąŕ¸˛"> -<!ENTITY restore.minVersion.warning "คำเตืŕ¸ŕ¸™: ไฟล์ทีŕąŕ¸–ูŕ¸ŕ¸Şŕ¸Łŕą‰ŕ¸˛ŕ¸‡ŕ¸‚ึ้นด้วย Adblock Plus เป็นรุŕąŕ¸™ŕąŕ¸«ŕ¸ˇŕąŕ¸ŕ¸§ŕąŕ¸˛ คุณควรปรับปรุง Adblock Plus ŕąŕ¸«ŕą‰ŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸Łŕ¸¸ŕąŕ¸™ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”ŕ¸ŕąŕ¸ŕ¸™ŕ¸—ีŕąŕ¸ŕ¸°ŕ¸ŕ¸ąŕą‰ŕ¸„ืนข้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸ŕ¸˛ŕ¸ŕą„ฟล์นี้"> -<!ENTITY restore.error "ไมŕąŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–ประมวลผลŕąŕ¸źŕą‰ŕ¸ˇŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ą บางทีŕ¸ŕ¸˛ŕ¸ŕą„มŕąŕąŕ¸Šŕąŕąŕ¸źŕą‰ŕ¸ˇŕ¸Şŕ¸łŕ¸Łŕ¸ŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ Adblock Plus"> -<!ENTITY sort.ascending.label "&ŕ¸ŕ¸±ŕ¸”ลำดับ A > Z"> -<!ENTITY sort.label "&ŕ¸ŕ¸±ŕ¸”ลำดับ"> -<!ENTITY subscription.source.label "รายŕ¸ŕ¸˛ŕ¸Łŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY hitcount.column "&นับ"> -<!ENTITY noFilters.text "คุณยังไมŕąŕ¸ˇŕ¸µŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸šŕ¸šŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”เŕ¸ŕ¸‡"> -<!ENTITY backup.custom.title "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸šŕ¸šŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”เŕ¸ŕ¸‡ŕą€ŕ¸—ŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™"> -<!ENTITY subscription.external.label "ปรับปรุงโดยนามสŕ¸ŕ¸¸ŕ¸Ąŕ¸ŕ¸·ŕąŕ¸™"> -<!ENTITY subscription.delete.label "ลบ"> -<!ENTITY noGroupSelected.text "คุณต้ŕ¸ŕ¸‡ŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ŕąŕ¸ŕ¸™ŕ¸—ีŕąŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸±ŕą‰ŕ¸™ŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–ŕąŕ¸Şŕ¸”งผลได้"> -<!ENTITY filter.cut.label "ตัด"> -<!ENTITY restore.default.label "คืนคŕąŕ¸˛ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸łŕ¸Łŕ¸ŕ¸‡ŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸ŕ¸˛ŕ¸ ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ŕ¸ŕ¸łŕ¸Ąŕ¸±ŕ¸‡ŕ¸”าวน์โหลด..."> -<!ENTITY subscriptions.tab.label "นามข้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY sort.descending.label "ŕ¸&ัดลำดับ Z > A"> -<!ENTITY filters.remove.warning "คุณต้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸ŕ¸˛ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕą„ว้ทั้งหมดหรืŕ¸ŕą„มŕą"> -<!ENTITY filter.delete.label "ลบ"> -<!ENTITY addSubscriptionAdd.label "เพิŕąŕ¸ˇ"> -<!ENTITY viewMenu.label "มุมมŕ¸ŕ¸‡"> -<!ENTITY subscription.lastDownload.unknown "ไมŕąŕ¸ˇŕ¸µ"> -<!ENTITY addSubscriptionCancel.label "ยŕ¸ŕą€ŕ¸Ąŕ¸´ŕ¸"> -<!ENTITY subscription.enabled.label "เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY noSubscriptions.text "คุณยังไมŕąŕą„ด้เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸”ๆ Adblock Plus ŕ¸ŕ¸°ŕą„มŕąŕ¸šŕ¸ĄŕąŠŕ¸ŕ¸ŕą€ŕ¸«ŕ¸•ุŕ¸ŕ¸˛ŕ¸Łŕ¸“์ŕąŕ¸”ๆ โดยทีŕąŕą„มŕąŕ¸ˇŕ¸µŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าŕąŕ¸Šŕą‰ "เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้าย" เพืŕąŕ¸ - เพิŕąŕ¸ˇŕ¸ŕ¸˛ŕ¸Łŕ¸”ำเนินŕ¸ŕ¸˛ŕ¸Ł"> -<!ENTITY subscription.update.label "ปรับปรุงตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY dialog.title "ตั้งคŕąŕ¸˛ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ Adblock Plus"> -<!ENTITY addFilter.label "เพิŕąŕ¸ˇŕ¸•ัวŕ¸ŕ¸Łŕ¸&ง"> -<!ENTITY subscription.minVersion.warning "ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸•้ŕ¸ŕ¸‡ŕ¸ˇŕ¸µ Adblock Plus รุŕąŕ¸™ŕąŕ¸«ŕ¸ˇŕąŕ¸—ีŕąŕ¸ŕ¸§ŕąŕ¸˛ คุณควรปรับปรุงเป็น Adblock Plus รุŕąŕ¸™ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”"> -<!ENTITY subscription.lastDownload.invalidURL "ล้มเหลว ไมŕąŕ¸ˇŕ¸µŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕąŕ¸—ีŕąŕ¸–ูŕ¸ŕ¸•้ŕ¸ŕ¸‡"> -<!ENTITY backup.error "มีข้ŕ¸ŕ¸śŕ¸´ŕ¸”พลาดŕąŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚ียนตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą„ปยังไฟล์ ตรวŕ¸ŕ¸Şŕ¸ŕ¸šŕąŕ¸«ŕą‰ŕąŕ¸™ŕąŕąŕ¸ŕ¸§ŕąŕ¸˛ ไฟล์ทีŕąŕą€ŕ¸ŕ¸µŕąŕ¸˘ŕ¸§ŕ¸‚้ŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕą„มŕąŕą„ด้ป้ŕ¸ŕ¸‡ŕ¸ŕ¸±ŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚ียน หรืŕ¸ŕ¸ŕ¸˘ŕ¸ąŕąŕąŕ¸™ŕ¸Łŕ¸°ŕ¸«ŕ¸§ŕąŕ¸˛ŕ¸‡ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕą‚ดยโปรŕąŕ¸ŕ¸Łŕ¸ˇŕ¸›ŕ¸Łŕ¸°ŕ¸˘ŕ¸¸ŕ¸ŕ¸•์ŕ¸ŕ¸·ŕąŕ¸™ŕą†"> -<!ENTITY filter.moveUp.label "ย้ายขึ้น"> -<!ENTITY addGroup.label "เพิŕąŕ¸ˇŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸•ั&วŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY filter.edit.label "ŕąŕ¸ŕą‰ŕą„ข"> -<!ENTITY subscription.showHideFilters.label "ŕąŕ¸Şŕ¸”ง/ซŕąŕ¸ŕ¸™ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY acceptableAds2.label "ŕ¸ŕ¸™ŕ¸¸ŕ¸Ť&าตŕąŕ¸«ŕą‰ŕ¸ˇŕ¸µŕą‚ฆษณาบางŕ¸ŕ¸˘ŕąŕ¸˛ŕ¸‡ŕ¸—ีŕąŕą„มŕąŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸Łŕ¸šŕ¸ŕ¸§ŕ¸™"> -<!ENTITY addSubscriptionOther.label "เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้าย"> -<!ENTITY close.label "ปิด"> -<!ENTITY sort.none.label "&ไมŕąŕ¸ŕ¸±ŕ¸”ลำดับ"> -<!ENTITY filter.actions.label "ดำเนินŕ¸ŕ¸˛ŕ¸Łŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY filter.copy.label "คัดลŕ¸ŕ¸"> -<!ENTITY filter.moveDown.label "ย้ายลง"> -<!ENTITY filter.resetHitCounts.label "ตั้งคŕąŕ¸˛ŕ¸Şŕ¸–ิติŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚้าชมŕąŕ¸«ŕ¸ˇŕą"> -<!ENTITY readMore.label "ŕ¸ŕąŕ¸˛ŕ¸™ŕą€ŕ¸žŕ¸´ŕąŕ¸ˇŕą€ŕ¸•ิม"> -<!ENTITY subscription.moveUp.label "ย้ายขึ้น"> -<!ENTITY addSubscription.label "เพิŕą&มนามข้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY subscription.homepage.label "โฮมเพŕ¸"> -<!ENTITY backup.complete.title "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸Ąŕ¸°ŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายทั้งหมด"> -<!ENTITY restore.own.label "คืนคŕąŕ¸˛ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸łŕ¸Łŕ¸ŕ¸‡ŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸‚ŕ¸ŕ¸‡ŕ¸•นเŕ¸ŕ¸‡"> -<!ENTITY restore.complete.warning "ŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”ลัŕ¸ŕ¸©ŕ¸“ะŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณทั้งหมดŕ¸ŕ¸°ŕ¸–ูŕ¸ŕąŕ¸—นที๠โดยเนื้ŕ¸ŕ¸«ŕ¸˛ŕ¸‚ŕ¸ŕ¸‡ŕą„ฟล์ทีŕąŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕą„ว้ คุณต้ŕ¸ŕ¸‡ŕ¸”ำเนินŕ¸ŕ¸˛ŕ¸Łŕ¸•ŕąŕ¸ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„มŕą"> -<!ENTITY filters.tab.label "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸šŕ¸šŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”เŕ¸ŕ¸‡"> -<!ENTITY backup.label "สร้างŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸łŕ¸Łŕ¸ŕ¸‡ŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕąŕ¸«ŕ¸ˇŕą"> -<!ENTITY find.label "ค้นห&า"> -<!ENTITY subscription.moveDown.label "ย้ายลง"> -<!ENTITY subscription.lastDownload.connectionError "ล้มเหลว ŕ¸ŕ¸˛ŕ¸Łŕ¸”าวน์โหลดล้มเหลว"> -<!ENTITY subscription.lastDownload.success "สำเร็ŕ¸"> -<!ENTITY subscription.lastDownload.invalidData "ล้มเหลว ไมŕąŕ¸ˇŕ¸µŕ¸Łŕ¸˛ŕ¸˘ŕ¸Šŕ¸·ŕąŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸–ูŕ¸ŕ¸•้ŕ¸ŕ¸‡"> -<!ENTITY filter.paste.label "วาง"> -<!ENTITY subscription.disabledFilters.enable "เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ ŕ¸ŕ¸˛ŕ¸Łŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY lasthit.column "ŕ¸ŕ¸”&ลŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”"> -<!ENTITY subscription.editTitle.label "ŕąŕ¸ŕą‰ŕą„ขชืŕąŕ¸ŕą€ŕ¸Łŕ¸·ŕąŕ¸ŕ¸‡"> -<!ENTITY subscription.disabledFilters.warning "บางตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸ŕ¸ŕ¸Łŕ¸±ŕ¸šŕ¸Şŕ¸ˇŕ¸˛ŕ¸Šŕ¸´ŕ¸ŕ¸™ŕ¸µŕą‰ŕ¸–ูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY filter.column "ŕ¸ŕ¸Ž&ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY subscription.lastDownload.label "ดาวน์โหลดลŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”:"> -<!ENTITY viewList.label "มุมมŕ¸ŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Ł"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/firstRun.properties deleted file mode 100644 index f9d617a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_toggle_off=ไมŕąŕ¸—ำงาน -firstRun_feature_tracking=ปิดระบบติดตามŕ¸ŕ¸˛ŕ¸Łŕąŕ¸‚้งาน -firstRun_feature_social=ลบปุŕąŕ¸ˇŕ¸Şŕ¸·ŕąŕ¸ŕ¸Şŕ¸±ŕ¸‡ŕ¸„มŕ¸ŕ¸ŕ¸ -firstRun_title=ŕ¸ŕ¸˛ŕ¸•ิดตั้ง Adblock Plus เสร็ŕ¸ŕ¸Şŕ¸ˇŕ¸šŕ¸ąŕ¸Łŕ¸“์ -firstRun_feature_malware=บล็ŕ¸ŕ¸ŕ¸ˇŕ¸±ŕ¸Ąŕąŕ¸§ŕ¸ŁŕąŚ -firstRun_toggle_on=ทำงาน -firstRun_dataCorruptionWarning=ไมŕąŕąŕ¸«ŕą‰ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰ŕąŕ¸Şŕ¸”งŕ¸ŕ¸µŕ¸ŕ¸„รั้ง <a>คลิŕ¸ŕ¸—ีŕąŕ¸™ŕ¸µŕą‰</a> -firstRun_acceptableAdsHeadline=โฆษณาทีŕąŕ¸™ŕąŕ¸˛ŕ¸Łŕ¸łŕ¸„าญŕ¸ŕ¸°ŕ¸–ูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸±ŕą‰ŕ¸™ -firstRun_share=บŕ¸ŕ¸ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕ¸™ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณ -firstRun_filterlistsReinitializedWarning=ดูเหมืŕ¸ŕ¸™ŕ¸§ŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ŕ¸°ŕą€ŕ¸ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ั้งหมดถูŕ¸ŕ¸Ąŕ¸šŕ¸ŕ¸ŕ¸ŕą„ปŕąŕ¸Ąŕą‰ŕ¸§ŕą„มŕąŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–คืนคŕąŕ¸˛ŕ¸ŕ¸˛ŕ¸ŕ¸•ัวสำรŕ¸ŕ¸‡ŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕą„ด้ ดังนั้นเรามีตัวรีเซ็ตตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕ¸˘ŕ¸ŕ¸ˇŕ¸Łŕ¸±ŕ¸š ŕ¸ŕ¸Łŕ¸¸ŕ¸“าตรวŕ¸ŕ¸Şŕ¸ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Łŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą‚ฆษณาขŕ¸ŕ¸‡ŕ¸„ุณืั้ <a>ตัวเลืŕ¸ŕ¸ Adblock Plus</a> -firstRun_feature_malware_description=ทำŕąŕ¸«ŕą‰ŕ¸—ŕąŕ¸ŕ¸‡ŕą€ŕ¸§ŕą‡ŕ¸šŕą„ด้ปลŕ¸ŕ¸”ภัยยิŕąŕ¸‡ŕ¸‚ึ้น โดยŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą€ŕ¸§ŕą‡ŕ¸šŕ¸—ีŕąŕ¸ˇŕ¸µŕ¸ˇŕ¸±ŕ¸Ąŕąŕ¸§ŕ¸ŁŕąŚŕ¸—ีŕąŕ¸Łŕ¸ąŕą‰ŕ¸ŕ¸±ŕ¸ -firstRun_features=Adblock Plus สามารถทำได้มาŕ¸ŕ¸ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą‚ฆษณา -firstRun_donate=บริŕ¸ŕ¸˛ŕ¸„ -firstRun_donate_label=สนับสนุนโปรเŕ¸ŕą‡ŕ¸„ขŕ¸ŕ¸‡ŕą€ŕ¸Łŕ¸˛ -firstRun_legacySafariWarning=คุณŕ¸ŕ¸łŕ¸Ąŕ¸±ŕ¸‡ŕąŕ¸Šŕą‰ŕą€ŕ¸§ŕ¸ŕ¸ŁŕąŚŕ¸Šŕ¸±ŕąŕ¸™ŕą€ŕ¸ŕąŕ¸˛ŕ¸šŕ¸™ Safari ทีŕąŕą„มŕąŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸™ŕ¸±ŕ¸šŕ¸Şŕ¸™ŕ¸¸ŕ¸™ŕ¸ŕ¸˛ŕ¸ Adblock Plus ŕ¸ŕ¸°ŕ¸—ำŕąŕ¸«ŕą‰ŕ¸—ำงานผิดพลาดได้ เราขŕ¸ŕąŕ¸™ŕ¸°ŕ¸™ŕ¸łŕąŕ¸«ŕą‰ŕ¸„ุณŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ต Safari เป็นเวŕ¸ŕ¸ŁŕąŚŕ¸Šŕ¸±ŕąŕ¸™ 6.1.1 หรืŕ¸ŕ¸Łŕ¸¸ŕąŕ¸™ŕ¸—ีŕąŕ¸Şŕ¸ąŕ¸‡ŕ¸ŕ¸§ŕąŕ¸˛ (บน OS X 10.8 Mountain Lion) หรืภSafari 7.0.1 หรืŕ¸ŕ¸Şŕ¸ąŕ¸‡ŕ¸ŕ¸§ŕąŕ¸˛ (บน OS X 10.9 Mavericks) หรืŕ¸ŕąŕ¸Šŕą‰ŕą€ŕ¸§ŕ¸ŕ¸ŁŕąŚŕ¸Šŕ¸±ŕąŕ¸™ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”บน Mozilla Firefox, Google Chrome ŕąŕ¸Ąŕ¸° Opera -firstRun_feature_tracking_description=Browse privately by disabling tracking - hiding your tracks from ad companies that would track your every move. -firstRun_acceptableAdsExplanation=We'd like to encourage websites to use straightforward, unobtrusive advertising. That's why we've established <a>strict guidelines</a> to identify acceptable ads, which are shown under default settings. If you still want to block every ad you can <a>disable</a> this in a few seconds. -firstRun_contributor_credits=Contributor Credits -firstRun_share_headline=<a>Give us a hand</a> in making the web a better place -firstRun_feature_social_description=Automatically rid your browsing experience of social media buttons, such as the Facebook Like, which appear on web pages and track your behavior. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/global.properties deleted file mode 100644 index c878f50..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=ไมŕąŕ¸ˇŕ¸µŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą„ด้ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸” -action3_tooltip=คลิŕ¸ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”หรืŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ Adblock Plus -type_label_script=สคริปต์ -filter_elemhide_nocriteria=ไมŕąŕ¸ˇŕ¸µŕą€ŕ¸ŕ¸“ฑ์ทีŕąŕ¸Łŕ¸°ŕ¸šŕ¸¸ŕ¸—ีŕąŕ¸ŕ¸łŕ¸§ŕ¸±ŕ¸•ถุทีŕąŕ¸ŕ¸°ŕ¸‹ŕąŕ¸ŕ¸™ -blockingGroup_title=ŕ¸ŕ¸Žŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą‚ฆษณา -whitelisted_tooltip=Adblock Plus เปิดŕ¸ŕ¸˘ŕ¸ąŕąŕąŕ¸•ŕąŕą„มŕąŕąŕ¸Šŕą‰ŕ¸ŕ¸±ŕ¸šŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰ -type_label_stylesheet=รูปŕąŕ¸šŕ¸šŕą€ŕ¸ŕ¸ŕ¸Şŕ¸˛ŕ¸Ł -blocked_count_tooltip=?1? ŕ¸ŕ¸˛ŕ¸ ?2? -type_label_font=ŕąŕ¸šŕ¸šŕ¸ŕ¸±ŕ¸ŕ¸©ŕ¸Ł -type_label_popup=หน้าตŕąŕ¸˛ŕ¸‡ŕąŕ¸šŕ¸šŕ¸śŕ¸¸ŕ¸”ขึ้น(pop-up) -filter_regexp_tooltip=ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸ŕą‡ŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Şŕ¸”งŕ¸ŕ¸ŕ¸ŕ¸—ัŕąŕ¸§ŕą„ปหรืŕ¸ŕ¸Şŕ¸±ŕą‰ŕ¸™ŕą€ŕ¸ŕ¸´ŕ¸™ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸ŕ¸°ŕąŕ¸Šŕą‰ŕąŕ¸«ŕą‰ŕą€ŕ¸«ŕ¸ˇŕ¸˛ŕ¸°ŕ¸Şŕ¸ˇ ถ้ามีตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸›ŕ¸Łŕ¸°ŕą€ŕ¸ ทนี้มาŕ¸ŕą€ŕ¸ŕ¸´ŕ¸™ŕą„ปŕ¸ŕ¸°ŕ¸—ำŕąŕ¸«ŕą‰ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚้าเว็บช้าได้ -action0_tooltip=คลิŕ¸ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕ¸™ŕ¸łŕą„ปทีŕąŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸ˇŕ¸™ŕ¸ą คลิŕ¸ŕą€ŕ¸ˇŕ¸˛ŕ¸ŞŕąŚŕ¸ŕ¸Ąŕ¸˛ŕ¸‡ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”หรืŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ -whitelisted_page=Adblock Plus ถูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸” -remove_group_warning=คุณŕąŕ¸™ŕąŕąŕ¸ŕ¸§ŕąŕ¸˛ŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸°ŕ¸Ąŕ¸šŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸™ŕ¸µŕą‰? -action1_tooltip=คลิŕ¸ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”หรืŕ¸ŕ¸›ŕ¸´ŕ¸”สิŕąŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ คลิŕ¸ŕą€ŕ¸ˇŕ¸˛ŕ¸ŞŕąŚŕ¸ŕ¸Ąŕ¸˛ŕ¸‡ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”หรืŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ -type_label_xmlhttprequest=คำร้ŕ¸ŕ¸‡ŕ¸‚ภXML -active_tooltip=Adblock Plus เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸˘ŕ¸ąŕą นามข้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ ?1? ŕ¸ŕ¸˘ŕąŕ¸˛ŕ¸‡ ŕąŕ¸Ąŕ¸°ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ŕ¸łŕ¸«ŕ¸™ŕ¸”เŕ¸ŕ¸‡ ?2? ตัวเปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸˘ŕ¸ąŕą -type_label_document=เŕ¸ŕ¸ŕ¸Şŕ¸˛ŕ¸Ł -type_label_object_subrequest=subrequest วัตถุ -whitelistGroup_title=ข้ŕ¸ŕ¸˘ŕ¸ŕą€ŕ¸§ŕą‰ŕ¸™ŕ¸‚ŕ¸ŕ¸‡ŕ¸ŕ¸Ž -disabled_tooltip=Adblock Plus ถูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ -filter_elemhide_duplicate_id=มีเฉพาะรหัสประŕ¸ŕ¸łŕ¸•ัววัตถุเดียวเทŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™ŕ¸—ีŕąŕ¸‹ŕąŕ¸ŕ¸™ŕ¸—ีŕąŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–ระบุได้ -type_label_object=วัตถุ -action2_tooltip=คลิŕ¸ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸Łŕ¸›ŕ¸Łŕ¸±ŕ¸šŕąŕ¸•ŕąŕ¸‡ คลิŕ¸ŕą€ŕ¸ˇŕ¸˛ŕ¸ŞŕąŚŕ¸ŕ¸Ąŕ¸˛ŕ¸‡ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕą€ŕ¸›ŕ¸´ŕ¸”หรืŕ¸ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ -type_label_subdocument=เฟรม -clearStats_warning=สิŕąŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸ŕ¸°ŕ¸•ั้งคŕąŕ¸˛ŕąŕ¸«ŕ¸ˇŕąŕ¸—ั้งหมดขŕ¸ŕ¸‡ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸‚้าชมสถิติŕąŕ¸Ąŕ¸°ŕ¸›ŕ¸´ŕ¸”ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕ¸•รวŕ¸ŕ¸™ŕ¸±ŕ¸šŕ¸›ŕ¸Łŕ¸´ŕ¸ˇŕ¸˛ŕ¸“ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ คุณต้ŕ¸ŕ¸‡ŕ¸”ำเนินŕ¸ŕ¸˛ŕ¸Łŕ¸•ŕąŕ¸ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„ม๠-blocked_count_addendum=(ŕąŕ¸Ąŕ¸°ŕ¸˘ŕ¸±ŕ¸‡ŕ¸ˇŕ¸µŕ¸šŕ¸±ŕ¸Ťŕ¸Šŕ¸µŕ¸‚าว ?1? ŕ¸ŕ¸˘ŕąŕ¸˛ŕ¸‡ ซŕąŕ¸ŕ¸™ŕ¸ŕ¸˘ŕ¸ąŕą ?2? ŕ¸ŕ¸˘ŕąŕ¸˛ŕ¸‡) -subscription_invalid_location=ตำŕąŕ¸«ŕ¸™ŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸Šŕ¸·ŕąŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą„มŕąŕąŕ¸Šŕąŕ¸—ั้งยูŕ¸ŕ¸˛ŕ¸ŁŕąŚŕąŕ¸ŕ¸Ąŕ¸—ีŕąŕ¸–ูŕ¸ŕ¸•้ŕ¸ŕ¸‡ŕąŕ¸Ąŕ¸°ŕ¸Šŕ¸·ŕąŕ¸ŕą„ฟล์ทีŕąŕ¸–ูŕ¸ŕ¸•้ŕ¸ŕ¸‡ -type_label_image=รูปภาพ -remove_subscription_warning=คุณŕąŕ¸™ŕąŕąŕ¸ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸Ąŕ¸šŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายนี้ -type_label_other=ŕ¸ŕ¸·ŕąŕ¸™ŕą† -mobile_menu_enable=ABP: เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ -type_label_media=เสียง/ภาพ -mobile_menu_disable_site=ABP: ปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ ?1? -elemhideGroup_title=ŕ¸ŕ¸Žŕ¸ŕ¸˛ŕ¸Łŕ¸‹ŕąŕ¸ŕ¸™ŕ¸ŕ¸‡ŕ¸„์ประŕ¸ŕ¸ŕ¸š -mobile_menu_enable_site=ABP: เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ ?1? -type_label_elemhide=ซŕąŕ¸ŕ¸™ -newGroup_title=ŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸«ŕ¸ˇŕą -default_dialog_title=Adblock Plus -notification_antiadblock_title=Hide targeted messages? -notification_antiadblock_message=This site has been known to show targeted messages to Adblock Plus users. Do you want Adblock Plus to hide targeted messages? diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/overlay.dtd deleted file mode 100644 index 57feaca..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY sync.label "เชืŕąŕ¸&มข้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸ŕ¸˛ŕ¸Łŕ¸•ั้งคŕąŕ¸˛ Adblock Plus"> -<!ENTITY whitelist.site.label "ปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ ?1?"> -<!ENTITY filters.label "ตั้งคŕąŕ¸˛ŕ¸•ัวŕ¸ŕ¸Ł&ŕ¸ŕ¸‡"> -<!ENTITY disable.label "ปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸—ุŕ¸ŕ¸—ีŕą"> -<!ENTITY objecttab.title "บล็ŕ¸ŕ¸"> -<!ENTITY objecttab.tooltip "คลิŕ¸ŕ¸—ีŕąŕ¸™ŕ¸µŕąŕą€ŕ¸žŕ¸·ŕąŕ¸ŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕ¸§ŕ¸±ŕ¸•ถุนี้ด้วย Adblock Plus"> -<!ENTITY menuitem.label "&ปรับŕąŕ¸•ŕąŕ¸‡ Adblock Plus"> -<!ENTITY objecttabs.label "ŕąŕ¸Şŕ¸”งŕąŕ¸—็&บบนŕąŕ¸źŕ¸Ąŕ¸Šŕąŕ¸Ąŕ¸°ŕ¸ŕ¸˛ŕ¸§ŕ¸˛"> -<!ENTITY sendReport.label "&รายงานปัญหาทีŕąŕ¸žŕ¸šŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰"> -<!ENTITY whitelist.page.label "ปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕą€ŕ¸‰ŕ¸žŕ¸˛ŕ¸°ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰"> -<!ENTITY context.image.label "Adblock รูปภาพ"> -<!ENTITY counthits.label "นับŕ¸ŕ¸łŕ¸™ŕ¸§ŕ¸™ŕ¸•ัว&ŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸®ŕ¸´ŕ¸•"> -<!ENTITY opensidebar.label "เปิดราย&ŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą„ด้"> -<!ENTITY contribute.label "เข้ามีสŕąŕ¸§ŕ¸™ŕ¸Łŕąŕ¸§ŕ¸ˇŕ¸ŕ¸±ŕ¸š Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock เฟรม"> -<!ENTITY blocked.tooltip "สิŕąŕ¸‡ŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰:"> -<!ENTITY hideplaceholders.label "ซŕąŕ¸ŕ¸™&ตำŕąŕ¸«ŕ¸™ŕąŕ¸‡ŕ¸•ัวยึดตำŕąŕ¸«ŕ¸™ŕąŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸ŕ¸‡ŕ¸„์ประŕ¸ŕ¸ŕ¸šŕ¸—ีŕąŕ¸–ูŕ¸ŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸„ไว้"> -<!ENTITY showinstatusbar.label "ŕą&สดงŕąŕ¸™ŕąŕ¸–บสถานะ"> -<!ENTITY sidebar.title "รายŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą„ด้ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸Ąŕąŕ¸˛ŕ¸Şŕ¸¸ŕ¸”"> -<!ENTITY options.label "ตั&วเลืŕ¸ŕ¸"> -<!ENTITY context.object.label "Adblock วัตถุ"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸µŕ¸ŕ¸„รั้งŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰"> -<!ENTITY filters.tooltip "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ˇŕ¸˛ŕ¸ŕ¸—ีŕąŕ¸Şŕ¸¸ŕ¸”:"> -<!ENTITY closesidebar.label "ปิดราย&ŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą„ด้"> -<!ENTITY showintoolbar.label "ŕąŕ¸Şŕ¸”งŕąŕ¸™ŕąŕ¸–บเ&ครืŕąŕ¸ŕ¸‡ŕ¸ˇŕ¸·ŕ¸"> -<!ENTITY status.tooltip "สถานะ:"> -<!ENTITY context.media.label "Adblock Plus: บล็ŕ¸ŕ¸ŕą€ŕ¸Şŕ¸µŕ¸˘ŕ¸‡/วีดิทัศน์"> -<!ENTITY subscription.update.label "ปรับปรุงตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY notification.button.yes "&Yes"> -<!ENTITY notification.button.no "&No"> -<!ENTITY notification.button.close "&Close"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sendReport.dtd deleted file mode 100644 index abddb2a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "เรี&ยŕ¸ŕ¸„ืน"> -<!ENTITY issues.disabledgroups.description "คำŕ¸ŕ¸ŕ¸´ŕ¸šŕ¸˛ŕ¸˘ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸‚ŕ¸ŕ¸‡ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸•ŕąŕ¸ŕą„ปนี้ปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕąŕ¸Ąŕą‰ŕ¸§ ŕ¸ŕ¸˛ŕ¸ŕ¸ŕ¸°ŕ¸Şŕąŕ¸‡ŕ¸śŕ¸Ąŕ¸ŕ¸Łŕ¸°ŕ¸—บตŕąŕ¸ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰:"> -<!ENTITY showData.label "ŕąŕ¸Şŕ¸”งข้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus &มีŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕ¸ˇŕ¸˛ŕ¸ŕą€ŕ¸ŕ¸´ŕ¸™ŕą„ป"> -<!ENTITY issues.change.description "ŕ¸ŕ¸˛ŕ¸Łŕ¸•ั้งคŕąŕ¸˛ŕą€ŕ¸›ŕ¸Ąŕ¸µŕąŕ¸˘ŕ¸™ŕąŕ¸›ŕ¸Ąŕ¸‡ŕąŕ¸Ąŕą‰ŕ¸§ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าเรียŕ¸ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸›ŕ¸±ŕ¸ŕ¸ŕ¸¸ŕ¸šŕ¸±ŕ¸™ŕąŕ¸«ŕ¸ˇŕąŕą€ŕ¸žŕ¸·ŕąŕ¸ŕ¸—ดสŕ¸ŕ¸šŕ¸„วามเปลีŕąŕ¸˘ŕ¸™ŕąŕ¸›ŕ¸Ąŕ¸‡ŕąŕ¸Ąŕ¸°ŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸–้าปัญหายังไมŕąŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕąŕ¸ŕą‰ŕą„ข"> -<!ENTITY issues.openPreferences.label "เปิดŕ¸ŕ¸˛ŕ¸Łŕ¸›ŕ¸Łŕ¸±ŕ¸šŕąŕ¸•ŕąŕ¸‡ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY sendPage.confirmation "รายงานได้รับŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸±ŕ¸™ŕ¸—ึŕ¸ŕąŕ¸Ąŕą‰ŕ¸§ คุณเข้าดูได้ตามทีŕąŕ¸ŕ¸˘ŕ¸ąŕąŕ¸•ŕąŕ¸ŕą„ปนี้:"> -<!ENTITY copyLink.label "&คัดลŕ¸ŕ¸ŕ¸Ąŕ¸´ŕ¸‡ŕ¸ŕąŚŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY issues.nofilters.description "Adblock Plus ไมŕąŕą„ด้บล็ŕ¸ŕ¸ŕ¸Şŕ¸´ŕąŕ¸‡ŕąŕ¸”เลยŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰ ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸—ŕ¸µŕąŕ¸„ุณรายงานไมŕąŕ¸™ŕąŕ¸˛ŕ¸ŕ¸°ŕą€ŕ¸ŕ¸µŕąŕ¸˘ŕ¸§ŕ¸ŕ¸±ŕ¸š Adblock Plus"> -<!ENTITY sendPage.knownIssue "ปัญหาทีŕąŕ¸„ุณรายงานมีวิŕ¸ŕ¸µŕąŕ¸ŕą‰ŕą„ขŕ¸ŕ¸˘ŕ¸ąŕąŕąŕ¸Ąŕą‰ŕ¸§ ข้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕą€ŕ¸žŕ¸´ŕąŕ¸ˇŕą€ŕ¸•ิม:"> -<!ENTITY typeSelector.other.description "เลืŕ¸ŕ¸ŕ¸•ัวเลืŕ¸ŕ¸ŕ¸™ŕ¸µŕą‰ŕ¸–้าคุณคิดวŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕą€ŕ¸ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸ŕ¸•ัว Adblock Plus เŕ¸ŕ¸‡ ไมŕąŕąŕ¸Šŕąŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY issues.disabledgroups.enable.label "เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸„ำŕ¸ŕ¸ŕ¸´ŕ¸šŕ¸˛ŕ¸˘ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕ¸ŕ¸Ąŕ¸¸ŕąŕ¸ˇŕ¸‚ŕ¸ŕ¸‡ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY typeWarning.override.label "ฉันเข้าŕąŕ¸ŕąŕ¸Ąŕ¸°ŕ¸žŕ¸Łŕą‰ŕ¸ŕ¸ˇŕ¸ŕ¸°&สŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY issues.disabled.enable.label "เปิด Adblock Plus"> -<!ENTITY update.fixed.description "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณนŕąŕ¸˛ŕ¸ŕ¸°ŕ¸ˇŕ¸µŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ทŕ¸ŕ¸˛ŕ¸Łŕąŕ¸ŕą‰ŕą„ขปัญหาทีŕąŕ¸„ุณได้รายงานไว้ŕ¸ŕąŕ¸ŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าโหลดเว็บเพŕ¸ŕąŕ¸Ąŕ¸°ŕ¸Ąŕ¸ŕ¸‡ŕąŕ¸«ŕ¸ˇŕąŕ¸ŕ¸µŕ¸ŕ¸„รั้ง คุณสามารถดูรายงานขŕ¸ŕ¸‡ŕ¸„ุณได้ŕ¸ŕ¸µŕ¸ŕ¸„รั้ง หาŕ¸ŕ¸žŕ¸šŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸”ังŕ¸ŕ¸Ąŕąŕ¸˛ŕ¸§ŕ¸ŕ¸˘ŕ¸ąŕą"> -<!ENTITY reloadButton.label "&เรียŕ¸ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸›ŕ¸±ŕ¸ŕ¸ŕ¸¸ŕ¸šŕ¸±ŕ¸™ŕąŕ¸«ŕ¸ˇŕą"> -<!ENTITY recentReports.clear.label "&ลบรายงานทั้งหมด"> -<!ENTITY typeSelector.description "หน้าตŕąŕ¸˛ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸ŕ¸°ŕ¸™ŕ¸łŕ¸—างไปยังขั้นตŕ¸ŕ¸™ŕ¸—ีŕąŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸™ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸‚ŕ¸ŕ¸‡ Adblock Plus ŕ¸ŕ¸Łŕ¸¸ŕ¸“าเลืŕ¸ŕ¸ŕ¸Šŕ¸™ŕ¸´ŕ¸”ขŕ¸ŕ¸‡ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸—ีŕąŕ¸„ุณพบŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰:"> -<!ENTITY screenshot.remove.label "&ลบข้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸—ีŕąŕą„มŕąŕ¸ŕ¸˘ŕ¸˛ŕ¸ŕąŕ¸«ŕą‰ŕąŕ¸„รเห็น"> -<!ENTITY issues.ownfilters.description "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸šŕ¸˛ŕ¸‡ŕ¸•ัวทีŕąŕąŕ¸Šŕą‰ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰ŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸‚ŕ¸ŕ¸‡ŕ¸śŕ¸ąŕą‰ŕąŕ¸Šŕą‰ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าปิดตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ŕ¸˛ŕ¸ŕ¸ŕąŕ¸ŕąŕ¸«ŕą‰ŕą€ŕ¸›ŕ¸´ŕ¸”ปัญหา:"> -<!ENTITY update.inProgress.description "Adblock Plus ต้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸ŕ¸°ŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ทตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณ เพืŕąŕ¸ŕąŕ¸«ŕą‰ŕąŕ¸™ŕąŕąŕ¸ŕ¸§ŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕąŕ¸ŕą‰ŕą„ขŕąŕ¸Ąŕą‰ŕ¸§ ŕ¸ŕ¸Łŕ¸¸ŕ¸“ารŕ¸ŕ¸Şŕ¸±ŕ¸ŕ¸„รูŕą..."> -<!ENTITY sendPage.retry.label "สŕąŕ¸‡ŕ¸ŕ¸µŕ¸ŕ¸„รั้ง"> -<!ENTITY data.label "ข้ŕ¸&มูลรายงาน:"> -<!ENTITY recentReports.label "รายงานทีŕąŕą€ŕ¸žŕ¸´ŕąŕ¸‡ŕ¸Şŕąŕ¸‡ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณ"> -<!ENTITY typeWarning.description "คุณระบุไว้วŕąŕ¸˛ คุณต้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ŕ¸±ŕ¸š Adblock Plus มาŕ¸ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ŕ¸±ŕ¸šŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ ปัญหาดังŕ¸ŕ¸Ąŕąŕ¸˛ŕ¸§ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕą„ด้ดีทีŕąŕ¸Şŕ¸¸ŕ¸”ที๠[link]Adblock Plus forum[/link] คุณควรŕąŕ¸Šŕą‰ŕ¸•ัวรายงานปัญหาเพืŕąŕ¸ŕ¸Şŕ¸™ŕ¸±ŕ¸šŕ¸Şŕ¸™ŕ¸¸ŕ¸™ŕ¸šŕ¸—สนทนาทีŕąŕ¸ˇŕ¸µŕ¸ŕ¸˘ŕ¸ąŕą เพราะไมŕąŕ¸ˇŕ¸µŕąŕ¸„รŕ¸ŕ¸°ŕą€ŕ¸«ŕą‡ŕ¸™ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณŕ¸ŕ¸™ŕ¸ŕ¸§ŕąŕ¸˛ŕ¸„นสŕąŕ¸‡ŕ¸Ąŕ¸´ŕ¸‡ŕ¸ŕąŚŕąŕ¸«ŕą‰ ŕ¸ŕ¸°ŕ¸ˇŕ¸µŕ¸Ąŕ¸´ŕ¸‡ŕ¸ŕąŚŕąŕ¸«ŕą‰ŕ¸ŕ¸±ŕ¸•โนมัติหลังŕ¸ŕ¸˛ŕ¸ŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY issues.disabled.description "Adblock Plus ถูŕ¸ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ ซึŕąŕ¸‡ŕ¸ŕ¸°ŕą„มŕąŕ¸ˇŕ¸µŕ¸ŕ¸˛ŕ¸Łŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕąŕ¸”ๆ ทั้งสิ้น"> -<!ENTITY attachExtensions.label "ŕąŕ¸™ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸Šŕ¸·ŕąŕ¸ŕ¸Şŕąŕ¸§ŕ¸™ŕą€ŕ¸Şŕ¸Łŕ¸´ŕ¸ˇŕ¸—ีŕąŕąŕ¸Šŕą‰ŕ¸ŕ¸˘ŕ¸ąŕąŕą„ปŕ¸ŕ¸±ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕąŕ¸™ŕ¸ŕ¸Ł&ณีทีŕąŕą€ŕ¸ŕ¸´ŕ¸”ปัญหาสŕąŕ¸§ŕ¸™ŕą€ŕ¸Şŕ¸Łŕ¸´ŕ¸ˇŕ¸Šŕ¸™ŕ¸ŕ¸±ŕ¸™"> -<!ENTITY issues.nosubscriptions.add.label "เพิŕąŕ¸ˇŕ¸„ำŕ¸ŕ¸ŕ¸´ŕ¸šŕ¸˛ŕ¸˘ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY issues.disabledfilters.enable.label "เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY issues.override.label "ŕ¸ŕ¸˛ŕ¸Łŕ¸•ั้งคŕąŕ¸˛ŕ¸–ูŕ¸ŕ¸•้ŕ¸ŕ¸‡ &ดำเนินŕ¸ŕ¸˛ŕ¸Łŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸•ŕąŕ¸ŕą„ป"> -<!ENTITY issues.nosubscriptions.description "คุณไมŕąŕą„ด้เขียนคำŕ¸ŕ¸ŕ¸´ŕ¸šŕ¸˛ŕ¸˘ŕ¸Łŕ¸˛ŕ¸˘ŕ¸Šŕ¸·ŕąŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕą„ว้ ซึŕąŕ¸‡ŕ¸ŕ¸°ŕ¸Ąŕ¸šŕą€ŕ¸™ŕ¸·ŕą‰ŕ¸ŕ¸«ŕ¸˛ŕ¸—ีŕąŕą„มŕąŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸ŕ¸ŕ¸ŕ¸˛ŕ¸ŕą€ŕ¸§ŕą‡ŕ¸šŕą„ซต์ŕ¸ŕ¸±ŕ¸•โนมัติ"> -<!ENTITY typeSelector.falsePositive.description "เลืŕ¸ŕ¸ŕ¸•ัวเลืŕ¸ŕ¸ŕ¸™ŕ¸µŕą‰ ŕ¸–ŕą‰ŕ¸˛ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕą€ŕ¸žŕ¸ŕą„มŕąŕ¸ˇŕ¸µŕą€ŕ¸™ŕ¸·ŕą‰ŕ¸ŕ¸«ŕ¸˛ŕ¸—ีŕąŕ¸Şŕ¸łŕ¸„ัญ ŕąŕ¸Şŕ¸”งผลผิดหรืŕ¸ŕ¸—ำงานผิด คุณสามารถทดสŕ¸ŕ¸šŕ¸§ŕąŕ¸˛ Adblock Plus เป็นต้นเหตุขŕ¸ŕ¸‡ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„ม๠โดยŕ¸ŕ¸˛ŕ¸Łŕ¸—ดลŕ¸ŕ¸‡ŕ¸›ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕą„ว้ชัŕąŕ¸§ŕ¸„ราว"> -<!ENTITY typeSelector.other.label "ปั&ญหาŕ¸ŕ¸·ŕąŕ¸™"> -<!ENTITY issues.whitelist.remove.label "เปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ Adblock Plus ŕ¸ŕ¸µŕ¸ŕ¸„รั้งŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰"> -<!ENTITY outdatedSubscriptions.description "รายŕ¸ŕ¸˛ŕ¸Łŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸•ŕąŕ¸ŕą„ปนี้ยังไมŕąŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ทเป็นเวลาสŕ¸ŕ¸‡ŕ¸Şŕ¸±ŕ¸›ŕ¸”าห์ŕąŕ¸Ąŕą‰ŕ¸§ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ทรายŕ¸ŕ¸˛ŕ¸Łŕ¸”ังŕ¸ŕ¸Ąŕąŕ¸˛ŕ¸§ŕ¸ŕąŕ¸ŕ¸™ŕ¸—ีŕąŕ¸ŕ¸°ŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕą„ป เพราะปัญหาŕ¸ŕ¸˛ŕ¸ŕą„ด้รับŕ¸ŕ¸˛ŕ¸Łŕąŕ¸ŕą‰ŕą„ขเรียบร้ŕ¸ŕ¸˘ŕąŕ¸Ąŕą‰ŕ¸§ŕ¸ŕą‡ŕą€ŕ¸›ŕą‡ŕ¸™ŕą„ด้"> -<!ENTITY dataCollector.description "ŕ¸ŕ¸Łŕ¸¸ŕ¸“ารŕ¸ŕ¸Şŕ¸±ŕ¸ŕ¸„รูŕąŕ¸Łŕ¸°ŕ¸«ŕ¸§ŕąŕ¸˛ŕ¸‡ŕ¸—ี๠Adblock Plus ŕ¸ŕ¸łŕ¸Ąŕ¸±ŕ¸‡ŕ¸Łŕ¸§ŕ¸šŕ¸Łŕ¸§ŕ¸ˇŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ą"> -<!ENTITY sendButton.label "สŕą&งรายงาน"> -<!ENTITY comment.label "&ความคิดเห็น (ไมŕąŕąŕ¸Şŕąŕ¸ŕą‡ŕą„ด้):"> -<!ENTITY sendPage.errorMessage "ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸śŕ¸´ŕ¸”พลาด รหัส "?1?" ŕ¸ŕ¸Łŕ¸¸ŕ¸“าเชืŕąŕ¸ŕ¸ˇŕ¸•ŕąŕ¸ŕ¸ŕ¸±ŕ¸šŕ¸ŕ¸´ŕ¸™ŕą€ŕ¸—ŕ¸ŕ¸ŁŕąŚŕą€ŕ¸™ŕą‡ŕ¸•ŕąŕ¸Ąŕ¸°ŕ¸Ąŕ¸ŕ¸‡ŕ¸ŕ¸µŕ¸ŕ¸„รั้ง หาŕ¸ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸˘ŕ¸±ŕ¸‡ŕ¸ˇŕ¸µŕ¸ŕ¸˘ŕ¸ąŕąŕ¸ŕ¸Łŕ¸¸ŕ¸“าขŕ¸ŕ¸„วามชŕąŕ¸§ŕ¸˘ŕą€ŕ¸«ŕ¸Ąŕ¸·ŕ¸ŕ¸—ี๠[link]Adblock Plus forum[/link]"> -<!ENTITY showRecentReports.label "ŕąŕ¸Şŕ¸”งรายงานทีŕąŕą€ŕ¸žŕ¸´ŕąŕ¸‡ŕ¸Şŕąŕ¸‡"> -<!ENTITY commentPage.heading "ŕąŕ¸Şŕąŕ¸„วามคิดเห็น"> -<!ENTITY update.start.label "เริŕąŕ¸ˇŕ¸ŕ¸±ŕ¸žŕą€ŕ¸”ทตŕ¸ŕ¸™ŕ¸™ŕ¸µŕą‰"> -<!ENTITY issues.disabledfilters.description "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸•ŕąŕ¸ŕą„ปนี้ปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕąŕ¸Ąŕą‰ŕ¸§ ŕ¸ŕ¸˛ŕ¸ŕ¸ŕ¸°ŕ¸Şŕąŕ¸‡ŕ¸śŕ¸Ąŕ¸ŕ¸Łŕ¸°ŕ¸—บตŕąŕ¸ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸™ŕ¸µŕą‰:"> -<!ENTITY screenshot.description "หน้าเดียวŕ¸ŕ¸±ŕ¸™ŕ¸„นตŕąŕ¸˛ŕ¸‡ŕ¸ŕ¸±ŕ¸™ŕ¸ŕ¸˛ŕ¸ŕ¸ŕ¸°ŕą€ŕ¸«ŕą‡ŕ¸™ŕ¸•ŕąŕ¸˛ŕ¸‡ŕ¸ŕ¸±ŕ¸™ŕą„ด้ ŕ¸ŕ¸Łŕ¸¸ŕ¸“าŕąŕ¸™ŕ¸šŕ¸ าพหน้าŕ¸ŕ¸ŕ¸ˇŕ¸˛ŕ¸ŕ¸±ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸”้วย คุณสามารถลบสŕąŕ¸§ŕ¸™ŕ¸—ีŕąŕą„มŕąŕ¸•้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸«ŕą‰ŕąŕ¸„รเห็นŕąŕ¸Ąŕ¸°ŕą€ŕ¸™ŕą‰ŕ¸™ŕ¸Şŕąŕ¸§ŕ¸™ŕ¸—ีŕąŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ˇŕ¸˛ŕ¸”้วย คลิŕ¸ŕ¸›ŕ¸¸ŕąŕ¸ˇŕ¸—ีŕąŕą€ŕ¸ŕ¸µŕąŕ¸˘ŕ¸§ŕ¸‚้ŕ¸ŕ¸‡ŕąŕ¸Ąŕ¸°ŕą€ŕ¸Ąŕ¸·ŕ¸ŕ¸ŕ¸Şŕąŕ¸§ŕ¸™ŕ¸‚ŕ¸ŕ¸‡ŕ¸Łŕ¸ąŕ¸›ŕ¸ าพด้วยเมาส์"> -<!ENTITY screenshot.attach.label "ŕąŕ¸™&บรูปภาพหน้าไปŕ¸ŕ¸±ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY issues.whitelist.description "Adblock Plus ไมŕąŕą„ด้เปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕąŕ¸™ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕą€ŕ¸žŕ¸ŕ¸—ีŕąŕ¸„ุณรายงาน ŕ¸ŕ¸Łŕ¸¸ŕ¸“าเปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸ŕ¸µŕ¸ŕ¸„รั้งŕąŕ¸Ąŕ¸°ŕą€ŕ¸Łŕ¸µŕ¸˘ŕ¸ŕ¸«ŕ¸™ŕą‰ŕ¸˛ŕ¸›ŕ¸±ŕ¸ŕ¸ŕ¸¸ŕ¸šŕ¸±ŕ¸™ŕąŕ¸«ŕ¸ˇŕąŕ¸ŕąŕ¸ŕ¸™ŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕą€ŕ¸žŕ¸·ŕąŕ¸ŕ¸Šŕąŕ¸§ŕ¸˘ŕ¸Şŕ¸·ŕ¸šŕ¸Şŕ¸§ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸™ŕ¸µŕą‰"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus ไมŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą‚ฆ&ษณา"> -<!ENTITY typeSelector.heading "เลืŕ¸ŕ¸ŕ¸Šŕ¸™ŕ¸´ŕ¸”ขŕ¸ŕ¸‡ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛"> -<!ENTITY wizard.title "รายงานปัญหา"> -<!ENTITY issues.ownfilters.disable.label "ปิดŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY commentPage.description "ชŕąŕ¸ŕ¸‡ŕ¸§ŕąŕ¸˛ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕąŕ¸«ŕą‰ŕ¸„ุณŕąŕ¸Şŕąŕ¸„วามคิดเห็นเพืŕąŕ¸ŕ¸Šŕąŕ¸§ŕ¸˘ŕąŕ¸«ŕą‰ŕą€ŕ¸Łŕ¸˛ŕą€ŕ¸‚้าŕąŕ¸ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ ŕąŕ¸Şŕąŕ¸«ŕ¸Łŕ¸·ŕ¸ŕą„มŕąŕąŕ¸Şŕąŕ¸ŕą‡ŕą„ด้ คุณสามารถทบทวนรายงานŕ¸ŕ¸µŕ¸ŕ¸„รั้งŕ¸ŕąŕ¸ŕ¸™ŕ¸Şŕąŕ¸‡ŕą„ด้"> -<!ENTITY comment.lengthWarning "ความคิดเห็นยาวเŕ¸ŕ¸´ŕ¸™ 1000 ŕ¸ŕ¸±ŕ¸ŕ¸‚ระ สŕąŕ¸‡ŕą„ด้ŕąŕ¸„ŕą 1000 ŕ¸ŕ¸±ŕ¸ŕ¸‚ระŕąŕ¸Łŕ¸ŕą€ŕ¸—ŕąŕ¸˛ŕ¸™ŕ¸±ŕą‰ŕ¸™"> -<!ENTITY typeSelector.falseNegative.description "เลืŕ¸ŕ¸ŕ¸•ัวเลืŕ¸ŕ¸ŕ¸™ŕ¸µŕą‰ŕ¸–้ายังมีโฆษณาŕ¸ŕ¸˘ŕ¸ąŕąŕąŕ¸ˇŕą‰ŕ¸§ŕąŕ¸˛ŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™ Adblock Plus ŕąŕ¸Ąŕą‰ŕ¸§"> -<!ENTITY sendPage.waitMessage "Adblock Plus ŕ¸ŕ¸łŕ¸Ąŕ¸±ŕ¸‡ŕ¸Şŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ ŕ¸ŕ¸Łŕ¸¸ŕ¸“ารŕ¸"> -<!ENTITY dataCollector.heading "ยินดีต้ŕ¸ŕ¸™ŕ¸Łŕ¸±ŕ¸šŕ¸Şŕ¸ąŕąŕ¸ŕ¸˛ŕ¸Łŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛"> -<!ENTITY screenshot.heading "ŕąŕ¸™ŕ¸šŕ¸ าพหน้าŕ¸ŕ¸"> -<!ENTITY sendPage.heading "สŕąŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™"> -<!ENTITY issues.subscriptionCount.description "ดูเหมืŕ¸ŕ¸™ŕ¸§ŕąŕ¸˛ŕ¸„ุณŕ¸ŕ¸°ŕ¸Łŕ¸±ŕ¸šŕ¸‚้ŕ¸ŕ¸ˇŕ¸ąŕ¸Ąŕ¸ŕ¸˛ŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸ˇŕ¸˛ŕ¸ŕą€ŕ¸ŕ¸´ŕ¸™ŕą„ป ŕ¸ŕ¸˛ŕ¸Łŕ¸•ิดตั้งนี้ŕ¸ŕ¸¶ŕ¸‡ŕą„มŕąŕąŕ¸™ŕ¸°ŕ¸™ŕ¸łŕą€ŕ¸žŕ¸Łŕ¸˛ŕ¸°ŕ¸ŕ¸˛ŕ¸ŕ¸—ำŕąŕ¸«ŕą‰ŕ¸ˇŕ¸µŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ˇŕ¸˛ŕ¸ เราŕ¸ŕ¸°ŕą„มŕąŕ¸Łŕ¸±ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ŕ¸˛ŕ¸ŕ¸„ุณเพราะไมŕąŕ¸—ราบวŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ˇŕ¸˛ŕ¸ŕ¸˛ŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸•ัวŕąŕ¸” ŕ¸ŕ¸Łŕ¸¸ŕ¸“าลบŕ¸ŕ¸ŕ¸ŕą€ŕ¸«ŕ¸Ąŕ¸·ŕ¸ŕąŕ¸•ŕąŕ¸•ัวทีŕąŕ¸ŕ¸łŕą€ŕ¸›ŕą‡ŕ¸™ŕąŕ¸Ąŕ¸°ŕ¸—ดสŕ¸ŕ¸šŕ¸”ูวŕąŕ¸˛ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕą€ŕ¸ŕ¸´ŕ¸”ŕ¸ŕ¸˛ŕ¸ŕ¸•ัวŕąŕ¸”"> -<!ENTITY screenshot.mark.label "เ&น้นสŕąŕ¸§ŕ¸™ŕ¸—ีŕąŕą€ŕ¸›ŕą‡ŕ¸™ŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛"> -<!ENTITY privacyPolicy.label "ความเป็นสŕąŕ¸§ŕ¸™ŕ¸•ัว"> -<!ENTITY issues.description "Adblock Plus ตรวŕ¸ŕ¸žŕ¸šŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸ŕ¸˛ŕ¸Łŕ¸•ั้งคŕąŕ¸˛ŕ¸‚ŕ¸ŕ¸‡ŕ¸„ุณทีŕąŕ¸ŕ¸˛ŕ¸ŕ¸ŕ¸°ŕą€ŕ¸ŕ¸µŕąŕ¸˘ŕ¸§ŕ¸ŕ¸±ŕ¸šŕ¸›ŕ¸±ŕ¸Ťŕ¸«ŕ¸˛ŕ¸™ŕ¸µŕą‰ŕ¸«ŕ¸Łŕ¸·ŕ¸ŕ¸—ีŕąŕ¸—ำŕąŕ¸«ŕą‰ŕ¸ŕ¸˛ŕ¸Łŕ¸Şŕ¸·ŕ¸šŕ¸Şŕ¸§ŕ¸™ŕ¸Łŕ¸˛ŕ¸˘ŕ¸‡ŕ¸˛ŕ¸™ŕ¸˘ŕ¸˛ŕ¸ŕ¸‚ึ้น"> -<!ENTITY email.label "E&mail:"> -<!ENTITY anonymous.label "&Anonymous submission"> -<!ENTITY emailComment.label "We encourage you to enter a valid email address so that we can contact you if there are questions - about your report. It will also allow us to recognize your contributions and to prioritize them higher."> -<!ENTITY anonymity.warning "We won't be able to come back to you and will likely prioritize the report lower."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sidebar.dtd deleted file mode 100644 index 9dc7457..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "ขŕ¸ŕ¸šŕ¸‚ŕ¸ŕ¸‡ŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Łŕąŕ¸źŕ¸Ąŕ¸Š"> -<!ENTITY address.label "ทีŕąŕ¸ŕ¸˘ŕ¸ąŕą"> -<!ENTITY context.open.label "เปิดŕąŕ¸™ŕąŕ¸—็บŕąŕ¸«ŕ¸ˇŕą"> -<!ENTITY type.label "ชนิด"> -<!ENTITY tooltip.filterSource.label "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕąŕ¸«ŕ¸Ąŕąŕ¸‡ŕ¸—ีŕąŕ¸ˇŕ¸˛:"> -<!ENTITY noitems.label "ไมŕąŕ¸ˇŕ¸µŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸„ได้"> -<!ENTITY filter.label "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY tooltip.size.label "ขนาด:"> -<!ENTITY reattach.label "ŕąŕ¸™ŕ¸šŕ¸ŕ¸Ąŕ¸±ŕ¸š"> -<!ENTITY search.label "&ค้นหา:"> -<!ENTITY docDomain.thirdParty "(เทิร์ดปาร์ตี้)"> -<!ENTITY filterSource.label "ตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸•้นฉบับ"> -<!ENTITY tooltip.docDomain.label "ŕąŕ¸«ŕ¸Ąŕąŕ¸‡ŕ¸—ีŕąŕ¸ˇŕ¸˛ŕą€ŕ¸ŕ¸ŕ¸Şŕ¸˛ŕ¸Ł:"> -<!ENTITY context.copy.label "คัดลŕ¸ŕ¸ŕ¸—ีŕąŕ¸ŕ¸˘ŕ¸ąŕąŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Ł"> -<!ENTITY tooltip.type.label "ชนิด:"> -<!ENTITY context.disablefilter.label "ปิดตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ ?1?"> -<!ENTITY context.copyFilter.label "คัดลŕ¸ŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY context.block.label "บล็ŕ¸ŕ¸„รายŕ¸ŕ¸˛ŕ¸Łŕ¸™ŕ¸µŕą‰"> -<!ENTITY context.enablefilter.label "เปิดตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ ?1? ŕ¸ŕ¸µŕ¸ŕ¸„รั้ง"> -<!ENTITY detach.label "ŕąŕ¸˘ŕ¸ŕ¸ŕ¸ŕ¸"> -<!ENTITY whitelisted.label "หน้าทีŕąŕ¸–ูŕ¸ŕ¸‚ึ้นบัญชีขาว"> -<!ENTITY context.disablefilteronsite.label "ปิดตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸šŕ¸™ ?1?"> -<!ENTITY detached.title "Adblock Plus: รายŕ¸ŕ¸˛ŕ¸Łŕ¸—ีŕąŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸ŕą„ด้ (ถูŕ¸ŕąŕ¸˘ŕ¸ŕ¸ŕ¸ŕ¸)"> -<!ENTITY docDomain.firstParty "(เฟิร์สปาร์ตี้)"> -<!ENTITY tooltip.type.whitelisted "(ขึ้นบัญชีขาว)"> -<!ENTITY tooltip.filter.label "เป็นผลมาŕ¸ŕ¸˛ŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡:"> -<!ENTITY tooltip.filter.disabled "(ปิดŕ¸ŕ¸˛ŕ¸Łŕąŕ¸Šŕą‰ŕ¸‡ŕ¸˛ŕ¸™)"> -<!ENTITY context.editfilter.label "ŕąŕ¸ŕą‰ŕą„ขตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸—ีŕąŕ¸ˇŕ¸µŕ¸śŕ¸Ą"> -<!ENTITY tooltip.type.blocked "(ถูŕ¸ŕ¸šŕ¸Ąŕą‡ŕ¸ŕ¸„)"> -<!ENTITY size.label "ขนาด"> -<!ENTITY context.whitelist.label "เพิŕąŕ¸ˇŕ¸‚้ŕ¸ŕ¸˘ŕ¸ŕą€ŕ¸§ŕą‰ŕ¸™ŕ¸Şŕ¸łŕ¸«ŕ¸Łŕ¸±ŕ¸šŕ¸Łŕ¸˛ŕ¸˘ŕ¸ŕ¸˛ŕ¸Ł"> -<!ENTITY context.selectAll.label "เลืŕ¸ŕ¸ŕ¸—ั้งหมด"> -<!ENTITY state.label "สถานะ"> -<!ENTITY docDomain.label "ŕąŕ¸«ŕ¸Ąŕąŕ¸‡ŕ¸—ีŕąŕ¸ˇŕ¸˛ŕą€ŕ¸ŕ¸ŕ¸Şŕ¸˛ŕ¸Ł"> -<!ENTITY tooltip.address.label "ทีŕąŕ¸ŕ¸˘ŕ¸ąŕą:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/subscriptionSelection.dtd deleted file mode 100644 index 802aa7e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/th/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตั&วŕ¸ŕ¸Łŕ¸ŕ¸‡ "?1?""> -<!ENTITY list.download.failed "Adblock Plus ไมŕąŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–ŕ¸ŕ¸ąŕą‰ŕ¸„ืนรายŕ¸ŕ¸˛ŕ¸Łŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายได้"> -<!ENTITY list.download.retry "ลŕ¸ŕ¸‡ŕ¸ŕ¸µŕ¸ŕ¸„รั้ง"> -<!ENTITY title.label "&ชืŕąŕ¸:"> -<!ENTITY list.download.website "ดูเว็บไซต์"> -<!ENTITY supplementMessage "นามข้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ŕ¸•ั้งŕąŕ¸ŕą„ว้ŕąŕ¸Šŕą‰ŕ¸ŕ¸±ŕ¸šŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ "?1?" ซึŕąŕ¸‡ŕ¸„ุณยังไมŕąŕą„ด้ŕąŕ¸Šŕą‰"> -<!ENTITY viewList.label "ดูตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY visitHomepage.label "เยีŕąŕ¸˘ŕ¸ˇŕ¸Šŕ¸ˇŕą‚ฮมเพŕ¸"> -<!ENTITY addSubscription.label "เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡"> -<!ENTITY dialog.title "เพิŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ Adblock Plus"> -<!ENTITY location.label "ทีŕąŕ¸ŕ¸˘ŕ¸ąŕą&รายชืŕąŕ¸ŕ¸•ัวŕ¸ŕ¸Łŕ¸ŕ¸‡:"> -<!ENTITY fromWeb.description "ŕ¸ŕ¸Łŕ¸¸ŕ¸“ายืนยันวŕąŕ¸˛ŕ¸„ุณต้ŕ¸ŕ¸‡ŕ¸ŕ¸˛ŕ¸Łŕą€ŕ¸žŕ¸´ŕąŕ¸ˇŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายตัวŕ¸ŕ¸Łŕ¸ŕ¸‡ŕ¸™ŕ¸µŕą‰ ŕ¸„ŕ¸¸ŕ¸“ŕ¸Şŕ¸˛ŕ¸ˇŕ¸˛ŕ¸Łŕ¸–ŕą€ŕ¸›ŕ¸Ąŕ¸µŕąŕ¸˘ŕ¸™ŕ¸«ŕ¸±ŕ¸§ŕą€ŕ¸Łŕ¸·ŕąŕ¸ŕ¸‡ŕ¸™ŕ¸˛ŕ¸ˇŕ¸‚้างท้ายหรืŕ¸ŕ¸•ำŕąŕ¸«ŕ¸™ŕąŕ¸‡ŕ¸ŕąŕ¸ŕ¸™ŕą€ŕ¸žŕ¸´ŕąŕ¸ˇŕą€ŕ¸‚้ามาได้"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/composer.dtd deleted file mode 100644 index 67be4e6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "adresin s&onunda"> -<!ENTITY domainRestriction.label "Alan a&dına kısıtlama:"> -<!ENTITY collapse.default.no.label "Ă–ntanımlı kullan (hayır)"> -<!ENTITY firstParty.label "Yalnız b&irinci kiĹźilerden"> -<!ENTITY preferences.label "Mevcut sĂĽzgeçleri &göster..."> -<!ENTITY pattern.label "Aranacak örnek"> -<!ENTITY thirdParty.label "Yalnız üçün&cĂĽ kiĹźilerden"> -<!ENTITY filter.label "&Yeni sĂĽzgeç:"> -<!ENTITY collapse.label "Engellenenleri ka&pat:"> -<!ENTITY match.warning "GirdiÄźiniz örnek, engellenecek veya kara listeden çıkarılacak adresle eĹźleĹźmiyor ve ĂĽzerinde hiçbir etkisi olmayacak."> -<!ENTITY anchor.start.label "adresin &başında"> -<!ENTITY matchCase.label "&BĂĽyĂĽk küçük harf duyarlı"> -<!ENTITY custom.pattern.label "&Ă–zel:"> -<!ENTITY unselectAllTypes.label "Hiçbirini seçme"> -<!ENTITY type.whitelist.label "&Hariç tutma kuralı"> -<!ENTITY regexp.warning "GirdiÄźiniz örnek dĂĽzenli ifade olarak yorumlanacak. Adblock Plus tarafından doÄźru iĹźlenemeyebilir ve taramayı yavaĹźlatabilir. DĂĽzenli ifade olarak kullanmak istediÄźinizden emin deÄźilseniz örneÄźin sonuna yıldız (*) iĹźareti koyun."> -<!ENTITY dialog.title "Adblock Plus sĂĽzgeç kuralı ekle"> -<!ENTITY basic.label "Temel görĂĽnĂĽm"> -<!ENTITY type.filter.label "Engelleme sĂĽzgeci"> -<!ENTITY types.label "Bu tĂĽrlere uygula:"> -<!ENTITY shortpattern.warning "GirdiÄźiniz örnek en iyilemek için çok kısa ve bu tĂĽr örnekler taramayı yavaĹźlatabilir. Adblock Plus'ın bu sĂĽzgeci daha etkin iĹźleyebilmesi için daha uzun bir satır seçmeniz tavsiye edilir."> -<!ENTITY collapse.yes.label "Evet"> -<!ENTITY anchors.label "Ă–rneÄźi sadece burada kabul et:"> -<!ENTITY collapse.default.yes.label "Ă–ntanımlı kullan (evet)"> -<!ENTITY domainRestriction.help "Aralarına "|" simgesi koyarak bir ya da daha fazla alan adı belirtin. Böylece sĂĽzgeç sadece bu sitelerde uygulanacaktır. Alan adından önce "~" simgesi kullanılması, sĂĽzgecin o alan adında kullanılmaması gerektiÄźi anlamına gelir."> -<!ENTITY accept.label "SĂĽzgeç ekle"> -<!ENTITY options.label "Seçenekler"> -<!ENTITY disabled.warning "Adblock Plus Ĺźu an devre dışı. Yine de sĂĽzgeç ekleyebilirsiniz, ancak bunlar [link]Adblock Plus etkinleĹźtirilene kadar[/link] uygulanmayacaktır."> -<!ENTITY anchor.start.flexible.label "alan adının &başında"> -<!ENTITY collapse.no.label "Hayır"> -<!ENTITY selectAllTypes.label "TĂĽmĂĽnĂĽ seç"> -<!ENTITY advanced.label "GeliĹźmiĹź görĂĽnĂĽm"> -<!ENTITY pattern.explanation "Bu örnek adresin herhangi bir bölĂĽmĂĽ olabilir ve * iĹźareti joker görevi yapar. SĂĽzgeç sadece örneÄźe uyan adreslere uygulanacak."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/filters.dtd deleted file mode 100644 index 8c7ac35..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/filters.dtd +++ /dev/null @@ -1,74 +0,0 @@ -<!ENTITY restore.custom.warning "TĂĽm isteÄźe baÄźlı sĂĽzgeçleriniz seçilen dosyanın içeriÄźiyle deÄźiĹźtirilecek. Devam etmek istiyor musunuz?"> -<!ENTITY slow.column "Ya&vaĹź sĂĽzgeçler"> -<!ENTITY enabled.column "Etkin"> -<!ENTITY subscription.lastDownload.checksumMismatch "Olmadı. SaÄźlama yapılamadı"> -<!ENTITY noFiltersInGroup.text "Seçili öbek boĹź"> -<!ENTITY subscription.actions.label "Eylemler"> -<!ENTITY filter.selectAll.label "TĂĽmĂĽnĂĽ seç"> -<!ENTITY backupButton.label "&Yedekle ve geri getir"> -<!ENTITY restore.minVersion.warning "Uyarı: Dosya Adblock Plus'ın daha yeni bir sĂĽrĂĽmĂĽyle oluĹźturulmuĹź. Bu dosyayı geri getirmeden önce Adblock Plus'ı en gĂĽncel sĂĽrĂĽmĂĽne yĂĽkseltmelisiniz."> -<!ENTITY restore.error "Dosya verisi iĹźlenemiyor. Adblock Plus yedeÄźi olmayabilir mi?"> -<!ENTITY sort.ascending.label "&A'da Z'ye sıralama"> -<!ENTITY sort.label "&Sırala"> -<!ENTITY subscription.source.label "SĂĽzgeç listesi"> -<!ENTITY hitcount.column "İsab&et"> -<!ENTITY noFilters.text "İsteÄźe göre ayarlanmış hiçbir sĂĽzgeciniz yok."> -<!ENTITY backup.custom.title "Sadece isteÄźe baÄźlı sĂĽzgeçler"> -<!ENTITY subscription.external.label "BaĹźka bir eklenti tarafından gĂĽncellendi"> -<!ENTITY subscription.delete.label "Sil"> -<!ENTITY noGroupSelected.text "SĂĽzgeçlerini görmek için bir sĂĽzgeç öbeÄźi seçmeniz gerekiyor."> -<!ENTITY filter.cut.label "Kes"> -<!ENTITY restore.default.label "?1? tarihli yedek geri getirilsin mi?"> -<!ENTITY subscription.lastDownload.inProgress "İndiriliyor..."> -<!ENTITY subscriptions.tab.label "SĂĽzgeç abonelikleri"> -<!ENTITY sort.descending.label "&Z'den A'ya sıralama"> -<!ENTITY filters.remove.warning "TĂĽm seçili sĂĽzgeçleri gerçekten silmek istiyor musunuz?"> -<!ENTITY filter.delete.label "Sil"> -<!ENTITY addSubscriptionAdd.label "Ekle"> -<!ENTITY viewMenu.label "GörĂĽnĂĽm"> -<!ENTITY subscription.lastDownload.unknown "Yok"> -<!ENTITY addSubscriptionCancel.label "Vazgeç"> -<!ENTITY subscription.enabled.label "Etkin"> -<!ENTITY noSubscriptions.text "HenĂĽz hiçbir sĂĽzgeç aboneliÄźi eklemediniz. Adblock Plus sĂĽzgeç olmadan hiçbir Ĺźey - engellemeyecektir. Abonelik eklemek için - lĂĽtfen "SĂĽzgeç aboneliÄźi ekle" dĂĽÄźmesini kullanın."> -<!ENTITY subscription.update.label "SĂĽzgeçleri gĂĽncelle"> -<!ENTITY dialog.title "Adblock Plus SĂĽzme Tercihleri"> -<!ENTITY addFilter.label "SĂĽzgeç e&kle"> -<!ENTITY subscription.minVersion.warning "Bu sĂĽzgeç aboneliÄźi daha yeni bir Adblock Plus sĂĽrĂĽmĂĽ gerektiriyor. En gĂĽncel Adblock Plus sĂĽrĂĽmĂĽne yĂĽkseltmelisiniz."> -<!ENTITY subscription.lastDownload.invalidURL "Olmadı. Bu geçerli bir adres deÄźil."> -<!ENTITY backup.error "SĂĽzgeçler dosyaya yazılırken bir sorun meydana geldi. Dosyanın yazma korumalı veya baĹźka bir uygulama tarafından kullanılmıyor olduÄźundan emin olun."> -<!ENTITY filter.moveUp.label "Yukarıya taşı"> -<!ENTITY addGroup.label "SĂĽ&zgeç öbeÄźi ekle"> -<!ENTITY filter.edit.label "DĂĽzenle"> -<!ENTITY subscription.showHideFilters.label "SĂĽzgeçleri göster/gizle"> -<!ENTITY acceptableAds2.label "Rahatsız etmeyen bazı reklamlara &izin ver"> -<!ENTITY addSubscriptionOther.label "BaĹźka abonelik ekle"> -<!ENTITY close.label "Kapat"> -<!ENTITY sort.none.label "Sıralan&mamış"> -<!ENTITY filter.actions.label "SĂĽzgeç eylemleri"> -<!ENTITY filter.copy.label "Kopyala"> -<!ENTITY filter.moveDown.label "AĹźağıya taşı"> -<!ENTITY filter.resetHitCounts.label "İsabet istatistiklerini sıfırla"> -<!ENTITY readMore.label "Daha fazla bilgi al"> -<!ENTITY subscription.moveUp.label "Yukarıya taşı"> -<!ENTITY addSubscription.label "SĂĽzgeç aboneliÄźi ekle"> -<!ENTITY subscription.homepage.label "Ana sayfa"> -<!ENTITY backup.complete.title "TĂĽm sĂĽzgeç ve abonelikler"> -<!ENTITY restore.own.label "Kendi yedeÄźini geri getir"> -<!ENTITY restore.complete.warning "TĂĽm sĂĽzme tercihleriniz seçilen dosyanın içeriÄźiyle deÄźiĹźtirilecek. Devam etmek istiyor musunuz?"> -<!ENTITY filters.tab.label "İsteÄźe baÄźlı sĂĽzgeçler"> -<!ENTITY backup.label "Yeni yedek oluĹźtur"> -<!ENTITY find.label "&Bul"> -<!ENTITY subscription.moveDown.label "AĹźağıya taşı"> -<!ENTITY subscription.lastDownload.connectionError "Olmadı. İndirmede sorun var."> -<!ENTITY subscription.lastDownload.success "EĹźleme baĹźarılı oldu."> -<!ENTITY subscription.lastDownload.invalidData "Olmadı. Bu dĂĽzgĂĽn bir sĂĽzgeç listesi deÄźil."> -<!ENTITY filter.paste.label "Yapıştır"> -<!ENTITY subscription.disabledFilters.enable "Devre dışı sĂĽzgeçleri devreye sok"> -<!ENTITY lasthit.column "Son isabet"> -<!ENTITY subscription.editTitle.label "BaĹźlığı deÄźiĹźtir"> -<!ENTITY subscription.disabledFilters.warning "Bu abonelikteki bazı sĂĽzgeçler devre dışı."> -<!ENTITY filter.column "SĂĽzgeç &kuralı"> -<!ENTITY subscription.lastDownload.label "Son indirme zamanı:"> -<!ENTITY viewList.label "Listeye bak"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/firstRun.properties deleted file mode 100644 index e7c76d5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Her hareketinizi izleyen reklam Ĺźirketlerin adımlarınızı gizleyin. İnternette izlenmeyi devre dışı bırakarak gezin. -firstRun_toggle_off=KAPALI -firstRun_feature_tracking=İzlenmeyi Devre Dışı Bırak -firstRun_feature_malware=Zararlı Yazılım Engelleme -firstRun_title=Adblock Plus yĂĽklendi -firstRun_toggle_on=AÇIK -firstRun_acceptableAdsExplanation=Siteleri basit ve rahatsız etmeyen reklamlar yayınlamaya teĹźvik ediyoruz. Bu yĂĽzden varsayılan ayarlar altında gösterilen, makul reklamları tanımlayan <a>sıkı kuralları</a> kabul ettik. Yine de tĂĽm reklamları engellemek istiyorsanız <a>devre dışı bırakma</a> iĹźini birkaç saniye içinde yapabilirsiniz. -firstRun_contributor_credits=EmeÄźi Geçenler -firstRun_dataCorruptionWarning=Bu sayfa sĂĽrekli gösteriliyor mu? <a>Buraya tıklayın!</a> -firstRun_acceptableAdsHeadline=Rahatsız edici reklamlar artık engellenecek -firstRun_share=ArkadaĹźlarınıza bahsedin -firstRun_share_headline=İnterneti daha iyi bir yer yapabilmek için <a>bize elinizi uzatın</a> -firstRun_feature_social_description=Sayfalarda çıkan ve davranışlarınızı takip eden Facebook'un "BeÄźen" dĂĽÄźmesi gibi sosyal medya dĂĽÄźmelerinden kurtulun. -firstRun_filterlistsReinitializedWarning=GörĂĽnĂĽĹźe göre bir sorun tĂĽm filtrelerinizin kaldırılmasına neden olmuĹź ve bir yedeÄźi geri yĂĽkleyemiyoruz. Bu yĂĽzden filtrelerinizi ve Kabul Edilebilir Reklamlar ayarlarınızı sıfırlamamız gerekiyordu. LĂĽtfen <a>Adblock Plus seçenekleri</a> bölĂĽmĂĽnde filtre listelerinizi ve Kabul Edilebilir Reklamlar ayarlarınızı denetleyin. -firstRun_feature_malware_description=Bilinen kötĂĽ amaçlı yazılıma sahip alan adlarını engelleyerek gezintinizi daha gĂĽvenli hale getirin. -firstRun_features=Adblock Plus reklamları engellemekten daha fazlasını yapabilir -firstRun_donate=bağış yapın -firstRun_donate_label=Projemize destek verin -firstRun_feature_social=Sosyal Medya DĂĽÄźmelerini Kaldır -firstRun_legacySafariWarning=Safari'nin Adblock Plus tarafından desteklenmeyen eski bir sĂĽrĂĽmĂĽnĂĽ kullanıyorsunuz. Uygulama doÄźru Ĺźekilde çalışmayabilir veya bazı internet sitelerinde kullanıcı deneyimini olumsuz etkileyebilir. SĂĽrĂĽmĂĽnĂĽzĂĽ Safari 6.1.1 veya daha yĂĽksek (OS X 10.8 Mountain Lion için), ya da Safari 7.0.1 veya daha yĂĽksek (OS X 10.9 Mavericks için) bir sĂĽrĂĽme yĂĽkseltmenizi, veya Mozilla Firefox, Google Chrome ya da Opera'nın en son sĂĽrĂĽmĂĽnĂĽ kullanmanızı önemle tavsiye ederiz. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/global.properties deleted file mode 100644 index bf4bc48..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=Bakılan sayfada engellenebilecek bir öğe bulunmuyor -action3_tooltip=Adblock Plus'ı etkinleĹźtirmek ya da etkisizleĹźtirmek için orta dĂĽÄźmeye tıklayın. -notification_antiadblock_title=Hedeflenen iletileri gizlemek istiyor musunuz? -type_label_script=betik -filter_elemhide_nocriteria=Gizlenecek bileĹźeni anlamak için hiçbir ölçüt belirtilmedi -blockingGroup_title=Reklam Engelleme Kuralları -whitelisted_tooltip=Adblock Plus etkin, ancak bu sayfada devre dışı. -type_label_stylesheet=biçem yaprağı -blocked_count_tooltip=toplamda ?1?, sayfada ?2? -type_label_font=yazı tipi -type_label_popup=açılır pencere -filter_regexp_tooltip=SĂĽzgeç ya dĂĽzenli ifade ya da en iyileĹźtirilmek için çok kısa. Bu sĂĽzgeçlerden çok fazlası, taramanızı yavaĹźlatabilir. -action0_tooltip=İçerik menĂĽsĂĽnĂĽ açmak için tıklayın; etkinleĹźtirmek ya da etkisizleĹźtirmek için orta dĂĽÄźmeye tıklayın. -whitelisted_page=Adblock Plus bakılan sayfa için devre dışı bırakıldı -remove_group_warning=Bu grubu kaldırmayı gerçekten istiyor musunuz? -action1_tooltip=Engellenebilir öğeleri açmak ya da kapatmak için tıklayın; etkinleĹźtirmek ya da etkisizleĹźtirmek için orta dĂĽÄźmeye tıklayın. -type_label_xmlhttprequest=XML isteÄźi -active_tooltip=Adblock Plus devrede ve ?1? sĂĽzgeç aboneliÄźi ile ?2? özel sĂĽzgeç kullanıyor. -type_label_document=belge -type_label_object_subrequest=nesne alt isteÄźi -whitelistGroup_title=Hariç Tutma Kuralları -disabled_tooltip=Adblock Plus etkin deÄźil. -filter_elemhide_duplicate_id=Gizlenecek sadece bir bileĹźen kimliÄźi belirtilebilir -type_label_object=nesne -action2_tooltip=Tercihler penceresini açmak için tıklayın; etkinleĹźtirmek ya da etkisizleĹźtirmek için orta dĂĽÄźmeye tıklayın. -type_label_subdocument=çerçeve -clearStats_warning=Bu hareket isabet istatistiklerinin sıfırlanması ve artık istatistik tutulmamasıyla sonuçlanacak. Devam etmek istiyor musunuz? -notification_antiadblock_message=Bu site Adblock Plus kullanıcılarına hedeflenen iletiler göstermesiyle bilinir. Adblock Plus'ın hedeflenen iletileri gizlemesini istiyor musunuz? -blocked_count_addendum=(ayrıca ?1? tane ak listede, ?2? tane gizli) -subscription_invalid_location=Dosya listesi konumu ne dĂĽzgĂĽn bir URL ne de dĂĽzgĂĽn bir ada sahip. -type_label_image=resim -remove_subscription_warning=Gerçekten abonelikten çıkmak istiyor musunuz? -type_label_other=diÄźer -mobile_menu_enable=ABP: EtkinleĹźtir -type_label_media=ses/görĂĽntĂĽ -mobile_menu_disable_site=ABP: ?1? sitesinde etkisizleĹźtirilsin mi? -elemhideGroup_title=Ă–Äźe Gizleme Kuralları -mobile_menu_enable_site=ABP: ?1? sitesinde etkinleĹźtirilsin mi? -type_label_elemhide=gizli -newGroup_title=Yeni sĂĽzgeç öbeÄźi -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/overlay.dtd deleted file mode 100644 index 4cbbc1c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Evet"> -<!ENTITY notification.button.no "&Hayır"> -<!ENTITY sync.label "Adblock Plus ayarlarını &eĹźitle"> -<!ENTITY whitelist.site.label "?1? sitesinde devre dışı kal"> -<!ENTITY filters.label "&SĂĽzgeç tercihleri"> -<!ENTITY disable.label "Her yerde devre dışı kal"> -<!ENTITY objecttab.title "Engelle"> -<!ENTITY objecttab.tooltip "Bu nesneyi Adblock Plus ile engellemek için buraya tıklayın."> -<!ENTITY menuitem.label "Adblock Plus Tercihleri"> -<!ENTITY objecttabs.label "Flash ve &Java'yı kulakçıklarla belirt"> -<!ENTITY sendReport.label "&Bu sayfadaki sorunu bildir"> -<!ENTITY whitelist.page.label "Sadece bu sayfada devre dışı kal"> -<!ENTITY context.image.label "Adblock Plus: Resmi engelle"> -<!ENTITY counthits.label "SĂĽzgeç isa&betini say"> -<!ENTITY opensidebar.label "E&ngellenebilecek öğeleri göster"> -<!ENTITY notification.button.close "&Kapat"> -<!ENTITY contribute.label "Adblock Plus'a katkıda bulun"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Çerçeveyi engelle"> -<!ENTITY blocked.tooltip "Bu sayfada engellenen öğeler:"> -<!ENTITY hideplaceholders.label "Enge&llenen öğelerin yer iĹźaretlerini gizle"> -<!ENTITY showinstatusbar.label "&Durum çubuÄźunda göster"> -<!ENTITY sidebar.title "Bu sayfadaki engellenebilecek öğeler"> -<!ENTITY options.label "S&eçenekler"> -<!ENTITY context.object.label "Adblock Plus: Nesneyi engelle"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Bu sayfada devreye sok"> -<!ENTITY filters.tooltip "En etkin sĂĽzgeçler:"> -<!ENTITY closesidebar.label "E&ngellenebilecek öğeleri gizle"> -<!ENTITY showintoolbar.label "A&raç çubuÄźunda göster"> -<!ENTITY status.tooltip "Durum:"> -<!ENTITY context.media.label "Adblock Plus: Ses/video engelle"> -<!ENTITY subscription.update.label "SĂĽzgeçleri gĂĽncelle"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sendReport.dtd deleted file mode 100644 index c187ec1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&Geri al"> -<!ENTITY issues.disabledgroups.description "Bu sayfada etkisi olabilecek aĹźağıdaki abonelikler ve sĂĽzgeç grupları devre dışı bırakıldı:"> -<!ENTITY showData.label "Bildirim verisini göster"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus çok &fazla engelleme yapıyor"> -<!ENTITY issues.change.description "Yapılandırmanız deÄźiĹźti. LĂĽtfen deÄźiĹźiklikleri sınamak için sayfayı yeniden yĂĽkleyin ve yapılan deÄźiĹźiklikler sorunu gidermediyse hatayı bildirin."> -<!ENTITY email.label "E-&posta:"> -<!ENTITY issues.openPreferences.label "SĂĽzgeç tercihlerini aç"> -<!ENTITY sendPage.confirmation "Bildiriminiz kaydedildi ve ona aĹźağıdaki adresten ulaĹźabilirsiniz:"> -<!ENTITY copyLink.label "Bildirimi baÄźlantısını &kopyala"> -<!ENTITY issues.nofilters.description "Adblock Plus bu sayfada hiçbir Ĺźeyi engellemiyor. GözlemlediÄźiniz sorun bĂĽyĂĽk olasılıkla Adblock Plus ile ilgisiz."> -<!ENTITY sendPage.knownIssue "BildirdiÄźiniz sorun bĂĽyĂĽk olasılıkla biliniyor. Daha fazla bilgi:"> -<!ENTITY typeSelector.other.description "Sorunun sĂĽzgeçlerinden çok Adblock Plus'ın kendisinden kaynaklandığından şüpheleniyorsanız bu seçeneÄźi seçin."> -<!ENTITY issues.disabledgroups.enable.label "SĂĽzgeç aboneliÄźini veya grubunu devreye sok"> -<!ENTITY typeWarning.override.label "Anlıyorum ve ne olur&sa olsun bildirimi göndermek istiyorum"> -<!ENTITY issues.disabled.enable.label "Adblock Plus'ı etkinleĹźtir"> -<!ENTITY update.fixed.description "SĂĽzgeç aboneliklerinize yapılan gĂĽncellemeler muhtemelen bildirmek istediÄźiniz sorunu giderdi. Sayfayı tekrar yĂĽkleyip bir daha deneyin, hâlâ sorun varsa bildirin."> -<!ENTITY anonymous.label "&Anonim gönder"> -<!ENTITY reloadButton.label "Sayfayı &tazele"> -<!ENTITY recentReports.clear.label "TĂĽm bildirimleri sil"> -<!ENTITY typeSelector.description "Bu pencere Adblock Plus sorun bildirimi göndermek için gerekli adımların atılmasında size rehberlik edecek. Ă–nce bu sayfada ne tĂĽr sorun yaĹźadığınızı seçin:"> -<!ENTITY screenshot.remove.label "Hassas &veriyi sil"> -<!ENTITY issues.ownfilters.description "Bu sayfada uygulanan sĂĽzgeçlerin bazıları kullanıcı tarafından tanımlanmış. LĂĽtfen soruna neden olmuĹź olabilecek sĂĽzgeçleri devre dışı bırakın:"> -<!ENTITY update.inProgress.description "Bu sorunun sĂĽzgeç gĂĽncellemesiyle giderilmesinin mĂĽmkĂĽn olup olmadığını tespit etmek için abonelikleriniz Ĺźimdi gĂĽncellenecektir. LĂĽtfen bekleyin..."> -<!ENTITY sendPage.retry.label "Yeniden gönder"> -<!ENTITY data.label "Bildirim &verisi:"> -<!ENTITY recentReports.label "Yakında gönderdiÄźiniz bildirimler"> -<!ENTITY typeWarning.description "SĂĽzgeçlerle ilgili bir sorun deÄźil de Adblock Plus ile ilgili genel bir sorun bildiriminde bulunmak istediÄźinizi belirttiniz. LĂĽtfen böyle sorunların en iyi bildirim yerinin [link]Adblock Plus forumu[/link] olduÄźu aklınızda olsun. Siz baÄźlantı vermediÄźiniz sĂĽrece kimse bildiriminizi görmeyeceÄźi için sorun bildiriciyi sadece mevcut bir tartışmaya katkı saÄźlamak için kullanmalısınız."> -<!ENTITY issues.disabled.description "Adblock Plus devre dışı ve Ĺźu anki durumunda hiçbir Ĺźeyi engellemeyecek."> -<!ENTITY attachExtensions.label "Sor&un kaynağının eklenti uyumsuzluÄźu olup olmadığının belirlenmesi için etkin eklentilerin listesini bildirime ekle"> -<!ENTITY issues.nosubscriptions.add.label "SĂĽzgeç aboneliÄźi ekle"> -<!ENTITY issues.disabledfilters.enable.label "SĂĽzgeci devreye sok"> -<!ENTITY issues.override.label "Yapılan&dırma doÄźru, bildirime devam et"> -<!ENTITY issues.nosubscriptions.description "Sitelerdeki istenmeyen içeriÄźi yok eden önceden hazırlanmış sĂĽzgeç listelerinden herhangi birine abone olmuĹź deÄźilsiniz."> -<!ENTITY typeSelector.falsePositive.description "Sayfanın önemli içeriÄźi hiç görĂĽnmĂĽyorsa, yanlış görĂĽnĂĽyorsa veya sayfa dĂĽzgĂĽn iĹźlemiyorsa bu seçeneÄźi seçin. Sorun kaynağının Adblock Plus olup olmadığını eklentiyi geçici olarak devre dışı bırakıp belirleyebilirsiniz."> -<!ENTITY typeSelector.other.label "BaĹźka bir sorun"> -<!ENTITY emailComment.label "Sizi, raporunuz hakkında sorularımız olursa sizinle iletiĹźime geçebilmemiz için geçerli bir e-posta adresi girmeye teĹźvik ediyoruz. Bu aynı zamanda katılımlarınızı hatırlamamızı ve önceliklerini yĂĽksek olarak ayarlamamızı saÄźlar."> -<!ENTITY issues.whitelist.remove.label "Adblock Plus'u bu sayfada devreye sok"> -<!ENTITY outdatedSubscriptions.description "AĹźağıdaki sĂĽzgeç abonelikleri en az 2 haftadır gĂĽncellenmedi. Bildirmeden önce lĂĽtfen bu abonelikleri gĂĽncelleyin, sorun çoktan giderilmiĹź olabilir."> -<!ENTITY dataCollector.description "Adblock Plus eklentisinin gerekli bilgileri toplaması için lĂĽtfen biraz bekleyin."> -<!ENTITY sendButton.label "&Bildirimi gönder"> -<!ENTITY comment.label "Y&orum (isteÄźe baÄźlı):"> -<!ENTITY sendPage.errorMessage "Hata bildirimi gönderme giriĹźiminiz "?1?" hata koduyla baĹźarısız oldu. LĂĽtfen internete baÄźlı olduÄźunuzdan emin olun ve yeniden deneyin. Sorun devam ederse lĂĽtfen [link]Adblock Plus forumunda[/link] yardım isteyin."> -<!ENTITY showRecentReports.label "Yakında gönderilen bildirimleri göster"> -<!ENTITY commentPage.heading "Yorum ekle"> -<!ENTITY update.start.label "GĂĽncellemeyi Ĺźimdi baĹźlat"> -<!ENTITY issues.disabledfilters.description "Bu sayfada etkisi olabilecek aĹźağıdaki sĂĽzgeçler devre dışı bırakıldı:"> -<!ENTITY screenshot.description "Aynı sayfa farklı kiĹźilerce farklı biçimde görĂĽlebilir. Bildirime ekran görĂĽntĂĽsĂĽ eklemeniz sorunu anlamamıza yardımcı olabilir. Hassas bilgilerin olduÄźu bölĂĽmleri silebilirsiniz ve sorunun görĂĽnĂĽr olduÄźu yerleri iĹźaretleyebilirsiniz. Bunu yapmak için ilgili dĂĽÄźmeye basın ve resimde bir bölĂĽmĂĽ farenizle seçin."> -<!ENTITY screenshot.attach.label "Bildirime say&fa resmi ekle"> -<!ENTITY issues.whitelist.description "Adblock Plus bildirimde bulunduÄźunuz sayfada devre dışı. Bu sorunun incelenmesine yardım etmek için bildirim göndermeden önce eklentiyi devreye sokun ve sayfayı yeniden yĂĽkleyin."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus reklamın birini engellemiyor"> -<!ENTITY typeSelector.heading "Sorun tĂĽrĂĽnĂĽ seçin"> -<!ENTITY anonymity.warning "Size geri dönemeyiz ve muhtemelen rapor önceliÄźi düşük olarak ayarlanır."> -<!ENTITY wizard.title "Sorun bildirici"> -<!ENTITY issues.ownfilters.disable.label "SĂĽzgeci devre dışı bırak"> -<!ENTITY commentPage.description "AĹźağıdaki metin alanı sorunu anlamamız için yorum yazmanıza olanak tanır. Bu adım isteÄźe baÄźlıdır ancak sorun açık deÄźilse tavsiye edilir. Ayrıca bildirimi göndermeden önce gözden geçirebilirsiniz."> -<!ENTITY comment.lengthWarning "Yorumunuzun uzunluÄźu 1000 karakteri aşıyor. Sadece ilk 1000 karakter gönderilecek."> -<!ENTITY typeSelector.falseNegative.description "Adblock Plus devrede olmasına raÄźmen reklamın biri görĂĽnĂĽyorsa bu seçeneÄźi seçin."> -<!ENTITY sendPage.waitMessage "LĂĽftfen Adblock Plus bildirimi gönderirken bekleyin."> -<!ENTITY dataCollector.heading "Sorun bildiriciye hoĹź geldiniz"> -<!ENTITY screenshot.heading "Ekran görĂĽntĂĽsĂĽ ekle"> -<!ENTITY sendPage.heading "Bildirimi gönder"> -<!ENTITY issues.subscriptionCount.description "Çok fazla sĂĽzgeç listesine abone olduÄźunuz görĂĽlĂĽyor. Böyle yapmanız tavsiye edilmez çünkĂĽ bu, sorun çıkma olasılığını daha da arttırır. Ayrıca hangi sĂĽzgeç aboneliÄźi yazarının hatayı dĂĽzeltmesi gerektiÄźi belirsiz olduÄźundan hata bildiriminizi kabul edemeyiz. Sadece gerçekten gerekli olan sĂĽzgeç abonelikleri dışında kalanlardan çıkın ve sorunun hâlâ yaĹźanıp yaĹźanmadığına bakın."> -<!ENTITY screenshot.mark.label "Sorunu iĹź&aretle"> -<!ENTITY privacyPolicy.label "Gizlilik politikası"> -<!ENTITY issues.description "Adblock Plus yapılandırmanızda bu sorunun nedeni olabilecek veya bildirimi incelemeyi güçleĹźtirecek sorunlar keĹźfetti."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sidebar.dtd deleted file mode 100644 index 667d01f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Flash öğesinin sınırları"> -<!ENTITY address.label "Konum"> -<!ENTITY context.open.label "Yeni sekmede aç"> -<!ENTITY type.label "TĂĽr"> -<!ENTITY tooltip.filterSource.label "SĂĽzgeç kaynağı:"> -<!ENTITY noitems.label "Engellenebilecek öğe yok"> -<!ENTITY filter.label "SĂĽzgeç"> -<!ENTITY tooltip.size.label "Boyut"> -<!ENTITY reattach.label "BirleĹźtir"> -<!ENTITY search.label "&Ara"> -<!ENTITY docDomain.thirdParty "(üçüncĂĽ taraf)"> -<!ENTITY filterSource.label "SĂĽzgeç kaynağı"> -<!ENTITY tooltip.docDomain.label "Belge kaynağı:"> -<!ENTITY context.copy.label "Ă–Äźenin konumunu kopyala"> -<!ENTITY tooltip.type.label "TĂĽr:"> -<!ENTITY context.disablefilter.label "?1? sĂĽzgecini devre dışı bırak"> -<!ENTITY context.copyFilter.label "SĂĽzgeci kopyala"> -<!ENTITY context.block.label "Bu öğeyi engelle"> -<!ENTITY context.enablefilter.label "?1? sĂĽzgecini devreye sok"> -<!ENTITY detach.label "Ayır"> -<!ENTITY whitelisted.label "Ak listeye dahil bir sayfa"> -<!ENTITY context.disablefilteronsite.label "Bu sĂĽzgeci ?1? alan adında kullanma"> -<!ENTITY detached.title "Adblock Plus: Engellenebilecek öğeler (ayrıldı)"> -<!ENTITY docDomain.firstParty "(birinci taraf)"> -<!ENTITY tooltip.type.whitelisted "(ak listede)"> -<!ENTITY tooltip.filter.label "YĂĽrĂĽrlĂĽkteki sĂĽzgeç:"> -<!ENTITY tooltip.filter.disabled "(devre dışı)"> -<!ENTITY context.editfilter.label "YĂĽrĂĽrlĂĽkteki sĂĽzgeci dĂĽzelt"> -<!ENTITY tooltip.type.blocked "(engellendi)"> -<!ENTITY size.label "Boyut"> -<!ENTITY context.whitelist.label "Ă–Äźeye ayrıcalık tanı"> -<!ENTITY context.selectAll.label "TĂĽmĂĽnĂĽ seç"> -<!ENTITY state.label "Durum"> -<!ENTITY docDomain.label "Belge kaynağı"> -<!ENTITY tooltip.address.label "Konum:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/subscriptionSelection.dtd deleted file mode 100644 index b60a9e2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/tr/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label ""?1?" sĂĽzgecine de abone ol"> -<!ENTITY list.download.failed "Adblock Plus abonelik listesini alamadı"> -<!ENTITY list.download.retry "Yeniden dene"> -<!ENTITY title.label "&AboneliÄźin adı:"> -<!ENTITY list.download.website "Siteye git"> -<!ENTITY supplementMessage "Bu sĂĽzgeç aboneliÄźi henĂĽz kullanmadığınız "?1?" sĂĽzgeç aboneliÄźiyle kullanılmak ĂĽzere hazırlanmış."> -<!ENTITY viewList.label "SĂĽzgeçlere bak"> -<!ENTITY visitHomepage.label "Ana sayfaya git"> -<!ENTITY addSubscription.label "Abone ol"> -<!ENTITY dialog.title "Adblock Plus sĂĽzgeç aboneliÄźi ekle"> -<!ENTITY location.label "SĂĽzgeç &listesi konumu:"> -<!ENTITY fromWeb.description "LĂĽtfen bu sĂĽzgeç aboneliÄźini eklemek istediÄźinizi teyit edin. Eklemeden önce abonelik adını ve konumunu deÄźiĹźtirebilirsiniz."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/composer.dtd deleted file mode 100644 index 68f86cb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "при &кінці адреŃи"> -<!ENTITY domainRestriction.label "Об&межити доменом"> -<!ENTITY collapse.default.no.label "ĐŻĐş завжди (ні)"> -<!ENTITY firstParty.label "То&Đą же Ńайт"> -<!ENTITY preferences.label "Показати &Ń–ŃĐ˝Ńючі фільтри…"> -<!ENTITY pattern.label "ШŃкати Ńаблон"> -<!ENTITY thirdParty.label "С&торонній Ńайт"> -<!ENTITY filter.label "Новий &фільтр:"> -<!ENTITY collapse.label "Đ—&гортати заблоковане:"> -<!ENTITY match.warning "Вказаний Ńаблон не відповідає адреŃŃ–, для якої ви Ńтворюєте правило, Ń– ніяк на неї не вплине."> -<!ENTITY anchor.start.label "на &ĐżĐľŃ‡Đ°Ń‚ĐşŃ Đ°Đ´Ń€ĐµŃи"> -<!ENTITY matchCase.label "Đ’&раховŃвати регіŃтр"> -<!ENTITY custom.pattern.label "І&Đ˝Ńе"> -<!ENTITY unselectAllTypes.label "СкинŃти вŃе"> -<!ENTITY type.whitelist.label "Пра&вило виняткŃ"> -<!ENTITY regexp.warning "Шаблон що ви ввели бŃде інтерпретовано ŃŹĐş регŃлярний вираз. Багато регŃлярних виразів можŃть Ńповільнити перегляд Ńторінок. Додайте * на кінець ŃĐ°Đ±Đ»ĐľĐ˝Ń ŃŹĐşŃ‰Đľ ви не збиралиŃŃŚ викориŃтовŃвати регŃлярний вираз."> -<!ENTITY dialog.title "Додати правило фільтрŃвання Adblock Plus"> -<!ENTITY basic.label "ПроŃтий вигляд"> -<!ENTITY type.filter.label "Правило &блокŃвання"> -<!ENTITY types.label "ЗаŃтоŃовŃвати Đ´Đľ об’єктів:"> -<!ENTITY shortpattern.warning "Шаблон що ви ввели закороткий для оптимізŃвання, багато таких Ńаблонів можŃть Ńповільнити перегляд Ńторінок. Рекомендовано обрати довŃŃ ŃŃ‚Ń€ĐľĐşŃ Đ´Đ»ŃŹ цього фільтра"> -<!ENTITY collapse.yes.label "Так"> -<!ENTITY anchors.label "ЗаŃтоŃŃвати Ńаблон лиŃе:"> -<!ENTITY collapse.default.yes.label "ĐŻĐş завжди (так)"> -<!ENTITY domainRestriction.help "Вкажіть один чи більŃе доменів, розділених Ńимволом „|“, фільтр бŃде заŃтоŃовано лиŃе на них. Символ „~“ перед іменем домена вказŃŃ” що фільтр на цей домен не розповŃюджŃєтьŃŃŹ."> -<!ENTITY accept.label "Додати фільтр"> -<!ENTITY options.label "НалаŃŃ‚Ńвання"> -<!ENTITY disabled.warning "Adblock Plus наразі вимкнений. Ви можете додавати фільтри, але вони не бŃĐ´Ńть заŃтоŃовŃватиŃŃŹ, доки Ви не [link]Ńвімкнете Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "на &ĐżĐľŃ‡Đ°Ń‚ĐşŃ Ń–ĐĽĐµĐ˝Ń– домена"> -<!ENTITY collapse.no.label "Ні"> -<!ENTITY selectAllTypes.label "Вибрати вŃе"> -<!ENTITY advanced.label "РозŃирений вигляд"> -<!ENTITY pattern.explanation "Шаблон може бŃти бŃĐ´ŃŚ-якою чаŃтиною адреŃи, Ńимвол * працює ŃŹĐş джокер. Фільтр бŃде заŃтоŃовано лиŃе Đ´Đľ Đ°Đ´Ń€ĐµŃ Ń‰Đľ відповідають ŃаблонŃ."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/filters.dtd deleted file mode 100644 index 2d0b05b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Đ’ŃŃ– ваŃŃ– влаŃні фільтри бŃĐ´Ńть замінені вміŃтом вибраного файла. Продовжити?"> -<!ENTITY slow.column "Пов&ільні фільтри"> -<!ENTITY enabled.column "ĐŁ&вімкнено"> -<!ENTITY subscription.lastDownload.checksumMismatch "Помилка, не збіглаŃŃŚ контрольна ŃŃма"> -<!ENTITY noFiltersInGroup.text "Вибрана грŃпа ĐżŃŃта."> -<!ENTITY subscription.actions.label "Дії"> -<!ENTITY filter.selectAll.label "Вибрати вŃŃ–"> -<!ENTITY backupButton.label "&Резервні копії та відновлення"> -<!ENTITY restore.minVersion.warning "Увага: файл бŃло Ńтворено новіŃою верŃією Adblock Plus.Вам Ńлід оновити Adblock Plus Đ´Đľ ĐľŃтанньої верŃŃ–Ń— ĐżĐµŃ€Ń Đ˝Ń–Đ¶ відновлюватиŃŃŚ Đ· цього файла."> -<!ENTITY restore.error "Дані Đ· файла неможливо обробити — може, це не Ń” ĐдблоківŃька резервна копія?"> -<!ENTITY sort.ascending.label "Đ’Ń–Đ´ &Đ Đ´Đľ ĐŻ"> -<!ENTITY sort.label "&СортŃвати за"> -<!ENTITY subscription.source.label "Перелік фільтрів"> -<!ENTITY hitcount.column "&Попадань"> -<!ENTITY noFilters.text "ĐŁ Đ˛Đ°Ń ĐżĐľĐşĐ¸ нема влаŃних фільтрів."> -<!ENTITY backup.custom.title "ЛиŃе влаŃні фільтри"> -<!ENTITY subscription.external.label "Оновлено Ń–Đ˝Ńим розŃиренням"> -<!ENTITY subscription.delete.label "Видалити"> -<!ENTITY noGroupSelected.text "Ви маєте вибрати грŃĐżŃ Ń„Ń–Đ»ŃŚŃ‚Ń€Ń–Đ˛ Đ´Đľ того ŃŹĐş Ń—Ń— фільтри можна бŃде показати."> -<!ENTITY filter.cut.label "Вирізати"> -<!ENTITY restore.default.label "ВідновитиŃŃŚ Đ· резервної копії ?1?"> -<!ENTITY subscription.lastDownload.inProgress "ЗавантажŃєтьŃя…"> -<!ENTITY subscriptions.tab.label "ПідпиŃки на фільтри"> -<!ENTITY sort.descending.label "Đ’Ń–Đ´ &ĐŻ Đ´Đľ Đ"> -<!ENTITY filters.remove.warning "Ви Đ´Ń–ĐąŃно хочете вилŃчити вŃŃ– вибрані фільтри?"> -<!ENTITY filter.delete.label "ВилŃчити"> -<!ENTITY addSubscriptionAdd.label "Додати"> -<!ENTITY viewMenu.label "Вигляд"> -<!ENTITY subscription.lastDownload.unknown "ніколи"> -<!ENTITY addSubscriptionCancel.label "СкаŃŃвати"> -<!ENTITY subscription.enabled.label "Увімкнено"> -<!ENTITY noSubscriptions.text "Ви поки не додали жодних підпиŃок. Đдблок не бŃде блокŃвати нічого без фільтрів, бŃĐ´ŃŚ лаŃка ŃкориŃтайтеŃŃŚ ĐżŃнктом «Додати підпиŃкѻ."> -<!ENTITY subscription.update.label "Оновити фільтри"> -<!ENTITY dialog.title "НалаŃŃ‚Ńвання фільтрів ĐдблокŃ"> -<!ENTITY addFilter.label "&Додати фільтр"> -<!ENTITY subscription.minVersion.warning "Ця підпиŃка фільтрів потребŃŃ” новіŃої верŃŃ–Ń— Adblock Plus. Вам Ńлід оновитиŃŃŚ Đ´Đľ ĐľŃтанньої верŃŃ–Ń— Adblock Plus."> -<!ENTITY subscription.lastDownload.invalidURL "Помилка, невірна адреŃа"> -<!ENTITY backup.error "Під Ń‡Đ°Ń Đ·Đ°ĐżĐ¸ŃŃ Ń„Ń–Đ»ŃŚŃ‚Ń€Ń–Đ˛ Ń Ń„Đ°ĐąĐ» ŃталаŃŃŹ помилка. УпевнітьŃŃŹ, що файл не захищений від запиŃŃ Ń– не викориŃтовŃєтьŃŃŹ Ń–Đ˝Ńою програмою."> -<!ENTITY filter.moveUp.label "Đ—ŃŃĐ˝Ńти вверх"> -<!ENTITY addGroup.label "Додати &грŃĐżŃ Ń„Ń–Đ»ŃŚŃ‚Ń€Ń–Đ˛"> -<!ENTITY filter.edit.label "РедагŃвати"> -<!ENTITY subscription.showHideFilters.label "Сховати/показати фільтри"> -<!ENTITY acceptableAds2.label "Дозволити Đ´ĐµŃŹĐşŃ Đ˝ĐµĐ˝Đ°Đ˛'ŃŹĐ·Đ»Đ¸Đ˛Ń &рекламŃ"> -<!ENTITY addSubscriptionOther.label "Додати Ń–Đ˝ŃŃ ĐżŃ–Đ´ĐżĐ¸ŃĐşŃ"> -<!ENTITY close.label "Закрити"> -<!ENTITY sort.none.label "&НеŃортовано"> -<!ENTITY filter.actions.label "Дії Đ· фільтрами"> -<!ENTITY filter.copy.label "Копіювати"> -<!ENTITY filter.moveDown.label "Đ—ŃŃĐ˝Ńти вниз"> -<!ENTITY filter.resetHitCounts.label "СкинŃти ŃтатиŃтикŃ"> -<!ENTITY readMore.label "ДетальніŃе"> -<!ENTITY subscription.moveUp.label "Đ—ŃŃĐ˝Ńти вверх"> -<!ENTITY addSubscription.label "Додати &підпиŃĐşŃ"> -<!ENTITY subscription.homepage.label "ДомаŃня Ńторінка"> -<!ENTITY backup.complete.title "Đ’ŃŃ– фільтри та підпиŃки"> -<!ENTITY restore.own.label "ВідновитиŃŃŚ Đ· влаŃної резервної копії"> -<!ENTITY restore.complete.warning "Đ’ŃŃ– ваŃŃ– налаŃŃ‚Ńвання фільтрів бŃĐ´Ńть замінені вміŃтом вибраного файла. Продовжити?"> -<!ENTITY filters.tab.label "ВлаŃні фільтри"> -<!ENTITY backup.label "Створити Đ˝ĐľĐ˛Ń Ń€ĐµĐ·ĐµŃ€Đ˛Đ˝Ń ĐşĐľĐżŃ–ŃŽ"> -<!ENTITY find.label "Đ—&найти фільтр"> -<!ENTITY subscription.moveDown.label "Đ—ŃŃĐ˝Ńти вниз"> -<!ENTITY subscription.lastDownload.connectionError "Помилка, неможливо викачати"> -<!ENTITY subscription.lastDownload.success "ĐŁŃпіх"> -<!ENTITY subscription.lastDownload.invalidData "Помилка, не правильний ŃпиŃок фільтрів"> -<!ENTITY filter.paste.label "Đ’Ńтавити"> -<!ENTITY subscription.disabledFilters.enable "УвімкнŃти вимкнені фільтри"> -<!ENTITY lasthit.column "&ĐžŃтаннє попадання"> -<!ENTITY subscription.editTitle.label "РедагŃвати назвŃ"> -<!ENTITY subscription.disabledFilters.warning "Деякі фільтри Ń Ń†Ń–Đą підпиŃці вимкнено."> -<!ENTITY filter.column "Правило &фільтрŃвання"> -<!ENTITY subscription.lastDownload.label "ĐžŃтаннє оновлення:"> -<!ENTITY viewList.label "Перегляд ŃпиŃĐşŃ"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/firstRun.properties deleted file mode 100644 index f001239..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Переглядайте Ńайти анонімно Ńляхом вимкнення відŃтеження - приховŃвання ваŃого ŃĐ»ŃŹŃ…Ń Đ˛Ń–Đ´ рекламних компаній, які хочŃть відŃлідковŃвати кожний Đ˛Đ°Ń ĐşŃ€ĐľĐş. -firstRun_toggle_off=Đ’ĐМКН -firstRun_feature_tracking=Вимкнення відŃтеження -firstRun_feature_malware=БлокŃвання Ńкідливих програм -firstRun_title=Adblock Plus вже вŃтановлено -firstRun_toggle_on=УВІМК -firstRun_acceptableAdsExplanation=Ми хотіли б заохотити веб-Ńайти викориŃтовŃвати проŃŃ‚Ń, ненав'ŃŹĐ·Đ»Đ¸Đ˛Ń Ń€ĐµĐşĐ»Đ°ĐĽŃ. ĐžŃŃŚ Ń‡ĐľĐĽŃ ĐĽĐ¸ вже Ńтворені <a>ŃŃворі керівні принципи</a> для ідентифікації прийнятної реклами, які відображаютьŃŃŹ Ń ĐłŃ€Ńпі типових налаŃŃ‚Ńвань. Якщо потрібно заблокŃвати ĐşĐľĐ¶Đ˝Ń Ń€ĐµĐşĐ»Đ°ĐĽŃ, то ви можете <a>вимкнŃти</a> це за декілька ŃекŃнд. -firstRun_contributor_credits=ВнеŃки ŃчаŃників -firstRun_dataCorruptionWarning=Ця Ńторінка вŃе ще відображаєтьŃŃŹ? <a>НатиŃніть Ń‚ŃŃ‚!</a> -firstRun_acceptableAdsHeadline=Дратівлива реклама бŃде надалі блокŃватиŃŃŹ -firstRun_share=Розказати Đ´Ń€ŃĐ·ŃŹĐĽ -firstRun_share_headline=<a>Подайте нам Ń€ŃĐşŃ</a> для Ńтворення кращого Ńередовища Ń ĐĽĐµŃ€ĐµĐ¶Ń– -firstRun_feature_social_description=Đвтоматично прибирає кнопки Ńоціальних мереж на ĐşŃталт Facebook, які Đ·'являютьŃŃŹ на веб-Ńторінках Ń– відŃтежŃють ваŃŃ ĐżĐľĐ˛ĐµĐ´Ń–Đ˝ĐşŃ. -firstRun_filterlistsReinitializedWarning=ЗдаєтьŃŃŹ, що помилка призвела Đ´Đľ того, що вŃŃ– фільтри бŃли знищені, Ń– ми не можемо відновити Ń€ĐµĐ·ĐµŃ€Đ˛Đ˝Ń ĐşĐľĐżŃ–ŃŽ. Đ˘ĐľĐĽŃ ĐĽĐ¸ ŃкинŃли фільтри Ń– налаŃŃ‚Ńвання ненав’язливої реклами. Đ‘ŃĐ´ŃŚ лаŃка, перевірте ŃпиŃок ваŃих фільтрів та налаŃŃ‚Ńвання ненав’язливої реклами <a>Adblock Plus параметри</a>. -firstRun_feature_malware_description=Убезпечте ваŃŃ– перегляд через блокŃвання доменів відомих зловмиŃних програм. -firstRun_features=Adblock Plus може зробити більŃе, ніж блокŃвання реклами -firstRun_donate=пожертва -firstRun_donate_label=Підтримайте Đ˝Đ°Ń ĐżŃ€ĐľĐµĐşŃ‚ -firstRun_feature_social=Видаляє кнопки Ńоціальних мереж -firstRun_legacySafariWarning=Ви викориŃтовŃєте ŃŃ‚Đ°Ń€Ń Đ˛ĐµŃ€ŃŃ–ŃŽ Safari, яка не підтримŃєтьŃŃŹ Adblock Plus. Вона може не працювати належним чином або погірŃŃвати якіŃть роботи кориŃŃ‚Ńвача на деяких веб-Ńайтах. Ми наŃтійно рекомендŃємо онвити Đ´Đľ Safari 6.1.1 або вище (в OS X 10.8 Mounain Lion), або Safari 7.0.1 або вище (в OS X 10.9 Mavericks), або викориŃтовŃвати ĐľŃтанню верŃŃ–ŃŽ Mozilla Firefox, Google Chrome або Mozilla. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/global.properties deleted file mode 100644 index 8faed6d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=На відкритій Ńторінці немає елементів, які можна бŃло б заблокŃвати -action3_tooltip=Клацніть, щоб ŃвімкнŃти чи вимкнŃти Adblock Plus. -notification_antiadblock_title=Приховати цільові повідомлення? -type_label_script=Скрипт -filter_elemhide_nocriteria=Не вказаний критерій за яким Ńпізнати елемент, що бŃде приховано. -blockingGroup_title=Правила блокŃвання -whitelisted_tooltip=Adblock Plus Ńвімкнено, проте не для цієї Ńторінки. -type_label_stylesheet=Стилі -blocked_count_tooltip=?1? Đ· ?2? -type_label_font=Ńрифт -type_label_popup=виринаюче вікно -filter_regexp_tooltip=Цей фільтр або Ń” регŃлярним виразом, або занадто короткий для оптимізації. Забагато фільтрів можŃть вповільнити перегляд Ńторінок -action0_tooltip=Клацніть, щоб відкрити контекŃтне меню. Середня клавіŃа миŃŃ– — вкл/викл. -whitelisted_page=Adblock Plus вимкнено для цієї Ńторінки -remove_group_warning=Ви Đ´Ń–ĐąŃно бажаєте видалити цю грŃĐżŃ? -action1_tooltip=Клацніть, щоб відкрити/закрити ŃпиŃок елементів. Середня клавіŃа миŃŃ– — вкл/викл. -type_label_xmlhttprequest=XML-запит -active_tooltip=Adblock Plus Ńвімкнено, задіяно ?1? підпиŃок та ?2? влаŃних фільтрів. -type_label_document=ДокŃмент -type_label_object_subrequest=Запит об’єкта -whitelistGroup_title=Правила винятків -disabled_tooltip=Adblock Plus вимкнено. -filter_elemhide_duplicate_id=Можна вказати лиŃе один ID елемента, що бŃде приховано. -type_label_object=Об’єкт -action2_tooltip=Клацніть, щоб відкрити вікно налаŃŃ‚Ńвань. Середня клавіŃа миŃŃ– — вкл/викл. -type_label_subdocument=Фрейм -clearStats_warning=Це Ńкине вŃŃŽ ŃтатиŃŃ‚Đ¸ĐşŃ ĐżĐľ фільтрам та вимкне рахŃвання хітів. Продовжити? -notification_antiadblock_message=Цей Ńайт відомий тим, що показŃŃ” цільові повідомлення кориŃŃ‚Ńвачам Adblock Plus. Ви хочете, щоб Adblock Plus приховав цільові повідомлення? -blocked_count_addendum=(також відкрито: ?1?, приховано: ?2?) -subscription_invalid_location=Не вдалоŃŃŹ розпізнати Đ˛Đ˛ĐµĐ´ĐµĐ˝Ń Đ°Đ´Ń€ĐµŃŃ Đ˝Ń– ŃŹĐş інтернет адреŃŃ, ні ŃŹĐş Ńлях Đ´Đľ файлŃ. -type_label_image=Зображення -remove_subscription_warning=Ви впевнені, що хочете вилŃчити цю підпиŃĐşŃ? -type_label_other=ІнŃий -mobile_menu_enable=ABP: УвімкнŃти -type_label_media=аŃĐ´Ń–Đľ/відео -mobile_menu_disable_site=ABP: ВимкнŃти на ?1? -elemhideGroup_title=Правила приховŃвання -mobile_menu_enable_site=ABP: УвімкнŃти на ?1? -type_label_elemhide=Приховане -newGroup_title=Нова грŃпа фільтрів -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/overlay.dtd deleted file mode 100644 index 3928786..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&Так"> -<!ENTITY notification.button.no "&Ні"> -<!ENTITY sync.label "Синхроні&Đ·Ńвати налаŃŃ‚Ńвання ĐдблокŃ"> -<!ENTITY whitelist.site.label "ВимкнŃти: на ?1?"> -<!ENTITY filters.label "&НалаŃŃ‚Ńвання фільтрів"> -<!ENTITY disable.label "ВимкнŃти вŃюди"> -<!ENTITY objecttab.title "ЗаблокŃвати"> -<!ENTITY objecttab.tooltip "НатиŃніть Ń‚ŃŃ‚, щоб заблокŃвати цей об’єкт"> -<!ENTITY menuitem.label "НалаŃŃ‚Ńвання &Adblock Plus"> -<!ENTITY objecttabs.label "ПоказŃвати &ярлик на Flash Ń– Java"> -<!ENTITY sendReport.label "Повідомити про проблеми на &Ńторінці"> -<!ENTITY whitelist.page.label "ВимкнŃти: тільки на цій Ńторінці"> -<!ENTITY context.image.label "Adblock Plus: заблокŃвати зображення"> -<!ENTITY counthits.label "&РахŃвати хіти фільтрів"> -<!ENTITY opensidebar.label "Відкрити Ń&пиŃок елементів"> -<!ENTITY notification.button.close "&Закрити"> -<!ENTITY contribute.label "Допомогти ĐдблокŃ"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: заблокŃвати фрейм"> -<!ENTITY blocked.tooltip "Заблоковані елементи на цій Ńторінці:"> -<!ENTITY hideplaceholders.label "При&ховŃвати замінники заблокованих елементів"> -<!ENTITY showinstatusbar.label "ПоказŃвати в Ń€ŃŹĐ´ĐşŃ &ŃтанŃ"> -<!ENTITY sidebar.title "Елементи відкритої Ńторінки"> -<!ENTITY options.label "Đť&алаŃŃ‚Ńвання"> -<!ENTITY context.object.label "Adblock Plus: заблокŃвати об’єкт"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: Знов ŃвімкнŃти для цієї Ńторінки"> -<!ENTITY filters.tooltip "ĐťĐ°ĐąĐ±Ń–Đ»ŃŚŃ Ń‡Đ°Ńто заŃтоŃовані фільтри:"> -<!ENTITY closesidebar.label "Закрити Ń&пиŃок елементів"> -<!ENTITY showintoolbar.label "По&казŃвати в панелі Ń–Đ˝ŃтрŃментів"> -<!ENTITY status.tooltip "СтатŃŃ:"> -<!ENTITY context.media.label "Adblock Plus: БлокŃвати аŃĐ´Ń–Đľ/відео"> -<!ENTITY subscription.update.label "Оновити фільтри"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sendReport.dtd deleted file mode 100644 index 2f025d7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sendReport.dtd +++ /dev/null @@ -1,70 +0,0 @@ -<!ENTITY screenshot.undo.label "&ПовернŃти"> -<!ENTITY issues.disabledgroups.description "НаŃŃ‚Ńпні фільтрові підпиŃки/грŃпи вимкнені, але могли вплинŃти на цю ŃторінкŃ:"> -<!ENTITY showData.label "Показати дані звітŃ"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus &блокŃŃ” забагато"> -<!ENTITY issues.change.description "ВаŃŃ– налаŃŃ‚Ńвання бŃло змінено. ПерегрŃзіть ŃŃ‚ĐľŃ€Ń–Đ˝ĐşŃ Đ´Đ»ŃŹ перевірки внеŃених Đ·ĐĽŃ–Đ˝ та заŃліть звіт якщо ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Đ˝Đµ виріŃено."> -<!ENTITY email.label "&Електронна поŃта:"> -<!ENTITY issues.openPreferences.label "Відкрити фільтрові підпиŃки"> -<!ENTITY sendPage.confirmation "Звіт бŃло запиŃано. Ви можете переглянŃти його за поŃиланням:"> -<!ENTITY copyLink.label "С&копіювати поŃилання звітŃ"> -<!ENTITY issues.nofilters.description "Adblock Plus не блокŃŃ” нічого на поточній Ńторінці. ШвидŃе за вŃе проблема, ŃŹĐşŃ Đ˛Đ¸ бачите, не пов’язана Đ· Adblock Plus."> -<!ENTITY sendPage.knownIssue "Проблема про ŃŹĐşŃ Đ˛Đ¸ повідомили вже відома. ДетальніŃе:"> -<!ENTITY typeSelector.other.description "Виберіть цей варіант якщо ви підозрюєте ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Ńаме Đ· Adblock Plus а не Đ· його фільтрами."> -<!ENTITY issues.disabledgroups.enable.label "УвімкнŃти Ń„Ń–Đ»ŃŚŃ‚Ń€ĐľĐ˛Ń ĐżŃ–Đ´ĐżĐ¸ŃĐşŃ/грŃĐżŃ"> -<!ENTITY typeWarning.override.label "ĐŻ &розŃĐĽŃ–ŃŽ, та вŃе ж Ń…ĐľŃ‡Ń Đ˝Đ°Đ´Ń–Ńлати звіт"> -<!ENTITY issues.disabled.enable.label "УвімкнŃти Adblock Plus"> -<!ENTITY update.fixed.description "Оновлення ваŃих підпиŃок на фільтри ŃвидŃе за вŃе виріŃило проблемŃ, про ŃŹĐşŃ Đ˛Đ¸ хотіли повідомити. Đ‘ŃĐ´ŃŚ лаŃка завантажте заново ŃŃ‚ĐľŃ€Ń–Đ˝ĐşŃ Ń– ŃпробŃйте ще раз. Якщо проблема залиŃилаŃŃŹ, то надіŃліть повідомлення ще раз."> -<!ENTITY anonymous.label "&Đнонімне подання"> -<!ENTITY reloadButton.label "&Перезавантажити ŃторінкŃ"> -<!ENTITY recentReports.clear.label "&ВилŃчити вŃŃ– звіти"> -<!ENTITY typeSelector.description "Це вікно проведе Đ˛Đ°Ń ĐżĐľ кроках надŃилання Đ·Đ˛Ń–Ń‚Ń ĐżŃ€Đľ ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Đ· Adblock Plus. СперŃŃ, виберіть тип проблеми Đ· якою ви зіткнŃлиŃŃŚ на цій Ńторінці:"> -<!ENTITY screenshot.remove.label "&ВилŃчити конфіденційні дані"> -<!ENTITY issues.ownfilters.description "Деякі Đ· заŃтоŃованих фільтрів бŃли задані кориŃŃ‚Ńвачем. Вимкніть фільтри що могли Ńпричинити проблемŃ."> -<!ENTITY update.inProgress.description "Adblock Plus необхідно оновити ваŃŃ– підпиŃки на фільтри, щоб переконатиŃŃŹ, що це питання не бŃло виріŃено вже. Đ‘ŃĐ´ŃŚ лаŃка, зачекайте..."> -<!ENTITY sendPage.retry.label "НадіŃлати ще раз"> -<!ENTITY data.label "&Дані звітŃ:"> -<!ENTITY recentReports.label "ВаŃŃ– недавно надіŃлані звіти"> -<!ENTITY typeWarning.description "Ви вказали що хочете повідомити про Đ·Đ°ĐłĐ°Đ»ŃŚĐ˝Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Đ˛ Adblock Plus, а не в фільтрах. ЗаŃважте, що про такі проблеми найкраще повідомляти Đ´Đľ [link]форŃĐĽŃ Adblock Plus[/link]. МайŃтер звітів Ńлід викориŃтовŃвати лиŃе додатково Đ´Đľ Ń–ŃĐ˝Ńючої диŃĐşŃŃŃ–Ń—, ĐľŃкільки ніхто не побачить ваŃого звітŃ, якщо не поŃтавити на нього поŃилання. Ви отримаєте автоматично Ńтворене поŃилання піŃля надŃилання звітŃ."> -<!ENTITY issues.disabled.description "Adblock Plus вимкнено, він не блокŃватиме нічого Ń ĐżĐľŃ‚ĐľŃ‡Đ˝ĐľĐĽŃ Ńтані."> -<!ENTITY attachExtensions.label "ДолŃчити Đ´Đľ Đ·Đ˛Ń–Ń‚Ń ŃпиŃок активних &розŃирень — на випадок якщо причиною проблеми Ń” конфлікт розŃирень"> -<!ENTITY issues.nosubscriptions.add.label "Додати підпиŃĐşŃ Đ˝Đ° фільтри"> -<!ENTITY issues.disabledfilters.enable.label "УвімкнŃти фільтр"> -<!ENTITY issues.override.label "НалаŃŃ‚Ńвання &правильні, продовжити звіт"> -<!ENTITY issues.nosubscriptions.description "Ви не підпиŃані на жоден Đ· готових ŃпиŃків фільтрŃвання котрі автоматично вилŃчають небажаний вміŃŃ‚ Đ· Ńайтів."> -<!ENTITY typeSelector.falsePositive.description "Виберіть цей варіант якщо на Ńторінці відŃŃтня чаŃтина вміŃŃ‚Ń, або якщо вона показŃєтьŃŃŹ чи Ń„ŃнкціонŃŃ” неправильно. Ви можете перевірити, чи бŃв Adblock Plus причиною - тимчаŃово його вимкнŃвŃи."> -<!ENTITY typeSelector.other.label "&ІнŃа проблема"> -<!ENTITY emailComment.label "Ми рекомендŃємо Вам ввеŃти адреŃŃ ĐµĐ»ĐµĐşŃ‚Ń€ĐľĐ˝Đ˝ĐľŃ— поŃти, щоб ми могли зв'язатиŃŃŹ Đ· вами, якщо виникнŃть питання Đ· ĐżŃ€Đ¸Đ˛ĐľĐ´Ń Đ·Đ˛Ń–Ń‚Ń. Це також дозволить нам розпізнати ваŃŃ– внеŃки та зробити Ń—Ń… Đ±Ń–Đ»ŃŚŃ ĐżŃ€Ń–ĐľŃ€Đ¸Ń‚ĐµŃ‚Đ˝Đ¸ĐĽĐ¸."> -<!ENTITY issues.whitelist.remove.label "ПереŃвімкнŃти Adblock Plus на цій Ńторінці"> -<!ENTITY outdatedSubscriptions.description "НаŃŃ‚Ńпні підпиŃки на фільтри не оновлювалиŃŃŹ більŃе двох тижнів. Đ‘ŃĐ´ŃŚ лаŃка, поновіть ці підпиŃки перед відправленням повідомлення, ĐľŃкільки проблема вже може бŃти виріŃена."> -<!ENTITY dataCollector.description "Заждіть, Adblock Plus збирає потрібні дані"> -<!ENTITY sendButton.label "&НадіŃлати звіт"> -<!ENTITY comment.label "&Коментар (необов’язково):"> -<!ENTITY sendPage.errorMessage "Помилка відправки звітŃ: «?1?». УпевнітьŃŃŹ що ви під’єднані Đ´Đľ Ń–Đ˝Ń‚ĐµŃ€Đ˝ĐµŃ‚Ń Ń‚Đ° ŃпробŃйте ще раз. Якщо проблема не зникає, бŃĐ´ŃŚ лаŃка поŃŃкайте допомоги на [link]форŃĐĽŃ– Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Показати недавно надіŃлані звіти"> -<!ENTITY commentPage.heading "ВвеŃти коментар"> -<!ENTITY update.start.label "Розпочати оновлення зараз"> -<!ENTITY issues.disabledfilters.description "НаŃŃ‚Ńпні фільтри вимкнені, але могли вплинŃти на цю ŃторінкŃ:"> -<!ENTITY screenshot.description "Та Ńама Ńторінка може виглядати по Ń€Ń–Đ·Đ˝ĐľĐĽŃ Đ´Đ»ŃŹ різних людей. Знімок екрана (ŃкрінŃот) може допомогти нам зрозŃміти проблемŃ. Ви можете вилŃчити конфіденційні чаŃтини, а також позначити облаŃті де приŃŃтня проблема. Щоб це зробити, клацніть по відповідній клавіŃŃ– та виберіть облаŃть зображення миŃкою."> -<!ENTITY screenshot.attach.label "&Додати зображення Ńторінки Đ´Đľ звітŃ"> -<!ENTITY issues.whitelist.description "Adblock Plus наразі вимкнений на тій Ńторінці про ŃŹĐşŃ Đ˛Đ¸ звітŃєте. Увімкніть його та перегрŃзіть ŃŃ‚ĐľŃ€Ń–Đ˝ĐşŃ ĐżĐµŃ€ĐµĐ´ надŃиланням звітŃ. Це допоможе в його розгляді."> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus не блокŃŃ” &рекламŃ"> -<!ENTITY typeSelector.heading "Виберіть тип проблеми"> -<!ENTITY anonymity.warning "Ми не бŃдемо мати можливіŃть повернŃтиŃŃŹ Đ´Đľ Đ˛Đ°Ń Ń–, ŃвидŃе за вŃе, пріоритети Đ·Đ˛Ń–Ń‚Ń Đ˝Đ¸Đ¶Ń‡Đ¸Đą."> -<!ENTITY wizard.title "Повідомити про проблемŃ"> -<!ENTITY issues.ownfilters.disable.label "ВимкнŃти фільтр"> -<!ENTITY commentPage.description "Нижче ви можете ввеŃти коментар щоб допомогти нам зрозŃміти проблемŃ. Цей крок необов’язковий, проте рекомендований коли проблема не очевидна. Ви можете також переглянŃти Ńвій коментар перед надŃиланням."> -<!ENTITY comment.lengthWarning "Довжина коментаря перевищŃŃ” 1000 Ńимволів. Đ‘ŃĐ´Ńть поŃлані лиŃе перŃŃ– 1000 Ńимволів."> -<!ENTITY typeSelector.falseNegative.description "Виберіть цей варіант якщо реклама показŃєтьŃŃŹ попри те що Adblock Plus Ńвімкнено."> -<!ENTITY sendPage.waitMessage "Заждіть доки Adblock Plus надŃилає Đ˛Đ°Ń Đ·Đ˛Ń–Ń‚."> -<!ENTITY dataCollector.heading "ЛаŃкаво проŃимо Đ´Đľ звітŃвача про проблеми"> -<!ENTITY screenshot.heading "Додати ŃкрінŃот"> -<!ENTITY sendPage.heading "НадіŃлати звіт"> -<!ENTITY issues.subscriptionCount.description "ЗдаєтьŃŃŹ, ви підпиŃалиŃŃŚ на забагато фільтрових підпиŃок. - Ми не радимо таке робити, ĐľŃкільки можливіŃть отримати проблеми Đ´Ńже виŃока. - Також ми не можемо прийняти Đ˛Đ°Ń Đ·Đ˛Ń–Ń‚, ĐľŃкільки незрозŃміло, - ĐşĐľŃ‚Ń€ĐľĐĽŃ Đ· авторів підпиŃок Ńлід щоŃŃŚ зробити. - ВилŃчте вŃŃ– підпиŃки крім Đ´Ń–ĐąŃно необхідних, Ń– перевірте, - чи проблема вŃе ще бŃде приŃŃтня."> -<!ENTITY screenshot.mark.label "По&значити проблемŃ"> -<!ENTITY privacyPolicy.label "Політика приватноŃті"> -<!ENTITY issues.description "Adblock Plus знайŃов проблеми Ń Đ˛Đ°Ńих налаŃŃ‚Ńваннях котрі, можливо, Ńпричинили цю проблемŃ, або ŃŃладнять розгляд звітŃ."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sidebar.dtd deleted file mode 100644 index 23725a0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Рамка для Flash об'єктів"> -<!ENTITY address.label "ĐдреŃа"> -<!ENTITY context.open.label "Відкрити в новій вкладці"> -<!ENTITY type.label "Тип"> -<!ENTITY tooltip.filterSource.label "Джерело фільтра:"> -<!ENTITY noitems.label "БлокŃвати нічого"> -<!ENTITY filter.label "Фільтр"> -<!ENTITY tooltip.size.label "Розмір:"> -<!ENTITY reattach.label "Приєднати"> -<!ENTITY search.label "Đź&ĐľŃŃĐş:"> -<!ENTITY docDomain.thirdParty "(запит Đ· Ń–Đ˝Ńого Ńайта)"> -<!ENTITY filterSource.label "Джерело фільтра"> -<!ENTITY tooltip.docDomain.label "Джерело докŃмента:"> -<!ENTITY context.copy.label "Копіювати адреŃŃ"> -<!ENTITY tooltip.type.label "Тип:"> -<!ENTITY context.disablefilter.label "ВимкнŃти фільтр ?1?"> -<!ENTITY context.copyFilter.label "Копіювати фільтр"> -<!ENTITY context.block.label "ЗаблокŃвати елемент"> -<!ENTITY context.enablefilter.label "Знов ŃвімкнŃти фільтр ?1?"> -<!ENTITY detach.label "Від’єднати"> -<!ENTITY whitelisted.label "Дозволений на цій Ńторінці"> -<!ENTITY context.disablefilteronsite.label "ВимкнŃти цей фільтр на ?1?"> -<!ENTITY detached.title "Adblock Plus: елементи відкритої Ńторінки (від’єднані)"> -<!ENTITY docDomain.firstParty "(запит Đ· того ж Ńайта)"> -<!ENTITY tooltip.type.whitelisted "(дозволений)"> -<!ENTITY tooltip.filter.label "ЗаŃтоŃований фільтр:"> -<!ENTITY tooltip.filter.disabled "(вимкнено)"> -<!ENTITY context.editfilter.label "ВідредагŃвати заŃтоŃований фільтр"> -<!ENTITY tooltip.type.blocked "(заблокований)"> -<!ENTITY size.label "Розмір"> -<!ENTITY context.whitelist.label "Вказати елемент ŃŹĐş виняток"> -<!ENTITY context.selectAll.label "Вибрати вŃе"> -<!ENTITY state.label "СтатŃŃ"> -<!ENTITY docDomain.label "Джерело докŃмента"> -<!ENTITY tooltip.address.label "ĐдреŃа:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/subscriptionSelection.dtd deleted file mode 100644 index 2b0d2c5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/uk/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "&Додати також підпиŃĐşŃ Đ˝Đ° фільтер «?1?»"> -<!ENTITY list.download.failed "Adblock Plus не Đ·ĐĽŃ–Đł отримати перелік підпиŃок"> -<!ENTITY list.download.retry "СпробŃвати ще раз"> -<!ENTITY title.label "&Назва підпиŃки:"> -<!ENTITY list.download.website "ПереглянŃти Ńайт"> -<!ENTITY supplementMessage "Ця фільтрова підпиŃка призначена для викориŃтання в парі Đ· фільтровою підпиŃкою «?1?», ĐşĐľŃ‚Ń€Ń Đ˛Đ¸ наразі не викориŃтовŃєте."> -<!ENTITY viewList.label "ПереглянŃти фільтри"> -<!ENTITY visitHomepage.label "Відвідати домаŃню ŃторінкŃ"> -<!ENTITY addSubscription.label "Додати підпиŃĐşŃ"> -<!ENTITY dialog.title "Додати підпиŃĐşŃ Đ˝Đ° фільтр Adblock Plus"> -<!ENTITY location.label "РозтаŃ&Ńвання ŃпиŃĐşŃ Đ· фільтром:"> -<!ENTITY fromWeb.description "Đ‘ŃĐ´ŃŚ лаŃка підтвердіть що ви бажаєте додати цю Ń„Ń–Đ»ŃŚŃ‚Ń€ĐľĐ˛Ń ĐżŃ–Đ´ĐżĐ¸ŃĐşŃ. Ви можете змінити Đ˝Đ°Đ·Đ˛Ń Ń‡Đ¸ знаходження перед додаванням."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/composer.dtd deleted file mode 100644 index 71d2903..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "ở cuố&i địa chỉ"> -<!ENTITY domainRestriction.label "Giá»›i hạn t&rĂŞn miá»n:"> -<!ENTITY collapse.default.no.label "DĂąng máş·c định (khĂ´ng)"> -<!ENTITY firstParty.label "Chỉ cá»§a bĂŞ&n thứ nhất"> -<!ENTITY preferences.label "&Hiện các bá»™ lọc Ä‘ang cĂł..."> -<!ENTITY pattern.label "Tìm máş«u"> -<!ENTITY thirdParty.label "Chỉ cá»§&a bĂŞn thứ ba"> -<!ENTITY filter.label "Bá»™ &lọc má»›i:"> -<!ENTITY collapse.label "&Thu gọn những mục bị cháş·n:"> -<!ENTITY match.warning "Máş«u mĂ bạn Ä‘iá»n vĂ o khĂ´ng còn khá»›p vá»›i địa chỉ cáş§n được cháş·n/đưa vĂ o danh sách trắng vĂ sáş˝ khĂ´ng cĂł ảnh hưởng đến nĂł."> -<!ENTITY anchor.start.label "ở đầ&u địa chỉ"> -<!ENTITY matchCase.label "&Phân biệt HOA thường"> -<!ENTITY custom.pattern.label "TĂą&y biáşżn:"> -<!ENTITY unselectAllTypes.label "KhĂ´ng chọn"> -<!ENTITY type.whitelist.label "&Quy luáşt ngoại lệ"> -<!ENTITY regexp.warning "Máş«u bạn gõ vĂ o sáş˝ được xem lĂ biá»u thức quy tắc. Nhiá»u biá»u thức quy tắc cĂł thá» lĂ m cháşm việc duyệt web cá»§a bạn. Náşżu bạn khĂ´ng định dĂąng biá»u thức quy tắc, hĂŁy thĂŞm má»™t biá»u tượng * ở cuối máş«u."> -<!ENTITY dialog.title "ThĂŞm quy tắc lọc cho Adblock Plus"> -<!ENTITY basic.label "Hiá»n thị cơ bản"> -<!ENTITY type.filter.label "Bá»™ lọc cháş·n"> -<!ENTITY types.label "Ăp dụng cho các kiá»u:"> -<!ENTITY shortpattern.warning "Máş«u bạn gõ vĂ o quá ngắn đỠtối ưu hĂła, nhiá»u máş«u như váşy cĂł thá» lĂ m cháşm việc duyệt web cá»§a bạn. Lời khuyĂŞn lĂ bạn hĂŁy chọn má»™t chuá»—i dĂ i hơn cho bá»™ lọc nĂ y."> -<!ENTITY collapse.yes.label "CĂł"> -<!ENTITY anchors.label "Chỉ chấp nháşn máş«u:"> -<!ENTITY collapse.default.yes.label "DĂąng máş·c định (cĂł)"> -<!ENTITY domainRestriction.help "Chọn má»™t hay nhiá»u tĂŞn miá»n ngÄn cách báş±ng dấu "|", bá»™ lọc sáş˝ chỉ được áp dụng trĂŞn những tĂŞn miá»n nĂ y. Dấu "~" trước má»™t tĂŞn miá»n cĂł nghÄ©a lĂ bá»™ lọc sáş˝ khĂ´ng được áp dụng cho tĂŞn miá»n đó."> -<!ENTITY accept.label "ThĂŞm bá»™ lọc"> -<!ENTITY options.label "TĂąy chọn"> -<!ENTITY disabled.warning "Adblock Plus hiện Ä‘ang bị vĂ´ hiệu hĂła. Bạn váş«n cĂł thá» thĂŞm các bá»™ lọc nhưng chĂşng sáş˝ khĂ´ng được áp dụng trừ khi bạn [link]kĂch hoạt Adblock Plus[/link]."> -<!ENTITY anchor.start.flexible.label "ở đầ&u tĂŞn miá»n"> -<!ENTITY collapse.no.label "KhĂ´ng"> -<!ENTITY selectAllTypes.label "Chọn tất cả"> -<!ENTITY advanced.label "Hiá»n thị nâng cao"> -<!ENTITY pattern.explanation "Máş«u cĂł thá» lĂ bất kì pháş§n nĂ o cá»§a địa chỉ, biá»u tượng * được dĂąng như má»™t máş·t nạ. Bá»™ lọc sáş˝ chỉ được áp dụng cho những địa chỉ phĂą hợp vá»›i máş«u."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/filters.dtd deleted file mode 100644 index 409f4a2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "Tất cả bá»™ lọc tĂąy biáşżn cá»§a bạn sáş˝ được thay tháşż bởi ná»™i dung cá»§a táşp tin được chọn. Bạn cĂł muốn thá»±c hiện?"> -<!ENTITY slow.column "&Bá»™ lọc cháşm"> -<!ENTITY enabled.column "&Báşt"> -<!ENTITY subscription.lastDownload.checksumMismatch "Thất bại, mĂŁ bÄm khĂ´ng phĂą hợp"> -<!ENTITY noFiltersInGroup.text "NhĂłm được chọn trống."> -<!ENTITY subscription.actions.label "HĂ nh động"> -<!ENTITY filter.selectAll.label "Chọn tất cả"> -<!ENTITY backupButton.label "&Sao lưu vĂ phục hồi"> -<!ENTITY restore.minVersion.warning "Cảnh báo: táşp tin đã được tạo bởi phiĂŞn bản Adblock Plus má»›i hơn. Bạn cáş§n cáşp nháşp lĂŞn phiĂŞn bản má»›i nhất cá»§a Adblock Plus trước khi cĂł thá» khĂ´i phục từ táşp tin nĂ y."> -<!ENTITY restore.error "Dữ liệu cá»§a táşp tin cĂł thá» khĂ´ng được xá» lĂ˝, cĂł láş˝ đây khĂ´ng phải lĂ má»™t táşp tin sao lưu cá»§a Adblock Plus?"> -<!ENTITY sort.ascending.label "Sắp xáşżp theo thứ tá»± &A > Z"> -<!ENTITY sort.label "Sắp &xáşżp theo"> -<!ENTITY subscription.source.label "Danh sách bá»™ lọc"> -<!ENTITY hitcount.column "&Số láş§n bấm"> -<!ENTITY noFilters.text "Bạn chưa cĂł bá»™ lọc tĂąy biáşżn nĂ o."> -<!ENTITY backup.custom.title "Chỉ bá»™ lọc tĂąy biáşżn"> -<!ENTITY subscription.external.label "Äược cáşp nháşp bởi ứng dụng khác"> -<!ENTITY subscription.delete.label "XĂła"> -<!ENTITY noGroupSelected.text "Bạn cáş§n chọn nhĂłm cho bá»™ lọc trước khi nĂł được hiá»n thị"> -<!ENTITY filter.cut.label "Cắt"> -<!ENTITY restore.default.label "KhĂ´i phục từ ?1?"> -<!ENTITY subscription.lastDownload.inProgress "Äang tải..."> -<!ENTITY subscriptions.tab.label "ÄÄng kĂ˝ bá»™ lọc"> -<!ENTITY sort.descending.label "Sắp xáşżp theo thứ tá»± &Z > A"> -<!ENTITY filters.remove.warning "Bạn cĂł thá»±c sá»± muốn loại bỏ tất cả những bá»™ lọc được chọn?"> -<!ENTITY filter.delete.label "XĂła"> -<!ENTITY addSubscriptionAdd.label "ThĂŞm"> -<!ENTITY viewMenu.label "Hiá»n thị"> -<!ENTITY subscription.lastDownload.unknown "N/A"> -<!ENTITY addSubscriptionCancel.label "Há»§y"> -<!ENTITY subscription.enabled.label "ÄĂŁ được báşt"> -<!ENTITY noSubscriptions.text "Bạn chưa chọn bất kì bá»™ lọc nĂ o ! AdBlock Plus khĂ´ng thá» hoạt động náşżu khĂ´ng cĂł má»™t bá»™ lọc, xin hĂŁy sá» dụng "ÄÄng kĂ˝ bá»™ lọc" đỠthĂŞm bá»™ lọc cho mình ."> -<!ENTITY subscription.update.label "Cáşp nháşp bá»™ lọc"> -<!ENTITY dialog.title "TĂąy chọn bá»™ lọc AdBlock Plus"> -<!ENTITY addFilter.label "&ThĂŞm bá»™ lọc"> -<!ENTITY subscription.minVersion.warning "Bá»™ lọc nĂ y cáş§n cĂł phiĂŞn bản Adblock Plus má»›i hơn, bạn cáş§n phải cáşp nháşp lĂŞn phiĂŞn bản má»›i nhất cá»§a AdBlock Plus ."> -<!ENTITY subscription.lastDownload.invalidURL "Thất bại, khĂ´ng phải là địa chỉ hợp lệ"> -<!ENTITY backup.error "CĂł vấn đỠkhi ghi bá»™ lọc vĂ o táşp tin. HĂŁy chắc chắn ráş±ng táşp tin khĂ´ng bị bảo vệ ghi hoáş·c bị sá» dụng bởi má»™t ứng dụng khác."> -<!ENTITY filter.moveUp.label "Di chuyá»n lĂŞn"> -<!ENTITY addGroup.label "ThĂŞm &nhĂłm bá»™ lọc"> -<!ENTITY filter.edit.label "Chỉnh sá»a"> -<!ENTITY subscription.showHideFilters.label "Hiện/áş©n bá»™ lọc"> -<!ENTITY acceptableAds2.label "Cho phĂ©p má»™t số quảng cáo khĂ´ng gây hại"> -<!ENTITY addSubscriptionOther.label "ThĂŞm bá»™ lọc khác"> -<!ENTITY close.label "ÄĂłng"> -<!ENTITY sort.none.label "&Chưa sắp xáşżp"> -<!ENTITY filter.actions.label "HĂ nh động cho bá»™ lọc"> -<!ENTITY filter.copy.label "ChĂ©p"> -<!ENTITY filter.moveDown.label "Di chuyá»n xuống"> -<!ENTITY filter.resetHitCounts.label "CĂ i lại thống kĂŞ lượt bấm"> -<!ENTITY readMore.label "Äọc thĂŞm"> -<!ENTITY subscription.moveUp.label "Chuyá»n lĂŞn trĂŞn"> -<!ENTITY addSubscription.label "ThĂŞm bá»™ lọc"> -<!ENTITY subscription.homepage.label "Trang chá»§"> -<!ENTITY backup.complete.title "Tất cả các bá»™ lọc vĂ mục Ä‘Äng kĂ˝"> -<!ENTITY restore.own.label "KhĂ´i phục riĂŞng"> -<!ENTITY restore.complete.warning "Tất cả tĂąy chỉnh bá»™ lọc cá»§a bạn sáş˝ được thay tháşż bởi ná»™i dung cá»§a táşp tin được chọn. Bạn cĂł muốn thá»±c hiện?"> -<!ENTITY filters.tab.label "Bá»™ lọc tĂąy biáşżn"> -<!ENTITY backup.label "Tạo sao lưu má»›i"> -<!ENTITY find.label "&Tìm"> -<!ENTITY subscription.moveDown.label "Chuyá»n xuống dưới"> -<!ENTITY subscription.lastDownload.connectionError "Thất bại, tải xuống thất bại"> -<!ENTITY subscription.lastDownload.success "HoĂ n thĂ nh"> -<!ENTITY subscription.lastDownload.invalidData "Thất bại, đây khĂ´ng phải lĂ danh sách bá»™ lọc hợp lệ"> -<!ENTITY filter.paste.label "Dán"> -<!ENTITY subscription.disabledFilters.enable "Báşt bá»™ lọc đã bị vĂ´ hiệu hĂła"> -<!ENTITY lasthit.column "Láş§n bấm cuối"> -<!ENTITY subscription.editTitle.label "Sá»a tiĂŞu Ä‘á»"> -<!ENTITY subscription.disabledFilters.warning "Má»™t vĂ i pháş§n tá» trong bá»™ lọc nĂ y đã bị vĂ´ hiệu hĂła ."> -<!ENTITY filter.column "&Quy luáşt lọc"> -<!ENTITY subscription.lastDownload.label "Láş§n tải cuối:"> -<!ENTITY viewList.label "Xem danh sách"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/firstRun.properties deleted file mode 100644 index 74e60dc..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=Duyệt riĂŞng tư báş±ng cách vĂ´ hiệu theo dõi - áş©n theo dõi cá»§a bạn từ các cĂ´ng ty quảng cáo theo dõi từng bước cá»§a bạn. -firstRun_toggle_off=Táş®T -firstRun_feature_tracking=VĂ´ hiệu hĂła theo dõi -firstRun_feature_malware=Cháş·n pháş§n má»m độc hại -firstRun_title=Adblock Plus đã được cĂ i đặt -firstRun_acceptableAdsExplanation=ChĂşng tĂ´i khuyáşżn khĂch các trang mạng dĂąng những quảng cáo minh bạch, khĂ´ng phiá»n nhiá»…u. ÄĂł lĂ lĂ do tại sao chĂşng tĂ´i gây dá»±ng <a>hướng dáş«n cháş·t cháş˝</a> đỠxác định các quảng cáo được chấp nháşn, hiện dưới mức thiáşżt láşp máş·c định. Náşżu bạn váş«n muốn cháş·n mọi quảng cáo, bạn cĂł thá» <a>vĂ´ hiệu</a> Ä‘iá»u nĂ y trong má»™t vĂ i giây. -firstRun_toggle_on=BẬT -firstRun_contributor_credits=ÄĂłng gĂłp các khoản tĂn dụng -firstRun_dataCorruptionWarning=CĂł phải trang nĂ y luĂ´n hiá»n thị? <a>Bấm vĂ o đây</a> -firstRun_acceptableAdsHeadline=Những quảng cáo phiá»n phức sáş˝ bị cháş·n -firstRun_share=NĂłi vá»›i bạn bè cá»§a bạn -firstRun_share_headline=<a>GiĂşp chĂşng tĂ´i má»™t tay</a> trong việc lĂ m trang mạng trở nĂŞn tốt hơn -firstRun_features=Adblock Plus cĂł thá» lĂ m nhiá»u hơn lĂ cháş·n quảng cáo -firstRun_feature_malware_description=LĂ m cho trình duyệt an toĂ n hơn báş±ng cách cháş·n các tĂŞn miá»n chứa pháş§n má»m độc hại. -firstRun_feature_social_description=Tá»± động loại bỏ lịch duyệt cá»§a các nĂşt truyá»n thĂ´ng mạng xĂŁ há»™i, như lĂ nĂşt ThĂch Facebook, xuất hiện trĂŞn trang mạng vĂ theo dõi hĂ nh vi cá»§a bạn. -firstRun_donate=á»§ng há»™ -firstRun_donate_label=Há»— trợ dá»± án cá»§a chĂşng tĂ´i -firstRun_feature_social=Loại bỏ các nĂşt bấm Phương tiện Mạng xĂŁ há»™i -firstRun_legacySafariWarning=Bạn Ä‘ang dĂąng má»™t phiĂŞn bản cĹ© cá»§a Safari khĂ´ng được há»— trợ bởi Adblock Plus. NĂł cĂł thá» khĂ´ng hoạt động chĂnh xác hoáş·c lĂ m giảm trải nghiệm cá»§a người dĂąng trĂŞn má»™t số trang mạng. ChĂşng tĂ´i rất khuyáşżn khĂch cáşp nháşt lĂŞn Safari 6.1.1 hoáş·c cao hơn (trĂŞn OS X 10.8 Mountain Lion), hoáş·c Safari 7.0.1 hoáş·c cao hơn (trĂŞn OS X 10.9 Mavericks), hoáş·c dĂąng phiĂŞn bản má»›i nhất cá»§a Mozilla Firefox, Google Chrome hoáş·c Opera. -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/global.properties deleted file mode 100644 index 39cabf8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=KhĂ´ng cĂł mục nĂ o trong trang hiện tại cĂł thá» cháş·n được -action3_tooltip=Nhấn đỠbáşt/tắt Adblock Plus. -notification_antiadblock_title=Ẩn tin nhắn mục tiĂŞu? -type_label_script=vÄn lệnh -filter_elemhide_nocriteria=KhĂ´ng cĂł chuáş©n đỠnháşn diện các pháş§n tá» bị áş©n -blockingGroup_title=Quy tắc cháş·n quảng cáo -whitelisted_tooltip=Adblock Plus bị vĂ´ hiệu ở trang hiện tại. -type_label_stylesheet=stylesheet -blocked_count_tooltip=?1? trong ?2? -type_label_font=phĂ´ng -type_label_popup=cá»a sổ báşt lĂŞn -filter_regexp_tooltip=Bá»™ lọc nĂ y lĂ má»™t biá»u thức chĂnh quy hoáş·c lĂ do quá ngắn nĂŞn khĂ´ng tối ưu hĂła được. Quá nhiá»u bá»™ lọc như tháşż nĂ y cĂł thá» lĂ m cháşm việc duyệt cá»§a bạn. -action0_tooltip=Nhấn chuá»™t trái đỠhiá»n thị trình đơn ngữ cảnh, nhấn chuá»™t giữa đỠbáşt/tắt. -whitelisted_page=Adblock Plus đã bị vĂ´ hiệu hĂła cho trang hiện tại -remove_group_warning=Bạn cĂł tháşt sá»± muốn loại bỏ nhĂłm nĂ y? -action1_tooltip=Nhấn chuá»™t trái đỠmở/đóng các mục cĂł thá» cháş·n được, nhấn chuá»™t giữa đỠbáşt/tắt. -type_label_xmlhttprequest=yĂŞu cáş§u XML -active_tooltip=Adblock Plus đã kĂch hoạt, ?1? bá»™ lọc trọn gĂłi vĂ ?2? bá»™ lọc tĂąy biáşżn Ä‘ang được dĂąng. -type_label_document=tĂ i liệu -type_label_object_subrequest=yĂŞu cáş§u con đối tượng -whitelistGroup_title=Quy tắc ngoại lệ -disabled_tooltip=Adblock Plus đã bị vĂ´ hiệu. -filter_elemhide_duplicate_id=Chỉ cĂł thá» xác định má»™t ID cá»§a pháş§n tá» bị áş©n -type_label_object=đối tượng -action2_tooltip=Nhấn chuá»™t trái đỠmở tĂąy chọn, nhấn chuá»™t giữa đỠbáşt/tắt. -type_label_subdocument=khung -clearStats_warning=Äiá»u nĂ y sáş˝ thiáşżt láşp lại toĂ n bá»™ thĂ´ng số lượt bấm vĂ vĂ´ hiệu đếm lượt bấm. Bạn cĂł muốn thá»±c hiện? -notification_antiadblock_message=Trang nĂ y đã được biáşżt lĂ hiện tin nhắn mục tiĂŞu cho người dĂąng Adblock Plus. Bạn cĂł muốn Adblock Plus áş©n tin nhắn mục tiĂŞu? -blocked_count_addendum=(trong danh sách trắng: ?1?, bị áş©n: ?2?) -subscription_invalid_location=Äịa chỉ đỠtải bá»™ lọc khĂ´ng phải lĂ má»™t URL hay tĂŞn táşp tin hợp lệ. -type_label_image=ảnh -remove_subscription_warning=Bạn cĂł tháşt sá»± muốn xĂła bá»™ trọn gĂłi nĂ y khĂ´ng? -type_label_other=khác -mobile_menu_enable=ABP: Báşt -type_label_media=tiáşżng/phim -mobile_menu_disable_site=ABP: VĂ´ hiệu trĂŞn ?1? -elemhideGroup_title=Quy tắc áş©n pháş§n tá» -mobile_menu_enable_site=ABP: KĂch hoạt trĂŞn ?1? -type_label_elemhide=áş©n -newGroup_title=NhĂłm lọc má»›i -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/overlay.dtd deleted file mode 100644 index 71de231..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&CĂł"> -<!ENTITY notification.button.no "&KhĂ´ng"> -<!ENTITY sync.label "Äồng bá»™ thiáşżt láşp Adbl&ock Plus"> -<!ENTITY whitelist.site.label "VĂ´ hiệu hĂła trĂŞn ?1?"> -<!ENTITY filters.label "&TĂąy chỉnh bá»™ lọc"> -<!ENTITY disable.label "VĂ´ hiệu hĂła ở mọi nơi"> -<!ENTITY objecttab.title "Cháş·n"> -<!ENTITY objecttab.tooltip "Nhấn vĂ o đây đỠcháş·n đối tượng nĂ y vá»›i Adblock Plus"> -<!ENTITY menuitem.label "TĂąy chọn Adblock &Plus"> -<!ENTITY objecttabs.label "Hiện tháş» trĂŞn Flash vĂ Java"> -<!ENTITY sendReport.label "&Báo cáo vấn đỠtrĂŞn trang nĂ y"> -<!ENTITY whitelist.page.label "Chỉ vĂ´ hiệu hĂła trĂŞn trang nĂ y"> -<!ENTITY context.image.label "Adblock Plus: Cháş·n Ảnh"> -<!ENTITY counthits.label "Äáşżm lượt &bấm bá»™ lọc"> -<!ENTITY opensidebar.label "&Mở các mục cĂł thá» cháş·n được"> -<!ENTITY notification.button.close "ÄĂł&ng"> -<!ENTITY contribute.label "ÄĂłng gĂłp cho Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus: Cháş·n Khung"> -<!ENTITY blocked.tooltip "Các mục bị cháş·n trong trang nĂ y:"> -<!ENTITY hideplaceholders.label "Ẩn &chá»— giữ các yáşżu tố bị cháş·n"> -<!ENTITY showinstatusbar.label "Hiện t&rong thanh trạng thái"> -<!ENTITY sidebar.title "Các mục bị cháş·n trĂŞn trang hiện tại"> -<!ENTITY options.label "TĂą&y chọn"> -<!ENTITY context.object.label "Adblock Plus: Cháş·n Äối Tượng"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: KĂch Hoạt Lại trĂŞn Trang NĂ y"> -<!ENTITY filters.tooltip "Các bá»™ lọc cĂł hiệu lá»±c nhất:"> -<!ENTITY closesidebar.label "ÄĂłng các &mục cĂł thá» cháş·n được"> -<!ENTITY showintoolbar.label "Hiện trong thanh &cĂ´ng cụ"> -<!ENTITY status.tooltip "Trạng thái:"> -<!ENTITY context.media.label "Adblock Plus: Cháş·n nhạc/phim"> -<!ENTITY subscription.update.label "Cáşp nháşp bá»™ lọc"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sendReport.dtd deleted file mode 100644 index d6b50b7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sendReport.dtd +++ /dev/null @@ -1,65 +0,0 @@ -<!ENTITY screenshot.undo.label "&HoĂ n tác"> -<!ENTITY issues.disabledgroups.description "Bá»™ lọc trọn gĂłi/nhĂłm bá»™ lọc sau đã bị vĂ´ hiệu hĂła, song chĂşng cĂł thá» váş«n gây ảnh hưởng tá»›i trang nĂ y:"> -<!ENTITY showData.label "Hiện dữ liệu báo cáo"> -<!ENTITY typeSelector.falsePositive.label "&Adblock Plus cháş·n quá nhiá»u"> -<!ENTITY issues.change.description "Cấu hình cá»§a bạn đã được thay đổi. Vui lòng tải lại trang đỠkiá»m tra thay đổi vĂ gá»i lĂŞn má»™t báo cáo náşżu vấn đỠváş«n chưa được giải quyáşżt sau sá»± Ä‘iá»u chỉnh."> -<!ENTITY email.label "Äịa chỉ&mail:"> -<!ENTITY issues.openPreferences.label "Mở tĂąy chỉnh bá»™ lọc"> -<!ENTITY sendPage.confirmation "Báo cáo cá»§a bạn đã được lưu. Bạn cĂł thá» truy cáşp nĂł tại địa chỉ sau:"> -<!ENTITY copyLink.label "ChĂ©p liĂŞn káşżt báo cáo"> -<!ENTITY issues.nofilters.description "Adblock Plus Ä‘ang khĂ´ng cháş·n bất kì thứ gì trĂŞn trang hiện tại. Vấn đỠmĂ bạn theo dõi cĂł váş» như khĂ´ng liĂŞn quan tá»›i Adblock Plus."> -<!ENTITY sendPage.knownIssue "Vấn đỠmĂ bạn báo cáo cĂł thỠđã được biáşżt. ThĂ´ng tin thĂŞm:"> -<!ENTITY typeSelector.other.description "Chọn tĂąy chọn nĂ y náşżu bạn nghi ngờ má»™t vấn đỠvá»›i bản thân Adblock Plus hơn lĂ do bá»™ lọc cá»§a nĂł."> -<!ENTITY issues.disabledgroups.enable.label "KĂch hoạt bá»™ lọc trọn gĂłi/nhĂłm bá»™ lọc"> -<!ENTITY typeWarning.override.label "TĂ´i hiá»&u vĂ váş«n muốn gá»i báo cáo"> -<!ENTITY issues.disabled.enable.label "KĂch hoạt Adblock Plus"> -<!ENTITY update.fixed.description "Bản cáşp nháşp đến bá»™ lọc cá»§a bạn cĂł váş» như đã sá»a được lá»—i mĂ bạn Ä‘ang thĂ´ng báo. Vui lòng tải lại trang vĂ thá» lại, nhấn Báo cáo lá»—i láş§n nữa náşżu vấn đỠváş«n còn tiáşżp diá»…n."> -<!ENTITY anonymous.label "&Gá»i thĂ´ng tin áş©n danh"> -<!ENTITY reloadButton.label "Tải lại tr&ang"> -<!ENTITY recentReports.clear.label "&XĂła tất cả báo cáo"> -<!ENTITY typeSelector.description "Cá»a sổ nĂ y sáş˝ hướng dáş«n bạn qua các bước cáş§n thiáşżt cho việc gá»i lĂŞn má»™t báo cáo vấn đỠcá»§a Adblock Plus. Trước tiĂŞn, hĂŁy chọn kiá»u vấn đỠmĂ bạn Ä‘ang gáş·p trĂŞn trang nĂ y:"> -<!ENTITY screenshot.remove.label "XĂła dữ liệu nhạ&y cảm"> -<!ENTITY issues.ownfilters.description "Má»™t số bá»™ lọc áp dụng trĂŞn trang nĂ y do người dĂąng tá»± tạo ra. Vui lòng vĂ´ hiệu hĂła các bá»™ lọc cĂł thỠđã gây ra vấn đỠnĂ y:"> -<!ENTITY update.inProgress.description "Adblock Plus cáş§n phải cáşp nháşp bá»™ lọc quảng cáo đỠchắc chắn ráş±ng vấn đỠchưa được giải quyáşżt. Xin chờ..."> -<!ENTITY sendPage.retry.label "Gá»i lại"> -<!ENTITY data.label "&Dữ liệu báo cáo:"> -<!ENTITY recentReports.label "Các báo cáo được gá»i lĂŞn gáş§n đây cá»§a bạn"> -<!ENTITY typeWarning.description "Bạn cho biáşżt ráş±ng bạn muốn báo cáo má»™t vấn đỠthĂ´ng thường cá»§a Adblock Plus chứ khĂ´ng phải lĂ bá»™ lọc. Vui lòng lưu Ă˝ ráş±ng các vấn đỠđó tốt hơn nĂŞn được báo cáo trong [link]diá»…n đà n Adblock Plus[/link]. Bạn chỉ nĂŞn dĂąng trình báo cáo vấn đỠđỠbổ sung các thảo luáşn Ä‘ang mở, vì khĂ´ng ai chĂş Ă˝ tá»›i báo cáo cá»§a bạn trừ khi bạn cung cấp cho họ má»™t liĂŞn káşżt tá»›i nĂł. LiĂŞn káşżt được tá»± động tạo ra sáş˝ được cung cấp sau khi gá»i lĂŞn báo cáo."> -<!ENTITY issues.disabled.description "Adblock Plus Ä‘ang bị tắt, nĂł sáş˝ khĂ´ng cháş·n bất kì thứ gì trong tình trạng hiện tại."> -<!ENTITY attachExtensions.label "ÄĂnh kèm danh sách các pháş§n mở rá»™ng Ä‘ang dĂąng vĂ o báo cáo trong trường hợp xung đột tiện Ăch lĂ nguyĂŞn nhân cá»§a vấn Ä‘á»"> -<!ENTITY issues.nosubscriptions.add.label "ThĂŞm bá»™ lọc trọn gĂłi"> -<!ENTITY issues.disabledfilters.enable.label "KĂch hoạt bá»™ lọc"> -<!ENTITY issues.override.label "&Cấu hình nĂ y đúng rồi, hĂŁy tiáşżp tục báo cáo"> -<!ENTITY issues.nosubscriptions.description "CĂł váş» như bạn khĂ´ng Ä‘Äng kĂ dĂąng bất kì danh sách bá»™ lọc tạo sáşµn nĂ o."> -<!ENTITY typeSelector.falsePositive.description "Chọn tĂąy chọn nĂ y náşżu trang thiáşżu ná»™i dung quan trọng, hiá»n thị khĂ´ng chĂnh xác hoáş·c khĂ´ng váşn hĂ nh đúng. Bạn cĂł thá» xác định xem Adblock Plus cĂł phải lĂ nguyĂŞn nhân khĂ´ng báş±ng cách tạm thời vĂ´ hiệu hĂła nĂł."> -<!ENTITY typeSelector.other.label "&Vấn đỠkhác"> -<!ENTITY emailComment.label "ChĂşng tĂ´i khuyáşżn khĂch bạn nháşp địa chỉ email hợp lệ đỠchĂşng tĂ´i tiện liĂŞn lạc náşżu chĂşng tĂ´i cáş§n gì từ thĂ´ng báo cá»§a bạn. Äồng thời, nĂł cĹ©ng giĂşp chĂşng tĂ´i cĂł thá» ghi nháşn cĂ´ng lao đóng gĂłp cá»§a bạn ."> -<!ENTITY issues.whitelist.remove.label "Báşt lại Adblock Plus trĂŞn trang nĂ y"> -<!ENTITY outdatedSubscriptions.description "Bá»™ lọc sau đã khĂ´ng được cáşp nháşp từ hai tuáş§n trước. Vui lòng cáşp nháşp bá»™ lọc trước khi gá»i thĂ´ng báo lá»—i, cĂł thá» vấn đỠđã được giải quyáşżt từ trước."> -<!ENTITY dataCollector.description "Vui lòng đợi má»™t lát trong khi Adblock Plus thu tháşp dữ liệu cáş§n thiáşżt."> -<!ENTITY sendButton.label "&Gá»i báo cáo"> -<!ENTITY comment.label "&Bình luáşn (phụ):"> -<!ENTITY sendPage.errorMessage "Má»™t ná»— lá»±c gá»i báo cáo bị thất bại vá»›i mĂŁ lá»—i "?1?". Vui lòng chắc chắn ráş±ng bạn đã được káşżt nối Internet rồi thá» lại. Náşżu vấn đỠváş«n còn, vui lòng yĂŞu cáş§u trợ giĂşp trĂŞn [link]diá»…n đà n Adblock Plus[/link]."> -<!ENTITY showRecentReports.label "Hiện các báo cáo được gá»i lĂŞn gáş§n đây"> -<!ENTITY commentPage.heading "Äiá»n bình luáşn"> -<!ENTITY update.start.label "Bắt đầu cáşp nháşp ngay"> -<!ENTITY issues.disabledfilters.description "Các bá»™ lọc sau đã bị vĂ´ hiệu hĂła, song chĂşng cĂł thá» váş«n gây ảnh hưởng tá»›i trang nĂ y:"> -<!ENTITY screenshot.description "CĂąng má»™t trang cĂł thá» trĂ´ng khác đối vá»›i nhiá»u người khác nhau. ChĂşng tĂ´i cĂł thá» hiá»u vấn đỠhơn náşżu bạn Ä‘Ănh kèm má»™t ảnh chụp mĂ n hình vĂ o báo cáo. Bạn cĂł thá» xĂła các pháş§n chứa thĂ´ng tin nhạy cảm cĹ©ng như đánh dấu các vĂąng dá»… nháşn thấy vấn Ä‘á». Äá» lĂ m việc đó, nhấn chuá»™t vĂ o nĂşt liĂŞn quan vĂ chọn vĂąng hình ảnh báş±ng chuá»™t cá»§a bạn."> -<!ENTITY screenshot.attach.label "ÄĂnh &kèm ảnh chụp trang vĂ o báo cáo"> -<!ENTITY issues.whitelist.description "Adblock Plus hiện Ä‘ang bị tắt trĂŞn trang mĂ bạn báo cáo. Vui lòng báşt nĂł lại vĂ tải lại trang trước khi gá»i báo cáo."> -<!ENTITY typeSelector.falseNegative.label "Adbloc&k Plus khĂ´ng cháş·n má»™t quảng cáo"> -<!ENTITY typeSelector.heading "Chọn kiá»u vấn Ä‘á»"> -<!ENTITY anonymity.warning "ChĂşng tĂ´i khĂ´ng thá» trở lại vá»›i bạn vĂ sáş˝ hạ mức ưu tiĂŞn cá»§a báo cáo cá»§a bạn."> -<!ENTITY wizard.title "Trình báo cáo lá»—i"> -<!ENTITY issues.ownfilters.disable.label "VĂ´ hiệu hĂła bá»™ lọc"> -<!ENTITY commentPage.description "Trường vÄn bản bĂŞn dưới cho phĂ©p bạn Ä‘iá»n bình luáşn đỠgiĂşp chĂşng tĂ´i hiá»u vấn Ä‘á». Bước nĂ y chỉ lĂ phụ nhưng được khuyáşżn khĂch náşżu vấn đỠkhĂ´ng rõ rĂ ng. Bạn cĹ©ng cĂł thá» xem lại dữ liệu báo cáo trước khi gá»i."> -<!ENTITY comment.lengthWarning "Äá»™ dĂ i bình luáşn cá»§a bạn vượt qua 1000 kĂ tá»±. Chỉ 1000 kĂ tá»± đầu tiĂŞn sáş˝ được gá»i Ä‘i."> -<!ENTITY typeSelector.falseNegative.description "Chọn tĂąy chọn nĂ y náşżu má»™t quảng cáo váş«n hiá»n thị cho dĂą Adblock Plus Ä‘ang được báşt."> -<!ENTITY sendPage.waitMessage "Vui lòng đợi trong khi Adblock Plus Ä‘ang gá»i lĂŞn báo cáo cá»§a bạn."> -<!ENTITY dataCollector.heading "ChĂ o mừng đến vá»›i trình báo cáo vấn Ä‘á»"> -<!ENTITY screenshot.heading "ÄĂnh kèm ảnh chụp"> -<!ENTITY sendPage.heading "Gá»i báo cáo"> -<!ENTITY issues.subscriptionCount.description "CĂł váş» như bạn Ä‘Äng kĂ dĂąng quá nhiá»u bá»™ lọc trọn gĂłi. Thiáşżt láşp nĂ y khĂ´ng được khuyáşżn khĂch vì nĂł lĂ m khả nÄng xảy ra vấn đỠcao hơn. ChĂşng tĂ´i cĹ©ng khĂ´ng thá» chấp nháşn báo cáo vấn đỠcá»§a bạn vì khĂ´ng cho thấy rõ tác giả bá»™ lọc trọn gĂłi nĂ o cáş§n hĂ nh động. Vui lòng xĂła tất cả và đỠlại các bá»™ lọc trọn gĂłi cáş§n thiáşżt rồi kiá»m tra thá» xem vấn đỠcòn khĂ´ng."> -<!ENTITY screenshot.mark.label "Äánh dấ&u vấn Ä‘á»"> -<!ENTITY privacyPolicy.label "ChĂnh sách riĂŞng tư"> -<!ENTITY issues.description "Adblock Plus nháşn thấy vấn đỠvá»›i cấu hình cá»§a bạn, Ä‘iá»u cĂł thá» chịu trách nhiệm cho vấn đỠhoáş·c lĂ m cho việc kiá»m tra báo cáo khĂł khÄn hơn."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sidebar.dtd deleted file mode 100644 index 02208a2..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "Nhấp nháy quanh viá»n cá»§a mục nĂ y"> -<!ENTITY address.label "Äịa chỉ"> -<!ENTITY context.open.label "Mở trong Tháş» Má»›i"> -<!ENTITY type.label "Kiá»u"> -<!ENTITY tooltip.filterSource.label "Nguồn bá»™ lọc:"> -<!ENTITY noitems.label "KhĂ´ng cĂł mục nĂ o cĂł thá» cháş·n được"> -<!ENTITY filter.label "Bá»™ lọc"> -<!ENTITY tooltip.size.label "KĂch thước:"> -<!ENTITY reattach.label "ÄĂnh lại"> -<!ENTITY search.label "Tì&m:"> -<!ENTITY docDomain.thirdParty "(bĂŞn thứ ba)"> -<!ENTITY filterSource.label "Nguồn bá»™ lọc"> -<!ENTITY tooltip.docDomain.label "Nguồn tĂ i liệu:"> -<!ENTITY context.copy.label "ChĂ©p địa chỉ cá»§a mục nĂ y"> -<!ENTITY tooltip.type.label "Kiá»u:"> -<!ENTITY context.disablefilter.label "VĂ´ hiệu hĂła bá»™ lọc ?1?"> -<!ENTITY context.copyFilter.label "ChĂ©p bá»™ lọc"> -<!ENTITY context.block.label "Cháş·n mục nĂ y"> -<!ENTITY context.enablefilter.label "KĂch hoạt lại bá»™ lọc ?1?"> -<!ENTITY detach.label "Tách rời"> -<!ENTITY whitelisted.label "Trang náş±m trong sổ trắng"> -<!ENTITY context.disablefilteronsite.label "VĂ´ hiệu hĂła bá»™ lọc nĂ y trĂŞn ?1?"> -<!ENTITY detached.title "Adblock Plus: các mục cĂł thá» cháş·n (tách rời)"> -<!ENTITY docDomain.firstParty "(bĂŞn thứ nhất)"> -<!ENTITY tooltip.type.whitelisted "(sổ trắng)"> -<!ENTITY tooltip.filter.label "Bá»™ lọc Ä‘ang cĂł hiệu lá»±c:"> -<!ENTITY tooltip.filter.disabled "(bị vĂ´ hiệu hĂła)"> -<!ENTITY context.editfilter.label "Chỉnh sá»a bá»™ lọc Ä‘ang cĂł hiệu lá»±c"> -<!ENTITY tooltip.type.blocked "(đã cháş·n)"> -<!ENTITY size.label "KĂch thước"> -<!ENTITY context.whitelist.label "ThĂŞm quy luáşt ngoại lệ cho mục"> -<!ENTITY context.selectAll.label "Chọn tất cả"> -<!ENTITY state.label "Tình trạng"> -<!ENTITY docDomain.label "Nguồn tĂ i liệu"> -<!ENTITY tooltip.address.label "Äịa chỉ:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/subscriptionSelection.dtd deleted file mode 100644 index 804c14b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/vi/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "Kèm thĂŞm bá»™ lọc trọn &gĂłi "?1?""> -<!ENTITY list.download.failed "Adblock Plus khĂ´ng thá» lấy danh sách bá»™ lọc trọn gĂłi."> -<!ENTITY list.download.retry "Thá» lại"> -<!ENTITY title.label "&TiĂŞu đỠcá»§a bá»™ trọn gĂłi:"> -<!ENTITY list.download.website "Xem trang mạng"> -<!ENTITY supplementMessage "Bá»™ lọc trọn gĂłi nĂ y chỉ nĂŞn dĂąng kèm vá»›i bá»™ lọc trọn gĂłi "?1?" - cái mĂ bạn chưa sá» dụng."> -<!ENTITY viewList.label "Xem bá»™ lọc"> -<!ENTITY visitHomepage.label "VĂ o trang chá»§"> -<!ENTITY addSubscription.label "ThĂŞm bá»™ trọn gĂłi"> -<!ENTITY dialog.title "ThĂŞm bá»™ lọc trọn gĂłi cho Adblock Plus"> -<!ENTITY location.label "Äị&a chỉ cá»§a danh sách bá»™ lọc:"> -<!ENTITY fromWeb.description "Vui lòng xác nháşn ráş±ng bạn muốn thĂŞm bá»™ lọc trọn gĂłi nĂ y. Bạn cĂł thá» thay đổi tiĂŞu đỠhoáş·c địa chỉ trước khi thĂŞm nĂł."> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/composer.dtd deleted file mode 100644 index 2ed029e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "在地址末尾 (&n)"> -<!ENTITY domainRestriction.label "é™ĺ¶ĺźźďĽš (&d)"> -<!ENTITY collapse.default.no.label "使用é»č®¤ĺ€Ľ (ĺ¦)"> -<!ENTITY firstParty.label "仅第一方 (&r)"> -<!ENTITY preferences.label "ćľç¤şć‰€ćś‰ĺ±Źč”˝č§„ĺ™â€¦â€¦ (&S)"> -<!ENTITY pattern.label "查找模式"> -<!ENTITY thirdParty.label "仅第三方 (&T)"> -<!ENTITY filter.label "新建屏蔽规ĺ™: (&f)"> -<!ENTITY collapse.label "ćŠĺŹ ĺ·˛ĺ±Źč”˝: (&l)"> -<!ENTITY match.warning "您输入的模式不ćŻčŻĄĺś°ĺť€çš„čż‡ć»¤/例外规ĺ™ďĽŚĺ°†ä¸ŤäĽšĺŻąčŻĄĺś°ĺť€äş§ç”źä»»ä˝•ć•果。"> -<!ENTITY anchor.start.label "在地址开始处 (&g)"> -<!ENTITY matchCase.label "匹配大小写 (&M)"> -<!ENTITY custom.pattern.label "自定义: (&C)"> -<!ENTITY unselectAllTypes.label "全不选"> -<!ENTITY type.whitelist.label "äľ‹ĺ¤–č§„ĺ™ (&x)"> -<!ENTITY regexp.warning "您输入的模式将以ćŁĺ™čˇ¨čľľĺĽŹč§Łé‡Šă€‚ć¤ćŁĺ™čˇ¨čľľĺĽŹä¸Ťč˝é«ć•地在Adblock Plus上čżčˇŚďĽŚĺą¶ä¸”可č˝äĽšé™Ťä˝Žć‚¨ćµŹč§çš„速度。如果您不希望使用ćŁĺ™čˇ¨čľľĺĽŹďĽŚčŻ·ĺś¨ć¨ˇĺĽŹćś«ĺ°ľć·»ĺŠ ä¸€ä¸ŞćźĺŹ·(*)。"> -<!ENTITY dialog.title "ć·»ĺŠ Adblock Plus 过滤规ĺ™"> -<!ENTITY basic.label "基本视图"> -<!ENTITY type.filter.label "ĺ±Źč”˝č§„ĺ™ (&B)"> -<!ENTITY types.label "适用于类型:"> -<!ENTITY shortpattern.warning "您输入的模式太çźč€Śä¸Ťč˝č˘«äĽĺŚ–ďĽŚčż‡ĺ¤ščż™ć ·çš„ć¨ˇĺĽŹäĽšé™Ťä˝Žć‚¨ćµŹč§çš„速度。推čŤć‚¨ä¸şčŻĄčż‡ć»¤č§„ĺ™é€‰ć‹©ä¸€ä¸Şé•żäş›çš„ĺ—ç¬¦ä¸˛ďĽŚčż™ć · Adblock Plus 才č˝ć›´ćś‰ć•地处ç†ă€‚"> -<!ENTITY collapse.yes.label "ćŻ"> -<!ENTITY anchors.label "仅接受模式:"> -<!ENTITY collapse.default.yes.label "使用é»č®¤ĺ€Ľ (ćŻ)"> -<!ENTITY domainRestriction.help "由竖线(|)ĺ†éš”的一个ć–多个域,过滤规ĺ™ä»…应用于这些域上。域ĺŤĺ‰Ťćś‰ä»Łĺ—符(~),表示过滤规ĺ™ä¸Ťĺş”该应用于该域上。"> -<!ENTITY accept.label "ć·»ĺŠ čż‡ć»¤č§„ĺ™"> -<!ENTITY options.label "选项"> -<!ENTITY disabled.warning "Adblock Plus 目前处于ç¦ç”¨çжć€ă€‚您可以继ç»ć·»ĺŠ čż‡ć»¤č§„ĺ™ďĽŚä˝†ćŻčż™äş›č§„ĺ™ĺś¨ć‚¨[link]ĺŻç”¨ Adblock Plus[/link] äą‹ĺŽć‰Ťč˝ç”źć•。"> -<!ENTITY anchor.start.flexible.label "在域ĺŤĺĽ€ĺ§‹ĺ¤„ (&g)"> -<!ENTITY collapse.no.label "ĺ¦"> -<!ENTITY selectAllTypes.label "全选"> -<!ENTITY advanced.label "é«çş§č§†ĺ›ľ"> -<!ENTITY pattern.explanation "模式可以ćŻĺś°ĺť€çš„任意é¨ĺ†ďĽŚćźĺŹ·(*)ćŻé€šé…Ťç¬¦ă€‚过滤规ĺ™ĺŹŞäĽšĺş”ç”¨ĺ°ä¸Žć¨ˇĺĽŹĺŚąé…Ťçš„ĺś°ĺť€ä¸Šă€‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/filters.dtd deleted file mode 100644 index 23ccf7c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/filters.dtd +++ /dev/null @@ -1,73 +0,0 @@ -<!ENTITY restore.custom.warning "您所有的自定义规ĺ™ĺ°†č˘«é€‰ć‹©çš„文件ä¸çš„内容所替代。您ćŻĺ¦ç»§ç»ďĽź"> -<!ENTITY slow.column "ć…˘é€źčż‡ć»¤č§„ĺ™ (&w)"> -<!ENTITY enabled.column "ĺŻç”¨ (&n)"> -<!ENTITY subscription.lastDownload.checksumMismatch "失败,检验和不匹配"> -<!ENTITY noFiltersInGroup.text "选择的ĺ†ç»„ćŻç©şçš„。"> -<!ENTITY subscription.actions.label "操作"> -<!ENTITY filter.selectAll.label "全选"> -<!ENTITY backupButton.label "备份与čżĺŽź (&B)"> -<!ENTITY restore.minVersion.warning "č¦ĺ‘ŠďĽščŻĄć–‡ä»¶ç”±ć–°ç‰ćś¬çš„ Adblock Plus ĺ›ĺ»şă€‚您应该ĺ…更新至最新ç‰ćś¬çš„ Adblock Plus ç„¶ĺŽĺ†ŤčżĺŽźčŻĄć–‡ä»¶ă€‚"> -<!ENTITY restore.error "ć— ćł•ĺ¤„ç†čŻĄć–‡ä»¶ďĽŚĺŹŻč˝čŻĄć–‡ä»¶ä¸ŤćŻ Adblock Plus 备份文件?"> -<!ENTITY sort.ascending.label "&A > Z 顺序"> -<!ENTITY sort.label "排序 (&S)"> -<!ENTITY subscription.source.label "过滤规ĺ™ĺ—表"> -<!ENTITY hitcount.column "计数 (&H)"> -<!ENTITY noFilters.text "您čżć˛ˇćś‰č‡Şĺ®šäą‰čż‡ć»¤č§„ĺ™ă€‚"> -<!ENTITY backup.custom.title "仅自定义过滤规ĺ™"> -<!ENTITY subscription.external.label "由其他扩展更新"> -<!ENTITY subscription.delete.label "ĺ 除"> -<!ENTITY noGroupSelected.text "č¦ćłćľç¤şčż‡ć»¤č§„ĺ™ĺ†ç»„ä¸çš„过滤规ĺ™ďĽŚć‚¨ĺż…须ĺ…选择一个过滤规ĺ™ĺ†ç»„。"> -<!ENTITY filter.cut.label "剪ĺ‡"> -<!ENTITY restore.default.label "čżĺŽźĺ° ?1? 的备份"> -<!ENTITY subscription.lastDownload.inProgress "ćŁĺś¨ä¸‹č˝˝â€¦â€¦"> -<!ENTITY subscriptions.tab.label "过滤规ĺ™č®˘é…组"> -<!ENTITY sort.descending.label "&Z > A 顺序"> -<!ENTITY filters.remove.warning "您确定č¦ç§»é™¤ć‰€ćś‰é€‰ĺ®šçš„过滤规ĺ™ĺ—?"> -<!ENTITY filter.delete.label "ĺ 除"> -<!ENTITY addSubscriptionAdd.label "ć·»ĺŠ "> -<!ENTITY viewMenu.label "查看"> -<!ENTITY subscription.lastDownload.unknown "未知"> -<!ENTITY addSubscriptionCancel.label "取ć¶"> -<!ENTITY subscription.enabled.label "ĺŻç”¨"> -<!ENTITY noSubscriptions.text "您čżć˛ˇćś‰ć·»ĺŠ čż‡ć»¤č§„ĺ™č®˘é…组。Adblock Plus 没有过滤规ĺ™ĺ°†ć— ćł• -进行屏蔽,请使用 â€ść·»ĺŠ čż‡ć»¤č§„ĺ™č®˘é…组” ć·»ĺŠ čż‡ć»¤č§„ĺ™ă€‚"> -<!ENTITY subscription.update.label "更新过滤规ĺ™"> -<!ENTITY dialog.title "Adblock Plus 过滤规ĺ™é¦–选项"> -<!ENTITY addFilter.label "ć·»ĺŠ čż‡ć»¤č§„ĺ™ (&d)"> -<!ENTITY subscription.minVersion.warning "该过滤规ĺ™č®˘é…组需č¦ć–°ç‰ćś¬çš„ Adblock Plus,您应该更新至最新的 Adblock Plus。"> -<!ENTITY subscription.lastDownload.invalidURL "失败,不ćŻćś‰ć•地址"> -<!ENTITY backup.error "将过滤规ĺ™ĺ†™ĺ…Ąć–‡ä»¶ć—¶ĺŹ‘ç”źé”™čŻŻă€‚čŻ·çˇ®č®¤čŻĄć–‡ä»¶ć˛ˇćś‰ĺ†™äżťćŠ¤ć–者ćŁĺś¨č˘«ĺ…¶ä»–程序使用。"> -<!ENTITY filter.moveUp.label "上移"> -<!ENTITY addGroup.label "ć·»ĺŠ čż‡ć»¤č§„ĺ™ĺ†ç»„ (&g)"> -<!ENTITY filter.edit.label "编辑"> -<!ENTITY subscription.showHideFilters.label "ćľç¤ş/éšč—Źčż‡ć»¤č§„ĺ™"> -<!ENTITY acceptableAds2.label "ĺ…许一些非侵入式广告 (&i)"> -<!ENTITY addSubscriptionOther.label "ć·»ĺŠ ĺ…¶ä»–čż‡ć»¤č§„ĺ™č®˘é…组"> -<!ENTITY close.label "ĺ…łé—"> -<!ENTITY sort.none.label "不排序 (&U)"> -<!ENTITY filter.actions.label "过滤规ĺ™ć“Ťä˝ś"> -<!ENTITY filter.copy.label "复ĺ¶"> -<!ENTITY filter.moveDown.label "下移"> -<!ENTITY filter.resetHitCounts.label "重置生ć•次数统计"> -<!ENTITY readMore.label "深入了解"> -<!ENTITY subscription.moveUp.label "上移"> -<!ENTITY addSubscription.label "ć·»ĺŠ čż‡ć»¤č§„ĺ™č®˘é…组 (&f)"> -<!ENTITY subscription.homepage.label "主页"> -<!ENTITY backup.complete.title "所有订é…组和自定义规ĺ™"> -<!ENTITY restore.own.label "čżĺŽźč‡Şĺ·±çš„ĺ¤‡ä»˝"> -<!ENTITY restore.complete.warning "您所有的过滤规ĺ™ĺŹ‚ć•°ĺ°†č˘«é€‰ć‹©çš„ć–‡ä»¶ä¸çš„内容所替代。您ćŻĺ¦ç»§ç»ďĽź"> -<!ENTITY filters.tab.label "自定义过滤规ĺ™"> -<!ENTITY backup.label "ĺ›ĺ»şć–°ĺ¤‡ä»˝"> -<!ENTITY find.label "查找 (&n)"> -<!ENTITY subscription.moveDown.label "下移"> -<!ENTITY subscription.lastDownload.connectionError "失败,下载失败"> -<!ENTITY subscription.lastDownload.success "ć功"> -<!ENTITY subscription.lastDownload.invalidData "失败,不ćŻćś‰ć•的过滤规ĺ™ĺ—表"> -<!ENTITY filter.paste.label "ç˛č´´"> -<!ENTITY subscription.disabledFilters.enable "ĺŻç”¨ĺ·˛ç¦ç”¨çš„过滤规ĺ™"> -<!ENTITY lasthit.column "最ĺŽç”źć•ć—¶é—´ (&L)"> -<!ENTITY subscription.editTitle.label "çĽ–čľ‘ć ‡é˘"> -<!ENTITY subscription.disabledFilters.warning "该过滤规ĺ™č®˘é…组ä¸çš„ćźäş›čż‡ć»¤č§„ĺ™č˘«ç¦ç”¨ă€‚"> -<!ENTITY filter.column "čż‡ć»¤č§„ĺ™ (&F)"> -<!ENTITY subscription.lastDownload.label "最ĺŽä¸‹č˝˝äşŽ:"> -<!ENTITY viewList.label "查看ĺ—表"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/firstRun.properties deleted file mode 100644 index e318330..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=éšç§ćµŹč§éżĺĽ€č·źč¸Ş - ć‘†č„±ĺążĺ‘Šĺ…¬ĺŹ¸č·źč¸Şä˝ çš„ä¸€ä¸ľä¸€ĺŠ¨ă€‚ -firstRun_toggle_off=ĺ…łé— -firstRun_feature_tracking=ç¦ć˘č·źč¸Ş -firstRun_feature_malware=拦ćŞć¶ć„Źč˝Żä»¶ -firstRun_title=Adblock Plus 已安装 -firstRun_toggle_on=ĺĽ€ĺŻ -firstRun_acceptableAdsExplanation=ć‘们ćłéĽ“励网站使用简单ă€ä¸Ťä˝żäşşĺŹŤć„źçš„ĺążĺ‘Šă€‚čż™äąźćŻä¸şä»€äąć‘们建立了一个<a>ä¸Ąć Ľçš„ćŚ‡ĺŻĽć–ąé’</a>来确定可接受的广告,并在é»č®¤č®ľç˝®ä¸‹ĺ±•示ĺ®ä»¬ă€‚如果您仍ćłĺ±Źč”˝ć‰€ćś‰ĺążĺ‘ŠďĽŚć‚¨ĺŹŻä»Ąč˝»ćťľĺś°<a>ç¦ç”¨</a>这项功č˝ă€‚ -firstRun_contributor_credits=贡献者记录 -firstRun_dataCorruptionWarning=总ćŻćľç¤şć¤éˇµďĽź<a>点击这里ďĽ</a> -firstRun_acceptableAdsHeadline=ćĽäşşçš„广告将被屏蔽 -firstRun_share=ĺ‘ŠčŻ‰ä˝ çš„ćś‹ĺŹ‹ -firstRun_share_headline=<a>ç»™ć‘们一点支ćŚ</a>,让网络ĺŹĺľ—ć›´ĺŠ çľŽĺĄ˝ -firstRun_feature_social_description=自动屏蔽网页ä¸ĺ‡şçŽ°çš„ç¤ľäş¤ĺŞ’ä˝“ćŚ‰é’®ďĽŚäľ‹ĺ¦‚ Facebook çš„ Like,摆脱行为跟踪。 -firstRun_filterlistsReinitializedWarning=äĽĽäąŽĺ› ä¸€ä¸Şé—®é˘ĺŻĽč‡´ć‰€ćś‰čż‡ć»¤č§„ĺ™ĺ·˛č˘«ĺ 除,并且ć‘ä»¬ć— ćł•ä»Žĺ¤‡ä»˝ä¸ć˘ĺ¤Ťă€‚ĺ› ć¤ďĽŚć‘们不得不重置您的过滤规ĺ™ĺ’ŚĺŹŻćŽĄĺŹ—ĺążĺ‘Šč®ľç˝®ă€‚čŻ·ĺś¨ <a>Adblock Plus 选项</a> ä¸ćŁ€ćźĄć‚¨çš„čż‡ć»¤č§„ĺ™ĺ—表和可接受广告设置。 -firstRun_feature_malware_description=使您的浏č§ć›´ĺ®‰ĺ…¨ďĽŚé»ć˘ĺ·˛çźĄçš„ć¶ć„Źč˝Żä»¶ĺźźă€‚ -firstRun_features=Adblock Plus 不仅仅č˝ć‹¦ćŞĺążĺ‘Š -firstRun_donate=ćŤčµ -firstRun_donate_label=支ćŚć‘们的项目 -firstRun_feature_social=移除社交媒体按钮 -firstRun_legacySafariWarning=Adblock Plus 不支ćŚć‚¨ćŁĺś¨ä˝żç”¨çš„ Safari ć—§ç‰ćś¬ă€‚这可č˝ĺŻĽč‡´ć— ćł•ćŁĺ¸¸ĺ·Ąä˝śďĽŚć–者损害一些网站上的用ć·ä˝“验。ć‘们强çĺ»şč®®ć‚¨ć›´ć–°ĺ° Safari 6.1.1 ć–ć›´é«ç‰ćś¬ďĽĺźşäşŽ OS X 10.8 Mountain LionďĽ‰ďĽŚć– Safari 7.0.1 ć–ć›´é«ç‰ćś¬ďĽĺźşäşŽ OS X 10.9 Mavericks),ć–者使用 Mozilla Firefoxă€Google Chrome ć– Opera 浏č§ĺ™¨çš„最新ç‰ćś¬ă€‚ diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/global.properties deleted file mode 100644 index 48387e9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=ĺ˝“ĺ‰Ťéˇµéť˘ć— ĺŹŻčż‡ć»¤éˇąç›® -action3_tooltip=点击ĺ‡ćŤ˘ĺŻç”¨/ç¦ç”¨ Adblock Plus。 -notification_antiadblock_title=éšč—Źé’对性的信ćŻďĽź -type_label_script=脚本 -filter_elemhide_nocriteria=没有指定č¦éšč—Źĺ…ç´ çš„čŻ†ĺ«ć ‡ĺ‡† -blockingGroup_title=ĺążĺ‘Šĺ±Źč”˝č§„ĺ™ -whitelisted_tooltip=Adblock Plus 在当前页ç¦ç”¨ă€‚ -type_label_stylesheet=ć ·ĺĽŹčˇ¨ -blocked_count_tooltip=第 ?1? 项,共 ?2? 项 -type_label_font=ĺ—体 -type_label_popup=弹出窗口 -filter_regexp_tooltip=该过滤规ĺ™ćŻćŁĺ™čˇ¨čľľĺĽŹć–者太çźč€Ść— ćł•äĽĺŚ–ă€‚ĺ¦‚ćžśčż™ç§Ťç±»ĺž‹çš„čż‡ć»¤č§„ĺ™ĺ¤Şĺ¤šäĽšé™Ťä˝Žć‚¨ćµŹč§çš„速度。 -action0_tooltip=点击弹出快捷菜单,ä¸é”®ç‚ąĺ‡»ĺ‡ćŤ˘ĺŻç”¨/ç¦ç”¨ă€‚ -whitelisted_page=Adblock Plus 在当前页面已ç¦ç”¨ -remove_group_warning=您希望移除该组ĺ—? -action1_tooltip=点击打开/ĺ…łé—可过滤项目,ä¸é”®ç‚ąĺ‡»ĺ‡ćŤ˘ĺŻç”¨/ç¦ç”¨ă€‚ -type_label_xmlhttprequest=XML 请求 -active_tooltip=Adblock Plus 处于ĺŻç”¨çжć€ďĽŚćŁĺś¨ä˝żç”¨ ?1? 过滤规ĺ™č®˘é…组和 ?2? 自定义过滤规ĺ™ă€‚ -type_label_document=文档 -type_label_object_subrequest=对象ĺ请求 -whitelistGroup_title=äľ‹ĺ¤–č§„ĺ™ -disabled_tooltip=Adblock Plus ĺ·˛ç¦ç”¨ă€‚ -filter_elemhide_duplicate_id=仅可以指定一个č¦éšč—Źçš„ĺ…ç´ ID -type_label_object=对象 -action2_tooltip=点击打开首选项,ä¸é”®ç‚ąĺ‡»ĺ‡ćŤ˘ĺŻç”¨/ç¦ç”¨ă€‚ -type_label_subdocument=帧 -clearStats_warning=ć¤ć“Ťä˝śĺ°†ç¦ç”¨ĺą¶é‡Ťç˝®ć‰€ćś‰čż‡ć»¤č§„ĺ™ç”źć•次数统计。您确定č¦čż™ć ·ĺšĺ—? -notification_antiadblock_message=ć¤ç˝‘站已知会对 Adblock Plus 用ć·ćľç¤şé’对性的信ćŻă€‚您ćłč®© Adblock Plus éšč—Źé’对性的信ćŻĺ—? -blocked_count_addendum=(ç™˝ĺŤĺŤ•: ?1?, éšč—Ź: ?2?) -subscription_invalid_location=过滤规ĺ™ĺ—表的位置不ćŻćś‰ć•çš„ URL ć–有ć•的文件ĺŤă€‚ -type_label_image=图片 -remove_subscription_warning=您确定č¦ç§»é™¤čŻĄčż‡ć»¤č§„ĺ™č®˘é…组ĺ—? -type_label_other=ĺ…¶ä»– -mobile_menu_enable=ABP:ĺŻç”¨ -type_label_media=音频/视频 -mobile_menu_disable_site=ABP:在 ?1? ç¦ç”¨ -elemhideGroup_title=ĺ…ç´ éšč—Źč§„ĺ™ -mobile_menu_enable_site=ABP:在 ?1? ĺŻç”¨ -type_label_elemhide=éšč—Ź -newGroup_title=新建过滤规ĺ™ç»„ -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/overlay.dtd deleted file mode 100644 index cf9ea7f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "ćŻ(&Y)"> -<!ENTITY notification.button.no "ĺ¦(&N)"> -<!ENTITY sync.label "ĺŚćĄ Adblo&ck Plus 设置"> -<!ENTITY whitelist.site.label "在 ?1? ç¦ç”¨ Adblock Plus"> -<!ENTITY filters.label "过滤规ĺ™é¦–选项 (&F)"> -<!ENTITY disable.label "完全ç¦ç”¨"> -<!ENTITY objecttab.title "屏蔽"> -<!ENTITY objecttab.tooltip "点击这里用 Adblock Plus 屏蔽该对象"> -<!ENTITY menuitem.label "Ad&block Plus 首选项"> -<!ENTITY objecttabs.label "在 Flash ĺ’Ś Java 上ćľç¤şć ‡çľ (&t)"> -<!ENTITY sendReport.label "ćŠĄĺ‘ŠčŻĄéˇµéť˘ä¸Šçš„é—®é˘ (&R)"> -<!ENTITY whitelist.page.label "仅在本页ç¦ç”¨ Adblock Plus"> -<!ENTITY context.image.label "过滤图片(Adblock Plus)"> -<!ENTITY counthits.label "统计过滤规ĺ™ç”źć•次数 (&h)"> -<!ENTITY opensidebar.label "打开可过滤项目 (&b)"> -<!ENTITY notification.button.close "ĺ…łé—(&C)"> -<!ENTITY contribute.label "助力 Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "过滤帧(Adblock Plus)"> -<!ENTITY blocked.tooltip "该页上已过滤的项目:"> -<!ENTITY hideplaceholders.label "éšč—Źĺ·˛ĺ±Źč”˝ĺ…ç´ çš„ĺŤ ä˝Ťç¬¦ (&l)"> -<!ENTITY showinstatusbar.label "在状ć€ć Źćľç¤ş (&s)"> -<!ENTITY sidebar.title "本页可过滤的项目"> -<!ENTITY options.label "选项 (&O)"> -<!ENTITY context.object.label "过滤对象(Adblock Plus)"> -<!ENTITY context.removeWhitelist.label "Adblock Plus: 在ć¤éˇµéť˘ä¸Šé‡Ťć–°ĺŻç”¨"> -<!ENTITY filters.tooltip "最活č·čż‡ć»¤č§„ĺ™:"> -<!ENTITY closesidebar.label "ĺ…łé—可过滤项目 (&b)"> -<!ENTITY showintoolbar.label "ĺś¨ĺ·Ąĺ…·ć Źćľç¤ş (&b)"> -<!ENTITY status.tooltip "状ć€:"> -<!ENTITY context.media.label "过滤视频/音频(Adblock Plus)"> -<!ENTITY subscription.update.label "更新过滤规ĺ™"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sendReport.dtd deleted file mode 100644 index 2b2152e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sendReport.dtd +++ /dev/null @@ -1,78 +0,0 @@ -<!ENTITY screenshot.undo.label "撤销 (&U)"> -<!ENTITY issues.disabledgroups.description "如下过滤规ĺ™č®˘é…组ć–过滤规ĺ™ç»„处于ç¦ç”¨çжć€ďĽŚä˝†ćŻĺ®ä»¬ĺŹŻč˝ĺŻąčŻĄéˇµéť˘ćś‰ć•:"> -<!ENTITY showData.label "ćľç¤şćŠĄĺ‘Šć•°ćŤ®"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus 屏蔽了太多ĺ…ç´ (&m)"> -<!ENTITY issues.change.description "您的设置已更改。请重新载入页面来测试更改,如果问é˘äľťć—§ĺ在解决再ćŹäş¤ćŠĄĺ‘Šă€‚"> -<!ENTITY email.label "电ĺ邮箱 (&m)"> -<!ENTITY issues.openPreferences.label "打开过滤规ĺ™é¦–选项"> -<!ENTITY sendPage.confirmation "您的报告已被保ĺ。您可以通过如下地址访问:"> -<!ENTITY copyLink.label "复ĺ¶ćŠĄĺ‘Šé“ľćŽĄ (&C)"> -<!ENTITY issues.nofilters.description "Adblock Plus 在当前页面上未屏蔽任何ĺ…ç´ ă€‚ć‚¨é‡ĺ°çš„é—®é˘ĺľĺŹŻč˝ä¸Ž Adblock Plus ć— ĺ…łă€‚"> -<!ENTITY sendPage.knownIssue "您ćŹäş¤çš„é—®é˘ĺŹŻč˝ćŻä¸Şĺ·˛çźĄé—®é˘ă€‚详ć…č§ďĽš"> -<!ENTITY typeSelector.other.description "如果您怀疑问é˘ĺ‡şĺś¨ Adblock Plus 自身而不ćŻčż‡ć»¤č§„ĺ™ďĽŚčݷ选㋩ć¤é€‰éˇąă€‚"> -<!ENTITY issues.disabledgroups.enable.label "ĺŻç”¨čż‡ć»¤č§„ĺ™č®˘é…组/过滤规ĺ™ĺ†ç»„"> -<!ENTITY typeWarning.override.label "ć‘了解并仍然希望ćŹäş¤ćŠĄĺ‘Š (&s)"> -<!ENTITY issues.disabled.enable.label "ĺŻç”¨ Adblock Plus"> -<!ENTITY update.fixed.description "更新的过滤规ĺ™č®˘é…组可č˝ĺ·˛č§Łĺ†łäş†ć‚¨ćŠĄĺ‘Šçš„é—®é˘ă€‚请重新载入页面并重试,如果问é˘ä»Ťç„¶ĺ在,您再继ç»ćŠĄĺ‘Šé—®é˘ă€‚"> -<!ENTITY anonymous.label "匿ĺŤćŹäş¤ (&A)"> -<!ENTITY reloadButton.label "重新载入页面 (&R)"> -<!ENTITY recentReports.clear.label "移除所有报告 (&R)"> -<!ENTITY typeSelector.description "本窗口将通过一系ĺ—ćĄéŞ¤ĺĽ•ĺŻĽć‚¨ćŹäş¤ Adblock Plus é—®é˘ćŠĄĺ‘Šă€‚ -首ĺ…,请在本页选择您é‡ĺ°çš„é—®é˘ç±»ĺž‹ďĽš"> -<!ENTITY screenshot.remove.label "移除敏感数据 (&R)"> -<!ENTITY issues.ownfilters.description "一些应用ĺ°čŻĄéˇµéť˘çš„čż‡ć»¤č§„ĺ™ćŻç”±ç”¨ć·č‡Şĺ®šäą‰çš„。 -请ç¦ç”¨čż™äş›ĺŹŻč˝ĺŻĽč‡´čŻĄé—®é˘çš„过滤规ĺ™ďĽš"> -<!ENTITY update.inProgress.description "Adblock Plus 需č¦ć›´ć–°ć‚¨çš„过滤规ĺ™č®˘é…组以确保问é˘čżćśŞč˘«č§Łĺ†łă€‚请稍ç‰â€¦â€¦"> -<!ENTITY sendPage.retry.label "再次发é€"> -<!ENTITY data.label "报告数据:(&p)"> -<!ENTITY recentReports.label "您最近ćŹäş¤çš„报告"> -<!ENTITY typeWarning.description "您已经ćŽçˇ®ć‚¨ćłč¦ćŠĄĺ‘Š Adblock Plus 的通用问é˘č€Śä¸ŤćŻčż‡ć»¤č§„ĺ™çš„é—®é˘ă€‚ -请注意这类问é˘ćś€ĺĄ˝ćŠĄĺ‘Šč‡ł [link]Adblock Plus 论坛[/link]。您应该仅仅使用 -é—®é˘ćŠĄĺ‘Šçł»ç»źćťĄčˇĄĺ……ä¸€ä¸Şĺ在的讨论,如果您不ćŹäľ›é“ľćŽĄďĽŚĺľĺŹŻč˝ć˛ˇäşşäĽš -注意ĺ°ć‚¨çš„报告。ćŹäş¤ćŠĄĺ‘Šäą‹ĺŽäĽšćŹäľ›ç»™ć‚¨č‡ŞĺЍĺ›ĺ»şçš„链接。"> -<!ENTITY issues.disabled.description "Adblock Plus ĺ·˛ç¦ç”¨ďĽŚĺ˝“前状ć€ä¸‹ Adblock Plus 不会屏蔽任何ĺ…ç´ ă€‚"> -<!ENTITY attachExtensions.label "在报告ä¸é™„ĺŠ ćż€ć´»çš„ć‰©ĺ±•ĺ—čˇ¨ďĽŚç”¨äşŽçˇ®ĺ®šé™„ĺŠ ç»„ä»¶ĺ†˛çŞĺŻĽč‡´çš„é—®é˘ (&x)"> -<!ENTITY issues.nosubscriptions.add.label "ć·»ĺŠ čż‡ć»¤č§„ĺ™č®˘é…组"> -<!ENTITY issues.disabledfilters.enable.label "ĺŻç”¨čż‡ć»¤č§„ĺ™"> -<!ENTITY issues.override.label "设置ćŁçˇ®ďĽŚç»§ç»ćŠĄĺ‘Š (&c)"> -<!ENTITY issues.nosubscriptions.description "您似乎没有订é…任何ĺ¶ä˝śĺĄ˝çš„过滤规ĺ™ĺ—表。"> -<!ENTITY typeSelector.falsePositive.description "如果页面缺失了重č¦ĺ†…容ă€ćľç¤şä¸ŤćŁĺ¸¸ć–者功č˝ä¸ŤćŁĺ¸¸ďĽŚčݷ选㋩ć¤é€‰éˇąă€‚ -您可以通过临时ç¦ç”¨ Adblock Plus 来检测问é˘ćŻĺ¦ä¸ş Adblock Plus 所致。"> -<!ENTITY typeSelector.other.label "ĺ…¶ä»–é—®é˘ (&t)"> -<!ENTITY emailComment.label "ć‘们鼓励您输入一个有ć•的电ĺ邮件地址,以便在ć‘ä»¬ĺŻąä˝ çš„ćŠĄĺ‘Šćś‰ç–‘é—®ć—¶ĺŹŻä»Ąä¸Žć‚¨č”系。ĺ®čżč˝ä˝żć‘们č˝č®¤ĺ‡şä˝ 的贡献,并帮助确定ĺ®ä»¬çš„äĽĺ…次序。"> -<!ENTITY issues.whitelist.remove.label "在ć¤éˇµä¸Šé‡Ťć–°ĺŻç”¨ Adblock Plus"> -<!ENTITY outdatedSubscriptions.description "如下过滤规ĺ™č®˘é…组已经至少两周没有更新了。请在ćŹäş¤ćŠĄĺ‘Šäą‹ĺ‰Ťĺ…更新这些过滤规ĺ™č®˘é…组,也许问é˘ĺ·˛ç»Źč§Łĺ†łă€‚"> -<!ENTITY dataCollector.description "Adblock Plus ćŁĺś¨ć”¶é›†ć‰€éś€ć•°ćŤ®ďĽŚčŻ·ç¨Ťç‰ç‰‡ĺ»ă€‚"> -<!ENTITY sendButton.label "发é€ćŠĄĺ‘Š (&n)"> -<!ENTITY comment.label "注释ďĽĺŹŻé€‰ďĽ‰ďĽš(&C)"> -<!ENTITY sendPage.errorMessage "发é€ćŠĄĺ‘Šĺ¤±č´ĄďĽŚé”™čŻŻç "?1?"。请确保您已连接互č”网并重试。 -如果问é˘äľťć—§ďĽŚčŻ·ĺ° [link]Adblock Plus 论坛[/link]寻求帮助。"> -<!ENTITY showRecentReports.label "ćľç¤şćś€čż‘ćŹäş¤çš„报告"> -<!ENTITY commentPage.heading "输入注释"> -<!ENTITY update.start.label "现在开始更新"> -<!ENTITY issues.disabledfilters.description "如下过滤规ĺ™ĺ¤„于ç¦ç”¨çжć€ďĽŚä˝†ćŻĺ®ä»¬ĺŹŻč˝ĺŻąčŻĄéˇµéť˘ä¸Šćś‰ć•:"> -<!ENTITY screenshot.description "ĺŚć ·çš„页面,不ĺŚçš„人可č˝č§ĺ°çš„并不相ĺŚă€‚ĺ¦‚ćžść‚¨ĺś¨ćŠĄĺ‘Šä¸ -é™„ĺŠ äş†ćŞĺ›ľďĽŚĺ®ĺŹŻč˝äĽšĺ¸®ĺŠ©ć‘们了解问é˘ă€‚您可以移除敏感信 -ćŻĺŚşĺźźäąźĺŹŻä»Ąć ‡č®°ĺ‡şé—®é˘ĺŚşĺźźă€‚ç‚ąĺ‡»ç›¸ĺş”çš„ćŚ‰é’®ĺą¶ç”¨éĽ ć ‡ĺś¨ -图片上选择区域即可。"> -<!ENTITY screenshot.attach.label "ä¸şćŠĄĺ‘Šé™„ĺŠ éˇµéť˘ĺ›ľç‰‡ (&t)"> -<!ENTITY issues.whitelist.description "Adblock Plus 在您č¦ćŠĄĺ‘Šçš„éˇµéť˘ä¸ŠćŻç¦ç”¨çš„。请在ćŹäş¤ćŠĄĺ‘ŠĺŤŹĺŠ©č°ç ”该问é˘äą‹ĺ‰ŤďĽŚé‡Ťć–°ĺŻç”¨ Adblock Plus 并重新载入该页面。"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus 没有屏蔽广告 (&v)"> -<!ENTITY typeSelector.heading "选择问é˘ç±»ĺž‹"> -<!ENTITY anonymity.warning "ć‘ä»¬ĺ°†ć— ćł•ĺ›žĺ¤Ťä˝ ďĽŚĺą¶ä¸”ćŠĄĺ‘ŠĺŹŻč˝č˘«ć”ľĺś¨čľä˝Žçš„äĽĺ…级次序。"> -<!ENTITY wizard.title "é—®é˘ćŠĄĺ‘Š"> -<!ENTITY issues.ownfilters.disable.label "ç¦ç”¨čż‡ć»¤č§„ĺ™"> -<!ENTITY commentPage.description "以下文本区ĺ…许您输入一些注释来帮助ć‘们更好地ç†č§ŁčŻĄé—®é˘ă€‚ -该ćĄéŞ¤č™˝ç„¶ćŻĺŹŻé€‰çš„ďĽŚä˝†ćŻĺ¦‚ćžśé—®é˘ä¸ŤćŻé‚Łäąćľč€Ść“č§çš„话,ć‘们 -推čŤć‚¨čľ“入一些注释。您可以在发é€äą‹ĺ‰Ťĺ†ŤćŁ€ćźĄä¸€ä¸‹ćŠĄĺ‘Šçš„ć•°ćŤ®ă€‚"> -<!ENTITY comment.lengthWarning "您输入的注释长度超过 1000 个ĺ—符。只有前 1000 个ĺ—符会被发é€ĺ‡şĺŽ»ă€‚"> -<!ENTITY typeSelector.falseNegative.description "如果 Adblock Plus 处于ĺŻç”¨çжć€ä˝†ä»Ťç„¶ćś‰ĺążĺ‘Šĺ‡şçŽ°ďĽŚčŻ·é€‰ć‹©ć¤é€‰éˇąă€‚"> -<!ENTITY sendPage.waitMessage "Adblock Plus ćŁĺś¨ćŹäş¤ć‚¨çš„报告,请稍ç‰ă€‚"> -<!ENTITY dataCollector.heading "欢迎使用问é˘ćŠĄĺ‘Šçł»ç»ź"> -<!ENTITY screenshot.heading "é™„ĺŠ ćŞĺ›ľ"> -<!ENTITY sendPage.heading "发é€ćŠĄĺ‘Š"> -<!ENTITY issues.subscriptionCount.description "您似乎订é…了太多的过滤规ĺ™ă€‚ć‘们不推čŤé‡‡ç”¨čż‡ĺ¤šçš„过滤规ĺ™č®˘é…ç»„ďĽŚĺ› ä¸şčż™ĺŹŻč˝äĽšĺ¸¦ćťĄč®¸ĺ¤šé—®é˘ă€‚ -并且ĺľćбć‰ć‘们不č˝ćŽĄĺŹ—ć‚¨çš„é—®é˘ćŠĄĺ‘ŠďĽŚĺ› ä¸şć‘们ĺľéšľĺĽ„清ćŻĺ“Şäş›čż‡ć»¤č§„ĺ™č®˘é…组的作者需č¦é‡‡ĺŹ–čˇŚĺŠ¨ă€‚čŻ·ç§»é™¤ć‰€ćś‰éťžĺż…č¦çš„过滤规ĺ™č®˘é…组,然ĺŽĺ†Ťćµ‹čݕ䏀䏋问é˘ćŻĺ¦čżĺ在。"> -<!ENTITY screenshot.mark.label "ć ‡č®°é—®é˘ (&M)"> -<!ENTITY privacyPolicy.label "éšç§ç–略"> -<!ENTITY issues.description "Adblock Plus 已经检测出您的设置可č˝ĺŻĽč‡´äş†čŻĄé—®é˘ć–者致使报告难以č°ç ”。"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sidebar.dtd deleted file mode 100644 index 3bda933..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "闪动ćľç¤şčŻĄéˇąç›®çš„čľąćˇ†"> -<!ENTITY address.label "地址"> -<!ENTITY context.open.label "ĺś¨ć–°ć ‡çľéˇµć‰“开"> -<!ENTITY type.label "类型"> -<!ENTITY tooltip.filterSource.label "过滤规ĺ™ćş:"> -<!ENTITY noitems.label "ć— ĺŹŻčż‡ć»¤éˇąç›®"> -<!ENTITY filter.label "过滤规ĺ™"> -<!ENTITY tooltip.size.label "大小:"> -<!ENTITY reattach.label "ĺ体"> -<!ENTITY search.label "ćśç´˘ďĽš (&S)"> -<!ENTITY docDomain.thirdParty "(第三方)"> -<!ENTITY filterSource.label "过滤规ĺ™ćş"> -<!ENTITY tooltip.docDomain.label "文档ćşďĽš"> -<!ENTITY context.copy.label "复ĺ¶éˇąç›®ĺś°ĺť€"> -<!ENTITY tooltip.type.label "类型:"> -<!ENTITY context.disablefilter.label "ç¦ç”¨čż‡ć»¤č§„ĺ™ ?1?"> -<!ENTITY context.copyFilter.label "复ĺ¶čż‡ć»¤č§„ĺ™"> -<!ENTITY context.block.label "过滤该项"> -<!ENTITY context.enablefilter.label "重新ĺŻç”¨čż‡ć»¤č§„ĺ™ ?1?"> -<!ENTITY detach.label "ĺ†ä˝“"> -<!ENTITY whitelisted.label "ĺ—ĺ…Ąç™˝ĺŤĺŤ•的页面"> -<!ENTITY context.disablefilteronsite.label "在 ?1? ç¦ç”¨čŻĄčż‡ć»¤č§„ĺ™"> -<!ENTITY detached.title "Adblock Plus: 可过滤项目 (ĺ†ä˝“式)"> -<!ENTITY docDomain.firstParty "(第一方)"> -<!ENTITY tooltip.type.whitelisted "(ç™˝ĺŤĺŤ•)"> -<!ENTITY tooltip.filter.label "已生ć•的过滤规ĺ™:"> -<!ENTITY tooltip.filter.disabled "(ĺ·˛ç¦ç”¨)"> -<!ENTITY context.editfilter.label "编辑过滤规ĺ™ćś‰ć•"> -<!ENTITY tooltip.type.blocked "(已过滤)"> -<!ENTITY size.label "大小"> -<!ENTITY context.whitelist.label "ĺ°†čŻĄéˇąĺŠ ĺ…Ąç™˝ĺŤĺŤ•"> -<!ENTITY context.selectAll.label "全选"> -<!ENTITY state.label "状ć€"> -<!ENTITY docDomain.label "文档ćş"> -<!ENTITY tooltip.address.label "地址:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/subscriptionSelection.dtd deleted file mode 100644 index 47596ee..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-CN/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "ĺŚć—¶ć·»ĺŠ čż‡ć»¤č§„ĺ™č®˘é…组 “?1?” (&s)"> -<!ENTITY list.download.failed "获取订é…组的过滤规ĺ™ĺ—表失败。"> -<!ENTITY list.download.retry "重试"> -<!ENTITY title.label "订é…ç»„çš„ć ‡é˘: (&t)"> -<!ENTITY list.download.website "查看站点"> -<!ENTITY supplementMessage "该过滤规ĺ™č®˘é…组意味着该订é…ç»„ĺ°†ä¸Žć‚¨ćśŞć·»ĺŠ çš„č®˘é…组 “?1?” 一起使用。"> -<!ENTITY viewList.label "查看过滤规ĺ™"> -<!ENTITY visitHomepage.label "查看主页"> -<!ENTITY addSubscription.label "ć·»ĺŠ č®˘é…组"> -<!ENTITY dialog.title "ć·»ĺŠ Adblock Plus 过滤规ĺ™č®˘é…组"> -<!ENTITY location.label "过滤规ĺ™ĺ—表位置: (&l)"> -<!ENTITY fromWeb.description "čŻ·çˇ®č®¤ć‚¨ĺ¸Śćś›ć·»ĺŠ čŻĄčż‡ć»¤č§„ĺ™č®˘é…ç»„ă€‚ĺś¨ć·»ĺŠ äą‹ĺ‰ŤďĽŚć‚¨ĺŹŻä»Ąć›´ć”ąč®˘é…ć ‡é˘ć–位置。"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/composer.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/composer.dtd deleted file mode 100644 index 6b49cb9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/composer.dtd +++ /dev/null @@ -1,33 +0,0 @@ -<!ENTITY anchor.end.label "網址çµĺ°ľ (&n)"> -<!ENTITY domainRestriction.label "網域é™ĺ¶: (&d)"> -<!ENTITY collapse.default.no.label "使用é č¨ĺ€Ľ (ĺ¦)"> -<!ENTITY firstParty.label "只é™ç¬¬ä¸€ć–ą (&r)"> -<!ENTITY preferences.label "顯示已有的條件... (&S)"> -<!ENTITY pattern.label "尋找條件"> -<!ENTITY thirdParty.label "只é™ç¬¬ä¸‰ć–ą (&T)"> -<!ENTITY filter.label "ć–°éŽćżľć˘ťä»¶: (&f)"> -<!ENTITY collapse.label "摺疊已é»ć“‹é …ç›®: (&l)"> -<!ENTITY match.warning "您輸入的條件č‡č©˛ç¶˛ĺť€ä¸Ťç¬¦ďĽŚć¤ć˘ťä»¶ä¸Ťćśç”źć•。"> -<!ENTITY anchor.start.label "網址開é (&g)"> -<!ENTITY matchCase.label "符ĺ大小寫 (&M)"> -<!ENTITY custom.pattern.label "自訂: (&C)"> -<!ENTITY unselectAllTypes.label "取ć¶ĺ…¨é¸"> -<!ENTITY type.whitelist.label "例外條件 (&x)"> -<!ENTITY regexp.warning "您輸入的條件將被解讀為ćŁč¦Źčˇ¨ç¤şćł•,使用ćŁč¦Źčˇ¨ç¤şćł•可č˝ćśä˝ż Adblock Plus 拖慢瀏覽速度。若您不打算使用ćŁč¦Źčˇ¨ç¤şĺĽŹďĽŚč«‹ĺś¨ć˘ťä»¶çµĺ°ľĺŠ ä¸Šćźč™ź (*)。"> -<!ENTITY dialog.title "新增 Adblock Plus éŽćżľć˘ťä»¶"> -<!ENTITY basic.label "基本檢視"> -<!ENTITY type.filter.label "éŽćżľć˘ťä»¶ (&B)"> -<!ENTITY types.label "套用類型:"> -<!ENTITY shortpattern.warning "您輸入的條件太çźç„ˇćł•最佳化,可č˝ćść‹–慢瀏覽速度。建č°ć‚¨é¸ć“‡čĽé•·çš„ĺ—串好讓 Adblock Plus 更有ć•率。"> -<!ENTITY collapse.yes.label "ćŻ"> -<!ENTITY anchors.label "ĺŹŞćŽĄĺŹ—ç‰ąĺ®šć ĽĺĽŹďĽš"> -<!ENTITY collapse.default.yes.label "使用é č¨ĺ€Ľ (ćŻ)"> -<!ENTITY domainRestriction.help "ć¤é¸é …可指定一個ć–多個網域,請用管線符號 (|) ĺ†éš”。若在網域ĺŤç¨±ĺ‰ŤĺŠ ä¸Šćł˘ćµŞç¬¦č™ź (~) 則表示條件不ćśĺĄ—用於該網域。"> -<!ENTITY accept.label "新增éŽćżľć˘ťä»¶"> -<!ENTITY options.label "é¸é …"> -<!ENTITY disabled.warning "Adblock Plus 目前已ĺśç”¨ă€‚您還ćŻĺŹŻä»Ąć–°ĺ˘žéŽćżľć˘ťä»¶ďĽŚä˝†é™¤éťžć‚¨ [link]啟用 Adblock Plus[/link],ĺ¦ĺ‰‡ä¸Ťćśç”źć•。"> -<!ENTITY anchor.start.flexible.label "網域ĺŤç¨±é–‹é (&g)"> -<!ENTITY collapse.no.label "ĺ¦"> -<!ENTITY selectAllTypes.label "ĺ…¨é¸"> -<!ENTITY advanced.label "進階檢視"> -<!ENTITY pattern.explanation "ć˘ťä»¶ć ĽĺĽŹĺŹŻä»ĄćŻç¶˛ĺť€çš„任一é¨ĺ†ďĽŚćźč™ź (*) 代表č¬ç”¨ĺ—ĺ…。éŽćżľć˘ťä»¶ĺŹŞćśĺĄ—用在符ĺć ĽĺĽŹçš„ç¶˛ĺť€ä¸Šă€‚"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/filters.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/filters.dtd deleted file mode 100644 index c953bc9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/filters.dtd +++ /dev/null @@ -1,72 +0,0 @@ -<!ENTITY restore.custom.warning "所有自訂條件é˝ćśč˘«é¸ä¸çš„檔ćˇć›żćŹ›ă€‚ć‚¨ç˘şĺ®šč¦é€™éşĽĺšĺ—ŽďĽź"> -<!ENTITY slow.column "慢速éŽćżľć˘ťä»¶ (&w)"> -<!ENTITY enabled.column "已啟用 (&n)"> -<!ENTITY subscription.lastDownload.checksumMismatch "失敗,驗č‰ç˘Ľä¸Ťç¬¦"> -<!ENTITY noFiltersInGroup.text "é¸ä¸çš„群組ćŻç©şçš„"> -<!ENTITY subscription.actions.label "操作"> -<!ENTITY filter.selectAll.label "ĺ…¨é¨é¸ĺŹ–"> -<!ENTITY backupButton.label "備份及還原 (&B)"> -<!ENTITY restore.minVersion.warning "č¦ĺ‘ŠďĽšé€™ĺ€‹ćŞ”ćˇç”±čĽć–°ç‰çš„ Adblock Plus 建立。從這個檔ćˇé‚„原前您應該ĺ…更新至最新ç‰çš„ Adblock Plus。"> -<!ENTITY restore.error "無法處ç†č©˛ćŞ”ćˇçš„čł‡ć–™ďĽŚäąźč¨±é€™ä¸ŤćŻ Adblock Plus 的備份檔?"> -<!ENTITY sort.ascending.label "&A > Z 排序"> -<!ENTITY sort.label "排序 (&S)"> -<!ENTITY subscription.source.label "條件ĺ—表"> -<!ENTITY hitcount.column "ĺ‘˝ä¸ć¬ˇć•¸ (&H)"> -<!ENTITY noFilters.text "您還沒有任何自訂條件。"> -<!ENTITY backup.custom.title "只有自訂條件"> -<!ENTITY subscription.external.label "由其他擴充套件更新"> -<!ENTITY subscription.delete.label "ĺŞé™¤"> -<!ENTITY noGroupSelected.text "您需č¦é¸ć“‡ä¸€ĺ€‹ć˘ťä»¶çľ¤çµ„才č˝éˇŻç¤şĺ…¶ä¸çš„éŽćżľć˘ťä»¶ă€‚"> -<!ENTITY filter.cut.label "剪下"> -<!ENTITY restore.default.label "還原至 ?1?"> -<!ENTITY subscription.lastDownload.inProgress "下載ä¸..."> -<!ENTITY subscriptions.tab.label "éŽćżľć˘ťä»¶é›†"> -<!ENTITY sort.descending.label "&Z > A 排序"> -<!ENTITY filters.remove.warning "您確定č¦ç§»é™¤ć‰€ćś‰é¸ä¸çš„éŽćżľć˘ťä»¶ďĽź"> -<!ENTITY filter.delete.label "ĺŞé™¤"> -<!ENTITY addSubscriptionAdd.label "ĺŠ ĺ…Ą"> -<!ENTITY viewMenu.label "檢視"> -<!ENTITY subscription.lastDownload.unknown "無法取得"> -<!ENTITY addSubscriptionCancel.label "取ć¶"> -<!ENTITY subscription.enabled.label "啟用"> -<!ENTITY noSubscriptions.text "您未訂閱任何éŽćżľć˘ťä»¶é›†ă€‚沒有éŽćżľć˘ťä»¶çš„話 Adblock Plus 不曉得該é»ć“‹ä»€éşĽďĽŚč«‹ä˝żç”¨"新增éŽćżľć˘ťä»¶é›†"ĺŠ ĺ…Ąă€‚"> -<!ENTITY subscription.update.label "ć›´ć–°éŽćżľć˘ťä»¶"> -<!ENTITY dialog.title "Adblock Plus 條件ĺŹĺĄ˝č¨ĺ®š"> -<!ENTITY addFilter.label "新增éŽćżľć˘ťä»¶ (&d)"> -<!ENTITY subscription.minVersion.warning "ć¤ć˘ťä»¶é›†éś€č¦ć–°ç‰çš„ Adblock Plus,您應該更新至最新ç‰ćś¬ă€‚"> -<!ENTITY subscription.lastDownload.invalidURL "失敗,無ć•的位址"> -<!ENTITY backup.error "條件寫入檔ćˇć™‚發生錯誤。請確定該檔ćˇć˛’有寫入保č·ć–ćŁč˘«ĺ…¶ä»–的程式使用。"> -<!ENTITY filter.moveUp.label "往上移"> -<!ENTITY addGroup.label "新增條件群組 (&g)"> -<!ENTITY filter.edit.label "編輯"> -<!ENTITY subscription.showHideFilters.label "顯示/隱藏éŽćżľć˘ťä»¶"> -<!ENTITY acceptableAds2.label "ĺ…許é¨ĺ†éťžäľµĺ…ĄĺĽŹĺ»Łĺ‘Š (&i)"> -<!ENTITY addSubscriptionOther.label "新增其他條件集"> -<!ENTITY close.label "é—śé–‰"> -<!ENTITY sort.none.label "不排序 (&U)"> -<!ENTITY filter.actions.label "條件操作"> -<!ENTITY filter.copy.label "複製"> -<!ENTITY filter.moveDown.label "往下移"> -<!ENTITY filter.resetHitCounts.label "重č¨ĺ‘˝ä¸çµ±č¨"> -<!ENTITY readMore.label "詳細內容"> -<!ENTITY subscription.moveUp.label "往上移"> -<!ENTITY addSubscription.label "新增éŽćżľć˘ťä»¶é›† (&f)"> -<!ENTITY subscription.homepage.label "首é "> -<!ENTITY backup.complete.title "所有條件和éŽćżľć˘ťä»¶é›†"> -<!ENTITY restore.own.label "從自己的備份還原"> -<!ENTITY restore.complete.warning "所有條件ĺŹĺĄ˝č¨ĺ®šé˝ĺ°‡č˘«é¸ä¸çš„檔ćˇć›żćŹ›ă€‚ć‚¨ç˘şĺ®šč¦é€™éşĽĺšĺ—ŽďĽź"> -<!ENTITY filters.tab.label "自訂條件"> -<!ENTITY backup.label "建立新的備份"> -<!ENTITY find.label "尋找 (&n)"> -<!ENTITY subscription.moveDown.label "往下移"> -<!ENTITY subscription.lastDownload.connectionError "失敗,檔ćˇä¸‹čĽ‰ĺ¤±ć•—"> -<!ENTITY subscription.lastDownload.success "ć功"> -<!ENTITY subscription.lastDownload.invalidData "失敗,無ć•çš„éŽćżľć˘ťä»¶ĺ—表"> -<!ENTITY filter.paste.label "貼上"> -<!ENTITY subscription.disabledFilters.enable "啟用所有條件"> -<!ENTITY lasthit.column "ćś€ĺľŚĺ‘˝ä¸ (&L)"> -<!ENTITY subscription.editTitle.label "編輯標題"> -<!ENTITY subscription.disabledFilters.warning "ć¤ć˘ťä»¶é›†ĺ…§ćś‰é¨ä»˝ć˘ťä»¶č˘«ĺśç”¨ă€‚"> -<!ENTITY filter.column "éŽćżľć˘ťä»¶ (&F)"> -<!ENTITY subscription.lastDownload.label "最後下載:"> -<!ENTITY viewList.label "檢視條件ĺ—表"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/firstRun.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/firstRun.properties deleted file mode 100644 index e0eda73..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/firstRun.properties +++ /dev/null @@ -1,20 +0,0 @@ -firstRun_feature_tracking_description=é»ć˘čż˝čą¤ĺŠźč˝ć‰Ťč˝é”ĺ°çśźćŁçš„隱密瀏覽 - ć¤ĺŠźč˝ĺŹŻä»Ąć“şč„«ćłç›Łč¦–您一č‰ä¸€ĺ‹•的廣告商。 -firstRun_toggle_off=é—śé–‰ -firstRun_feature_tracking=ĺśç”¨čż˝čठ-firstRun_feature_malware=ćˇć„Źč»źé«”éŽćżľ -firstRun_title=Adblock Plus 已安裝完ć -firstRun_acceptableAdsExplanation=ć‘們ćłéĽ“勵網站改採簡樸且不éŽć–Ľć¶çśĽçš„廣告。這也ćŻć‘們之所以建立<a>ĺš´ć Ľçš„č¦ŹçŻ„</a>來辨čéťžäľµĺ…ĄĺĽŹĺ»Łĺ‘Šçš„ĺŽźĺ› ďĽŚé€™ç¨®éˇžĺž‹çš„ĺ»Łĺ‘Šé č¨ćśéˇŻç¤şĺ‡şäľ†ă€‚若您仍ćłé»ć“‹ć‰€ćś‰çš„廣告,可以輕鬆地<a>ĺśç”¨ć¤ĺŠźč˝</a> 。 -firstRun_toggle_on=開啟 -firstRun_contributor_credits=貢獻ĺŤĺ–® -firstRun_dataCorruptionWarning=這個é 面一直跳出來嗎? <a>請看這裡ďĽ</a> -firstRun_acceptableAdsHeadline=從現在起,煩人的廣告é˝ĺ°‡ç…™ć¶é›˛ć•Ł -firstRun_share=告訴您的朋友 -firstRun_share_headline=<a>請助ć‘們一臂之力</a>,讓網路變得更美好 -firstRun_features=Adblock Plus 不只可以éŽćżľĺ»Łĺ‘Š -firstRun_feature_malware_description=éŽćżľćˇć„Źç¶˛ĺźźĺŹŻä˝żć‚¨çš„ç€Źč¦˝éŽç¨‹ć›´ĺŠ ĺ®‰ĺ…¨ă€‚ -firstRun_feature_social_description=自動擺脫如 Facebook Like 這類出現在網é 上追蹤您瀏覽習慣的社交按é•。 -firstRun_donate=贊助 -firstRun_donate_label=支援ć‘們的ĺ°ćˇ -firstRun_feature_social=ç§»é™¤ç¤ľäş¤ĺŞ’é«”ćŚ‰é• -firstRun_legacySafariWarning=您ćŁĺś¨ä˝żç”¨ Adblock Plus 所不支援的čŠç‰ Safari。這可č˝ĺ˝±éźżä˝żç”¨č€…體驗ć–導致功č˝ĺ¤±ĺ¸¸ă€‚ć‘們強ç建č°ĺ°‡ Safari 更新至 6.1.1 以上ç‰ćś¬ (OS X 10.8 Mountain Lion 系統),ć–更新至 Safari 7.0.1 (OS X 10.9 Mavericks 系統) 以上ç‰ćś¬ďĽŚć–可č€ć…®ć”ąç”¨ćś€ć–°ç‰çš„ Mozilla Firefox, Google Chrome ć– Opera。 -firstRun_filterlistsReinitializedWarning=It seems that an issue caused all filters to be removed and we were unable to restore a backup. Therefore we had to reset your filters and Acceptable Ads settings. Please check your filter lists and Acceptable Ads settings in the <a>Adblock Plus options</a>. diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/global.properties b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/global.properties deleted file mode 100644 index aa2de1d..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/global.properties +++ /dev/null @@ -1,41 +0,0 @@ -no_blocking_suggestions=ć¤é 面沒有可é»ć“‹çš„é …ç›® -action3_tooltip=點擊啟用ć–ĺśç”¨ Adblock Plus。 -notification_antiadblock_title=隱藏針對性的訊ćŻďĽź -type_label_script=程式碼 -filter_elemhide_nocriteria=沒有指定欲隱藏ĺ…ç´ çš„čľ¨čĺŤç¨± -blockingGroup_title=廣告é»ć“‹č¦Źĺ‰‡ -whitelisted_tooltip=Adblock Plus 在目前é 面ĺśç”¨ă€‚ -type_label_stylesheet=樣式表 -blocked_count_tooltip=?1? é …ďĽŚĺ…± ?2? é … -type_label_font=ĺ—é«” -type_label_popup=ĺ˝ĺ‡şĺĽŹč¦–窗 -filter_regexp_tooltip=ć¤ć˘ťä»¶ĺŹŻč˝ćŻćŁč¦Źčˇ¨ç¤şćł•ć–者太çźéś€č¦ćś€ä˝łĺŚ–ďĽŚĺ¤Şĺ¤šé€™éˇžéŽćżľć˘ťä»¶ćść‹–慢瀏覽速度。 -action0_tooltip=點擊展開功č˝čˇ¨ďĽŚćډä¸éŤµĺ‰‡ĺŹŻĺ•źç”¨/ĺśç”¨ Adblock Plus。 -whitelisted_page=Adblock Plus 已在目前é 面ĺśç”¨ -remove_group_warning=您確定č¦ç§»é™¤ć¤ć˘ťä»¶çľ¤çµ„嗎? -action1_tooltip=點擊開啟ć–關閉可é»ć“‹é …目清單,按ä¸éŤµĺ‰‡ĺŹŻĺ•źç”¨/ĺśç”¨ Adblock Plus。 -type_label_xmlhttprequest=XML 請求 -active_tooltip=Adblock Plus 已啟用,?1? 份條件集已訂閱,?2? 條自訂條件已使用。 -type_label_document=文件 -type_label_object_subrequest=物件ĺ請求 -whitelistGroup_title=例外條件 -disabled_tooltip=Adblock Plus ĺ·˛ĺśç”¨ă€‚ -filter_elemhide_duplicate_id=只č˝ćŚ‡ĺ®šä¸€ĺ€‹ ID 來隱藏該ĺ…ç´ -type_label_object=物件 -action2_tooltip=點擊開啟ĺŹĺĄ˝č¨ĺ®šč¦–窗,按ä¸éŤµĺ‰‡ĺŹŻĺ•źç”¨ć–ĺśç”¨ Adblock Plus。 -type_label_subdocument=é 框 -clearStats_warning=這ćśé‡Ťč¨ć‰€ćś‰çš„條件命ä¸çµ±č¨ä¸¦ĺśç”¨ĺ‘˝ä¸č¨ć•¸ĺ™¨ă€‚您確定č¦é€™éşĽĺšďĽź -notification_antiadblock_message=已知ć¤ç¶˛ç«™ćśĺ°Ť Adblock Plus 用ć¶éˇŻç¤şé‡ťĺ°Ťć€§çš„訊ćŻă€‚您希望 Adblock Plus 隱藏ĺ®ĺ€‘嗎? -blocked_count_addendum=(以及白ĺŤĺ–®: ?1?, 已隱藏: ?2?) -subscription_invalid_location=條件集網址ć–檔ćˇĺŤç¨±ç„ˇć•。 -type_label_image=圖片 -remove_subscription_warning=您確定č¦ç§»é™¤ć¤ć˘ťä»¶é›†ĺ—ŽďĽź -type_label_other=ĺ…¶ä»– -mobile_menu_enable=ABP:啟用 -type_label_media=音訊/影片 -mobile_menu_disable_site=ABP:在 ?1? ĺśç”¨ -elemhideGroup_title=ĺ…ç´ éš±č—Źč¦Źĺ‰‡ -mobile_menu_enable_site=ABP:在 ?1? 啟用 -type_label_elemhide=隱藏 -newGroup_title=新的條件群組 -default_dialog_title=Adblock Plus diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/overlay.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/overlay.dtd deleted file mode 100644 index 76a2b80..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/overlay.dtd +++ /dev/null @@ -1,32 +0,0 @@ -<!ENTITY notification.button.yes "&確定"> -<!ENTITY notification.button.no "&取ć¶"> -<!ENTITY sync.label "ĺŚćĄ Adblo&ck Plus č¨ĺ®šĺ€Ľ"> -<!ENTITY whitelist.site.label "在 ?1? ĺśç”¨"> -<!ENTITY filters.label "條件ĺŹĺĄ˝č¨ĺ®š (&F)"> -<!ENTITY disable.label "完全ĺśç”¨"> -<!ENTITY objecttab.title "é»ć“‹"> -<!ENTITY objecttab.tooltip "按這裡用 Adblock Plus é»ć“‹ć¤ç‰©ä»¶"> -<!ENTITY menuitem.label "Ad&block Plus ĺŹĺĄ˝č¨ĺ®š"> -<!ENTITY objecttabs.label "Flash ĺ’Ś Java 物件上顯示標籤 (&t)"> -<!ENTITY sendReport.label "ĺ›žĺ ±ć¤é 面錯誤 (&R)"> -<!ENTITY whitelist.page.label "只在ć¤é 面ĺśç”¨"> -<!ENTITY context.image.label "Adblock Plus:é»ć“‹ĺś–片"> -<!ENTITY counthits.label "č¨ç®—條件命ä¸ć¬ˇć•¸ (&h)"> -<!ENTITY opensidebar.label "開啟可é»ć“‹é …ç›® (&b)"> -<!ENTITY notification.button.close "&é—śé–‰"> -<!ENTITY contribute.label "贊助 Adblock Plus"> -<!ENTITY toolbarbutton.label "Adblock Plus"> -<!ENTITY context.frame.label "Adblock Plus:é»ć“‹é 框"> -<!ENTITY blocked.tooltip "ć¤é ĺ·˛é»ć“‹é …ç›®:"> -<!ENTITY hideplaceholders.label "隱藏已é»ć“‹ĺ…ç´ ć‰€ä˝”ç”¨çš„ç©şé–“ (&l)"> -<!ENTITY showinstatusbar.label "在狀態ĺ—顯示 (&s)"> -<!ENTITY sidebar.title "本é 可é»ć“‹é …ç›®"> -<!ENTITY options.label "é¸é … (&O)"> -<!ENTITY context.object.label "Adblock Plus:é»ć“‹ç‰©ä»¶"> -<!ENTITY context.removeWhitelist.label "Adblock Plus:ć¤é 不č¨ç‚şç™˝ĺŤĺ–®"> -<!ENTITY filters.tooltip "最活躍的條件:"> -<!ENTITY closesidebar.label "關閉可é»ć“‹é …ç›® (&b)"> -<!ENTITY showintoolbar.label "在工具ĺ—顯示 (&b)"> -<!ENTITY status.tooltip "狀態:"> -<!ENTITY context.media.label "Adblock Plus:é»ć“‹éźłč¨Š/影片"> -<!ENTITY subscription.update.label "ć›´ć–°éŽćżľć˘ťä»¶"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sendReport.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sendReport.dtd deleted file mode 100644 index 8e93337..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sendReport.dtd +++ /dev/null @@ -1,66 +0,0 @@ -<!ENTITY screenshot.undo.label "復原 (&U)"> -<!ENTITY issues.disabledgroups.description "下ĺ—éŽćżľć˘ťä»¶é›†/條件群組已ĺśç”¨ďĽŚĺ®ĺ€‘將無法在ć¤é 面發揮作用:"> -<!ENTITY showData.label "éˇŻç¤şĺ ±ĺ‘Ščł‡ć–™"> -<!ENTITY typeSelector.falsePositive.label "Adblock Plus 擋了太多東西 (&m)"> -<!ENTITY issues.change.description "您的č¨ĺ®šĺ€Ľĺ·˛č®Šć›´ă€‚請在重新載入é 面後測試錯誤ćŻĺ¦ä»Ťç„¶ĺ在,若錯誤依čŠĺ在,請傳é€éŚŻčŞ¤ĺ ±ĺ‘Šă€‚"> -<!ENTITY email.label "E&mail:"> -<!ENTITY issues.openPreferences.label "開啟條件ĺŹĺĄ˝č¨ĺ®š"> -<!ENTITY sendPage.confirmation "ĺ ±ĺ‘Šĺ·˛ĺ„˛ĺ。您可以在下ĺ—網址ĺ取:"> -<!ENTITY copyLink.label "č¤‡čŁ˝ĺ ±ĺ‘Šé€Łçµ (&C)"> -<!ENTITY issues.nofilters.description "Adblock Plus 在ć¤é 面沒有é»ć“‹ä»»ä˝•ćť±čĄżă€‚ć‚¨ĺ›žĺ ±çš„éŚŻčŞ¤ĺŹŻč˝ĺ’Ś Adblock Plus 無關。"> -<!ENTITY sendPage.knownIssue "ć‚¨ĺ›žĺ ±çš„éŚŻčŞ¤ĺ·˛é‡Ťč¤‡ă€‚ćŞ˘č¦–ć›´ĺ¤ščł‡č¨Š:"> -<!ENTITY typeSelector.other.description "é¸ć“‡ć¤é¸é …čˇ¨ç¤şćś‰ĺ…¶ä»–éŚŻčŞ¤ç™Ľç”źďĽŚč€Śä¸”ć‚¨ć‡·ç–‘ćŻ Adblock Plus 本身引起而非éŽćżľć˘ťä»¶é€ ć的錯誤。"> -<!ENTITY issues.disabledgroups.enable.label "啟用éŽćżľć˘ťä»¶é›†/條件群組"> -<!ENTITY typeWarning.override.label "ć‘äş†č§Łä¸¦ĺ …ćŚč¦ĺ‚łé€éŚŻčŞ¤ĺ ±ĺ‘Š (&s)"> -<!ENTITY issues.disabled.enable.label "啟用 Adblock Plus"> -<!ENTITY update.fixed.description "éŽćżľć˘ťä»¶é›†ć›´ć–°ĺľŚĺľĺŹŻč˝č§Łć±şäş†ć‚¨ćŁč¦ĺ›žĺ ±çš„問題。請重新載入網é ĺľŚĺ†Ťč©¦ä¸€ć¬ˇďĽŚč‹Ąĺ•ŹéˇŚä»Ťĺś¨č«‹ĺ†Ťć¬ˇĺ›žĺ ±ă€‚"> -<!ENTITY anonymous.label "以匿ĺŤć–ąĺĽŹćŹäş¤"> -<!ENTITY reloadButton.label "重新載入é 面 (&R)"> -<!ENTITY recentReports.clear.label "ç§»é™¤ć‰€ćś‰éŚŻčŞ¤ĺ ±ĺ‘Š (&R)"> -<!ENTITY typeSelector.description "本視窗ćśä¸€ćĄćĄćŚ‡ĺ°Žć‚¨ĺ‚łé€ä¸€ä»˝ Adblock Plus éŚŻčŞ¤ĺ ±ĺ‘Šă€‚é¦–ĺ…,請é¸ć“‡ć‚¨ĺś¨ć¤é 面碰ĺ°çš„錯誤類型:"> -<!ENTITY screenshot.remove.label "移除敏感資料 (&R)"> -<!ENTITY issues.ownfilters.description "套用ĺ°ć¤é 面ä¸çš„條件有é¨ä»˝ćŻç”±ä˝żç”¨č€…定義的。請ĺśç”¨é€™äş›éŽćżľć˘ťä»¶ďĽŚé€™ĺľĺŹŻč˝ĺ°±ćŻĺ°Žč‡´éŚŻčŞ¤ç™Ľç”źçš„ĺŽźĺ› ďĽš"> -<!ENTITY update.inProgress.description "Adblock Plus 需č¦ć›´ć–°ć‚¨çš„éŽćżľć˘ťä»¶é›†äľ†ç˘şĺ®šé€™ĺ€‹ĺ•ŹéˇŚä»ŤćśŞč§Łć±şă€‚請稍候…"> -<!ENTITY sendPage.retry.label "再次傳é€"> -<!ENTITY data.label "ĺ ±ĺ‘Ščł‡ć–™: (&p)"> -<!ENTITY recentReports.label "ć‚¨ćś€čż‘çš„éŚŻčŞ¤ĺ ±ĺ‘Š"> -<!ENTITY typeWarning.description "您表示č¦ĺ›žĺ ±çš„éŚŻčŞ¤ćŻ Adblock Plus 本身的錯誤而非éŽćżľć˘ťä»¶ĺĽ•čµ·çš„éŚŻčŞ¤ă€‚č«‹ćł¨ć„ŹďĽŚé€™éˇžéŚŻčŞ¤ćś€ĺĄ˝ĺ° [link]Adblock Plus 討論區[/link] ä¸Šĺ›žĺ ±ă€‚ĺŹŞćś‰ç‚şč¨Žč«–ä¸˛ä˝śčŁśĺ……ć™‚ć‰Ťć‡‰č©˛ä˝żç”¨éŚŻčŞ¤ĺ›žĺ ±ĺ™¨ďĽŚć˛’ćś‰äşşćśĺŻźč¦şć‚¨çš„éŚŻčŞ¤ĺ ±ĺ‘Šç¶˛ĺť€ďĽŚé™¤éťžć‚¨ĺ°‡é€Łçµč˛Ľĺ‡şäľ†ă€‚ - çµĺś¨ĺ‚łé€ć功之後ćśč‡Şĺ‹•產生。"> -<!ENTITY issues.disabled.description "Adblock Plus ĺ·˛ĺśç”¨ďĽŚç›®ĺ‰Ťç‹€ć…‹ä¸‹ä¸Ťćśé»ć“‹ä»»ä˝•網é 內容。"> -<!ENTITY attachExtensions.label "é™„ĺŠ ç›®ĺ‰Ťĺ•źç”¨çš„ć“´ĺ……ĺĄ—ä»¶ĺ—čˇ¨č‡łĺ ±ĺ‘Šä¸ďĽŚä»ĄäľżćŽ’é™¤ĺ› ĺĄ—ä»¶čˇťçŞć‰€ç”˘ç”źçš„問題 (&x)"> -<!ENTITY issues.nosubscriptions.add.label "訂閱éŽćżľć˘ťä»¶é›†"> -<!ENTITY issues.disabledfilters.enable.label "啟用éŽćżľć˘ťä»¶"> -<!ENTITY issues.override.label "č¨ĺ®šĺ€ĽćŻćŁç˘şçš„ďĽŚçąĽçşŚĺ›žĺ ±éŚŻčŞ¤ (&c)"> -<!ENTITY issues.nosubscriptions.description "您似乎沒有訂閱任何éŽćżľć˘ťä»¶é›†ďĽŚč¨‚é–±éŽćżľć˘ťä»¶é›†ĺŹŻč‡Şĺ‹•ç§»é™¤č‡ç¶˛é 內容無關的廣告。"> -<!ENTITY typeSelector.falsePositive.description "é¸ć“‡ć¤é¸é …表示網é 缺少了主č¦ĺ…§ĺ®ąă€éˇŻç¤şéŚŻčŞ¤ć–功č˝ç•°ĺ¸¸ă€‚您可以暫時ĺśç”¨ Adblock Plus 後再試一次,若ĺśç”¨ĺľŚĺ•ŹéˇŚć¶ĺ¤±ďĽŚĺ‰‡ĺľĺŹŻč˝ĺ°±ćŻ Adblock Plus 的問題。"> -<!ENTITY typeSelector.other.label "其他問題 (&t)"> -<!ENTITY emailComment.label "建č°ć‚¨čĽ¸ĺ…Ąćś‰ć•的電ĺéµä»¶ä˝Ťĺť€ďĽŚĺ¦‚ć¤ć‘們才č˝ĺś¨ćś‰ç–‘問時連絡您。這也ćśç”¨äľ†čľ¨č您所ćŹäş¤çš„ĺ ±ĺ‘ŠďĽŚä¸¦ćŹé«ĺ…¶ĺ„Şĺ…權。"> -<!ENTITY issues.whitelist.remove.label "在ć¤é 面重新啟用 Adblock Plus"> -<!ENTITY outdatedSubscriptions.description "下ĺ—çš„éŽćżľć˘ťä»¶é›†č‡łĺ°‘兩個ćźćśźć˛’有更新。請在é€ĺ‡şĺ ±ĺ‘Šĺ‰Ťć›´ć–°é€™äş›ć˘ťä»¶é›†ďĽŚčŞŞä¸Ťĺ®šĺ•ŹéˇŚĺ·˛ç¶“č§Łć±şäş†ă€‚"> -<!ENTITY dataCollector.description "請稍候,Adblock Plus ćŁĺś¨č’集必č¦çš„資料。"> -<!ENTITY sendButton.label "傳é€ĺ ±ĺ‘Š (&n)"> -<!ENTITY comment.label "備註 (é¸ç”¨): (&C)"> -<!ENTITY sendPage.errorMessage "ĺ—試傳é€ĺ ±ĺ‘Šĺ¤±ć•—,錯誤碼 "?1?"。請確定您已連上網路後再試一次。若依čŠĺ¤±ć•—ďĽŚč«‹ĺ° [link]Adblock Plus 討論區[/link] 尋求協助。"> -<!ENTITY showRecentReports.label "顯示最近傳é€çš„éŚŻčŞ¤ĺ ±ĺ‘Š"> -<!ENTITY commentPage.heading "輸入註解"> -<!ENTITY update.start.label "立即更新"> -<!ENTITY issues.disabledfilters.description "下ĺ—éŽćżľć˘ťä»¶ĺ·˛ĺśç”¨ďĽŚĺ®ĺ€‘將無法在ć¤é 面發揮作用:"> -<!ENTITY screenshot.description "ĺŚć¨Łçš„é 面每個人看ĺ°çš„ć…ćłĺŹŻč˝é˝ä¸ŤĺŚă€‚é™„ĺŠ čž˘ĺą•ć“·ĺś–ĺ°ĺ ±ĺ‘Šä¸ĺŹŻä»Ąĺą«ĺŠ©ć‘們更了解問題所在。您可以ĺ…移除包ĺ«ć•Źć„źčł‡č¨Šçš„é¨ä»˝ďĽŚäąźĺŹŻä»Ąć¨™ç¤şĺ•ŹéˇŚç™Ľç”źçš„ĺŤ€ĺźźďĽŚä˝żĺ…¶ć›´ç‚şé†’ç›®ă€‚ĺŹŞč¦ćŚ‰ä¸‹ç›¸ć‡‰çš„ćŚ‰é•ä¸¦ç”¨ć»‘éĽ ĺś¨ĺś–ç‰‡ä¸Šé¸ĺŹ–ĺŤłĺŹŻă€‚"> -<!ENTITY screenshot.attach.label "é™„ĺŠ é 面圖片ĺ°ĺ ±ĺ‘Šä¸ (&t)"> -<!ENTITY issues.whitelist.description "Adblock Plus ĺś¨ć‚¨ç›®ĺ‰Ťĺ›žĺ ±çš„é 面ä¸ĺśç”¨ă€‚請在é€ĺ‡şĺ ±ĺ‘Šĺ‰Ťĺ†Ťć¬ˇĺ•źç”¨ä¸¦é‡Ťć–°čĽ‰ĺ…Ąč©˛ç¶˛é 以協助調查。"> -<!ENTITY typeSelector.falseNegative.label "Adblock Plus 沒有擋掉廣告 (&v)"> -<!ENTITY typeSelector.heading "é¸ć“‡ĺ•ŹéˇŚéˇžĺž‹"> -<!ENTITY anonymity.warning "ć‘們將無法čŻçµˇć‚¨ďĽŚä¸”ć¤ĺ ±ĺ‘Šçš„優ĺ…權可č˝ćśç›¸ĺ°ŤčĽä˝Žă€‚"> -<!ENTITY wizard.title "éŚŻčŞ¤ĺ›žĺ ±ĺ™¨"> -<!ENTITY issues.ownfilters.disable.label "ĺśç”¨éŽćżľć˘ťä»¶"> -<!ENTITY commentPage.description "下面的文ĺ—方塊可以讓您輸入額外的註解,以幫助ć‘們更了解問題所在。這個ćĄé©źä¸ŤćŻĺż…é 的,但若問題不太ćŽéˇŻć™‚é‚„ćŻĺ»şč°ć‚¨é€™éşĽĺšă€‚ĺś¨ĺ›žĺ ±äą‹ĺ‰Ťć‚¨äąźĺŹŻä»ĄćŞ˘č¦–ĺ ±ĺ‘Ščł‡ć–™ă€‚"> -<!ENTITY comment.lengthWarning "ć‚¨čĽ¸ĺ…Ąçš„č¨»č§Łč¶…éŽ 1000 個ĺ—ĺ…。只有前 1000 個ĺ—ĺ…ćśč˘«ĺ‚łé€ă€‚"> -<!ENTITY typeSelector.falseNegative.description "é¸ć“‡ć¤é¸é …表示雖然已啟用 Adblock Plus,但廣告依然顯示在網é ä¸ă€‚"> -<!ENTITY sendPage.waitMessage "請稍候,Adblock Plus ćŁĺś¨ĺ‚łé€ć‚¨çš„ĺ ±ĺ‘Šă€‚"> -<!ENTITY dataCollector.heading "ćˇčżŽä˝żç”¨éŚŻčŞ¤ĺ›žĺ ±ĺ™¨"> -<!ENTITY screenshot.heading "é™„ĺŠ čž˘ĺą•ć“·ĺś–"> -<!ENTITY sendPage.heading "傳é€ĺ ±ĺ‘Š"> -<!ENTITY issues.subscriptionCount.description "您似乎訂閱了éŽĺ¤šçš„éŽćżľć˘ťä»¶é›†ă€‚ć‘們不建č°é€™éşĽĺšďĽŚé€™ĺŹŻč˝ćśĺ˘žĺŠ ç™Ľç”źéŚŻčŞ¤çš„ć©źçŽ‡ă€‚ĺŚć™‚ć‘ĺ€‘ç„ˇćł•ćŽĄĺŹ—ć‚¨çš„éŚŻčŞ¤ĺ›žĺ ±ďĽŚĺ› ç‚şé‚„ä¸Ťć¸…ćĄšćŻĺ“Şä˝Ťć˘ťä»¶é›†ä˝śč€…需č¦ĺšĺ‡şäż®ćŁă€‚請移除不重č¦çš„éŽćżľć˘ťä»¶é›†ĺľŚĺ†Ťč©¦ä¸€ć¬ˇďĽŚçś‹çś‹éŚŻčŞ¤ćŻĺ¦ä»Ťćśç™Ľç”źă€‚"> -<!ENTITY screenshot.mark.label "標示問題所在 (&M)"> -<!ENTITY privacyPolicy.label "éš±ç§ć¬Šć”żç–"> -<!ENTITY issues.description "Adblock Plus ĺµć¸¬ĺ°ć‚¨çš„č¨ĺ®šĺ€ĽĺŹŻč˝ĺ°Žč‡´ĺ•ŹéˇŚç™Ľç”źďĽŚć–使調查變得難以進行。"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sidebar.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sidebar.dtd deleted file mode 100644 index b25a6ce..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/sidebar.dtd +++ /dev/null @@ -1,35 +0,0 @@ -<!ENTITY context.flash.label "é–çŤç‰©ä»¶é‚Šćˇ†"> -<!ENTITY address.label "位址"> -<!ENTITY context.open.label "ć–Ľć–°ĺ†é 開啟"> -<!ENTITY type.label "類型"> -<!ENTITY tooltip.filterSource.label "條件來ćşďĽš"> -<!ENTITY noitems.label "無可é»ć“‹é …ç›®"> -<!ENTITY filter.label "éŽćżľć˘ťä»¶"> -<!ENTITY tooltip.size.label "大小:"> -<!ENTITY reattach.label "固定"> -<!ENTITY search.label "ćśĺ°‹ďĽš (&S)"> -<!ENTITY docDomain.thirdParty "(第三方)"> -<!ENTITY filterSource.label "條件來ćş"> -<!ENTITY tooltip.docDomain.label "文件來ćşďĽš"> -<!ENTITY context.copy.label "č¤‡čŁ˝é …ç›®ä˝Ťĺť€"> -<!ENTITY tooltip.type.label "類型:"> -<!ENTITY context.disablefilter.label "ĺśç”¨éŽćżľć˘ťä»¶ ?1?"> -<!ENTITY context.copyFilter.label "複製éŽćżľć˘ťä»¶"> -<!ENTITY context.block.label "é»ć“‹ć¤é …ç›®"> -<!ENTITY context.enablefilter.label "重新啟用éŽćżľć˘ťä»¶ ?1?"> -<!ENTITY detach.label "ĺ†é›˘"> -<!ENTITY whitelisted.label "ć¤é éť˘ĺ·˛ĺŠ ĺ…Ąç™˝ĺŤĺ–®"> -<!ENTITY context.disablefilteronsite.label "在 ?1? ĺśç”¨ć¤éŽćżľć˘ťä»¶"> -<!ENTITY detached.title "Adblock Plus:可é»ć“‹é …ç›®ďĽĺ·˛ĺ†é›˘ďĽ‰"> -<!ENTITY docDomain.firstParty "(第一方)"> -<!ENTITY tooltip.type.whitelisted "(ç™˝ĺŤĺ–®)"> -<!ENTITY tooltip.filter.label "作用ä¸çš„條件:"> -<!ENTITY tooltip.filter.disabled "(ĺ·˛ĺśç”¨)"> -<!ENTITY context.editfilter.label "編輯作用ä¸çš„條件"> -<!ENTITY tooltip.type.blocked "(ĺ·˛é»ć“‹)"> -<!ENTITY size.label "大小"> -<!ENTITY context.whitelist.label "ĺ°‡ć¤é …ç›®ĺŠ ç‚şäľ‹ĺ¤–ć˘ťä»¶"> -<!ENTITY context.selectAll.label "ĺ…¨é¸"> -<!ENTITY state.label "狀態"> -<!ENTITY docDomain.label "文件來ćş"> -<!ENTITY tooltip.address.label "位址:"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/subscriptionSelection.dtd b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/subscriptionSelection.dtd deleted file mode 100644 index 2752cd1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/locale/zh-TW/subscriptionSelection.dtd +++ /dev/null @@ -1,12 +0,0 @@ -<!ENTITY addMain.label "一併訂閱 "?1?" 條件集 (&s)"> -<!ENTITY list.download.failed "接收條件集清單失敗。"> -<!ENTITY list.download.retry "再試一次"> -<!ENTITY title.label "éŽćżľć˘ťä»¶é›†ĺŤç¨±ďĽš (&t)"> -<!ENTITY list.download.website "é€ č¨Şç¶˛ç«™"> -<!ENTITY supplementMessage "ć¤éŽćżľć˘ťä»¶é›†éś€č¦č‡ć‚¨ĺ°šćśŞč¨‚閱的 "?1?" ĺŚć™‚使用。"> -<!ENTITY viewList.label "檢視éŽćżľć˘ťä»¶"> -<!ENTITY visitHomepage.label "é€ č¨Şé¦–é "> -<!ENTITY addSubscription.label "新增éŽćżľć˘ťä»¶é›†"> -<!ENTITY dialog.title "新增 Adblock Plus éŽćżľć˘ťä»¶é›†"> -<!ENTITY location.label "éŽćżľć˘ťä»¶é›†ä˝Ťĺť€ďĽš (&l)"> -<!ENTITY fromWeb.description "請確認您ćŻĺ¦č¦č¨‚閱這個條件集。訂閱前您可以變更條件集標題ć–位址。"> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-icon-big.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-icon-big.png Binary files differdeleted file mode 100644 index 85cce1c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-icon-big.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-16.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-16.png Binary files differdeleted file mode 100644 index c3abf18..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-16.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-32.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-32.png Binary files differdeleted file mode 100644 index da2a318..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status-32.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status.png Binary files differdeleted file mode 100644 index a1c4e0b..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/abp-status.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/ajax-loader.gif b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/ajax-loader.gif Binary files differdeleted file mode 100644 index a642494..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/ajax-loader.gif +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-main.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-main.png Binary files differdeleted file mode 100644 index 464a997..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-main.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-share.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-share.png Binary files differdeleted file mode 100644 index b572b56..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background-share.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background.png Binary files differdeleted file mode 100644 index bb19387..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/background.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/checkbox.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/checkbox.png Binary files differdeleted file mode 100644 index ba6c53e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/checkbox.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/close.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/close.png Binary files differdeleted file mode 100644 index a4aaf5c..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/close.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/composer.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/composer.css deleted file mode 100644 index da75ba4..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/composer.css +++ /dev/null @@ -1,77 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -/* - * Force left-to-right everywhere where we are displaying addresses - */ -.suggestion > .radio-label-box:-moz-locale-dir(rtl), -html|*.textbox-input:-moz-locale-dir(rtl) -{ - direction: ltr; - text-align: end; -} - -#patternGroup { - overflow: auto; -} - -#anchorGroup { - padding-left: 20px; -} - -#typeGroupLabel { - margin-top: 10px; -} - -#typeGroup { - overflow: auto; - margin-bottom: 10px -} - -:root:not([advancedMode="true"]) #options { - display: none; -} - -#disabledWarning, #groupDisabledWarning, #regexpWarning, #shortpatternWarning, #matchWarning { - color: #E00000; -} - -#disabledWarning > *, #groupDisabledWarning > * { - margin: 0px; - font-size: inherit; -} - -.text-link { - font-size: 80%; - -moz-user-focus: ignore; -} - -.help { - color: #0000E0; - border-bottom: 1px dotted #0000E0; - cursor: help; - margin: 0px; - padding: 0px; -} - -tooltip { - /* Gecko 1.8.1 doesn't support multiline tooltips :-( */ - max-width: none; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/donate.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/donate.png Binary files differdeleted file mode 100644 index 3e77b37..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/donate.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/malware.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/malware.png Binary files differdeleted file mode 100644 index 9b51b63..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/malware.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/social.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/social.png Binary files differdeleted file mode 100644 index a2af1ea..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/social.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/tracking.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/tracking.png Binary files differdeleted file mode 100644 index a8727a9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/features/tracking.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/filters.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/filters.css deleted file mode 100644 index a4ea586..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/filters.css +++ /dev/null @@ -1,221 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -#buttons -{ - margin-top: 10px; -} - -#noSubscriptions -{ - font-style: italic; -} - -.localeMatch -{ - font-weight: bold; -} -.selectSubscriptionItem -{ - margin: 0px; -} - -.subscription -{ - padding: 5px; -} -.subscription:not(:last-child) -{ - border-bottom: 1px solid rgba(0, 0, 0, 0.25); -} -.subscription:not([selected="true"]) > .disabled -{ -} - -.subscription:not([selected="true"]) > .disabled .titleBox -{ - color: #808080; -} -.subscription:not([selected="true"]) > .disabled .status -{ - color: #808080; -} - -.titleBox .title, -.titleBox > .titleEditor -{ - font-weight: bold; -} - -.subscription description, .subscription textbox -{ - margin: 0px !important; - padding: 0px !important; - border-width: 0px !important; - -moz-appearance: none !important; -} - -.subscription .link -{ - text-decoration: underline; - cursor: pointer; -} - -.subscription .warning -{ - color: #FF0000; -} - -.enabledCheckbox -{ - padding: 2px; - -moz-margin-end: 10px; -} -.enabledCheckbox:focus -{ - outline: 1px dotted gray; -} -.enabledCheckbox .checkbox-label-box -{ - display: none; -} - -.actionButton -{ - font: -moz-info; -} - -splitter -{ - border-width: 0px !important; -} - -#filtersTooltip -{ - max-width: none; -} - -.tooltipLabel -{ - font-weight: bold; - -moz-margin-end: 10px; -} - -#tooltip-additional -{ - color: #C00000; - margin-top: 10px; -} - -tree -{ - margin: 0px; -} - -#col-slow { - text-align: center; -} - -#col-hitcount, #col-lasthit { - text-align: right; -} - -#col-hitcount -{ - min-width: 60px; -} -#col-enabled -{ - min-width: 48px; -} -#col-slow -{ - min-width: 30px; -} - -/* - * Force left-to-right for filter text but not comments - */ -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-invalid), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-whitelist), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-filterlist), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-elemhide), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-elemhideexception) -{ - direction: ltr; - text-align: end; -} - -treechildren::-moz-tree-cell-text(col-filter, dummy-true) -{ - font-style: italic; -} - -treechildren::-moz-tree-cell-text(col-filter, type-whitelist, selected-false), -treechildren::-moz-tree-cell-text(col-filter, type-elemhideexception, selected-false) -{ - color: #008000; -} - -treechildren::-moz-tree-cell-text(col-filter, type-elemhide, selected-false) -{ - color: #000080; -} - -treechildren::-moz-tree-cell-text(col-slow) -{ - font-size: 0px; -} - -treechildren::-moz-tree-cell-text(col-filter, disabled-true, selected-false) -{ - color: #808080; -} - -treechildren::-moz-tree-cell-text(col-filter, type-comment, selected-false) -{ - color: #808080; -} - -treechildren::-moz-tree-cell-text(col-filter, type-invalid, selected-false) -{ - color: #C00000; -} - -treechildren::-moz-tree-image(col-enabled, disabled-true) -{ - list-style-image: url(checkbox.png); - -moz-image-region: rect(13px 13px 26px 0px); -} - -treechildren::-moz-tree-image(col-enabled, disabled-false) -{ - list-style-image: url(checkbox.png); - -moz-image-region: rect(0px 13px 13px 0px); -} - -treechildren::-moz-tree-image(col-slow, slow-true) -{ - list-style-image: url(slow.png); -} - -.findbar-highlight -{ - display: none; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/firstRun.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/firstRun.css deleted file mode 100644 index 7a02ad6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/firstRun.css +++ /dev/null @@ -1,588 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@font-face { - font-family: 'CreteRound'; - font-style: normal; - src: url(fonts/CreteRound-Regular.otf); - src: local ('Ă'), - /*local ('Ă') forces using no local font called CreteRound*/ - url(fonts/CreteRound-Regular.otf) format('otf'); -} - -@font-face { - font-family: 'CreteRound'; - font-style: italic; - src: url(fonts/CreteRound-Italic.otf); - src: local ('Ă'), - /*local ('Ă') forces using no local font called CreteRound*/ - url(fonts/CreteRound-Italic.otf) format('otf'); -} - -body -{ - font-family: Helvetica, Arial, sans-serif; - font-size: 15px; - line-height: 140%; - color: #7f776b; - background-color: #f8f6f2; - background-image: url(background-main.png); - margin: 0; - padding: 0; -} - -a, a:link, a:visited -{ - color: #5a84b3; - text-decoration: underline; -} - -a:hover -{ - text-decoration: none; -} - -button -{ - cursor: pointer; -} - -ul -{ - margin: 0; - padding: 0; -} - -li -{ - margin: 0; - padding: 0; - list-style-type: none; -} - -header -{ - background-image: url(background.png); - background-repeat: repeat-x; - width: 100%; - padding: 40px 0 0 0; -} - -header h1 -{ - font-size: 24px; - font-weight: normal; - color: #57ab5b; - text-align: center; - margin: 21px auto; - padding: 16px 0 14px 0; - border: 1px #57ab5b; - border-style: dashed none; - /* border parallel fix - 957px is the value - * closest to 960px(page width) which makes - * the dashed border parallel - */ - max-width: 957px; -} - -h1,h2,h3 -{ - font-family: CreteRound, Helvetica, Arial, sans-serif; -} - -h2 -{ - font-size: 26px; - font-weight: lighter; - color: #968d81; - line-height: 28px; - text-align: center; - margin: 0; - padding: 0; -} - -h3 -{ - font-size: 22px; - color: #7F776B; - font-weight: normal; - margin: 0 0 10px 0; - padding: 0; - line-height: 24px; -} - -h4 -{ - font-size: 15px; - color: #7f776b; - font-weight: normal; - text-align: center; - margin: 0; - padding: 0; -} - -section -{ - margin: 0 auto; - margin-bottom: 30px; - max-width: 760px; - background-image: url(background.png); - padding: 40px 100px; -} - -section > p -{ - margin: 15px 0 0 0; -} - -#logo -{ - margin: 0 auto; - height: 100px; - width: 99px; - display: block; - background-image: url(abp-icon-big.png); - background-repeat: no-repeat; -} - -#can-do-more -{ - max-width: 960px; - padding: 40px 0px 0px 0px; - border-bottom: 4px solid #968D81; -} - -#can-do-more > h2 -{ - margin: 0 100px; -} - -.feature-malware-image -{ - background-image: url(features/malware.png); - background-repeat: no-repeat; -} - -.feature-social-image -{ - background-image: url(features/social.png); - background-repeat: no-repeat; -} - -.feature-tracking-image -{ - background-image: url(features/tracking.png); - background-repeat: no-repeat; -} - -#can-do-more-content -{ - margin: 30px 100px 20px 100px; -} - -#can-do-more #features -{ - border-spacing: 10px; - margin: 0px; - padding: 0px; -} - -#can-do-more .feature:not([hidden]) -{ - display: block; - list-style-type: none; - padding: 30px 0; - padding-bottom: 20px; - border-top: 1px dashed #c0bebb; -} - -#can-do-more .feature-image, #can-do-more .feature-description -{ - display: inline-block; - *display: inline; /* IE6 inline-block fix */ - *zoom: 1; - vertical-align: top; -} - -#can-do-more .feature-description -{ - margin: 0px 0px 0 20px; - width: 625px; - max-width: 85%; -} - -#can-do-more .feature-description-textblock -{ - width: 480px; - max-width: 100%; - margin: 0 40px 0 0; - display: inline-block; -} - -#can-do-more .feature-description-textblock > span -{ - margin: 15px 0 0 0; -} - -#can-do-more .feature-image -{ - width: 59px; - height: 59px; - margin: 8px 0 10px 20px; -} - -#share -{ - background-image: url(background-share.png); - padding: 50px 100px 40px 100px; - max-width: 760px; - text-align: center; - font-family: CreteRound, Helvetica, Arial, sans-serif; -} - -#share h2 -{ - color: #fff; - margin: 0 0 30px 0; -} - -#share h2 > a -{ - color: #fff; -} - -#share h2 > a:hover -{ - color: #2e5075; -} - -#share span -{ - color: #bed1e6; - text-align: center; - line-height: 34px; - font-size: 22px; - display: block; -} - -#donate:hover, .share-buttons a:hover -{ - box-shadow: 0px 0px 0px 2px #8ca7c4; - border-radius: 30px; -} - -#donate-block span, #share-block span -{ - margin: 10px 20px 0px 20px; -} - -#donate-block, #share-block -{ - min-width: 250px; - display: inline-block; - vertical-align: top; - padding: 5px 0 5px 0; -} - -#donate-block -{ - border: 1px dashed #37506d; - border-style: none dashed; - width: 50%; -} - -#share-block -{ - border-right: 1px dashed #37506d; - width: 49%; -} - -.share-buttons -{ - margin: 6px 0 0 0; - cursor: pointer; - vertical-align: top; - /* because inline block creates - * space if not captured with - * font-size and line-height 0px - */ - font-size: 0px; - line-height: 0px; -} - -.share-buttons > a -{ - width: 50px; - height: 50px; - margin: 0 8px; - text-decoration: none; - display: inline-block; -} - -#share-general, -:root[lang^="zh-"] #share-chinese -{ - display: block; -} - -:root[lang^="zh-"] #share-general, -#share-chinese -{ - display: none; -} - -#share-chinese > a -{ - border-bottom: 2px solid transparent; -} - -#share-chinese > a:hover -{ - box-shadow: none; - border-radius: 0; - border-bottom: 2px solid #8CA7C4; -} - -#share-facebook -{ - background-image: url(social/facebook.png); - background-repeat: no-repeat; -} - -#share-twitter -{ - background-image: url(social/twitter.png); - background-repeat: no-repeat; -} - -#share-gplus -{ - background-image: url(social/googleplus.png); - background-repeat: no-repeat; -} - -#share-renren -{ - background-image: url(social/renren.png); - background-repeat: no-repeat; -} - -#share-weibo -{ - background-image: url(social/weibo.png); - background-repeat: no-repeat; -} - -.warning -{ - font-size: 160%; - border: 3px dashed red; - text-align: center; - line-height: 1.3em; -} - -#social ul -{ - list-style: none; - display: inline-block; - padding: 0; - margin: 0; -} - -#social:hover h1 -{ - opacity: 0; -} - -#social ul:hover li { - opacity: 0.3; -} - -#social ul li -{ - display: inline-block; - margin: 0px 5px; - -webkit-transition: opacity .5s ease, bottom .3s ease; - transition: opacity .5s ease, bottom .3s ease; - position: relative; - bottom: -30px; -} - -#social ul li:hover -{ - opacity: 1.0; - bottom: 0px; -} - -.share-button -{ - display: inline-block; - width: 82px; - height: 82px; -} - -#glass-pane, #share-popup -{ - visibility: hidden; - opacity: 0; - -webkit-transition-property: opacity; - transition-property: opacity; -} - -#glass-pane -{ - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(0, 0, 0, 0.5) url(ajax-loader.gif) no-repeat 50% 50%; - z-index: 101; - -webkit-transition-duration: 0.2s; - transition-duration: 0.2s; -} - -#share-popup -{ - position: absolute; - top: 50%; - left: 50%; - border: none; - -webkit-transition-delay: 0.1s; - transition-delay: 0.1s; -} - -#glass-pane.visible, #share-popup.visible -{ - visibility: visible; - opacity: 1; -} - -#share-popup.visible -{ - -webkit-transition-duration: 0.15s; - transition-duration: 0.15s; -} - -.toggle -{ - cursor: pointer; - position: relative; - display: inline-block; - vertical-align: top; - height: 22px; - margin: 32px 0px 7px 0px; - border-radius: 9999px; - border: 1px solid #999; - overflow: hidden; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.toggle:hover -{ - box-shadow: 0px 0px 3px 0px #968d81; -} - -.toggle:active -{ - cursor: wait; -} - -.toggle-on, .toggle-off -{ - min-width: 42px; - height: 100%; - font-size: 11px; - font-weight: 500; - text-align: center; - line-height: 23px; - border-radius: 9999px; -} - -.toggle-on -{ - padding: 0px 30px 0px 10px; - color: rgba(255,255,255, 0.8); - text-shadow: 1px 1px rgba(0,0,0,0.2); - box-shadow: inset 2px 2px 6px rgba(0,0,0,0.2); - background: rgb(69,163,31); -} - -.toggle-off -{ - padding: 0px 10px 0px 30px; - color: rgba(0,0,0,0.6); - text-shadow: 1px 1px rgba(255,255,255,0.2); - background: #cfcfcf; - background: -moz-linear-gradient(top, #cfcfcf 0%, #f5f5f5 100%); - background: -webkit-linear-gradient(top, #cfcfcf 0%,#f5f5f5 100%); - background: linear-gradient(to bottom, #cfcfcf 0%,#f5f5f5 100%); -} - -.toggle-blob -{ - position: absolute; - top: 0px; - right: 0px; - height: 100%; - width: 22px; - border-radius: 50px; - background: #cfcfcf; - background: -moz-linear-gradient(bottom, #cfcfcf 0%, #f5f5f5 100%); - background: -webkit-linear-gradient(bottom, #cfcfcf 0%,#f5f5f5 100%); - background: linear-gradient(to top, #cfcfcf 0%,#f5f5f5 100%); - box-shadow: 1px 1px 2px #888; -} - -.off .toggle-on -{ - margin-top: -22px; -} - -.off .toggle-blob -{ - left: 0px; - right: auto; -} - -#donate -{ - height: 21px; - display: inline-block; - margin: 15px 0px 2px 0px; - font-size: 16px; - color: #003366; - cursor: pointer; - font-weight: bold; - padding: 5px 18px; - text-decoration: none; - border-radius: 20px; - border: 1px solid #FF9933; - overflow: hidden; - font-family: arial, sans-serif; - background-image: url(donate.png); - background-repeat: repeat-x; -} - -footer -{ - margin: 0 auto 30px; - max-width: 960px; - text-align: center; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Italic.otf b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Italic.otf Binary files differdeleted file mode 100644 index 169bced..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Italic.otf +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Regular.otf b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Regular.otf Binary files differdeleted file mode 100644 index d951855..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/fonts/CreteRound-Regular.otf +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/item-state.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/item-state.png Binary files differdeleted file mode 100644 index a494379..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/item-state.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/overlay.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/overlay.css deleted file mode 100644 index 0f58a15..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/overlay.css +++ /dev/null @@ -1,226 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -#abp-status -{ - cursor: pointer; -} - -toolbar[iconsize="small"] #abp-toolbarbutton, -#PersonalToolbar #abp-toolbarbutton, -#header-view-toolbar > #abp-toolbarbutton, -#abp-status { - list-style-image: url("abp-status-16.png"); - -moz-image-region: rect(0px, 16px, 16px, 0px); -} -toolbar[iconsize="small"] #abp-toolbarbutton[abpstate="disabled"], -#PersonalToolbar #abp-toolbarbutton[abpstate="disabled"], -#header-view-toolbar > #abp-toolbarbutton[abpstate="disabled"], -#abp-status[abpstate="disabled"], -toolbar[iconsize="small"] #abp-toolbarbutton[abpstate="whitelisted"], -#PersonalToolbar #abp-toolbarbutton[abpstate="whitelisted"], -#header-view-toolbar > #abp-toolbarbutton[abpstate="whitelisted"], -#abp-status[abpstate="whitelisted"] { - -moz-image-region: rect(16px, 16px, 32px, 0px); -} - -#abp-toolbarbutton[cui-areatype="menu-panel"], -toolbarpaletteitem[place="palette"] > #abp-toolbarbutton -{ - list-style-image: url("abp-status-32.png"); - -moz-image-region: rect(0px, 32px, 32px, 0px); -} - -#abp-toolbarbutton[cui-areatype="menu-panel"][abpstate="disabled"], -toolbarpaletteitem[place="palette"] > #abp-toolbarbutton[abpstate="disabled"], -#abp-toolbarbutton[cui-areatype="menu-panel"][abpstate="whitelisted"], -toolbarpaletteitem[place="palette"] > #abp-toolbarbutton[abpstate="whitelisted"] -{ - -moz-image-region: rect(32px, 32px, 64px, 0px); -} - -#abp-toolbar-popup { - list-style-image: none; - -moz-image-region: rect(0px, 0px, 0px, 0px); -} - -toolbox[vertical="true"] toolbar #abp-toolbarbutton dropmarker { - display: none !important; -} - -menuitem[default="true"] { - font-weight: bold; -} - -#abp-toolbarbutton, -#abp-site-info { - list-style-image: url("abp-status.png"); - -moz-image-region: rect(0px, 24px, 24px, 0px); -} -#abp-toolbarbutton[abpstate="disabled"], -#abp-toolbarbutton[abpstate="whitelisted"], -#abp-site-info[abpaction="enable"], -#abp-site-info[abpaction="enable_site"] { - -moz-image-region: rect(24px, 24px, 48px, 0px); -} - -/* Hack: force the label to be displayed below icon for type="menu" */ -#abp-toolbarbutton[type="menu"]:not([cui-areatype="menu-panel"]) -{ - -moz-box-orient: horizontal; -} -toolbar[mode="full"] #abp-toolbarbutton[type="menu"] -{ - -moz-binding: url("chrome://global/content/bindings/toolbarbutton.xml#menu-vertical"); -} - -/* Thunderbird-specific toolbar icon styles */ -#header-view-toolbar > #abp-toolbarbutton -{ - -moz-appearance: dualbutton; - padding: 0px !important; -} - -/* Hide toolbar icon text in Thunderbird to save space */ -#header-view-toolbar > #abp-toolbarbutton .toolbarbutton-text -{ - display: none; -} - -/* SeaMonkey expects the icon to be rather large, add margin */ -#mail-toolbox #abp-toolbarbutton .toolbarbutton-icon -{ - margin-top: 5px; -} - -#abp-status-image { - margin-left: 10px; - margin-right: 10px; -} - -#abp-site-info .pageaction-image { - width: 32px; - height: 32px; - padding: 4px; -} - -#abp-toolbarbutton > toolbarbutton { - /* Argh, Songbird defines image region directly on the anonymous toolbarbutton element */ - -moz-image-region: inherit !important; -} - -#abp-tooltip { - max-width: none; -} - -#abp-tooltip label { - font-weight: bold; - margin-bottom: 0px; -} - -#abp-tooltip description:not([hidden="true"])+label { - margin-top: 10px; -} - -#abp-bottombar-title { - padding-left: 4px; -} - -#abp-bottombar-toolbar { - display: -moz-box !important; - visibility: visible !important; -} - -#abp-bottombar-close { - padding: 4px 2px; - border-style: none !important; - -moz-user-focus: normal; - list-style-image: url("close.png"); - -moz-appearance: none; - -moz-image-region: rect(0px, 14px, 14px, 0px); -} - -#abp-bottombar-close:hover { - -moz-image-region: rect(0px, 28px, 14px, 14px); -} - -#abp-bottombar-close:hover:active { - -moz-image-region: rect(0px, 42px, 14px, 28px); -} - -.abp-contributebutton -{ - margin-top: 20px; -} - -.abp-contributebutton-btn -{ - font: -moz-info; - margin-left: 40px; - margin-right: 40px; -} - -.abp-contributebutton-close -{ - border-style: none !important; - -moz-user-focus: normal; - list-style-image: url("close.png"); - -moz-appearance: none; - -moz-image-region: rect(0px, 14px, 14px, 0px); - - /* Firefox Australis theme defines some width for all toolbaritem tags inside - * UIPanel element, the properties have to be reset to default values. */ - min-width: 0px !important; - min-height: 0px !important; - width: auto !important; - height: auto !important; -} - -.abp-contributebutton-close:hover -{ - -moz-image-region: rect(0px, 28px, 14px, 14px); -} - -#abp-notification -{ - width: 300px; -} - -#abp-notification-question -{ - display: none; - white-space: nowrap; -} - -.abp-question #abp-notification-question -{ - display: block; -} - -#abp-notification html|a -{ - cursor: pointer; - color: #0000f0; -} - -#abp-notification html|a:hover -{ - text-decoration: underline; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sendReport.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sendReport.css deleted file mode 100644 index 53768f9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sendReport.css +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -.wizard-header -{ - display: none; -} - -#wizardHeader -{ - display: -moz-box; - -moz-box-ordinal-group: 0; - -moz-binding: none !important; - padding: 10px 5px !important; -} - -.progressLabel -{ - margin: 5px 0px; - text-align: center; - font-size: 110%; - font-weight: normal; -} - -.progressLabel.active -{ - font-weight: bold; -} - -progressmeter -{ - margin-top: 100px; -} - -.radioDescription -{ - -moz-margin-start: 32px; -} - -radio, checkbox, .topLabel, #dataDeck -{ - margin-top: 15px; -} - -#recentReports -{ - margin-top: 15px; -} - -#recentReportsList -{ - overflow-x: hidden; - overflow-y: auto; -} - -#outdatedSubscriptionsList -{ - margin: 10px 20px; -} - -#issuesBox -{ - overflow: auto; -} - -#issuesChangeMessage -{ - color: red; -} - -#screenshotButtons -{ - margin-top: 10px; -} - -#screenshotBox -{ - overflow-y: scroll; -} - -#commentLengthWarning, #anonymityWarning -{ - color: red; -} - -#commentLengthWarning[visible="false"], #anonymityWarning[visible="false"] -{ - visibility: hidden; -} - -/* - * Force left-to-right everywhere where we are displaying addresses - */ -#data:-moz-locale-dir(rtl) -{ - direction: ltr; -} - -#sendReportError -{ - color: red; - font-size: 150%; -} - -#sendReportErrorLinks, #typeWarningTextLink -{ - margin: 0px; -} - -#sendReportErrorBox -{ - margin-bottom: 10px; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sidebar.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sidebar.css deleted file mode 100644 index abad956..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/sidebar.css +++ /dev/null @@ -1,112 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -#suggestionsList { - margin: 0px; -} - -#detachButton, #reattachButton:not([disabled="true"]) { - text-decoration: underline; - cursor: pointer; -} - -#reattachButton[disabled="true"] { - color: GrayText; -} - -#detachButton, #reattachButton { - font-size: 90%; -} - -tooltip { - max-width: none; -} - -#tooltipPreview { - margin:10px; - max-width: 300px; - max-height: 300px; -} - -#tooltip label { - font-weight: bold; -} - -#contextBlock, -#contextWhitelist { - font-weight: bold; -} - -#state { - min-width: 16px; -} - -#size { - text-align: end; -} - -/* - * Force left-to-right everywhere where we are displaying addresses - */ -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-address), -treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-size) -{ - direction: ltr; - text-align: end; -} - -.disabledTextLabel -{ - font-style: italic; -} - -treechildren::-moz-tree-cell-text(state-filtered, selected-false), -treechildren::-moz-tree-cell-text(state-hidden, selected-false) { - color: #C00000; -} -treechildren::-moz-tree-cell-text(state-whitelisted, selected-false), -treechildren::-moz-tree-cell-text(state-hiddenexception, selected-false) { - color: #008000; -} - -treechildren::-moz-tree-image(col-state, dummy-false) -{ - list-style-image: url(item-state.png); - -moz-image-region: rect(0px 10px 10px 0px); - -moz-margin-start: 3px; -} -treechildren::-moz-tree-image(col-state, filter-disabled-true, dummy-false) { - -moz-image-region: rect(10px 10px 20px 0px); -} -treechildren::-moz-tree-image(col-state, state-filtered, dummy-false), -treechildren::-moz-tree-image(col-state, state-hidden, dummy-false) { - -moz-image-region: rect(20px 10px 30px 0px); -} -treechildren::-moz-tree-image(col-state, state-whitelisted, dummy-false), -treechildren::-moz-tree-image(col-state, state-hiddenexception, dummy-false) { - -moz-image-region: rect(30px 10px 40px 0px); -} - -treechildren::-moz-tree-cell-text(col-filter, state-hidden, selected-false) { - color: #000080; -} -treechildren::-moz-tree-cell-text(col-filter, filter-disabled-true, selected-false) { - color: #C0C0C0; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/slow.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/slow.png Binary files differdeleted file mode 100644 index 8463e9e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/slow.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/facebook.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/facebook.png Binary files differdeleted file mode 100644 index f45c417..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/facebook.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/googleplus.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/googleplus.png Binary files differdeleted file mode 100644 index 53e6819..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/googleplus.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/renren.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/renren.png Binary files differdeleted file mode 100644 index e9af994..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/renren.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/twitter.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/twitter.png Binary files differdeleted file mode 100644 index fec913a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/twitter.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/weibo.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/weibo.png Binary files differdeleted file mode 100644 index 176a628..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/social/weibo.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/subscriptionSelection.css b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/subscriptionSelection.css deleted file mode 100644 index 8ed7c24..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/chrome/skin/subscriptionSelection.css +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -dialog -{ - width: 550px; -} - -*[invisible="true"] -{ - visibility: hidden; -} - -#supplementMessage -{ - color: #F00000; -} - -.localeMatch -{ - font-weight: bold; -} - -#all-subscriptions-loading -{ - margin: 50px; -} - -#all-subscriptions -{ - min-height: 200px; -} -#all-subscriptions > richlistitem > .variant -{ - width: 200px; -} -#all-subscriptions > richlistitem:not(:first-child) > .subscriptionTitle, -#all-subscriptions > richlistitem:not(:first-child) > .subscriptionTitle + .variant -{ - border-top: 1px dashed black; - margin-top: 0px; - padding-top: 4px; -} - -#supplementMessage -{ - margin-top: 5px; -} -#supplementMessage > label -{ - margin-left: 0px; - margin-right: 0px; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/defaults/prefs.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/defaults/prefs.js deleted file mode 100644 index 2df1e3e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/defaults/prefs.js +++ /dev/null @@ -1,38 +0,0 @@ -// For description of these values see http://adblockplus.org/en/preferences - -pref("extensions.adblockplus.currentVersion", "0.0"); -pref("extensions.adblockplus.enabled", true); -pref("extensions.adblockplus.frameobjects", true); -pref("extensions.adblockplus.fastcollapse", false); -pref("extensions.adblockplus.showinstatusbar", false); -pref("extensions.adblockplus.detachsidebar", false); -pref("extensions.adblockplus.defaulttoolbaraction", 0); -pref("extensions.adblockplus.defaultstatusbaraction", 0); -pref("extensions.adblockplus.sidebar_key", "Accel Shift V, Accel Shift U"); -pref("extensions.adblockplus.sendReport_key", ""); -pref("extensions.adblockplus.filters_key", "Accel Shift E, Accel Shift F, Accel Shift O"); -pref("extensions.adblockplus.enable_key", ""); -pref("extensions.adblockplus.flash_scrolltoitem", true); -pref("extensions.adblockplus.previewimages", true); -pref("extensions.adblockplus.data_directory", "adblockplus"); -pref("extensions.adblockplus.patternsbackups", 5); -pref("extensions.adblockplus.patternsbackupinterval", 24); -pref("extensions.adblockplus.whitelistschemes", "about chrome file irc moz-safe-about news resource snews x-jsd addbook cid imap mailbox nntp pop data javascript moz-icon"); -pref("extensions.adblockplus.subscriptions_autoupdate", true); -pref("extensions.adblockplus.subscriptions_listurl", "https://adblockplus.org/subscriptions2.xml"); -pref("extensions.adblockplus.subscriptions_fallbackurl", "https://adblockplus.org/getSubscription?version=%VERSION%&url=%SUBSCRIPTION%&downloadURL=%URL%&error=%ERROR%&channelStatus=%CHANNELSTATUS%&responseStatus=%RESPONSESTATUS%"); -pref("extensions.adblockplus.subscriptions_fallbackerrors", 5); -pref("extensions.adblockplus.subscriptions_exceptionsurl", "https://easylist-downloads.adblockplus.org/exceptionrules.txt"); -pref("extensions.adblockplus.subscriptions_exceptionscheckbox", true); -pref("extensions.adblockplus.documentation_link", "https://adblockplus.org/redirect?link=%LINK%&lang=%LANG%"); -pref("extensions.adblockplus.savestats", true); -pref("extensions.adblockplus.composer_default", 2); -pref("extensions.adblockplus.clearStatsOnHistoryPurge", true); -pref("extensions.adblockplus.report_submiturl", "https://reports.adblockplus.org/submitReport?version=1&guid=%GUID%&lang=%LANG%"); -pref("extensions.adblockplus.recentReports", []); -pref("extensions.adblockplus.hideContributeButton", true); -pref("extensions.adblockplus.blockableItemsSize", {width: 200, height: 200}); -pref("extensions.adblockplus.notificationurl", "https://notification.adblockplus.org/notification.json"); -pref("extensions.adblockplus.notificationdata", {}); -pref("extensions.adblockplus.subscriptions_antiadblockurl", "https://easylist-downloads.adblockplus.org/antiadblockfilters.txt"); -pref("extensions.adblockplus.please_kill_startup_performance", false); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon.png Binary files differdeleted file mode 100644 index 9db9e39..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon64.png b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon64.png Binary files differdeleted file mode 100644 index a8dcad6..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/icon64.png +++ /dev/null diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/install.rdf b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/install.rdf deleted file mode 100644 index e88421e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/install.rdf +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - This file is part of the Adblock Plus build tools, - - Copyright (C) 2006-2014 Eyeo GmbH - - - - Adblock Plus is free software: you can redistribute it and/or modify - - it under the terms of the GNU General Public License version 3 as - - published by the Free Software Foundation. - - - - Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - --> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - - <Description about="urn:mozilla:install-manifest"> - <em:id>spyblock@gnu.org</em:id> - <em:version>2.6.3.0</em:version> - <em:name>SpyBlock</em:name> - <em:description>Privacy blacklist filter</em:description> - <em:creator>Based on AdBlock Plus by Wladimir Palant</em:creator><em:contributor>Claude Lespagnol aka Efdur</em:contributor><em:contributor>Nickolay Ponomarev</em:contributor><em:contributor>Kevin Keller</em:contributor><em:contributor>Fabrice DesrĂ©</em:contributor><em:contributor>Hubird</em:contributor><em:contributor>GĂĽnther Beyer (opoloo.de)</em:contributor><em:contributor>Algimantas MargeviÄŤius</em:contributor><em:contributor>anonymous74100</em:contributor><em:contributor>BsT</em:contributor><em:contributor>Crits</em:contributor><em:contributor>Famlam</em:contributor><em:contributor>fanboy</em:contributor><em:contributor>heradhis</em:contributor><em:contributor>Jiefei</em:contributor><em:contributor>John</em:contributor><em:contributor>Khrin</em:contributor><em:contributor>Lain_13</em:contributor><em:contributor>Li</em:contributor><em:contributor>Lian</em:contributor><em:contributor>MenetZ</em:contributor><em:contributor>MonztA</em:contributor><em:contributor>None</em:contributor><em:contributor>smed79</em:contributor><em:contributor>tomasko126</em:contributor><em:contributor>Zoso</em:contributor><em:contributor>ĐлекŃандър Станев</em:contributor> - <em:homepageURL>https://www.gnu.org/software/gnuzilla/</em:homepageURL> - <em:type>2</em:type> - <em:bootstrap>true</em:bootstrap> - <em:optionsURL>chrome://adblockplus/content/ui/settings.xul</em:optionsURL> - <em:optionsType>2</em:optionsType> - - <em:targetApplication> - <Description> - <!-- fennec2 --> - <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id> - <em:minVersion>22.0</em:minVersion> - <em:maxVersion>33.0</em:maxVersion> - </Description> - </em:targetApplication> - <em:targetApplication> - <Description> - <!-- firefox --> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>22.0</em:minVersion> - <em:maxVersion>33.0</em:maxVersion> - </Description> - </em:targetApplication> - <em:targetApplication> - <Description> - <!-- seamonkey --> - <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> - <em:minVersion>2.19</em:minVersion> - <em:maxVersion>2.30</em:maxVersion> - </Description> - </em:targetApplication> - <em:targetApplication> - <Description> - <!-- thunderbird --> - <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> - <em:minVersion>22.0</em:minVersion> - <em:maxVersion>33.0</em:maxVersion> - </Description> - </em:targetApplication> - <em:targetApplication> - <Description> - <!-- toolkit --> - <em:id>toolkit@mozilla.org</em:id> - <em:minVersion>22.0</em:minVersion> - <em:maxVersion>33.0</em:maxVersion> - </Description> - </em:targetApplication> - </Description> -</RDF> diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/Public.jsm b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/Public.jsm deleted file mode 100644 index 0f96bcb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/Public.jsm +++ /dev/null @@ -1,202 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Public Adblock Plus API. - */ - -var EXPORTED_SYMBOLS = ["AdblockPlus"]; - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cr = Components.results; -const Cu = Components.utils; - -Cu.import("resource://gre/modules/Services.jsm"); - -function require(module) -{ - let result = {}; - result.wrappedJSObject = result; - Services.obs.notifyObservers(result, "adblockplus-require", module); - return result.exports; -} - -let {FilterStorage} = require("filterStorage"); -let {Filter} = require("filterClasses"); -let {Subscription, SpecialSubscription, RegularSubscription, DownloadableSubscription, ExternalSubscription} = require("subscriptionClasses"); - -const externalPrefix = "~external~"; - -/** - * Class implementing public Adblock Plus API - * @class - */ -var AdblockPlus = -{ - /** - * Returns current subscription count - * @type Integer - */ - get subscriptionCount() - { - return FilterStorage.subscriptions.length; - }, - - /** - * Gets a subscription by its URL - */ - getSubscription: function(/**String*/ id) /**IAdblockPlusSubscription*/ - { - if (id in FilterStorage.knownSubscriptions) - return createSubscriptionWrapper(FilterStorage.knownSubscriptions[id]); - - return null; - }, - - /** - * Gets a subscription by its position in the list - */ - getSubscriptionAt: function(/**Integer*/ index) /**IAdblockPlusSubscription*/ - { - if (index < 0 || index >= FilterStorage.subscriptions.length) - return null; - - return createSubscriptionWrapper(FilterStorage.subscriptions[index]); - }, - - /** - * Updates an external subscription and creates it if necessary - */ - updateExternalSubscription: function(/**String*/ id, /**String*/ title, /**Array of Filter*/ filters) /**String*/ - { - if (id.substr(0, externalPrefix.length) != externalPrefix) - id = externalPrefix + id; - let subscription = Subscription.knownSubscriptions[id]; - if (typeof subscription == "undefined") - subscription = new ExternalSubscription(id, title); - - subscription.lastDownload = parseInt(new Date().getTime() / 1000); - - let newFilters = []; - for (let filter of filters) - { - filter = Filter.fromText(Filter.normalize(filter)); - if (filter) - newFilters.push(filter); - } - - if (id in FilterStorage.knownSubscriptions) - FilterStorage.updateSubscriptionFilters(subscription, newFilters); - else - { - subscription.filters = newFilters; - FilterStorage.addSubscription(subscription); - } - - return id; - }, - - /** - * Removes an external subscription by its identifier - */ - removeExternalSubscription: function(/**String*/ id) /**Boolean*/ - { - if (id.substr(0, externalPrefix.length) != externalPrefix) - id = externalPrefix + id; - if (!(id in FilterStorage.knownSubscriptions)) - return false; - - FilterStorage.removeSubscription(FilterStorage.knownSubscriptions[id]); - return true; - }, - - /** - * Adds user-defined filters to the list - */ - addPatterns: function(/**Array of String*/ filters) - { - for (let filter of filters) - { - filter = Filter.fromText(Filter.normalize(filter)); - if (filter) - { - filter.disabled = false; - FilterStorage.addFilter(filter); - } - } - }, - - /** - * Removes user-defined filters from the list - */ - removePatterns: function(/**Array of String*/ filters) - { - for (let filter of filters) - { - filter = Filter.fromText(Filter.normalize(filter)); - if (filter) - FilterStorage.removeFilter(filter); - } - }, - - /** - * Returns installed Adblock Plus version - */ - getInstalledVersion: function() /**String*/ - { - return require("info").addonVersion; - }, - - /** - * Returns source code revision this Adblock Plus build was created from (if available) - */ - getInstalledBuild: function() /**String*/ - { - return ""; - }, -}; - -/** - * Wraps a subscription into IAdblockPlusSubscription structure. - */ -function createSubscriptionWrapper(/**Subscription*/ subscription) /**IAdblockPlusSubscription*/ -{ - if (!subscription) - return null; - - return { - url: subscription.url, - special: subscription instanceof SpecialSubscription, - title: subscription.title, - autoDownload: true, - disabled: subscription.disabled, - external: subscription instanceof ExternalSubscription, - lastDownload: subscription instanceof RegularSubscription ? subscription.lastDownload : 0, - downloadStatus: subscription instanceof DownloadableSubscription ? subscription.downloadStatus : "synchronize_ok", - lastModified: subscription instanceof DownloadableSubscription ? subscription.lastModified : null, - expires: subscription instanceof DownloadableSubscription ? subscription.expires : 0, - getPatterns: function() - { - let result = subscription.filters.map(function(filter) - { - return filter.text; - }); - return result; - } - }; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/antiadblockInit.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/antiadblockInit.js deleted file mode 100644 index d8b29ca..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/antiadblockInit.js +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let {Utils} = require("utils"); -let {Prefs} = require("prefs"); -let {ActiveFilter} = require("filterClasses"); -let {FilterStorage} = require("filterStorage"); -let {FilterNotifier} = require("filterNotifier"); -let {Subscription} = require("subscriptionClasses"); -let {Notification} = require("notification"); - -exports.initAntiAdblockNotification = function initAntiAdblockNotification() -{ - let notification = { - id: "antiadblock", - type: "question", - title: Utils.getString("notification_antiadblock_title"), - message: Utils.getString("notification_antiadblock_message"), - urlFilters: [] - }; - - function notificationListener(approved) - { - let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); - if (subscription.url in FilterStorage.knownSubscriptions) - subscription.disabled = !approved; - } - - function addAntiAdblockNotification(subscription) - { - let urlFilters = []; - for (let filter of subscription.filters) - if (filter instanceof ActiveFilter) - for (let domain in filter.domains) - if (domain && urlFilters.indexOf(domain) == -1) - urlFilters.push(domain); - notification.urlFilters = urlFilters; - Notification.addNotification(notification); - Notification.addQuestionListener(notification.id, notificationListener); - } - - function removeAntiAdblockNotification() - { - Notification.removeNotification(notification); - Notification.removeQuestionListener(notification.id, notificationListener); - } - - let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); - if (subscription.lastDownload && subscription.disabled) - addAntiAdblockNotification(subscription); - - FilterNotifier.addListener(function(action, value, newItem, oldItem) - { - if (!/^subscription\.(updated|removed|disabled)$/.test(action) || value.url != Prefs.subscriptions_antiadblockurl) - return; - - if (action == "subscription.updated") - addAntiAdblockNotification(value); - else if (action == "subscription.removed" || (action == "subscription.disabled" && !value.disabled)) - removeAntiAdblockNotification(); - }); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/appSupport.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/appSupport.js deleted file mode 100644 index 67c6248..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/appSupport.js +++ /dev/null @@ -1,948 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Various application-specific functions. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/AddonManager.jsm"); - -/** - * Checks whether an application window is known and should get Adblock Plus - * user interface elements. - * @result Boolean - */ -exports.isKnownWindow = (/**Window*/ window) => false; - -/** - * HACK: In some applications the window finishes initialization during load - * event processing which makes an additional delay necessary. This flag - * indicates that. - * @type Boolean - */ -exports.delayInitialization = false; - -/** - * Retrieves the browser element for an application window. - * @type function(window) - */ -exports.getBrowser = null; - -/** - * Adds a new browser tab in the given application window. - * @type function(window, url, event) - */ -exports.addTab = null; - -/** - * Retrieves the current browser location for an application window. - */ -exports.getCurrentLocation = function getCurrentLocation(/**Window*/ window) /**nsIURI|String*/ -{ - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - return (browser ? browser.currentURI : null); -} - - -/** - * The ID (or a list of possible IDs) of the content area context menu. - * @type String|String[] - */ -exports.contentContextMenu = null; - -/** - * Determines the default placement of the toolbar icon via object properties - * parent, before and after. - * @type Object - */ -exports.defaultToolbarPosition = null; - -/** - * The properties parent, before, after determine the placement of the status - * bar icon. - * @type Object - */ -exports.statusbarPosition = null; - -/** - * The properties parent, before, after determine the placement of the Tools - * submenu. - * @type Object - */ -exports.toolsMenu = null; - -/** - * Maps windows to their bottom bar info. - */ -let bottomBars = new WeakMap(); - -/** - * Adds a bottom bar to the application window. - * @type function(window, element) - */ -exports.addBottomBar = null; - -function _addBottomBar(window, parent, element) -{ - if (bottomBars.has(window) || !parent) - return null; - - let bar = {elements: []}; - for (let child = element.firstElementChild; child; child = child.nextElementSibling) - { - let clone = child.cloneNode(true); - parent.appendChild(clone); - bar.elements.push(clone); - } - - bottomBars.set(window, bar); - return bar; -}; - -/** - * Removes the bottom bar from the application window. - * @type function(window) - */ -exports.removeBottomBar = null; - -function _removeBottomBar(window) -{ - if (!bottomBars.has(window)) - return null; - - let bar = bottomBars.get(window); - for (let i = 0; i < bar.elements.length; i++) - if (bar.elements[i].parentNode) - bar.elements[i].parentNode.removeChild(bar.elements[i]); - - bottomBars.delete(window); - return bar; -}; - -/** - * Maps windows to a list of progress listeners. - */ -let progressListeners = new WeakMap(); - -/** - * Makes sure that a function is called whenever the displayed browser location changes. - */ -exports.addBrowserLocationListener = function addBrowserLocationListener(/**Window*/ window, /**Function*/ callback, /**Boolean*/ ignoreSameDoc) -{ - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - if (browser) - { - let dummy = function() {}; - let progressListener = - { - callback: callback, - onLocationChange: function(progress, request, uri, flags) - { - if (!ignoreSameDoc || !flags || !(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT)) - this.callback(); - }, - onProgressChange: dummy, - onSecurityChange: dummy, - onStateChange: dummy, - onStatusChange: dummy, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference]) - }; - browser.addProgressListener(progressListener); - - if (progressListeners.has(window)) - progressListeners.get(window).push(progressListener); - else - progressListeners.set(window, [progressListener]); - } -}; - -/** - * Removes a location listener registered for a window. - */ -exports.removeBrowserLocationListener = function removeBrowserLocationListener(/**Window*/ window, /**Function*/ callback) -{ - if (!progressListeners.has(window)) - return; - - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - let listeners = progressListeners.get(window); - for (let i = 0; i < listeners.length; i++) - { - if (listeners[i].callback == callback) - { - if (browser) - browser.removeProgressListener(listeners[i]); - listeners.splice(i--, 1); - } - } -}; - -/** - * Removes all location listeners registered for a window, to be called on - * cleanup. - */ -exports.removeBrowserLocationListeners = function removeBrowserLocationListeners(/**Window*/ window) -{ - if (!progressListeners.has(window)) - return; - - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - if (browser) - { - let listeners = progressListeners.get(window); - for (let i = 0; i < listeners.length; i++) - browser.removeProgressListener(listeners[i]); - } - progressListeners.delete(window); -}; - -/** - * Maps windows to a list of click listeners. - */ -let clickListeners = new WeakMap(); - -/** - * Makes sure that a function is called whenever the user clicks inside the - * browser's content area. - */ -exports.addBrowserClickListener = function addBrowserClickListener(/**Window*/ window, /**Function*/ callback) -{ - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - if (browser) - { - browser.addEventListener("click", callback, true); - - if (clickListeners.has(window)) - clickListeners.get(window).push(callback); - else - clickListeners.set(window, [callback]); - } -}; - -/** - * Removes all click listeners registered for a window, to be called on - * cleanup. - */ -exports.removeBrowserClickListeners = function removeBrowserClickListeners(/**Window*/ window) -{ - if (!clickListeners.has(window)) - return; - - let browser = (exports.getBrowser ? exports.getBrowser(window) : null); - if (browser) - { - let listeners = clickListeners.get(window); - for (let i = 0; i < listeners.length; i++) - browser.removeEventListener("click", listeners[i], true); - } - clickListeners.delete(window); -}; - -let {application} = require("info"); -switch (application) -{ - case "firefox": - { - exports.isKnownWindow = function ff_isKnownWindow(window) - { - return (window.document.documentElement.getAttribute("windowtype") == "navigator:browser"); - }; - - exports.getBrowser = (window) => window.gBrowser; - - exports.addTab = function ff_addTab(window, url, event) - { - if (event) - window.openNewTabWith(url, exports.getBrowser(window).contentDocument, null, event, false); - else - window.gBrowser.loadOneTab(url, {inBackground: false}); - }; - - exports.contentContextMenu = "contentAreaContextMenu"; - - exports.defaultToolbarPosition = { - parent: "nav-bar" - }; - - exports.toolsMenu = { - parent: "menu_ToolsPopup" - }; - - exports.addBottomBar = function fx_addBottomBar(window, element) - { - let bar = _addBottomBar(window, window.document.getElementById("appcontent"), element); - if (bar) - { - let display = window.document.getElementById("statusbar-display"); - bar.changedFixed = display && !display.hasAttribute("fixed"); - if (bar.changedFixed) - display.setAttribute("fixed", "true"); - } - }; - - exports.removeBottomBar = function fx_removeBottomBar(window) - { - let bar = _removeBottomBar(window); - if (bar && bar.changedFixed) - window.document.getElementById("statusbar-display").removeAttribute("fixed"); - }; - - break; - } - - case "seamonkey": - { - exports.isKnownWindow = function sm_isKnownWindow(window) - { - let type = window.document.documentElement.getAttribute("windowtype"); - return (type == "navigator:browser" || type == "mail:3pane" || type == "mail:messageWindow"); - }; - - exports.addTab = function sm_addTab(window, url, event) - { - if (event || !("gBrowser" in window)) - window.openNewTabWith(url, ("gBrowser" in window ? window.gBrowser.contentDocument : null), null, event, false); - else - window.gBrowser.loadOneTab(url, {inBackground: false}); - }; - - exports.getBrowser = function sm_getBrowser(window) - { - if ("gBrowser" in window) - return window.gBrowser; - else if ("getMessageBrowser" in window) - return window.getMessageBrowser(); - else - return null; - }; - - exports.getCurrentLocation = function sm_getCurrentLocation(window) - { - if ("currentHeaderData" in window && "content-base" in window.currentHeaderData) - { - // This is a blog entry - return window.currentHeaderData["content-base"].headerValue; - } - else if ("currentHeaderData" in window && "from" in window.currentHeaderData) - { - // This is a mail/newsgroup entry - try - { - let headerParser = Cc["@mozilla.org/messenger/headerparser;1"].getService(Ci.nsIMsgHeaderParser); - let emailAddress = headerParser.extractHeaderAddressMailboxes(window.currentHeaderData.from.headerValue); - return "mailto:" + emailAddress.replace(/^[\s"]+/, "").replace(/[\s"]+$/, "").replace(/\s/g, "%20"); - } - catch(e) - { - return null; - } - } - else - { - let browser = exports.getBrowser(window); - return (browser ? browser.currentURI : null); - } - }; - - exports.contentContextMenu = ["contentAreaContextMenu", "mailContext"]; - - exports.defaultToolbarPosition = { - parent: ["PersonalToolbar", "msgToolbar"], - before: ["bookmarks-button", "button-junk"] - }; - - exports.statusbarPosition = { - parent: "status-bar" - }; - - exports.toolsMenu = { - parent: "taskPopup", - after: "downloadmgr" - }; - - exports.addBottomBar = function sm_addBottomBar(window, element) - { - _addBottomBar(window, window.document.getElementById("appcontent") || window.document.getElementById("messagepanebox"), element); - }; - - exports.removeBottomBar = _removeBottomBar; - - break; - } - - case "thunderbird": - { - exports.isKnownWindow = function tb_isKnownWindow(window) - { - let type = window.document.documentElement.getAttribute("windowtype"); - return (type == "mail:3pane" || type == "mail:messageWindow"); - }; - - exports.delayInitialization = true; - - exports.getBrowser = (window) => window.getBrowser(); - - exports.addTab = function tb_addTab(window, url, event) - { - let tabmail = window.document.getElementById("tabmail"); - if (!tabmail) - { - let wnd = Services.wm.getMostRecentWindow("mail:3pane"); - if (window) - tabmail = wnd.document.getElementById("tabmail"); - } - - if (tabmail) - tabmail.openTab("contentTab", {contentPage: url}); - else - { - window.openDialog("chrome://messenger/content/", "_blank", - "chrome,dialog=no,all", null, - { - tabType: "contentTab", - tabParams: {contentPage: url} - }); - } - }; - - exports.contentContextMenu = ["mailContext", "pageContextMenu"]; - - exports.defaultToolbarPosition = { - parent: "header-view-toolbar", - before: "hdrReplyButton", - addClass: "msgHeaderView-button" - }; - - exports.statusbarPosition = { - parent: "status-bar" - }; - - exports.toolsMenu = { - parent: "taskPopup", - after: "javaScriptConsole" - }; - - exports.getCurrentLocation = function getCurrentLocation(window) - { - let browser = exports.getBrowser(window); - if (!browser) - return null; - - if (browser.id == "messagepane" && "currentHeaderData" in window && "content-base" in window.currentHeaderData) - { - // This is a blog entry - return window.currentHeaderData["content-base"].headerValue; - } - else if (browser.id == "messagepane" && "currentHeaderData" in window && "from" in window.currentHeaderData) - { - // This is a mail/newsgroup entry - try - { - let headerParser = Cc["@mozilla.org/messenger/headerparser;1"].getService(Ci.nsIMsgHeaderParser); - let emailAddress = headerParser.extractHeaderAddressMailboxes(window.currentHeaderData.from.headerValue); - return "mailto:" + emailAddress.replace(/^[\s"]+/, "").replace(/[\s"]+$/, "").replace(/\s/g, "%20"); - } - catch(e) - { - return null; - } - } - else - return browser.currentURI; - } - - exports.addBottomBar = function tb_addBottomBar(window, element) - { - let browser = exports.getBrowser(window); - if (!browser) - return; - - let parent = window.document.getElementById("messagepanebox"); - if (!parent || !(parent.compareDocumentPosition(browser) & Ci.nsIDOMNode.DOCUMENT_POSITION_CONTAINED_BY)) - parent = browser.parentNode; - - _addBottomBar(window, parent, element); - }; - - exports.removeBottomBar = _removeBottomBar; - - let BrowserChangeListener = function(window, callback) - { - this.window = window; - this.callback = callback; - this.onSelect = this.onSelect.bind(this); - this.attach(); - }; - BrowserChangeListener.prototype = { - window: null, - callback: null, - currentBrowser: null, - - setBrowser: function(browser) - { - if (browser != this.currentBrowser) - { - let oldBrowser = this.currentBrowser; - this.currentBrowser = browser; - this.callback(oldBrowser, browser); - } - }, - - onSelect: function() - { - this.setBrowser(exports.getBrowser(this.window)); - }, - - attach: function() - { - this.onSelect(); - - let tabmail = this.window.document.getElementById("tabmail"); - if (tabmail) - tabmail.tabContainer.addEventListener("select", this.onSelect, false); - }, - detach: function() - { - let tabmail = this.window.document.getElementById("tabmail"); - if (tabmail) - tabmail.tabContainer.removeEventListener("select", this.onSelect, false); - - this.setBrowser(null); - } - }; - - exports.addBrowserLocationListener = function(/**Window*/ window, /**Function*/ callback, /**Boolean*/ ignoreSameDoc) - { - if (progressListeners.has(window)) - { - progressListeners.get(window).locationCallbacks.push(callback); - return; - } - - let callbacks = [callback]; - let dummy = function() {}; - let progressListener = - { - onLocationChange: function(progress, request, uri, flags) - { - if (!ignoreSameDoc || !flags || !(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT)) - for (let i = 0; i < callbacks.length; i++) - callbacks[i](); - }, - onProgressChange: dummy, - onSecurityChange: dummy, - onStateChange: dummy, - onStatusChange: dummy, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference]) - }; - let messageListener = - { - onStartHeaders: dummy, - onEndHeaders: function() - { - let browser = exports.getBrowser(window); - if (browser.id == "messagepane") - for (let i = 0; i < callbacks.length; i++) - callbacks[i](); - }, - onEndAttachments: dummy, - onBeforeShowHeaderPane: dummy - }; - - let listener = new BrowserChangeListener(window, function(oldBrowser, newBrowser) - { - if (oldBrowser) - oldBrowser.removeProgressListener(progressListener); - if (newBrowser) - newBrowser.addProgressListener(progressListener); - progressListener.onLocationChange(); - }); - listener.locationCallbacks = callbacks; - - if ("gMessageListeners" in window) - window.gMessageListeners.push(messageListener); - listener.messageListener = messageListener; - - progressListeners.set(window, listener); - }; - - exports.removeBrowserLocationListener = function(/**Window*/ window, /**Function*/ callback) - { - if (!progressListeners.has(window)) - return; - - let callbacks = progressListeners.get(window).locationCallbacks; - for (let i = 0; i < callbacks.length; i++) - if (callbacks[i] == callback) - callbacks.splice(i--, 1); - }; - - exports.removeBrowserLocationListeners = function(/**Window*/ window) - { - if (!progressListeners.has(window)) - return; - - let listener = progressListeners.get(window); - - let messageListener = listener.messageListener; - let index = ("gMessageListeners" in window ? window.gMessageListeners.indexOf(messageListener) : -1); - if (index >= 0) - window.gMessageListeners.splice(index, 1); - - listener.detach(); - progressListeners.delete(window); - }; - - exports.addBrowserClickListener = function addBrowserClickListener(/**Window*/ window, /**Function*/ callback) - { - if (clickListeners.has(window)) - { - clickListeners.get(window).callbacks.push(callback); - return; - } - - let callbacks = [callback]; - let listener = new BrowserChangeListener(window, function(oldBrowser, newBrowser) - { - if (oldBrowser) - for (let i = 0; i < callbacks.length; i++) - oldBrowser.removeEventListener("click", callbacks[i], true); - if (newBrowser) - for (let i = 0; i < callbacks.length; i++) - newBrowser.addEventListener("click", callbacks[i], true); - }); - listener.callbacks = callbacks; - - clickListeners.set(window, listener); - }; - - exports.removeBrowserClickListeners = function removeBrowserClickListeners(/**Window*/ window) - { - if (!clickListeners.has(window)) - return; - - let listener = clickListeners.get(window); - listener.detach(); - - clickListeners.delete(window); - }; - - // Make sure to close/reopen list of blockable items when the user changes tabs - let {WindowObserver} = require("windowObserver"); - new WindowObserver({ - listeners: new WeakMap(), - applyToWindow: function(window) - { - if (!exports.isKnownWindow(window) || this.listeners.has(window)) - return; - - let {Utils} = require("utils"); - Utils.runAsync(function() - { - let listener = new BrowserChangeListener(window, function(oldBrowser, newBrowser) - { - if (bottomBars.has(window)) - { - let {UI} = require("ui") - UI.toggleBottombar(window); - UI.toggleBottombar(window); - } - }); - this.listeners.set(window, listener); - }.bind(this)); - }, - removeFromWindow: function(window) - { - if (!this.listeners.has(window)) - return; - - let listener = this.listeners.get(window); - listener.detach(); - this.listeners.delete(window); - } - }); - - break; - } - - case "fennec2": - { - exports.isKnownWindow = (window) => window.document.documentElement.id == "main-window"; - - exports.getBrowser = (window) => window.BrowserApp.selectedBrowser; - - exports.addTab = (window, url, event) => window.BrowserApp.addTab(url, {selected: true}); - - let BrowserChangeListener = function(window, callback) - { - this.window = window; - this.callback = callback; - this.onSelect = this.onSelect.bind(this); - this.attach(); - }; - BrowserChangeListener.prototype = { - window: null, - callback: null, - currentBrowser: null, - - setBrowser: function(browser) - { - if (browser != this.currentBrowser) - { - let oldBrowser = this.currentBrowser; - this.currentBrowser = browser; - this.callback(oldBrowser, browser); - } - }, - - onSelect: function() - { - let {Utils} = require("utils"); - Utils.runAsync(function() - { - this.setBrowser(exports.getBrowser(this.window)); - }.bind(this)); - }, - - attach: function() - { - this.onSelect(); - - this.window.BrowserApp.deck.addEventListener("TabSelect", this.onSelect, false); - }, - detach: function() - { - this.window.BrowserApp.deck.removeEventListener("TabSelect", this.onSelect, false); - - this.setBrowser(null); - } - }; - - exports.addBrowserLocationListener = function ffn_addBrowserLocationListener(/**Window*/ window, /**Function*/ callback, /**Boolean*/ ignoreSameDoc) - { - if (progressListeners.has(window)) - { - progressListeners.get(window).locationCallbacks.push(callback); - return; - } - - let callbacks = [callback]; - let dummy = function() {}; - let progressListener = - { - onLocationChange: function(progress, request, uri, flags) - { - if (!ignoreSameDoc || !flags || !(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT)) - for (let i = 0; i < callbacks.length; i++) - callbacks[i](); - }, - onProgressChange: dummy, - onSecurityChange: dummy, - onStateChange: dummy, - onStatusChange: dummy, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference]) - }; - - let listener = new BrowserChangeListener(window, function(oldBrowser, newBrowser) - { - if (oldBrowser && typeof oldBrowser.removeProgressListener == "function") - oldBrowser.removeProgressListener(progressListener); - if (newBrowser && typeof newBrowser.removeProgressListener == "function") - newBrowser.addProgressListener(progressListener); - progressListener.onLocationChange(); - }); - listener.locationCallbacks = callbacks; - - progressListeners.set(window, listener); - }; - - exports.removeBrowserLocationListener = function ffn_removeBrowserLocationListener(/**Window*/ window, /**Function*/ callback) - { - if (!progressListeners.has(window)) - return; - - let callbacks = progressListeners.get(window).locationCallbacks; - for (let i = 0; i < callbacks.length; i++) - if (callbacks[i] == callback) - callbacks.splice(i--, 1); - }; - - exports.removeBrowserLocationListeners = function ffn_removeBrowserLocationListeners(/**Window*/ window) - { - if (!progressListeners.has(window)) - return; - - let listener = progressListeners.get(window); - listener.detach(); - progressListeners.delete(window); - }; - - exports.addBrowserClickListener = function ffn_addBrowserClickListener(/**Window*/ window, /**Function*/ callback) - { - if (clickListeners.has(window)) - { - clickListeners.get(window).callbacks.push(callback); - return; - } - - let callbacks = [callback]; - let listener = new BrowserChangeListener(window, function(oldBrowser, newBrowser) - { - if (oldBrowser) - for (let i = 0; i < callbacks.length; i++) - oldBrowser.removeEventListener("click", callbacks[i], true); - if (newBrowser) - for (let i = 0; i < callbacks.length; i++) - newBrowser.addEventListener("click", callbacks[i], true); - }); - listener.callbacks = callbacks; - - clickListeners.set(window, listener); - }; - - exports.removeBrowserClickListeners = function ffn_removeBrowserClickListeners(/**Window*/ window) - { - if (!clickListeners.has(window)) - return; - - let listener = clickListeners.get(window); - listener.detach(); - - clickListeners.delete(window); - }; - - let {Filter} = require("filterClasses"); - let {Prefs} = require("prefs"); - let {Policy} = require("contentPolicy"); - let {UI} = require("ui"); - let {Utils} = require("utils"); - - let toggleWhitelist = function(window) - { - if (!Prefs.enabled) - { - Prefs.enabled = true; - return; - } - - let location = exports.getCurrentLocation(window); - let host = null; - if (location instanceof Ci.nsIURL && Policy.isBlockableScheme(location)) - { - try - { - host = location.host.replace(/^www\./, ""); - } catch (e) {} - } - - if (!host) - return; - - if (Policy.isWhitelisted(location.spec)) - UI.removeWhitelist(window); - else - UI.toggleFilter(Filter.fromText("@@||" + host + "^$document")); - }; - - let menuItem = null; - onShutdown.add(function() - { - let window = null; - for (window in UI.applicationWindows) - break; - - if (window && menuItem) - window.NativeWindow.menu.remove(menuItem); - }); - - UI.updateIconState = function fmn_updateIconState(window, icon) - { - if (menuItem !== null) - { - window.NativeWindow.menu.remove(menuItem); - menuItem = null; - } - - let action; - let host = null; - if (Prefs.enabled) - { - let location = exports.getCurrentLocation(window); - if (location instanceof Ci.nsIURL && Policy.isBlockableScheme(location)) - { - try - { - host = location.host.replace(/^www\./, ""); - } catch (e) {} - } - if (!host) - return; - - if (host && Policy.isWhitelisted(location.spec)) - action = "enable_site"; - else if (host) - action = "disable_site"; - } - else - action = "enable"; - - let actionText = Utils.getString("mobile_menu_" + action); - if (host) - actionText = actionText.replace(/\?1\?/g, host); - - let iconUrl = require("info").addonRoot + "icon64.png"; - menuItem = window.NativeWindow.menu.add(actionText, iconUrl, toggleWhitelist.bind(null, window)); - }; - - UI.openSubscriptionDialog = function(window, url, title, mainURL, mainTitle) - { - let dialogTitle = this.overlay.attributes.subscriptionDialogTitle; - let dialogMessage = this.overlay.attributes.subscriptionDialogMessage.replace(/\?1\?/, title).replace(/\?2\?/, url); - if (Utils.confirm(window, dialogMessage, dialogTitle)) - this.setSubscription(url, title); - }; - - UI.openFiltersDialog = function() - { - let window = UI.currentWindow; - if (!window) - return - - let browser = exports.addTab(window, "about:addons").browser; - browser.addEventListener("load", function openAddonPrefs(event) - { - browser.removeEventListener("load", openAddonPrefs, true); - Utils.runAsync(function() - { - // The page won't be ready until the add-on manager data is loaded so we call this method - // to know when the data will be ready. - AddonManager.getAddonsByTypes(["extension", "theme", "locale"], function() - { - let event = new Event("Event"); - event.initEvent("popstate", true, false); - event.state = {id: require("info").addonID}; - browser._contentWindow.dispatchEvent(event); - }); - }); - }, true); - }; - - break; - } -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/contentPolicy.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/contentPolicy.js deleted file mode 100644 index 084ebc5..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/contentPolicy.js +++ /dev/null @@ -1,779 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Content policy implementation, responsible for blocking things. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {TimeLine} = require("timeline"); -let {Utils} = require("utils"); -let {Prefs} = require("prefs"); -let {FilterStorage} = require("filterStorage"); -let {BlockingFilter, WhitelistFilter} = require("filterClasses"); -let {defaultMatcher} = require("matcher"); -let {objectMouseEventHander} = require("objectTabs"); -let {RequestNotifier} = require("requestNotifier"); -let {ElemHide} = require("elemHide"); - -/** - * List of explicitly supported content types - * @type Array of String - */ -let contentTypes = ["OTHER", "SCRIPT", "IMAGE", "STYLESHEET", "OBJECT", "SUBDOCUMENT", "DOCUMENT", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT", "MEDIA"]; - -/** - * List of content types that aren't associated with a visual document area - * @type Array of String - */ -let nonVisualTypes = ["SCRIPT", "STYLESHEET", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT"]; - -/** - * Randomly generated class name, to be applied to collapsed nodes. - */ -let collapsedClass = ""; - -/** - * Public policy checking functions and auxiliary objects - * @class - */ -let Policy = exports.Policy = -{ - /** - * Map of content type identifiers by their name. - * @type Object - */ - type: {}, - - /** - * Map of content type names by their identifiers (reverse of type map). - * @type Object - */ - typeDescr: {}, - - /** - * Map of localized content type names by their identifiers. - * @type Object - */ - localizedDescr: {}, - - /** - * Lists the non-visual content types. - * @type Object - */ - nonVisual: {}, - - /** - * Map containing all schemes that should be ignored by content policy. - * @type Object - */ - whitelistSchemes: {}, - - /** - * Called on module startup, initializes various exported properties. - */ - init: function() - { - TimeLine.enter("Entered content policy initialization"); - - // type constant by type description and type description by type constant - let iface = Ci.nsIContentPolicy; - for (let typeName of contentTypes) - { - if ("TYPE_" + typeName in iface) - { - let id = iface["TYPE_" + typeName]; - this.type[typeName] = id; - this.typeDescr[id] = typeName; - this.localizedDescr[id] = Utils.getString("type_label_" + typeName.toLowerCase()); - } - } - - this.type.ELEMHIDE = 0xFFFD; - this.typeDescr[0xFFFD] = "ELEMHIDE"; - this.localizedDescr[0xFFFD] = Utils.getString("type_label_elemhide"); - - this.type.POPUP = 0xFFFE; - this.typeDescr[0xFFFE] = "POPUP"; - this.localizedDescr[0xFFFE] = Utils.getString("type_label_popup"); - - for (let type of nonVisualTypes) - this.nonVisual[this.type[type]] = true; - - // whitelisted URL schemes - for (let scheme of Prefs.whitelistschemes.toLowerCase().split(" ")) - this.whitelistSchemes[scheme] = true; - - TimeLine.log("done initializing types"); - - // Generate class identifier used to collapse node and register corresponding - // stylesheet. - TimeLine.log("registering global stylesheet"); - - let offset = "a".charCodeAt(0); - for (let i = 0; i < 20; i++) - collapsedClass += String.fromCharCode(offset + Math.random() * 26); - - let collapseStyle = Services.io.newURI("data:text/css," + - encodeURIComponent("." + collapsedClass + - "{-moz-binding: url(chrome://global/content/bindings/general.xml#foobarbazdummy) !important;}"), null, null); - Utils.styleService.loadAndRegisterSheet(collapseStyle, Ci.nsIStyleSheetService.USER_SHEET); - onShutdown.add(function() - { - Utils.styleService.unregisterSheet(collapseStyle, Ci.nsIStyleSheetService.USER_SHEET); - }) - TimeLine.log("done registering stylesheet"); - - TimeLine.leave("Done initializing content policy"); - }, - - /** - * Checks whether a node should be blocked, hides it if necessary - * @param wnd {nsIDOMWindow} - * @param node {nsIDOMElement} - * @param contentType {String} - * @param location {nsIURI} - * @param collapse {Boolean} true to force hiding of the node - * @return {Boolean} false if the node should be blocked - */ - processNode: function(wnd, node, contentType, location, collapse) - { - let topWnd = wnd.top; - if (!topWnd || !topWnd.location || !topWnd.location.href) - return true; - - let privatenode=false; - Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); - if (PrivateBrowsingUtils.isWindowPrivate(wnd)) - privatenode=true; - - let originWindow = Utils.getOriginWindow(wnd); - let wndLocation = originWindow.location.href; - let docDomain = getHostname(wndLocation); - let match = null; - if (!match && Prefs.enabled) - { - let testWnd = wnd; - let parentWndLocation = getWindowLocation(testWnd); - while (true) - { - let testWndLocation = parentWndLocation; - parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent)); - match = Policy.isWhitelisted(testWndLocation, parentWndLocation); - - if (!(match instanceof WhitelistFilter)) - { - let keydata = (testWnd.document && testWnd.document.documentElement ? testWnd.document.documentElement.getAttribute("data-adblockkey") : null); - if (keydata && keydata.indexOf("_") >= 0) - { - let [key, signature] = keydata.split("_", 2); - let keyMatch = defaultMatcher.matchesByKey(testWndLocation, key.replace(/=/g, ""), docDomain); - if (keyMatch && Utils.crypto) - { - // Website specifies a key that we know but is the signature valid? - let uri = Services.io.newURI(testWndLocation, null, null); - let params = [ - uri.path.replace(/#.*/, ""), // REQUEST_URI - uri.asciiHost, // HTTP_HOST - Utils.httpProtocol.userAgent // HTTP_USER_AGENT - ]; - if (Utils.verifySignature(key, signature, params.join("\0"))) - match = keyMatch; - } - } - } - - if (match instanceof WhitelistFilter) - { - FilterStorage.increaseHitCount(match, wnd); - RequestNotifier.addNodeData(testWnd.document, topWnd, Policy.type.DOCUMENT, getHostname(parentWndLocation), false, testWndLocation, match); - return true; - } - - if (testWnd.parent == testWnd) - break; - else - testWnd = testWnd.parent; - } - } - - // Data loaded by plugins should be attached to the document - if (contentType == Policy.type.OBJECT_SUBREQUEST && node instanceof Ci.nsIDOMElement) - node = node.ownerDocument; - - // Fix type for objects misrepresented as frames or images - if (contentType != Policy.type.OBJECT && (node instanceof Ci.nsIDOMHTMLObjectElement || node instanceof Ci.nsIDOMHTMLEmbedElement)) - contentType = Policy.type.OBJECT; - - let locationText = location.spec; - if (!match && contentType == Policy.type.ELEMHIDE) - { - let testWnd = wnd; - let parentWndLocation = getWindowLocation(testWnd); - while (true) - { - let testWndLocation = parentWndLocation; - parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent)); - let parentDocDomain = getHostname(parentWndLocation); - match = defaultMatcher.matchesAny(testWndLocation, "ELEMHIDE", parentDocDomain, false); - if (match instanceof WhitelistFilter) - { - FilterStorage.increaseHitCount(match, wnd); - RequestNotifier.addNodeData(testWnd.document, topWnd, contentType, parentDocDomain, false, testWndLocation, match); - return true; - } - - if (testWnd.parent == testWnd) - break; - else - testWnd = testWnd.parent; - } - - match = location; - locationText = match.text.replace(/^.*?#/, '#'); - location = locationText; - - if (!match.isActiveOnDomain(docDomain)) - return true; - - let exception = ElemHide.getException(match, docDomain); - if (exception) - { - FilterStorage.increaseHitCount(exception, wnd); - RequestNotifier.addNodeData(node, topWnd, contentType, docDomain, thirdParty, locationText, exception); - return true; - } - } - - let thirdParty = (contentType == Policy.type.ELEMHIDE ? false : isThirdParty(location, docDomain)); - - if (!match && Prefs.enabled) - { - match = defaultMatcher.matchesAny(locationText, Policy.typeDescr[contentType] || "", docDomain, thirdParty, privatenode); - if (match instanceof BlockingFilter && node.ownerDocument && !(contentType in Policy.nonVisual)) - { - let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse); - if (collapse || prefCollapse) - schedulePostProcess(node); - } - - // Track mouse events for objects - if (!match && contentType == Policy.type.OBJECT && node.nodeType == Ci.nsIDOMNode.ELEMENT_NODE) - { - node.addEventListener("mouseover", objectMouseEventHander, true); - node.addEventListener("mouseout", objectMouseEventHander, true); - } - } - - // Store node data - RequestNotifier.addNodeData(node, topWnd, contentType, docDomain, thirdParty, locationText, match); - if (match) - FilterStorage.increaseHitCount(match, wnd); - - return !match || match instanceof WhitelistFilter; - }, - - /** - * Checks whether the location's scheme is blockable. - * @param location {nsIURI} - * @return {Boolean} - */ - isBlockableScheme: function(location) - { - return !(location.scheme in Policy.whitelistSchemes); - }, - - /** - * Checks whether a page is whitelisted. - * @param {String} url - * @param {String} [parentUrl] location of the parent page - * @return {Filter} filter that matched the URL or null if not whitelisted - */ - isWhitelisted: function(url, parentUrl) - { - if (!url) - return null; - - // Do not apply exception rules to schemes on our whitelistschemes list. - let match = /^([\w\-]+):/.exec(url); - if (match && match[1] in Policy.whitelistSchemes) - return null; - - if (!parentUrl) - parentUrl = url; - - // Ignore fragment identifier - let index = url.indexOf("#"); - if (index >= 0) - url = url.substring(0, index); - - let result = defaultMatcher.matchesAny(url, "DOCUMENT", getHostname(parentUrl), false); - return (result instanceof WhitelistFilter ? result : null); - }, - - /** - * Checks whether the page loaded in a window is whitelisted. - * @param wnd {nsIDOMWindow} - * @return {Filter} matching exception rule or null if not whitelisted - */ - isWindowWhitelisted: function(wnd) - { - return Policy.isWhitelisted(getWindowLocation(wnd)); - }, - - - /** - * Asynchronously re-checks filters for given nodes. - */ - refilterNodes: function(/**Node[]*/ nodes, /**RequestEntry*/ entry) - { - // Ignore nodes that have been blocked already - if (entry.filter && !(entry.filter instanceof WhitelistFilter)) - return; - - for (let node of nodes) - Utils.runAsync(refilterNode, this, node, entry); - } -}; -Policy.init(); - -/** - * Actual nsIContentPolicy and nsIChannelEventSink implementation - * @class - */ -let PolicyImplementation = -{ - classDescription: "Adblock Plus content policy", - classID: Components.ID("cfeaabe6-1dd1-11b2-a0c6-cb5c268894c9"), - contractID: "@adblockplus.org/abp/policy;1", - xpcom_categories: ["content-policy", "net-channel-event-sinks"], - - /** - * Registers the content policy on startup. - */ - init: function() - { - let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); - try - { - registrar.registerFactory(this.classID, this.classDescription, this.contractID, this); - } - catch (e if e.result == Cr.NS_ERROR_FACTORY_EXISTS) - { - // See bug 924340 - it might be too early to init now, the old version - // we are replacing didn't finish removing itself yet. - Utils.runAsync(this.init.bind(this)); - return; - } - - let catMan = Utils.categoryManager; - for (let category of this.xpcom_categories) - catMan.addCategoryEntry(category, this.contractID, this.contractID, false, true); - - // http-on-opening-request is new in Gecko 18, http-on-modify-request can - // be used in earlier releases. - let httpTopic = "http-on-opening-request"; - if (Services.vc.compare(Utils.platformVersion, "18.0") < 0) - httpTopic = "http-on-modify-request"; - - Services.obs.addObserver(this, httpTopic, true); - Services.obs.addObserver(this, "content-document-global-created", true); - Services.obs.addObserver(this, "xpcom-category-entry-removed", true); - Services.obs.addObserver(this, "xpcom-category-cleared", true); - - onShutdown.add(function() - { - // Our category observers should be removed before changing category - // memberships, just in case. - Services.obs.removeObserver(this, httpTopic); - Services.obs.removeObserver(this, "content-document-global-created"); - Services.obs.removeObserver(this, "xpcom-category-entry-removed"); - Services.obs.removeObserver(this, "xpcom-category-cleared"); - - for (let category of this.xpcom_categories) - catMan.deleteCategoryEntry(category, this.contractID, false); - - // This needs to run asynchronously, see bug 753687 - Utils.runAsync(function() - { - registrar.unregisterFactory(this.classID, this); - }.bind(this)); - - this.previousRequest = null; - }.bind(this)); - }, - - // - // nsISupports interface implementation - // - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy, Ci.nsIObserver, - Ci.nsIChannelEventSink, Ci.nsIFactory, Ci.nsISupportsWeakReference]), - - // - // nsIContentPolicy interface implementation - // - - shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra) - { - // Ignore requests without context and top-level documents - if (!node || contentType == Policy.type.DOCUMENT) - return Ci.nsIContentPolicy.ACCEPT; - - // Ignore standalone objects - if (contentType == Policy.type.OBJECT && node.ownerDocument && !/^text\/|[+\/]xml$/.test(node.ownerDocument.contentType)) - return Ci.nsIContentPolicy.ACCEPT; - - let wnd = Utils.getWindow(node); - if (!wnd) - return Ci.nsIContentPolicy.ACCEPT; - - // Ignore whitelisted schemes - let location = Utils.unwrapURL(contentLocation); - if (!Policy.isBlockableScheme(location)) - return Ci.nsIContentPolicy.ACCEPT; - - // Interpret unknown types as "other" - if (!(contentType in Policy.typeDescr)) - contentType = Policy.type.OTHER; - - let result = Policy.processNode(wnd, node, contentType, location, false); - if (result) - { - // We didn't block this request so we will probably see it again in - // http-on-opening-request. Keep it so that we can associate it with the - // channel there - will be needed in case of redirect. - this.previousRequest = [location, contentType]; - } - return (result ? Ci.nsIContentPolicy.ACCEPT : Ci.nsIContentPolicy.REJECT_REQUEST); - }, - - shouldProcess: function(contentType, contentLocation, requestOrigin, insecNode, mimeType, extra) - { - return Ci.nsIContentPolicy.ACCEPT; - }, - - // - // nsIObserver interface implementation - // - observe: function(subject, topic, data, additional) - { - switch (topic) - { - case "content-document-global-created": - { - if (!(subject instanceof Ci.nsIDOMWindow) || !subject.opener) - return; - - let uri = additional || Utils.makeURI(subject.location.href); - if (!Policy.processNode(subject.opener, subject.opener.document, Policy.type.POPUP, uri, false)) - { - subject.stop(); - Utils.runAsync(subject.close, subject); - } - else if (uri.spec == "about:blank") - { - // An about:blank pop-up most likely means that a load will be - // initiated synchronously. Set a flag for our "http-on-opening-request" - // handler. - this.expectingPopupLoad = true; - Utils.runAsync(function() - { - this.expectingPopupLoad = false; - }); - } - break; - } - case "http-on-opening-request": - case "http-on-modify-request": - { - if (!(subject instanceof Ci.nsIHttpChannel)) - return; - - if (this.previousRequest && subject.URI == this.previousRequest[0] && - subject instanceof Ci.nsIWritablePropertyBag) - { - // We just handled a content policy call for this request - associate - // the data with the channel so that we can find it in case of a redirect. - subject.setProperty("abpRequestType", this.previousRequest[1]); - this.previousRequest = null; - } - - if (this.expectingPopupLoad) - { - let wnd = Utils.getRequestWindow(subject); - if (wnd && wnd.opener && wnd.location.href == "about:blank") - { - this.observe(wnd, "content-document-global-created", null, subject.URI); - if (subject instanceof Ci.nsIWritablePropertyBag) - subject.setProperty("abpRequestType", Policy.type.POPUP); - } - } - - break; - } - case "xpcom-category-entry-removed": - case "xpcom-category-cleared": - { - let category = data; - if (this.xpcom_categories.indexOf(category) < 0) - return; - - if (topic == "xpcom-category-entry-removed" && - subject instanceof Ci.nsISupportsCString && - subject.data != this.contractID) - { - return; - } - - // Our category entry was removed, make sure to add it back - let catMan = Utils.categoryManager; - catMan.addCategoryEntry(category, this.contractID, this.contractID, false, true); - break; - } - } - }, - - // - // nsIChannelEventSink interface implementation - // - - asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) - { - let result = Cr.NS_OK; - try - { - // Try to retrieve previously stored request data from the channel - let contentType; - if (oldChannel instanceof Ci.nsIWritablePropertyBag) - { - try - { - contentType = oldChannel.getProperty("abpRequestType"); - } - catch(e) - { - // No data attached, ignore this redirect - return; - } - } - - let newLocation = null; - try - { - newLocation = newChannel.URI; - } catch(e2) {} - if (!newLocation) - return; - - let wnd = Utils.getRequestWindow(newChannel); - if (!wnd) - return; - - if (contentType == Policy.type.SUBDOCUMENT && wnd.parent == wnd.top && wnd.opener) - { - // This is a window opened in a new tab miscategorized as frame load, - // see bug 467514. Get the frame as context to be at least consistent. - wnd = wnd.opener; - } - - if (contentType == Policy.type.POPUP && wnd.opener) - { - // Popups are initiated by their opener, not their own window. - wnd = wnd.opener; - } - - if (!Policy.processNode(wnd, wnd.document, contentType, newLocation, false)) - result = Cr.NS_BINDING_ABORTED; - } - catch (e) - { - // We shouldn't throw exceptions here - this will prevent the redirect. - Cu.reportError(e); - } - finally - { - callback.onRedirectVerifyCallback(result); - } - }, - - // - // nsIFactory interface implementation - // - - createInstance: function(outer, iid) - { - if (outer) - throw Cr.NS_ERROR_NO_AGGREGATION; - return this.QueryInterface(iid); - } -}; -PolicyImplementation.init(); - -/** - * Nodes scheduled for post-processing (might be null). - * @type Array of Node - */ -let scheduledNodes = null; - -/** - * Schedules a node for post-processing. - */ -function schedulePostProcess(/**Element*/ node) -{ - if (scheduledNodes) - scheduledNodes.push(node); - else - { - scheduledNodes = [node]; - Utils.runAsync(postProcessNodes); - } -} - -/** - * Processes nodes scheduled for post-processing (typically hides them). - */ -function postProcessNodes() -{ - let nodes = scheduledNodes; - scheduledNodes = null; - - for (let node of nodes) - { - // adjust frameset's cols/rows for frames - let parentNode = node.parentNode; - if (parentNode && parentNode instanceof Ci.nsIDOMHTMLFrameSetElement) - { - let hasCols = (parentNode.cols && parentNode.cols.indexOf(",") > 0); - let hasRows = (parentNode.rows && parentNode.rows.indexOf(",") > 0); - if ((hasCols || hasRows) && !(hasCols && hasRows)) - { - let index = -1; - for (let frame = node; frame; frame = frame.previousSibling) - if (frame instanceof Ci.nsIDOMHTMLFrameElement || frame instanceof Ci.nsIDOMHTMLFrameSetElement) - index++; - - let property = (hasCols ? "cols" : "rows"); - let weights = parentNode[property].split(","); - weights[index] = "0"; - parentNode[property] = weights.join(","); - } - } - else - node.classList.add(collapsedClass); - } -} - -/** - * Extracts the hostname from a URL (might return null). - */ -function getHostname(/**String*/ url) /**String*/ -{ - try - { - return Utils.unwrapURL(url).host; - } - catch(e) - { - return null; - } -} - -/** - * Retrieves the location of a window. - * @param wnd {nsIDOMWindow} - * @return {String} window location or null on failure - */ -function getWindowLocation(wnd) -{ - if ("name" in wnd && wnd.name == "messagepane") - { - // Thunderbird branch - try - { - let mailWnd = wnd.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindow); - - // Typically we get a wrapped mail window here, need to unwrap - try - { - mailWnd = mailWnd.wrappedJSObject; - } catch(e) {} - - if ("currentHeaderData" in mailWnd && "content-base" in mailWnd.currentHeaderData) - { - return mailWnd.currentHeaderData["content-base"].headerValue; - } - else if ("currentHeaderData" in mailWnd && "from" in mailWnd.currentHeaderData) - { - let emailAddress = Utils.headerParser.extractHeaderAddressMailboxes(mailWnd.currentHeaderData.from.headerValue); - if (emailAddress) - return 'mailto:' + emailAddress.replace(/^[\s"]+/, "").replace(/[\s"]+$/, "").replace(/\s/g, '%20'); - } - } catch(e) {} - } - - // Firefox branch - return wnd.location.href; -} - -/** - * Checks whether the location's origin is different from document's origin. - */ -function isThirdParty(/**nsIURI*/location, /**String*/ docDomain) /**Boolean*/ -{ - if (!location || !docDomain) - return true; - - try - { - return Utils.effectiveTLD.getBaseDomain(location) != Utils.effectiveTLD.getBaseDomainFromHost(docDomain); - } - catch (e) - { - // EffectiveTLDService throws on IP addresses, just compare the host name - let host = ""; - try - { - host = location.host; - } catch (e) {} - return host != docDomain; - } -} - -/** - * Re-checks filters on an element. - */ -function refilterNode(/**Node*/ node, /**RequestEntry*/ entry) -{ - let wnd = Utils.getWindow(node); - if (!wnd || wnd.closed) - return; - - if (entry.type == Policy.type.OBJECT) - { - node.removeEventListener("mouseover", objectMouseEventHander, true); - node.removeEventListener("mouseout", objectMouseEventHander, true); - } - Policy.processNode(wnd, node, entry.type, Utils.makeURI(entry.location), true); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/customizableUI.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/customizableUI.js deleted file mode 100644 index 7db7425..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/customizableUI.js +++ /dev/null @@ -1,320 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview This emulates a subset of the CustomizableUI API from Firefox 28. - */ - -let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", null); - -let {Utils} = require("utils"); - -// UI module has to be referenced lazily to avoid circular references -XPCOMUtils.defineLazyGetter(this, "UI", () => require("ui").UI); - -let widgets = Map(); - -function getToolbox(/**Window*/ window, /**Widget*/ widget) /**Element*/ -{ - if (!("defaultArea" in widget) || !widget.defaultArea) - return null; - - let toolbar = UI.findElement(window, widget.defaultArea); - if (!toolbar) - return null; - - let toolbox = toolbar.toolbox; - if (toolbox && ("palette" in toolbox) && toolbox.palette) - return toolbox; - else - return null; -} - -function getToolbar(/**Element*/ element) /**Element*/ -{ - for (let parent = element.parentNode; parent; parent = parent.parentNode) - if (parent.localName == "toolbar") - return parent; - return null; -} - -function getPaletteItem(/**Element*/ toolbox, /**String*/ id) /**Element*/ -{ - for (let child of toolbox.palette.children) - if (child.id == id) - return child; - - return null; -} - -function restoreWidget(/**Element*/ toolbox, /**Widget*/ widget) -{ - // Create node - let node = widget.onBuild(toolbox.ownerDocument); - - // Insert into the palette first - toolbox.palette.insertBefore(node, toolbox.palette.firstChild); - - // Now find out where we should put it - let position = toolbox.getAttribute(widget.positionAttribute); - if (!/^\S*,\S*,\S*$/.test(position)) - position = null; - - if (position == null) - { - // No explicitly saved position but maybe we can find it in a currentset - // attribute somewhere. - let toolbars = toolbox.externalToolbars.slice(); - for (let child of toolbox.children) - if (child.localName == "toolbar") - toolbars.push(child); - for (let toolbar of toolbars) - { - let currentSet = toolbar.getAttribute("currentset"); - if (currentSet) - { - let items = currentSet.split(","); - let index = items.indexOf(widget.id); - if (index >= 0) - { - let before = (index + 1 < items.length ? items[index + 1] : ""); - position = "visible," + toolbar.id + "," + before; - toolbox.setAttribute(widget.positionAttribute, position); - toolbox.ownerDocument.persist(toolbox.id, widget.positionAttribute); - break; - } - } - } - } - - showWidget(toolbox, widget, position); -} - -function showWidget(/**Element*/ toolbox, /**Widget*/ widget, /**String*/ position) -{ - let visible = "visible", parent = null, before = null; - if (position) - { - [visible, parent, before] = position.split(",", 3); - parent = toolbox.ownerDocument.getElementById(parent); - if (before == "") - before = null; - else - before = toolbox.ownerDocument.getElementById(before); - if (before && before.parentNode != parent) - before = null; - } - - if (visible == "visible" && !parent) - { - let insertionPoint = { - parent: widget.defaultArea - }; - if (typeof widget.defaultBefore != "undefined") - insertionPoint.before = widget.defaultBefore; - if (typeof widget.defaultAfter != "undefined") - insertionPoint.after = widget.defaultAfter; - - [parent, before] = UI.resolveInsertionPoint(toolbox.ownerDocument.defaultView, insertionPoint); - } - - if (parent && parent.localName != "toolbar") - parent = null; - - if (visible != "visible") - { - // Move to palette if the item is currently visible - let node = toolbox.ownerDocument.getElementById(widget.id); - if (node) - toolbox.palette.appendChild(node); - } - else if (parent) - { - // Add the item to the toolbar - let items = parent.currentSet.split(","); - let index = (before ? items.indexOf(before.id) : -1); - if (index < 0) - before = null; - parent.insertItem(widget.id, before, null, false); - } - - saveState(toolbox, widget); -} - -function removeWidget(/**Window*/ window, /**Widget*/ widget) -{ - let element = window.document.getElementById(widget.id); - if (element) - element.parentNode.removeChild(element); - - let toolbox = getToolbox(window, widget); - if (toolbox) - { - let paletteItem = getPaletteItem(toolbox, widget.id); - if (paletteItem) - paletteItem.parentNode.removeChild(paletteItem); - } -} - -function onToolbarCustomization(/**Event*/ event) -{ - let toolbox = event.currentTarget; - for (let [id, widget] of widgets) - saveState(toolbox, widget); -} - -function saveState(/**Element*/ toolbox, /**Widget*/ widget) -{ - let node = toolbox.ownerDocument.getElementById(widget.id); - - let position = toolbox.getAttribute(widget.positionAttribute) || "hidden,,"; - if (node && node.parentNode.localName != "toolbarpalette") - { - if (typeof widget.onAdded == "function") - widget.onAdded(node) - - let toolbar = getToolbar(node); - position = "visible," + toolbar.id + "," + (node.nextSibling ? node.nextSibling.id : ""); - } - else - position = position.replace(/^visible,/, "hidden,") - - toolbox.setAttribute(widget.positionAttribute, position); - toolbox.ownerDocument.persist(toolbox.id, widget.positionAttribute); -} - -let CustomizableUI = exports.CustomizableUI = -{ - createWidget: function(widget) - { - if (typeof widget.id == "undefined" || - typeof widget.defaultArea == "undefined" || - typeof widget.positionAttribute == "undefined") - { - throw new Error("Unexpected: required property missing from the widget data"); - } - widgets.set(widget.id, widget); - - // Show widget in any existing windows - for (let window of UI.applicationWindows) - { - let toolbox = getToolbox(window, widget); - if (toolbox) - { - toolbox.addEventListener("aftercustomization", onToolbarCustomization, false); - restoreWidget(toolbox, widget); - } - } - }, - - destroyWidget: function(id) - { - // Don't do anything here. This function is called on shutdown, - // removeFromWindow will take care of cleaning up already. - }, - - getPlacementOfWidget: function(id) - { - let window = UI.currentWindow; - if (!window) - return null; - - let widget = window.document.getElementById(id); - if (!widget) - return null; - - let toolbar = getToolbar(widget); - if (!toolbar) - return null; - - return {area: toolbar.id}; - }, - - addWidgetToArea: function(id) - { - // Note: the official API function also has area and position parameters. - // We ignore those here and simply restore the previous position instead. - let widget = widgets.get(id); - for (let window of UI.applicationWindows) - { - let toolbox = getToolbox(window, widget); - if (!toolbox) - continue; - - let position = toolbox.getAttribute(widget.positionAttribute); - if (position) - position = position.replace(/^hidden,/, "visible,"); - showWidget(toolbox, widget, position); - } - }, - - removeWidgetFromArea: function(id) - { - let widget = widgets.get(id); - for (let window of UI.applicationWindows) - { - let toolbox = getToolbox(window, widget); - if (!toolbox) - continue; - - let position = toolbox.getAttribute(widget.positionAttribute); - if (position) - position = position.replace(/^visible,/, "hidden,"); - else - position = "hidden,,"; - showWidget(toolbox, widget, position); - } - } -}; - -let {WindowObserver} = require("windowObserver"); -new WindowObserver({ - applyToWindow: function(window) - { - let {isKnownWindow} = require("appSupport"); - if (!isKnownWindow(window)) - return; - - for (let [id, widget] of widgets) - { - let toolbox = getToolbox(window, widget); - if (toolbox) - { - toolbox.addEventListener("aftercustomization", onToolbarCustomization, false); - - // Restore widget asynchronously to allow the stylesheet to load - Utils.runAsync(restoreWidget.bind(null, toolbox, widget)); - } - } - }, - - removeFromWindow: function(window) - { - let {isKnownWindow} = require("appSupport"); - if (!isKnownWindow(window)) - return; - - for (let [id, widget] of widgets) - { - let toolbox = getToolbox(window, widget); - if (toolbox) - toolbox.removeEventListener("aftercustomization", onToolbarCustomization, false); - - removeWidget(window, widget); - } - } -}); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/downloader.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/downloader.js deleted file mode 100644 index d1ef209..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/downloader.js +++ /dev/null @@ -1,381 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Downloads a set of URLs in regular time intervals. - */ - -let {Utils} = require("utils"); - -let MILLIS_IN_SECOND = exports.MILLIS_IN_SECOND = 1000; -let MILLIS_IN_MINUTE = exports.MILLIS_IN_MINUTE = 60 * MILLIS_IN_SECOND; -let MILLIS_IN_HOUR = exports.MILLIS_IN_HOUR = 60 * MILLIS_IN_MINUTE; -let MILLIS_IN_DAY = exports.MILLIS_IN_DAY = 24 * MILLIS_IN_HOUR; - -/** - * Creates a new downloader instance. - * @param {Function} dataSource Function that will yield downloadable objects on each check - * @param {Integer} initialDelay Number of milliseconds to wait before the first check - * @param {Integer} checkInterval Interval between the checks - * @constructor - */ -let Downloader = exports.Downloader = function Downloader(dataSource, initialDelay, checkInterval) -{ - this.dataSource = dataSource; - this._timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - this._timer.initWithCallback(function() - { - this._timer.delay = checkInterval; - this._doCheck(); - }.bind(this), initialDelay, Ci.nsITimer.TYPE_REPEATING_SLACK); - this._downloading = Object.create(null); -} -Downloader.prototype = -{ - /** - * Timer triggering the downloads. - * @type nsITimer - */ - _timer: null, - - /** - * Map containing the URLs of objects currently being downloaded as its keys. - */ - _downloading: null, - - /** - * Function that will yield downloadable objects on each check. - * @type Function - */ - dataSource: null, - - /** - * Maximal time interval that the checks can be left out until the soft - * expiration interval increases. - * @type Integer - */ - maxAbsenceInterval: 1 * MILLIS_IN_DAY, - - /** - * Minimal time interval before retrying a download after an error. - * @type Integer - */ - minRetryInterval: 1 * MILLIS_IN_DAY, - - /** - * Maximal allowed expiration interval, larger expiration intervals will be - * corrected. - * @type Integer - */ - maxExpirationInterval: 14 * MILLIS_IN_DAY, - - /** - * Maximal number of redirects before the download is considered as failed. - * @type Integer - */ - maxRedirects: 5, - - /** - * Called whenever expiration intervals for an object need to be adapted. - * @type Function - */ - onExpirationChange: null, - - /** - * Callback to be triggered whenever a download starts. - * @type Function - */ - onDownloadStarted: null, - - /** - * Callback to be triggered whenever a download finishes successfully. The - * callback can return an error code to indicate that the data is wrong. - * @type Function - */ - onDownloadSuccess: null, - - /** - * Callback to be triggered whenever a download fails. - * @type Function - */ - onDownloadError: null, - - /** - * Checks whether anything needs downloading. - */ - _doCheck: function() - { - let now = Date.now(); - for (let downloadable of this.dataSource()) - { - if (downloadable.lastCheck && now - downloadable.lastCheck > this.maxAbsenceInterval) - { - // No checks for a long time interval - user must have been offline, e.g. - // during a weekend. Increase soft expiration to prevent load peaks on the - // server. - downloadable.softExpiration += now - downloadable.lastCheck; - } - downloadable.lastCheck = now; - - // Sanity check: do expiration times make sense? Make sure people changing - // system clock don't get stuck with outdated subscriptions. - if (downloadable.hardExpiration - now > this.maxExpirationInterval) - downloadable.hardExpiration = now + this.maxExpirationInterval; - if (downloadable.softExpiration - now > this.maxExpirationInterval) - downloadable.softExpiration = now + this.maxExpirationInterval; - - // Notify the caller about changes to expiration parameters - if (this.onExpirationChange) - this.onExpirationChange(downloadable); - - // Does that object need downloading? - if (downloadable.softExpiration > now && downloadable.hardExpiration > now) - continue; - - // Do not retry downloads too often - if (downloadable.lastError && now - downloadable.lastError < this.minRetryInterval) - continue; - - this._download(downloadable, 0); - } - }, - - /** - * Stops the periodic checks. - */ - cancel: function() - { - this._timer.cancel(); - }, - - /** - * Checks whether an address is currently being downloaded. - */ - isDownloading: function(/**String*/ url) /**Boolean*/ - { - return url in this._downloading; - }, - - /** - * Starts downloading for an object. - */ - download: function(/**Downloadable*/ downloadable) - { - // Make sure to detach download from the current execution context - Utils.runAsync(this._download.bind(this, downloadable, 0)); - }, - - /** - * Generates the real download URL for an object by appending various - * parameters. - */ - getDownloadUrl: function(/**Downloadable*/ downloadable) /** String*/ - { - let {addonName, addonVersion, application, applicationVersion, platform, platformVersion} = require("info"); - let url = downloadable.redirectURL || downloadable.url; - if (url.indexOf("?") >= 0) - url += "&"; - else - url += "?"; - url += "addonName=" + encodeURIComponent(addonName) + - "&addonVersion=" + encodeURIComponent(addonVersion) + - "&application=" + encodeURIComponent(application) + - "&applicationVersion=" + encodeURIComponent(applicationVersion) + - "&platform=" + encodeURIComponent(platform) + - "&platformVersion=" + encodeURIComponent(platformVersion) + - "&lastVersion=" + encodeURIComponent(downloadable.lastVersion); - return url; - }, - - _download: function(downloadable, redirects) - { - if (this.isDownloading(downloadable.url)) - return; - - let downloadUrl = this.getDownloadUrl(downloadable); - let request = null; - - let errorCallback = function errorCallback(error) - { - let channelStatus = -1; - try - { - channelStatus = request.channel.status; - } catch (e) {} - - let responseStatus = request.status; - - Cu.reportError("Adblock Plus: Downloading URL " + downloadable.url + " failed (" + error + ")\n" + - "Download address: " + downloadUrl + "\n" + - "Channel status: " + channelStatus + "\n" + - "Server response: " + responseStatus); - - if (this.onDownloadError) - { - // Allow one extra redirect if the error handler gives us a redirect URL - let redirectCallback = null; - if (redirects <= this.maxRedirects) - { - redirectCallback = function redirectCallback(url) - { - downloadable.redirectURL = url; - this._download(downloadable, redirects + 1); - }.bind(this); - } - - this.onDownloadError(downloadable, downloadUrl, error, channelStatus, responseStatus, redirectCallback); - } - }.bind(this); - - try - { - request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", downloadUrl); - } - catch (e) - { - errorCallback("synchronize_invalid_url"); - return; - } - - try { - request.overrideMimeType("text/plain"); - request.channel.loadFlags = request.channel.loadFlags | - request.channel.INHIBIT_CACHING | - request.channel.VALIDATE_ALWAYS; - - // Override redirect limit from preferences, user might have set it to 1 - if (request.channel instanceof Ci.nsIHttpChannel) - request.channel.redirectionLimit = this.maxRedirects; - } - catch (e) - { - Cu.reportError(e) - } - - request.addEventListener("error", function(event) - { - if (onShutdown.done) - return; - - delete this._downloading[downloadable.url]; - errorCallback("synchronize_connection_error"); - }.bind(this), false); - - request.addEventListener("load", function(event) - { - if (onShutdown.done) - return; - - delete this._downloading[downloadable.url]; - - // Status will be 0 for non-HTTP requests - if (request.status && request.status != 200) - { - errorCallback("synchronize_connection_error"); - return; - } - - this.onDownloadSuccess(downloadable, request.responseText, errorCallback, function redirectCallback(url) - { - if (redirects >= this.maxRedirects) - errorCallback("synchronize_connection_error"); - else - { - downloadable.redirectURL = url; - this._download(downloadable, redirects + 1); - } - }.bind(this)); - }.bind(this), false); - - request.send(null); - - this._downloading[downloadable.url] = true; - if (this.onDownloadStarted) - this.onDownloadStarted(downloadable); - }, - - /** - * Produces a soft and a hard expiration interval for a given supplied - * expiration interval. - * @return {Array} soft and hard expiration interval - */ - processExpirationInterval: function(/**Integer*/ interval) - { - interval = Math.min(Math.max(interval, 0), this.maxExpirationInterval); - let soft = Math.round(interval * (Math.random() * 0.4 + 0.8)); - let hard = interval * 2; - let now = Date.now(); - return [now + soft, now + hard]; - } -}; - -/** - * An object that can be downloaded by the downloadable - * @param {String} url URL that has to be requested for the object - * @constructor - */ -let Downloadable = exports.Downloadable = function Downloadable(url) -{ - this.url = url; -} -Downloadable.prototype = -{ - /** - * URL that has to be requested for the object. - * @type String - */ - url: null, - - /** - * URL that the download was redirected to if any. - * @type String - */ - redirectURL: null, - - /** - * Time of last download error or 0 if the last download was successful. - * @type Integer - */ - lastError: 0, - - /** - * Time of last check whether the object needs downloading. - * @type Integer - */ - lastCheck: 0, - - /** - * Object version corresponding to the last successful download. - * @type Integer - */ - lastVersion: 0, - - /** - * Soft expiration interval, will increase if no checks are performed for a - * while. - * @type Integer - */ - softExpiration: 0, - - /** - * Hard expiration interval, this is fixed. - * @type Integer - */ - hardExpiration: 0, -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHide.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHide.js deleted file mode 100644 index df17a0f..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHide.js +++ /dev/null @@ -1,419 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Element hiding implementation. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let {Utils} = require("utils"); -let {IO} = require("io"); -let {Prefs} = require("prefs"); -let {ElemHideException} = require("filterClasses"); -let {FilterNotifier} = require("filterNotifier"); -let {AboutHandler} = require("elemHideHitRegistration"); -let {TimeLine} = require("timeline"); - -/** - * Lookup table, filters by their associated key - * @type Object - */ -let filterByKey = {__proto__: null}; - -/** - * Lookup table, keys of the filters by filter text - * @type Object - */ -let keyByFilter = {__proto__: null}; - -/** - * Lookup table, keys are known element hiding exceptions - * @type Object - */ -let knownExceptions = {__proto__: null}; - -/** - * Lookup table, lists of element hiding exceptions by selector - * @type Object - */ -let exceptions = {__proto__: null}; - -/** - * Currently applied stylesheet URL - * @type nsIURI - */ -let styleURL = null; - -/** - * Element hiding component - * @class - */ -let ElemHide = exports.ElemHide = -{ - /** - * Indicates whether filters have been added or removed since the last apply() call. - * @type Boolean - */ - isDirty: false, - - /** - * Inidicates whether the element hiding stylesheet is currently applied. - * @type Boolean - */ - applied: false, - - /** - * Called on module startup. - */ - init: function() - { - TimeLine.enter("Entered ElemHide.init()"); - Prefs.addListener(function(name) - { - if (name == "enabled") - ElemHide.apply(); - }); - onShutdown.add(function() - { - ElemHide.unapply(); - }); - - TimeLine.log("done adding prefs listener"); - - let styleFile = IO.resolveFilePath(Prefs.data_directory); - styleFile.append("elemhide.css"); - styleURL = Services.io.newFileURI(styleFile).QueryInterface(Ci.nsIFileURL); - TimeLine.log("done determining stylesheet URL"); - - TimeLine.leave("ElemHide.init() done"); - }, - - /** - * Removes all known filters - */ - clear: function() - { - filterByKey = {__proto__: null}; - keyByFilter = {__proto__: null}; - knownExceptions = {__proto__: null}; - exceptions = {__proto__: null}; - ElemHide.isDirty = false; - ElemHide.unapply(); - }, - - /** - * Add a new element hiding filter - * @param {ElemHideFilter} filter - */ - add: function(filter) - { - if (filter instanceof ElemHideException) - { - if (filter.text in knownExceptions) - return; - - let selector = filter.selector; - if (!(selector in exceptions)) - exceptions[selector] = []; - exceptions[selector].push(filter); - knownExceptions[filter.text] = true; - } - else - { - if (filter.text in keyByFilter) - return; - - let key; - do { - key = Math.random().toFixed(15).substr(5); - } while (key in filterByKey); - - filterByKey[key] = filter; - keyByFilter[filter.text] = key; - ElemHide.isDirty = true; - } - }, - - /** - * Removes an element hiding filter - * @param {ElemHideFilter} filter - */ - remove: function(filter) - { - if (filter instanceof ElemHideException) - { - if (!(filter.text in knownExceptions)) - return; - - let list = exceptions[filter.selector]; - let index = list.indexOf(filter); - if (index >= 0) - list.splice(index, 1); - delete knownExceptions[filter.text]; - } - else - { - if (!(filter.text in keyByFilter)) - return; - - let key = keyByFilter[filter.text]; - delete filterByKey[key]; - delete keyByFilter[filter.text]; - ElemHide.isDirty = true; - } - }, - - /** - * Checks whether an exception rule is registered for a filter on a particular - * domain. - */ - getException: function(/**Filter*/ filter, /**String*/ docDomain) /**ElemHideException*/ - { - let selector = filter.selector; - if (!(filter.selector in exceptions)) - return null; - - let list = exceptions[filter.selector]; - for (let i = list.length - 1; i >= 0; i--) - if (list[i].isActiveOnDomain(docDomain)) - return list[i]; - - return null; - }, - - /** - * Will be set to true if apply() is running (reentrance protection). - * @type Boolean - */ - _applying: false, - - /** - * Will be set to true if an apply() call arrives while apply() is already - * running (delayed execution). - * @type Boolean - */ - _needsApply: false, - - /** - * Generates stylesheet URL and applies it globally - */ - apply: function() - { - if (this._applying) - { - this._needsApply = true; - return; - } - - TimeLine.enter("Entered ElemHide.apply()"); - - if (!ElemHide.isDirty || !Prefs.enabled) - { - // Nothing changed, looks like we merely got enabled/disabled - if (Prefs.enabled && !ElemHide.applied) - { - try - { - Utils.styleService.loadAndRegisterSheet(styleURL, Ci.nsIStyleSheetService.USER_SHEET); - ElemHide.applied = true; - } - catch (e) - { - Cu.reportError(e); - } - TimeLine.log("Applying existing stylesheet finished"); - } - else if (!Prefs.enabled && ElemHide.applied) - { - ElemHide.unapply(); - TimeLine.log("ElemHide.unapply() finished"); - } - - TimeLine.leave("ElemHide.apply() done (no file changes)"); - return; - } - - IO.writeToFile(styleURL.file, this._generateCSSContent(), function(e) - { - TimeLine.enter("ElemHide.apply() write callback"); - this._applying = false; - - // _generateCSSContent is throwing NS_ERROR_NOT_AVAILABLE to indicate that - // there are no filters. If that exception is passed through XPCOM we will - // see a proper exception here, otherwise a number. - let noFilters = (e == Cr.NS_ERROR_NOT_AVAILABLE || (e && e.result == Cr.NS_ERROR_NOT_AVAILABLE)); - if (noFilters) - { - e = null; - IO.removeFile(styleURL.file, function(e) {}); - } - else if (e) - Cu.reportError(e); - - if (this._needsApply) - { - this._needsApply = false; - this.apply(); - } - else if (!e) - { - ElemHide.isDirty = false; - - ElemHide.unapply(); - TimeLine.log("ElemHide.unapply() finished"); - - if (!noFilters) - { - try - { - Utils.styleService.loadAndRegisterSheet(styleURL, Ci.nsIStyleSheetService.USER_SHEET); - ElemHide.applied = true; - } - catch (e) - { - Cu.reportError(e); - } - TimeLine.log("Applying stylesheet finished"); - } - - FilterNotifier.triggerListeners("elemhideupdate"); - } - TimeLine.leave("ElemHide.apply() write callback done"); - }.bind(this), "ElemHideWrite"); - - this._applying = true; - - TimeLine.leave("ElemHide.apply() done", "ElemHideWrite"); - }, - - _generateCSSContent: function() - { - // Grouping selectors by domains - TimeLine.log("start grouping selectors"); - let domains = {__proto__: null}; - let hasFilters = false; - for (let key in filterByKey) - { - let filter = filterByKey[key]; - let domain = filter.selectorDomain || ""; - - let list; - if (domain in domains) - list = domains[domain]; - else - { - list = {__proto__: null}; - domains[domain] = list; - } - list[filter.selector] = key; - hasFilters = true; - } - TimeLine.log("done grouping selectors"); - - if (!hasFilters) - throw Cr.NS_ERROR_NOT_AVAILABLE; - - function escapeChar(match) - { - return "\\" + match.charCodeAt(0).toString(16) + " "; - } - - // Return CSS data - let cssTemplate = "-moz-binding: url(about:" + AboutHandler.aboutPrefix + "?%ID%#dummy) !important;"; - for (let domain in domains) - { - let rules = []; - let list = domains[domain]; - - if (domain) - yield ('@-moz-document domain("' + domain.split(",").join('"),domain("') + '"){').replace(/[^\x01-\x7F]/g, escapeChar); - else - { - // Only allow unqualified rules on a few protocols to prevent them from blocking chrome - yield '@-moz-document url-prefix("http://"),url-prefix("https://"),' - + 'url-prefix("mailbox://"),url-prefix("imap://"),' - + 'url-prefix("news://"),url-prefix("snews://"){'; - } - - for (let selector in list) - yield selector.replace(/[^\x01-\x7F]/g, escapeChar) + "{" + cssTemplate.replace("%ID%", list[selector]) + "}"; - yield '}'; - } - }, - - /** - * Unapplies current stylesheet URL - */ - unapply: function() - { - if (ElemHide.applied) - { - try - { - Utils.styleService.unregisterSheet(styleURL, Ci.nsIStyleSheetService.USER_SHEET); - } - catch (e) - { - Cu.reportError(e); - } - ElemHide.applied = false; - } - }, - - /** - * Retrieves the currently applied stylesheet URL - * @type String - */ - get styleURL() - { - return ElemHide.applied ? styleURL.spec : null; - }, - - /** - * Retrieves an element hiding filter by the corresponding protocol key - */ - getFilterByKey: function(/**String*/ key) /**Filter*/ - { - return (key in filterByKey ? filterByKey[key] : null); - }, - - /** - * Returns a list of all selectors active on a particular domain (currently - * used only in Chrome, Opera and Safari). - */ - getSelectorsForDomain: function(/**String*/ domain, /**Boolean*/ specificOnly) - { - let result = []; - for (let key in filterByKey) - { - let filter = filterByKey[key]; - - // it is important to always access filter.domains - // here, even if it isn't used, in order to - // workaround WebKit bug 132872, also see #419 - let domains = filter.domains; - - if (specificOnly && (!domains || domains[""])) - continue; - - if (filter.isActiveOnDomain(domain) && !this.getException(filter, domain)) - result.push(filter.selector); - } - return result; - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHideHitRegistration.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHideHitRegistration.js deleted file mode 100644 index a05f6df..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/elemHideHitRegistration.js +++ /dev/null @@ -1,160 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Hit counts for element hiding. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -let {Utils} = require("utils"); - -/** - * about: URL module used to count hits. - * @class - */ -let AboutHandler = exports.AboutHandler = -{ - classID: Components.ID("{55fb7be0-1dd2-11b2-98e6-9e97caf8ba67}"), - classDescription: "Element hiding hit registration protocol handler", - aboutPrefix: "abp-elemhidehit", - - /** - * Registers handler on startup. - */ - init: function() - { - let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); - registrar.registerFactory(this.classID, this.classDescription, - "@mozilla.org/network/protocol/about;1?what=" + this.aboutPrefix, this); - onShutdown.add(function() - { - registrar.unregisterFactory(this.classID, this); - }.bind(this)); - }, - - // - // Factory implementation - // - - createInstance: function(outer, iid) - { - if (outer != null) - throw Cr.NS_ERROR_NO_AGGREGATION; - - return this.QueryInterface(iid); - }, - - // - // About module implementation - // - - getURIFlags: function(uri) - { - return ("HIDE_FROM_ABOUTABOUT" in Ci.nsIAboutModule ? Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT : 0); - }, - - newChannel: function(uri) - { - let match = /\?(\d+)/.exec(uri.path) - if (!match) - throw Cr.NS_ERROR_FAILURE; - - return new HitRegistrationChannel(uri, match[1]); - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory, Ci.nsIAboutModule]) -}; -AboutHandler.init(); - -/** - * Channel returning data for element hiding hits. - * @constructor - */ -function HitRegistrationChannel(uri, key) -{ - this.key = key; - this.URI = this.originalURI = uri; -} -HitRegistrationChannel.prototype = { - key: null, - URI: null, - originalURI: null, - contentCharset: "utf-8", - contentLength: 0, - contentType: "text/xml", - owner: Utils.systemPrincipal, - securityInfo: null, - notificationCallbacks: null, - loadFlags: 0, - loadGroup: null, - name: null, - status: Cr.NS_OK, - - asyncOpen: function(listener, context) - { - let stream = this.open(); - Utils.runAsync(function() - { - try { - listener.onStartRequest(this, context); - } catch(e) {} - try { - listener.onDataAvailable(this, context, stream, 0, stream.available()); - } catch(e) {} - try { - listener.onStopRequest(this, context, Cr.NS_OK); - } catch(e) {} - }, this); - }, - - open: function() - { - let {Policy} = require("contentPolicy"); - let {ElemHide} = require("elemHide"); - let data = "<bindings xmlns='http://www.mozilla.org/xbl'><binding id='dummy'/></bindings>"; - let filter = ElemHide.getFilterByKey(this.key); - if (filter) - { - let wnd = Utils.getRequestWindow(this); - if (wnd && wnd.document && !Policy.processNode(wnd, wnd.document, Policy.type.ELEMHIDE, filter)) - data = "<bindings xmlns='http://www.mozilla.org/xbl'/>"; - } - - let stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream); - stream.setData(data, data.length); - return stream; - }, - isPending: function() - { - return false; - }, - cancel: function() - { - throw Cr.NS_ERROR_NOT_IMPLEMENTED; - }, - suspend: function() - { - throw Cr.NS_ERROR_NOT_IMPLEMENTED; - }, - resume: function() - { - throw Cr.NS_ERROR_NOT_IMPLEMENTED; - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIChannel, Ci.nsIRequest]) -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterClasses.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterClasses.js deleted file mode 100644 index cb3a5b1..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterClasses.js +++ /dev/null @@ -1,906 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Definition of Filter class and its subclasses. - */ - -let {FilterNotifier} = require("filterNotifier"); - -/** - * Abstract base class for filters - * - * @param {String} text string representation of the filter - * @constructor - */ -function Filter(text) -{ - this.text = text; - this.subscriptions = []; -} -exports.Filter = Filter; - -Filter.prototype = -{ - /** - * String representation of the filter - * @type String - */ - text: null, - - /** - * Filter subscriptions the filter belongs to - * @type Array of Subscription - */ - subscriptions: null, - - /** - * Serializes the filter to an array of strings for writing out on the disk. - * @param {Array of String} buffer buffer to push the serialization results into - */ - serialize: function(buffer) - { - buffer.push("[Filter]"); - buffer.push("text=" + this.text); - }, - - toString: function() - { - return this.text; - } -}; - -/** - * Cache for known filters, maps string representation to filter objects. - * @type Object - */ -Filter.knownFilters = {__proto__: null}; - -/** - * Regular expression that element hiding filters should match - * @type RegExp - */ -Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; -/** - * Regular expression that RegExp filters specified as RegExps should match - * @type RegExp - */ -Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; -/** - * Regular expression that options on a RegExp filter should match - * @type RegExp - */ -Filter.optionsRegExp = /\$(~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)$/; - -/** - * Creates a filter of correct type from its text representation - does the basic parsing and - * calls the right constructor then. - * - * @param {String} text as in Filter() - * @return {Filter} - */ -Filter.fromText = function(text) -{ - if (text in Filter.knownFilters) - return Filter.knownFilters[text]; - - let ret; - let match = (text.indexOf("#") >= 0 ? Filter.elemhideRegExp.exec(text) : null); - if (match) - ret = ElemHideBase.fromText(text, match[1], match[2], match[3], match[4], match[5]); - else if (text[0] == "!") - ret = new CommentFilter(text); - else - ret = RegExpFilter.fromText(text); - - Filter.knownFilters[ret.text] = ret; - return ret; -} - -/** - * Deserializes a filter - * - * @param {Object} obj map of serialized properties and their values - * @return {Filter} filter or null if the filter couldn't be created - */ -Filter.fromObject = function(obj) -{ - let ret = Filter.fromText(obj.text); - if (ret instanceof ActiveFilter) - { - if ("disabled" in obj) - ret._disabled = (obj.disabled == "true"); - if ("hitCount" in obj) - ret._hitCount = parseInt(obj.hitCount) || 0; - if ("lastHit" in obj) - ret._lastHit = parseInt(obj.lastHit) || 0; - } - return ret; -} - -/** - * Removes unnecessary whitespaces from filter text, will only return null if - * the input parameter is null. - */ -Filter.normalize = function(/**String*/ text) /**String*/ -{ - if (!text) - return text; - - // Remove line breaks and such - text = text.replace(/[^\S ]/g, ""); - - if (/^\s*!/.test(text)) - { - // Don't remove spaces inside comments - return text.replace(/^\s+/, "").replace(/\s+$/, ""); - } - else if (Filter.elemhideRegExp.test(text)) - { - // Special treatment for element hiding filters, right side is allowed to contain spaces - let [, domain, separator, selector] = /^(.*?)(#\@?#?)(.*)$/.exec(text); - return domain.replace(/\s/g, "") + separator + selector.replace(/^\s+/, "").replace(/\s+$/, ""); - } - else - return text.replace(/\s/g, ""); -} - -/** - * Class for invalid filters - * @param {String} text see Filter() - * @param {String} reason Reason why this filter is invalid - * @constructor - * @augments Filter - */ -function InvalidFilter(text, reason) -{ - Filter.call(this, text); - - this.reason = reason; -} -exports.InvalidFilter = InvalidFilter; - -InvalidFilter.prototype = -{ - __proto__: Filter.prototype, - - /** - * Reason why this filter is invalid - * @type String - */ - reason: null, - - /** - * See Filter.serialize() - */ - serialize: function(buffer) {} -}; - -/** - * Class for comments - * @param {String} text see Filter() - * @constructor - * @augments Filter - */ -function CommentFilter(text) -{ - Filter.call(this, text); -} -exports.CommentFilter = CommentFilter; - -CommentFilter.prototype = -{ - __proto__: Filter.prototype, - - /** - * See Filter.serialize() - */ - serialize: function(buffer) {} -}; - -/** - * Abstract base class for filters that can get hits - * @param {String} text see Filter() - * @param {String} domains (optional) Domains that the filter is restricted to separated by domainSeparator e.g. "foo.com|bar.com|~baz.com" - * @constructor - * @augments Filter - */ -function ActiveFilter(text, domains) -{ - Filter.call(this, text); - - this.domainSource = domains; -} -exports.ActiveFilter = ActiveFilter; - -ActiveFilter.prototype = -{ - __proto__: Filter.prototype, - - _disabled: false, - _hitCount: 0, - _lastHit: 0, - - /** - * Defines whether the filter is disabled - * @type Boolean - */ - get disabled() - { - return this._disabled; - }, - set disabled(value) - { - if (value != this._disabled) - { - let oldValue = this._disabled; - this._disabled = value; - FilterNotifier.triggerListeners("filter.disabled", this, value, oldValue); - } - return this._disabled; - }, - - /** - * Number of hits on the filter since the last reset - * @type Number - */ - get hitCount() - { - return this._hitCount; - }, - set hitCount(value) - { - if (value != this._hitCount) - { - let oldValue = this._hitCount; - this._hitCount = value; - FilterNotifier.triggerListeners("filter.hitCount", this, value, oldValue); - } - return this._hitCount; - }, - - /** - * Last time the filter had a hit (in milliseconds since the beginning of the epoch) - * @type Number - */ - get lastHit() - { - return this._lastHit; - }, - set lastHit(value) - { - if (value != this._lastHit) - { - let oldValue = this._lastHit; - this._lastHit = value; - FilterNotifier.triggerListeners("filter.lastHit", this, value, oldValue); - } - return this._lastHit; - }, - - /** - * String that the domains property should be generated from - * @type String - */ - domainSource: null, - - /** - * Separator character used in domainSource property, must be overridden by subclasses - * @type String - */ - domainSeparator: null, - - /** - * Determines whether the trailing dot in domain names isn't important and - * should be ignored, must be overridden by subclasses. - * @type Boolean - */ - ignoreTrailingDot: true, - - /** - * Determines whether domainSource is already upper-case, - * can be overridden by subclasses. - * @type Boolean - */ - domainSourceIsUpperCase: false, - - /** - * Map containing domains that this filter should match on/not match on or null if the filter should match on all domains - * @type Object - */ - get domains() - { - let domains = null; - - if (this.domainSource) - { - let source = this.domainSource; - if (!this.domainSourceIsUpperCase) { - // RegExpFilter already have uppercase domains - source = source.toUpperCase(); - } - let list = source.split(this.domainSeparator); - if (list.length == 1 && list[0][0] != "~") - { - // Fast track for the common one-domain scenario - domains = {__proto__: null, "": false}; - if (this.ignoreTrailingDot) - list[0] = list[0].replace(/\.+$/, ""); - domains[list[0]] = true; - } - else - { - let hasIncludes = false; - for (let i = 0; i < list.length; i++) - { - let domain = list[i]; - if (this.ignoreTrailingDot) - domain = domain.replace(/\.+$/, ""); - if (domain == "") - continue; - - let include; - if (domain[0] == "~") - { - include = false; - domain = domain.substr(1); - } - else - { - include = true; - hasIncludes = true; - } - - if (!domains) - domains = {__proto__: null}; - - domains[domain] = include; - } - domains[""] = !hasIncludes; - } - - this.domainSource = null; - } - - Object.defineProperty(this, "domains", {value: domains, enumerable: true}); - return this.domains; - }, - - /** - * Checks whether this filter is active on a domain. - */ - isActiveOnDomain: function(/**String*/ docDomain) /**Boolean*/ - { - // If no domains are set the rule matches everywhere - if (!this.domains) - return true; - - // If the document has no host name, match only if the filter isn't restricted to specific domains - if (!docDomain) - return this.domains[""]; - - if (this.ignoreTrailingDot) - docDomain = docDomain.replace(/\.+$/, ""); - docDomain = docDomain.toUpperCase(); - - while (true) - { - if (docDomain in this.domains) - return this.domains[docDomain]; - - let nextDot = docDomain.indexOf("."); - if (nextDot < 0) - break; - docDomain = docDomain.substr(nextDot + 1); - } - return this.domains[""]; - }, - - /** - * Checks whether this filter is active only on a domain and its subdomains. - */ - isActiveOnlyOnDomain: function(/**String*/ docDomain) /**Boolean*/ - { - if (!docDomain || !this.domains || this.domains[""]) - return false; - - if (this.ignoreTrailingDot) - docDomain = docDomain.replace(/\.+$/, ""); - docDomain = docDomain.toUpperCase(); - - for (let domain in this.domains) - if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1)) - return false; - - return true; - }, - - /** - * See Filter.serialize() - */ - serialize: function(buffer) - { - if (this._disabled || this._hitCount || this._lastHit) - { - Filter.prototype.serialize.call(this, buffer); - if (this._disabled) - buffer.push("disabled=true"); - if (this._hitCount) - buffer.push("hitCount=" + this._hitCount); - if (this._lastHit) - buffer.push("lastHit=" + this._lastHit); - } - } -}; - -/** - * Abstract base class for RegExp-based filters - * @param {String} text see Filter() - * @param {String} regexpSource filter part that the regular expression should be build from - * @param {Number} contentType (optional) Content types the filter applies to, combination of values from RegExpFilter.typeMap - * @param {Boolean} matchCase (optional) Defines whether the filter should distinguish between lower and upper case letters - * @param {String} domains (optional) Domains that the filter is restricted to, e.g. "foo.com|bar.com|~baz.com" - * @param {Boolean} thirdParty (optional) Defines whether the filter should apply to third-party or first-party content only - * @constructor - * @augments ActiveFilter - */ -function RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty) -{ - ActiveFilter.call(this, text, domains); - - if (contentType != null) - this.contentType = contentType; - if (matchCase) - this.matchCase = matchCase; - if (thirdParty != null) - this.thirdParty = thirdParty; - - if (regexpSource.length >= 2 && regexpSource[0] == "/" && regexpSource[regexpSource.length - 1] == "/") - { - // The filter is a regular expression - convert it immediately to catch syntax errors - let regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i"); - this.__defineGetter__("regexp", () => regexp); - } - else - { - // No need to convert this filter to regular expression yet, do it on demand - this.regexpSource = regexpSource; - } -} -exports.RegExpFilter = RegExpFilter; - -RegExpFilter.prototype = -{ - __proto__: ActiveFilter.prototype, - - /** - * @see ActiveFilter.domainSourceIsUpperCase - */ - domainSourceIsUpperCase: true, - - /** - * Number of filters contained, will always be 1 (required to optimize Matcher). - * @type Integer - */ - length: 1, - - /** - * @see ActiveFilter.domainSeparator - */ - domainSeparator: "|", - - /** - * Expression from which a regular expression should be generated - for delayed creation of the regexp property - * @type String - */ - regexpSource: null, - /** - * Regular expression to be used when testing against this filter - * @type RegExp - */ - get regexp() - { - // Remove multiple wildcards - let source = this.regexpSource - .replace(/\*+/g, "*") // remove multiple wildcards - .replace(/\^\|$/, "^") // remove anchors following separator placeholder - .replace(/\W/g, "\\$&") // escape special symbols - .replace(/\\\*/g, ".*") // replace wildcards by .* - // process separator placeholders (all ANSI characters but alphanumeric characters and _%.-) - .replace(/\\\^/g, "(?:[\\x00-\\x24\\x26-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7F]|$)") - .replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?!\\/)(?:[^\\/]+\\.)?") // process extended anchor at expression start - .replace(/^\\\|/, "^") // process anchor at expression start - .replace(/\\\|$/, "$") // process anchor at expression end - .replace(/^(\.\*)/, "") // remove leading wildcards - .replace(/(\.\*)$/, ""); // remove trailing wildcards - - let regexp = new RegExp(source, this.matchCase ? "" : "i"); - - delete this.regexpSource; - this.__defineGetter__("regexp", () => regexp); - return this.regexp; - }, - /** - * Content types the filter applies to, combination of values from RegExpFilter.typeMap - * @type Number - */ - contentType: 0x7FFFFFFF, - /** - * Defines whether the filter should distinguish between lower and upper case letters - * @type Boolean - */ - matchCase: false, - /** - * Defines whether the filter should apply to third-party or first-party content only. Can be null (apply to all content). - * @type Boolean - */ - thirdParty: null, - - /** - * Tests whether the URL matches this filter - * @param {String} location URL to be tested - * @param {String} contentType content type identifier of the URL - * @param {String} docDomain domain name of the document that loads the URL - * @param {Boolean} thirdParty should be true if the URL is a third-party request - * @return {Boolean} true in case of a match - */ - matches: function(location, contentType, docDomain, thirdParty, privatenode) - { - - if(this.subscriptions[0]) - if (this.subscriptions[0].privateMode) - if (privatenode==false) - return false; - - if (this.regexp.test(location) && - (RegExpFilter.typeMap[contentType] & this.contentType) != 0 && - (this.thirdParty == null || this.thirdParty == thirdParty) && - this.isActiveOnDomain(docDomain)) - { - return true; - } - - return false; - } -}; - -RegExpFilter.prototype.__defineGetter__("0", function() -{ - return this; -}); - -/** - * Creates a RegExp filter from its text representation - * @param {String} text same as in Filter() - */ -RegExpFilter.fromText = function(text) -{ - let blocking = true; - let origText = text; - if (text.indexOf("@@") == 0) - { - blocking = false; - text = text.substr(2); - } - - let contentType = null; - let matchCase = null; - let domains = null; - let siteKeys = null; - let thirdParty = null; - let collapse = null; - let options; - let match = (text.indexOf("$") >= 0 ? Filter.optionsRegExp.exec(text) : null); - if (match) - { - options = match[1].toUpperCase().split(","); - text = match.input.substr(0, match.index); - for (let option of options) - { - let value = null; - let separatorIndex = option.indexOf("="); - if (separatorIndex >= 0) - { - value = option.substr(separatorIndex + 1); - option = option.substr(0, separatorIndex); - } - option = option.replace(/-/, "_"); - if (option in RegExpFilter.typeMap) - { - if (contentType == null) - contentType = 0; - contentType |= RegExpFilter.typeMap[option]; - } - else if (option[0] == "~" && option.substr(1) in RegExpFilter.typeMap) - { - if (contentType == null) - contentType = RegExpFilter.prototype.contentType; - contentType &= ~RegExpFilter.typeMap[option.substr(1)]; - } - else if (option == "MATCH_CASE") - matchCase = true; - else if (option == "~MATCH_CASE") - matchCase = false; - else if (option == "DOMAIN" && typeof value != "undefined") - domains = value; - else if (option == "THIRD_PARTY") - thirdParty = true; - else if (option == "~THIRD_PARTY") - thirdParty = false; - else if (option == "COLLAPSE") - collapse = true; - else if (option == "~COLLAPSE") - collapse = false; - else if (option == "SITEKEY" && typeof value != "undefined") - siteKeys = value.split(/\|/); - else - return new InvalidFilter(origText, "Unknown option " + option.toLowerCase()); - } - } - - if (!blocking && (contentType == null || (contentType & RegExpFilter.typeMap.DOCUMENT)) && - (!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text)) - { - // Exception filters shouldn't apply to pages by default unless they start with a protocol name - if (contentType == null) - contentType = RegExpFilter.prototype.contentType; - contentType &= ~RegExpFilter.typeMap.DOCUMENT; - } - if (!blocking && siteKeys) - contentType = RegExpFilter.typeMap.DOCUMENT; - - try - { - if (blocking) - return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, collapse); - else - return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, siteKeys); - } - catch (e) - { - return new InvalidFilter(origText, e); - } -} - -/** - * Maps type strings like "SCRIPT" or "OBJECT" to bit masks - */ -RegExpFilter.typeMap = { - OTHER: 1, - SCRIPT: 2, - IMAGE: 4, - STYLESHEET: 8, - OBJECT: 16, - SUBDOCUMENT: 32, - DOCUMENT: 64, - XBL: 1, - PING: 1, - XMLHTTPREQUEST: 2048, - OBJECT_SUBREQUEST: 4096, - DTD: 1, - MEDIA: 16384, - FONT: 32768, - - BACKGROUND: 4, // Backwards compat, same as IMAGE - - POPUP: 0x10000000, - ELEMHIDE: 0x40000000 -}; - -// ELEMHIDE, POPUP option shouldn't be there by default -RegExpFilter.prototype.contentType &= ~(RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP); - -/** - * Class for blocking filters - * @param {String} text see Filter() - * @param {String} regexpSource see RegExpFilter() - * @param {Number} contentType see RegExpFilter() - * @param {Boolean} matchCase see RegExpFilter() - * @param {String} domains see RegExpFilter() - * @param {Boolean} thirdParty see RegExpFilter() - * @param {Boolean} collapse defines whether the filter should collapse blocked content, can be null - * @constructor - * @augments RegExpFilter - */ -function BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, collapse) -{ - RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty); - - this.collapse = collapse; -} -exports.BlockingFilter = BlockingFilter; - -BlockingFilter.prototype = -{ - __proto__: RegExpFilter.prototype, - - /** - * Defines whether the filter should collapse blocked content. Can be null (use the global preference). - * @type Boolean - */ - collapse: null -}; - -/** - * Class for whitelist filters - * @param {String} text see Filter() - * @param {String} regexpSource see RegExpFilter() - * @param {Number} contentType see RegExpFilter() - * @param {Boolean} matchCase see RegExpFilter() - * @param {String} domains see RegExpFilter() - * @param {Boolean} thirdParty see RegExpFilter() - * @param {String[]} siteKeys public keys of websites that this filter should apply to - * @constructor - * @augments RegExpFilter - */ -function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, siteKeys) -{ - RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty); - - if (siteKeys != null) - this.siteKeys = siteKeys; -} -exports.WhitelistFilter = WhitelistFilter; - -WhitelistFilter.prototype = -{ - __proto__: RegExpFilter.prototype, - - /** - * List of public keys of websites that this filter should apply to - * @type String[] - */ - siteKeys: null -} - -/** - * Base class for element hiding filters - * @param {String} text see Filter() - * @param {String} domains (optional) Host names or domains the filter should be restricted to - * @param {String} selector CSS selector for the HTML elements that should be hidden - * @constructor - * @augments ActiveFilter - */ -function ElemHideBase(text, domains, selector) -{ - ActiveFilter.call(this, text, domains || null); - - if (domains) - this.selectorDomain = domains.replace(/,~[^,]+/g, "").replace(/^~[^,]+,?/, "").toLowerCase(); - this.selector = selector; -} -exports.ElemHideBase = ElemHideBase; - -ElemHideBase.prototype = -{ - __proto__: ActiveFilter.prototype, - - /** - * @see ActiveFilter.domainSeparator - */ - domainSeparator: ",", - - /** - * @see ActiveFilter.ignoreTrailingDot - */ - ignoreTrailingDot: false, - - /** - * Host name or domain the filter should be restricted to (can be null for no restriction) - * @type String - */ - selectorDomain: null, - /** - * CSS selector for the HTML elements that should be hidden - * @type String - */ - selector: null -}; - -/** - * Creates an element hiding filter from a pre-parsed text representation - * - * @param {String} text same as in Filter() - * @param {String} domain domain part of the text representation (can be empty) - * @param {String} tagName tag name part (can be empty) - * @param {String} attrRules attribute matching rules (can be empty) - * @param {String} selector raw CSS selector (can be empty) - * @return {ElemHideFilter|ElemHideException|InvalidFilter} - */ -ElemHideBase.fromText = function(text, domain, isException, tagName, attrRules, selector) -{ - if (!selector) - { - if (tagName == "*") - tagName = ""; - - let id = null; - let additional = ""; - if (attrRules) { - attrRules = attrRules.match(/\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\)/g); - for (let rule of attrRules) { - rule = rule.substr(1, rule.length - 2); - let separatorPos = rule.indexOf("="); - if (separatorPos > 0) { - rule = rule.replace(/=/, '="') + '"'; - additional += "[" + rule + "]"; - } - else { - if (id) - { - let {Utils} = require("utils"); - return new InvalidFilter(text, Utils.getString("filter_elemhide_duplicate_id")); - } - else - id = rule; - } - } - } - - if (id) - selector = tagName + "." + id + additional + "," + tagName + "#" + id + additional; - else if (tagName || additional) - selector = tagName + additional; - else - { - let {Utils} = require("utils"); - return new InvalidFilter(text, Utils.getString("filter_elemhide_nocriteria")); - } - } - if (isException) - return new ElemHideException(text, domain, selector); - else - return new ElemHideFilter(text, domain, selector); -} - -/** - * Class for element hiding filters - * @param {String} text see Filter() - * @param {String} domains see ElemHideBase() - * @param {String} selector see ElemHideBase() - * @constructor - * @augments ElemHideBase - */ -function ElemHideFilter(text, domains, selector) -{ - ElemHideBase.call(this, text, domains, selector); -} -exports.ElemHideFilter = ElemHideFilter; - -ElemHideFilter.prototype = -{ - __proto__: ElemHideBase.prototype -}; - -/** - * Class for element hiding exceptions - * @param {String} text see Filter() - * @param {String} domains see ElemHideBase() - * @param {String} selector see ElemHideBase() - * @constructor - * @augments ElemHideBase - */ -function ElemHideException(text, domains, selector) -{ - ElemHideBase.call(this, text, domains, selector); -} -exports.ElemHideException = ElemHideException; - -ElemHideException.prototype = -{ - __proto__: ElemHideBase.prototype -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterListener.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterListener.js deleted file mode 100644 index 1687a26..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterListener.js +++ /dev/null @@ -1,282 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Component synchronizing filter storage with Matcher instances and ElemHide. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {TimeLine} = require("timeline"); -let {FilterStorage} = require("filterStorage"); -let {FilterNotifier} = require("filterNotifier"); -let {ElemHide} = require("elemHide"); -let {defaultMatcher} = require("matcher"); -let {ActiveFilter, RegExpFilter, ElemHideBase} = require("filterClasses"); -let {Prefs} = require("prefs"); - -/** - * Value of the FilterListener.batchMode property. - * @type Boolean - */ -let batchMode = false; - -/** - * Increases on filter changes, filters will be saved if it exceeds 1. - * @type Integer - */ -let isDirty = 0; - -/** - * This object can be used to change properties of the filter change listeners. - * @class - */ -let FilterListener = -{ - /** - * Set to true when executing many changes, changes will only be fully applied after this variable is set to false again. - * @type Boolean - */ - get batchMode() - { - return batchMode; - }, - set batchMode(value) - { - batchMode = value; - flushElemHide(); - }, - - /** - * Increases "dirty factor" of the filters and calls FilterStorage.saveToDisk() - * if it becomes 1 or more. Save is executed delayed to prevent multiple - * subsequent calls. If the parameter is 0 it forces saving filters if any - * changes were recorded after the previous save. - */ - setDirty: function(/**Integer*/ factor) - { - if (factor == 0 && isDirty > 0) - isDirty = 1; - else - isDirty += factor; - if (isDirty >= 1) - FilterStorage.saveToDisk(); - } -}; - -/** - * Observer listening to history purge actions. - * @class - */ -let HistoryPurgeObserver = -{ - observe: function(subject, topic, data) - { - if (topic == "browser:purge-session-history" && Prefs.clearStatsOnHistoryPurge) - { - FilterStorage.resetHitCounts(); - FilterListener.setDirty(0); // Force saving to disk - - Prefs.recentReports = []; - } - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) -}; - -/** - * Initializes filter listener on startup, registers the necessary hooks. - */ -function init() -{ - TimeLine.enter("Entered filter listener initialization()"); - - FilterNotifier.addListener(function(action, item, newValue, oldValue) - { - let match = /^(\w+)\.(.*)/.exec(action); - if (match && match[1] == "filter") - onFilterChange(match[2], item, newValue, oldValue); - else if (match && match[1] == "subscription") - onSubscriptionChange(match[2], item, newValue, oldValue); - else - onGenericChange(action, item); - }); - - if ("nsIStyleSheetService" in Ci) - ElemHide.init(); - else - flushElemHide = function() {}; // No global stylesheet in Chrome & Co. - FilterStorage.loadFromDisk(); - - TimeLine.log("done initializing data structures"); - - Services.obs.addObserver(HistoryPurgeObserver, "browser:purge-session-history", true); - onShutdown.add(function() - { - Services.obs.removeObserver(HistoryPurgeObserver, "browser:purge-session-history"); - }); - TimeLine.log("done adding observers"); - - TimeLine.leave("Filter listener initialization done"); -} -init(); - -/** - * Calls ElemHide.apply() if necessary. - */ -function flushElemHide() -{ - if (!batchMode && ElemHide.isDirty) - ElemHide.apply(); -} - -/** - * Notifies Matcher instances or ElemHide object about a new filter - * if necessary. - * @param {Filter} filter filter that has been added - */ -function addFilter(filter) -{ - if (!(filter instanceof ActiveFilter) || filter.disabled) - return; - - let hasEnabled = false; - for (let i = 0; i < filter.subscriptions.length; i++) - if (!filter.subscriptions[i].disabled) - hasEnabled = true; - if (!hasEnabled) - return; - - if (filter instanceof RegExpFilter) - defaultMatcher.add(filter); - else if (filter instanceof ElemHideBase) - ElemHide.add(filter); -} - -/** - * Notifies Matcher instances or ElemHide object about removal of a filter - * if necessary. - * @param {Filter} filter filter that has been removed - */ -function removeFilter(filter) -{ - if (!(filter instanceof ActiveFilter)) - return; - - if (!filter.disabled) - { - let hasEnabled = false; - for (let i = 0; i < filter.subscriptions.length; i++) - if (!filter.subscriptions[i].disabled) - hasEnabled = true; - if (hasEnabled) - return; - } - - if (filter instanceof RegExpFilter) - defaultMatcher.remove(filter); - else if (filter instanceof ElemHideBase) - ElemHide.remove(filter); -} - -/** - * Subscription change listener - */ -function onSubscriptionChange(action, subscription, newValue, oldValue) -{ - FilterListener.setDirty(1); - - if (action != "added" && action != "removed" && action != "disabled" && action != "updated") - return; - - if (action != "removed" && !(subscription.url in FilterStorage.knownSubscriptions)) - { - // Ignore updates for subscriptions not in the list - return; - } - - if ((action == "added" || action == "removed" || action == "updated") && subscription.disabled) - { - // Ignore adding/removing/updating of disabled subscriptions - return; - } - - if (action == "added" || action == "removed" || action == "disabled") - { - let method = (action == "added" || (action == "disabled" && newValue == false) ? addFilter : removeFilter); - if (subscription.filters) - subscription.filters.forEach(method); - } - else if (action == "updated") - { - subscription.oldFilters.forEach(removeFilter); - subscription.filters.forEach(addFilter); - } - - flushElemHide(); -} - -/** - * Filter change listener - */ -function onFilterChange(action, filter, newValue, oldValue) -{ - if (action == "hitCount" && newValue == 0) - { - // Filter hits are being reset, make sure these changes are saved. - FilterListener.setDirty(0); - } - else if (action == "hitCount" || action == "lastHit") - FilterListener.setDirty(0.002); - else - FilterListener.setDirty(1); - - if (action != "added" && action != "removed" && action != "disabled") - return; - - if ((action == "added" || action == "removed") && filter.disabled) - { - // Ignore adding/removing of disabled filters - return; - } - - if (action == "added" || (action == "disabled" && newValue == false)) - addFilter(filter); - else - removeFilter(filter); - flushElemHide(); -} - -/** - * Generic notification listener - */ -function onGenericChange(action) -{ - if (action == "load") - { - isDirty = 0; - - defaultMatcher.clear(); - ElemHide.clear(); - for (let subscription of FilterStorage.subscriptions) - if (!subscription.disabled) - subscription.filters.forEach(addFilter); - flushElemHide(); - } - else if (action == "save") - isDirty = 0; -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterNotifier.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterNotifier.js deleted file mode 100644 index 010081e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterNotifier.js +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview This component manages listeners and calls them to distributes - * messages about filter changes. - */ - -/** - * List of registered listeners - * @type Array of function(action, item, newValue, oldValue) - */ -let listeners = []; - -/** - * This class allows registering and triggering listeners for filter events. - * @class - */ -let FilterNotifier = exports.FilterNotifier = -{ - /** - * Adds a listener - */ - addListener: function(/**function(action, item, newValue, oldValue)*/ listener) - { - if (listeners.indexOf(listener) >= 0) - return; - - listeners.push(listener); - }, - - /** - * Removes a listener that was previosly added via addListener - */ - removeListener: function(/**function(action, item, newValue, oldValue)*/ listener) - { - let index = listeners.indexOf(listener); - if (index >= 0) - listeners.splice(index, 1); - }, - - /** - * Notifies listeners about an event - * @param {String} action event code ("load", "save", "elemhideupdate", - * "subscription.added", "subscription.removed", - * "subscription.disabled", "subscription.title", - * "subscription.lastDownload", "subscription.downloadStatus", - * "subscription.homepage", "subscription.updated", - * "filter.added", "filter.removed", "filter.moved", - * "filter.disabled", "filter.hitCount", "filter.lastHit") - * @param {Subscription|Filter} item item that the change applies to - */ - triggerListeners: function(action, item, param1, param2, param3) - { - let list = listeners.slice(); - for (let listener of list) - listener(action, item, param1, param2, param3); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterStorage.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterStorage.js deleted file mode 100644 index 546f788..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/filterStorage.js +++ /dev/null @@ -1,897 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview FilterStorage class responsible for managing user's subscriptions and filters. - */ - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/FileUtils.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -let {IO} = require("io"); -let {Prefs} = require("prefs"); -let {Filter, ActiveFilter} = require("filterClasses"); -let {Subscription, SpecialSubscription, ExternalSubscription} = require("subscriptionClasses"); -let {FilterNotifier} = require("filterNotifier"); -let {Utils} = require("utils"); -let {TimeLine} = require("timeline"); - -/** - * Version number of the filter storage file format. - * @type Integer - */ -let formatVersion = 4; - -/** - * This class reads user's filters from disk, manages them in memory and writes them back. - * @class - */ -let FilterStorage = exports.FilterStorage = -{ - /** - * Version number of the patterns.ini format used. - * @type Integer - */ - get formatVersion() - { - return formatVersion; - }, - - /** - * File that the filter list has been loaded from and should be saved to - * @type nsIFile - */ - get sourceFile() - { - let file = null; - if (Prefs.patternsfile) - { - // Override in place, use it instead of placing the file in the regular data dir - file = IO.resolveFilePath(Prefs.patternsfile); - } - if (!file) - { - // Place the file in the data dir - file = IO.resolveFilePath(Prefs.data_directory); - if (file) - file.append("patterns.ini"); - } - if (!file) - { - // Data directory pref misconfigured? Try the default value - try - { - file = IO.resolveFilePath(Services.prefs.getDefaultBranch("extensions.adblockplus.").getCharPref("data_directory")); - if (file) - file.append("patterns.ini"); - } catch(e) {} - } - - if (!file) - Cu.reportError("Adblock Plus: Failed to resolve filter file location from extensions.adblockplus.patternsfile preference"); - - this.__defineGetter__("sourceFile", () => file); - return this.sourceFile; - }, - - /** - * Will be set to true if no patterns.ini file exists. - * @type Boolean - */ - firstRun: false, - - /** - * Map of properties listed in the filter storage file before the sections - * start. Right now this should be only the format version. - */ - fileProperties: {__proto__: null}, - - /** - * List of filter subscriptions containing all filters - * @type Array of Subscription - */ - subscriptions: [], - - /** - * Map of subscriptions already on the list, by their URL/identifier - * @type Object - */ - knownSubscriptions: {__proto__: null}, - - /** - * Finds the filter group that a filter should be added to by default. Will - * return null if this group doesn't exist yet. - */ - getGroupForFilter: function(/**Filter*/ filter) /**SpecialSubscription*/ - { - let generalSubscription = null; - for (let subscription of FilterStorage.subscriptions) - { - if (subscription instanceof SpecialSubscription && !subscription.disabled) - { - // Always prefer specialized subscriptions - if (subscription.isDefaultFor(filter)) - return subscription; - - // If this is a general subscription - store it as fallback - if (!generalSubscription && (!subscription.defaults || !subscription.defaults.length)) - generalSubscription = subscription; - } - } - return generalSubscription; - }, - - /** - * Adds a filter subscription to the list - * @param {Subscription} subscription filter subscription to be added - * @param {Boolean} silent if true, no listeners will be triggered (to be used when filter list is reloaded) - */ - addSubscription: function(subscription, silent) - { - if (subscription.url in FilterStorage.knownSubscriptions) - return; - - FilterStorage.subscriptions.push(subscription); - FilterStorage.knownSubscriptions[subscription.url] = subscription; - addSubscriptionFilters(subscription); - - if (!silent) - FilterNotifier.triggerListeners("subscription.added", subscription); - }, - - /** - * Removes a filter subscription from the list - * @param {Subscription} subscription filter subscription to be removed - * @param {Boolean} silent if true, no listeners will be triggered (to be used when filter list is reloaded) - */ - removeSubscription: function(subscription, silent) - { - for (let i = 0; i < FilterStorage.subscriptions.length; i++) - { - if (FilterStorage.subscriptions[i].url == subscription.url) - { - removeSubscriptionFilters(subscription); - - FilterStorage.subscriptions.splice(i--, 1); - delete FilterStorage.knownSubscriptions[subscription.url]; - if (!silent) - FilterNotifier.triggerListeners("subscription.removed", subscription); - return; - } - } - }, - - /** - * Moves a subscription in the list to a new position. - * @param {Subscription} subscription filter subscription to be moved - * @param {Subscription} [insertBefore] filter subscription to insert before - * (if omitted the subscription will be put at the end of the list) - */ - moveSubscription: function(subscription, insertBefore) - { - let currentPos = FilterStorage.subscriptions.indexOf(subscription); - if (currentPos < 0) - return; - - let newPos = insertBefore ? FilterStorage.subscriptions.indexOf(insertBefore) : -1; - if (newPos < 0) - newPos = FilterStorage.subscriptions.length; - - if (currentPos < newPos) - newPos--; - if (currentPos == newPos) - return; - - FilterStorage.subscriptions.splice(currentPos, 1); - FilterStorage.subscriptions.splice(newPos, 0, subscription); - FilterNotifier.triggerListeners("subscription.moved", subscription); - }, - - /** - * Replaces the list of filters in a subscription by a new list - * @param {Subscription} subscription filter subscription to be updated - * @param {Array of Filter} filters new filter lsit - */ - updateSubscriptionFilters: function(subscription, filters) - { - removeSubscriptionFilters(subscription); - subscription.oldFilters = subscription.filters; - subscription.filters = filters; - addSubscriptionFilters(subscription); - FilterNotifier.triggerListeners("subscription.updated", subscription); - delete subscription.oldFilters; - }, - - /** - * Adds a user-defined filter to the list - * @param {Filter} filter - * @param {SpecialSubscription} [subscription] particular group that the filter should be added to - * @param {Integer} [position] position within the subscription at which the filter should be added - * @param {Boolean} silent if true, no listeners will be triggered (to be used when filter list is reloaded) - */ - addFilter: function(filter, subscription, position, silent) - { - if (!subscription) - { - if (filter.subscriptions.some(s => s instanceof SpecialSubscription && !s.disabled)) - return; // No need to add - subscription = FilterStorage.getGroupForFilter(filter); - } - if (!subscription) - { - // No group for this filter exists, create one - subscription = SpecialSubscription.createForFilter(filter); - this.addSubscription(subscription); - return; - } - - if (typeof position == "undefined") - position = subscription.filters.length; - - if (filter.subscriptions.indexOf(subscription) < 0) - filter.subscriptions.push(subscription); - subscription.filters.splice(position, 0, filter); - if (!silent) - FilterNotifier.triggerListeners("filter.added", filter, subscription, position); - }, - - /** - * Removes a user-defined filter from the list - * @param {Filter} filter - * @param {SpecialSubscription} [subscription] a particular filter group that - * the filter should be removed from (if ommited will be removed from all subscriptions) - * @param {Integer} [position] position inside the filter group at which the - * filter should be removed (if ommited all instances will be removed) - */ - removeFilter: function(filter, subscription, position) - { - let subscriptions = (subscription ? [subscription] : filter.subscriptions.slice()); - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - if (subscription instanceof SpecialSubscription) - { - let positions = []; - if (typeof position == "undefined") - { - let index = -1; - do - { - index = subscription.filters.indexOf(filter, index + 1); - if (index >= 0) - positions.push(index); - } while (index >= 0); - } - else - positions.push(position); - - for (let j = positions.length - 1; j >= 0; j--) - { - let position = positions[j]; - if (subscription.filters[position] == filter) - { - subscription.filters.splice(position, 1); - if (subscription.filters.indexOf(filter) < 0) - { - let index = filter.subscriptions.indexOf(subscription); - if (index >= 0) - filter.subscriptions.splice(index, 1); - } - FilterNotifier.triggerListeners("filter.removed", filter, subscription, position); - } - } - } - } - }, - - /** - * Moves a user-defined filter to a new position - * @param {Filter} filter - * @param {SpecialSubscription} subscription filter group where the filter is located - * @param {Integer} oldPosition current position of the filter - * @param {Integer} newPosition new position of the filter - */ - moveFilter: function(filter, subscription, oldPosition, newPosition) - { - if (!(subscription instanceof SpecialSubscription) || subscription.filters[oldPosition] != filter) - return; - - newPosition = Math.min(Math.max(newPosition, 0), subscription.filters.length - 1); - if (oldPosition == newPosition) - return; - - subscription.filters.splice(oldPosition, 1); - subscription.filters.splice(newPosition, 0, filter); - FilterNotifier.triggerListeners("filter.moved", filter, subscription, oldPosition, newPosition); - }, - - /** - * Increases the hit count for a filter by one - * @param {Filter} filter - * @param {Window} window Window that the match originated in (required - * to recognize private browsing mode) - */ - increaseHitCount: function(filter, wnd) - { - if (!Prefs.savestats || PrivateBrowsing.enabledForWindow(wnd) || - PrivateBrowsing.enabled || !(filter instanceof ActiveFilter)) - { - return; - } - - filter.hitCount++; - filter.lastHit = Date.now(); - }, - - /** - * Resets hit count for some filters - * @param {Array of Filter} filters filters to be reset, if null all filters will be reset - */ - resetHitCounts: function(filters) - { - if (!filters) - { - filters = []; - for (let text in Filter.knownFilters) - filters.push(Filter.knownFilters[text]); - } - for (let filter of filters) - { - filter.hitCount = 0; - filter.lastHit = 0; - } - }, - - _loading: false, - - /** - * Loads all subscriptions from the disk - * @param {nsIFile} [sourceFile] File to read from - */ - loadFromDisk: function(sourceFile) - { - if (this._loading) - return; - - TimeLine.enter("Entered FilterStorage.loadFromDisk()"); - this._loading = true; - - let readFile = function(sourceFile, backupIndex) - { - TimeLine.enter("FilterStorage.loadFromDisk() -> readFile()"); - - let parser = new INIParser(); - IO.readFromFile(sourceFile, parser, function(e) - { - TimeLine.enter("FilterStorage.loadFromDisk() read callback"); - if (!e && parser.subscriptions.length == 0) - { - // No filter subscriptions in the file, this isn't right. - e = new Error("No data in the file"); - } - - if (e) - Cu.reportError(e); - - if (e && !explicitFile) - { - // Attempt to load a backup - sourceFile = this.sourceFile; - if (sourceFile) - { - let [, part1, part2] = /^(.*)(\.\w+)$/.exec(sourceFile.leafName) || [null, sourceFile.leafName, ""]; - - sourceFile = sourceFile.clone(); - sourceFile.leafName = part1 + "-backup" + (++backupIndex) + part2; - - IO.statFile(sourceFile, function(e, statData) - { - if (!e && statData.exists) - readFile(sourceFile, backupIndex); - else - doneReading(parser); - }); - TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); - return; - } - } - doneReading(parser); - }.bind(this), "FilterStorageRead"); - - TimeLine.leave("FilterStorage.loadFromDisk() <- readFile()", "FilterStorageRead"); - }.bind(this); - - var doneReading = function(parser) - { - // Old special groups might have been converted, remove them if they are empty - let specialMap = {"~il~": true, "~wl~": true, "~fl~": true, "~eh~": true}; - let knownSubscriptions = {__proto__: null}; - for (let i = 0; i < parser.subscriptions.length; i++) - { - let subscription = parser.subscriptions[i]; - if (subscription instanceof SpecialSubscription && subscription.filters.length == 0 && subscription.url in specialMap) - parser.subscriptions.splice(i--, 1); - else - knownSubscriptions[subscription.url] = subscription; - } - - this.fileProperties = parser.fileProperties; - this.subscriptions = parser.subscriptions; - this.knownSubscriptions = knownSubscriptions; - Filter.knownFilters = parser.knownFilters; - Subscription.knownSubscriptions = parser.knownSubscriptions; - - if (parser.userFilters) - { - for (let i = 0; i < parser.userFilters.length; i++) - { - let filter = Filter.fromText(parser.userFilters[i]); - this.addFilter(filter, null, undefined, true); - } - } - TimeLine.log("Initializing data done, triggering observers") - - this._loading = false; - FilterNotifier.triggerListeners("load"); - - if (sourceFile != this.sourceFile) - this.saveToDisk(); - - TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); - }.bind(this); - - let explicitFile; - if (sourceFile) - { - explicitFile = true; - readFile(sourceFile, 0); - } - else - { - explicitFile = false; - sourceFile = FilterStorage.sourceFile; - - let callback = function(e, statData) - { - if (e || !statData.exists) - { - this.firstRun = true; - this._loading = false; - FilterNotifier.triggerListeners("load"); - - TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); - } - else - readFile(sourceFile, 0); - }.bind(this); - - if (sourceFile) - IO.statFile(sourceFile, callback); - else - callback(true); - } - - TimeLine.leave("FilterStorage.loadFromDisk() done"); - }, - - _generateFilterData: function(subscriptions) - { - yield "# Adblock Plus preferences"; - yield "version=" + formatVersion; - - let saved = {__proto__: null}; - let buf = []; - - // Save filter data - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - for (let j = 0; j < subscription.filters.length; j++) - { - let filter = subscription.filters[j]; - if (!(filter.text in saved)) - { - filter.serialize(buf); - saved[filter.text] = filter; - for (let k = 0; k < buf.length; k++) - yield buf[k]; - buf.splice(0); - } - } - } - - // Save subscriptions - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - - yield ""; - - subscription.serialize(buf); - if (subscription.filters.length) - { - buf.push("", "[Subscription filters]") - subscription.serializeFilters(buf); - } - for (let k = 0; k < buf.length; k++) - yield buf[k]; - buf.splice(0); - } - }, - - /** - * Will be set to true if saveToDisk() is running (reentrance protection). - * @type Boolean - */ - _saving: false, - - /** - * Will be set to true if a saveToDisk() call arrives while saveToDisk() is - * already running (delayed execution). - * @type Boolean - */ - _needsSave: false, - - /** - * Saves all subscriptions back to disk - * @param {nsIFile} [targetFile] File to be written - */ - saveToDisk: function(targetFile) - { - let explicitFile = true; - if (!targetFile) - { - targetFile = FilterStorage.sourceFile; - explicitFile = false; - } - if (!targetFile) - return; - - if (!explicitFile && this._saving) - { - this._needsSave = true; - return; - } - - TimeLine.enter("Entered FilterStorage.saveToDisk()"); - - // Make sure the file's parent directory exists - try { - targetFile.parent.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); - } catch (e) {} - - let writeFilters = function() - { - TimeLine.enter("FilterStorage.saveToDisk() -> writeFilters()"); - IO.writeToFile(targetFile, this._generateFilterData(subscriptions), function(e) - { - TimeLine.enter("FilterStorage.saveToDisk() write callback"); - if (!explicitFile) - this._saving = false; - - if (e) - Cu.reportError(e); - - if (!explicitFile && this._needsSave) - { - this._needsSave = false; - this.saveToDisk(); - } - else - FilterNotifier.triggerListeners("save"); - TimeLine.leave("FilterStorage.saveToDisk() write callback done"); - }.bind(this), "FilterStorageWrite"); - TimeLine.leave("FilterStorage.saveToDisk() -> writeFilters()", "FilterStorageWrite"); - }.bind(this); - - let checkBackupRequired = function(callbackNotRequired, callbackRequired) - { - if (explicitFile || Prefs.patternsbackups <= 0) - callbackNotRequired(); - else - { - IO.statFile(targetFile, function(e, statData) - { - if (e || !statData.exists) - callbackNotRequired(); - else - { - let [, part1, part2] = /^(.*)(\.\w+)$/.exec(targetFile.leafName) || [null, targetFile.leafName, ""]; - let newestBackup = targetFile.clone(); - newestBackup.leafName = part1 + "-backup1" + part2; - IO.statFile(newestBackup, function(e, statData) - { - if (!e && (!statData.exists || (Date.now() - statData.lastModified) / 3600000 >= Prefs.patternsbackupinterval)) - callbackRequired(part1, part2) - else - callbackNotRequired(); - }); - } - }); - } - }.bind(this); - - let removeLastBackup = function(part1, part2) - { - TimeLine.enter("FilterStorage.saveToDisk() -> removeLastBackup()"); - let file = targetFile.clone(); - file.leafName = part1 + "-backup" + Prefs.patternsbackups + part2; - IO.removeFile(file, (e) => renameBackup(part1, part2, Prefs.patternsbackups - 1)); - TimeLine.leave("FilterStorage.saveToDisk() <- removeLastBackup()"); - }.bind(this); - - let renameBackup = function(part1, part2, index) - { - TimeLine.enter("FilterStorage.saveToDisk() -> renameBackup()"); - if (index > 0) - { - let fromFile = targetFile.clone(); - fromFile.leafName = part1 + "-backup" + index + part2; - - let toName = part1 + "-backup" + (index + 1) + part2; - - IO.renameFile(fromFile, toName, (e) => renameBackup(part1, part2, index - 1)); - } - else - { - let toFile = targetFile.clone(); - toFile.leafName = part1 + "-backup" + (index + 1) + part2; - - IO.copyFile(targetFile, toFile, writeFilters); - } - TimeLine.leave("FilterStorage.saveToDisk() <- renameBackup()"); - }.bind(this); - - // Do not persist external subscriptions - let subscriptions = this.subscriptions.filter((s) => !(s instanceof ExternalSubscription)); - if (!explicitFile) - this._saving = true; - - checkBackupRequired(writeFilters, removeLastBackup); - - TimeLine.leave("FilterStorage.saveToDisk() done"); - }, - - /** - * Returns the list of existing backup files. - */ - getBackupFiles: function() /**nsIFile[]*/ - { - // TODO: This method should be asynchronous - let result = []; - - let [, part1, part2] = /^(.*)(\.\w+)$/.exec(FilterStorage.sourceFile.leafName) || [null, FilterStorage.sourceFile.leafName, ""]; - for (let i = 1; ; i++) - { - let file = FilterStorage.sourceFile.clone(); - file.leafName = part1 + "-backup" + i + part2; - if (file.exists()) - result.push(file); - else - break; - } - return result; - } -}; - -/** - * Joins subscription's filters to the subscription without any notifications. - * @param {Subscription} subscription filter subscription that should be connected to its filters - */ -function addSubscriptionFilters(subscription) -{ - if (!(subscription.url in FilterStorage.knownSubscriptions)) - return; - - for (let filter of subscription.filters) - filter.subscriptions.push(subscription); -} - -/** - * Removes subscription's filters from the subscription without any notifications. - * @param {Subscription} subscription filter subscription to be removed - */ -function removeSubscriptionFilters(subscription) -{ - if (!(subscription.url in FilterStorage.knownSubscriptions)) - return; - - for (let filter of subscription.filters) - { - let i = filter.subscriptions.indexOf(subscription); - if (i >= 0) - filter.subscriptions.splice(i, 1); - } -} - -/** - * Observer listening to private browsing mode changes. - * @class - */ -let PrivateBrowsing = exports.PrivateBrowsing = -{ - /** - * Will be set to true when the private browsing mode is switched on globally. - * @type Boolean - */ - enabled: false, - - /** - * Checks whether private browsing is enabled for a particular window. - */ - enabledForWindow: function(/**Window*/ wnd) /**Boolean*/ - { - try - { - return wnd.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsILoadContext) - .usePrivateBrowsing; - } - catch (e) - { - // Gecko 19 and below will throw NS_NOINTERFACE, this is expected - if (e.result != Cr.NS_NOINTERFACE) - Cu.reportError(e); - return false; - } - }, - - init: function() - { - if ("@mozilla.org/privatebrowsing;1" in Cc) - { - try - { - this.enabled = Cc["@mozilla.org/privatebrowsing;1"].getService(Ci.nsIPrivateBrowsingService).privateBrowsingEnabled; - Services.obs.addObserver(this, "private-browsing", true); - onShutdown.add(function() - { - Services.obs.removeObserver(this, "private-browsing"); - }.bind(this)); - } - catch(e) - { - Cu.reportError(e); - } - } - }, - - observe: function(subject, topic, data) - { - if (topic == "private-browsing") - { - if (data == "enter") - this.enabled = true; - else if (data == "exit") - this.enabled = false; - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) -}; -PrivateBrowsing.init(); - -/** - * IO.readFromFile() listener to parse filter data. - * @constructor - */ -function INIParser() -{ - this.fileProperties = this.curObj = {}; - this.subscriptions = []; - this.knownFilters = {__proto__: null}; - this.knownSubscriptions = {__proto__: null}; -} -INIParser.prototype = -{ - linesProcessed: 0, - subscriptions: null, - knownFilters: null, - knownSubscriptions : null, - wantObj: true, - fileProperties: null, - curObj: null, - curSection: null, - userFilters: null, - - process: function(val) - { - let origKnownFilters = Filter.knownFilters; - Filter.knownFilters = this.knownFilters; - let origKnownSubscriptions = Subscription.knownSubscriptions; - Subscription.knownSubscriptions = this.knownSubscriptions; - let match; - try - { - if (this.wantObj === true && (match = /^(\w+)=(.*)$/.exec(val))) - this.curObj[match[1]] = match[2]; - else if (val === null || (match = /^\s*\[(.+)\]\s*$/.exec(val))) - { - if (this.curObj) - { - // Process current object before going to next section - switch (this.curSection) - { - case "filter": - case "pattern": - if ("text" in this.curObj) - Filter.fromObject(this.curObj); - break; - case "subscription": - let subscription = Subscription.fromObject(this.curObj); - if (subscription) - this.subscriptions.push(subscription); - break; - case "subscription filters": - case "subscription patterns": - if (this.subscriptions.length) - { - let subscription = this.subscriptions[this.subscriptions.length - 1]; - for (let text of this.curObj) - { - let filter = Filter.fromText(text); - subscription.filters.push(filter); - filter.subscriptions.push(subscription); - } - } - break; - case "user patterns": - this.userFilters = this.curObj; - break; - } - } - - if (val === null) - return; - - this.curSection = match[1].toLowerCase(); - switch (this.curSection) - { - case "filter": - case "pattern": - case "subscription": - this.wantObj = true; - this.curObj = {}; - break; - case "subscription filters": - case "subscription patterns": - case "user patterns": - this.wantObj = false; - this.curObj = []; - break; - default: - this.wantObj = undefined; - this.curObj = null; - } - } - else if (this.wantObj === false && val) - this.curObj.push(val.replace(/\\\[/g, "[")); - } - finally - { - Filter.knownFilters = origKnownFilters; - Subscription.knownSubscriptions = origKnownSubscriptions; - } - - // Allow events to be processed every now and then. - // Note: IO.readFromFile() will deal with the potential reentrance here. - this.linesProcessed++; - if (this.linesProcessed % 1000 == 0) - Utils.yield(); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/io.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/io.js deleted file mode 100644 index ea362b7..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/io.js +++ /dev/null @@ -1,365 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Module containing file I/O helpers. - */ - -let {Services} = Cu.import("resource://gre/modules/Services.jsm", null); -let {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", null); -let {OS} = Cu.import("resource://gre/modules/osfile.jsm", null); -let {Task} = Cu.import("resource://gre/modules/Task.jsm", null); - -let {TimeLine} = require("timeline"); -let {Prefs} = require("prefs"); -let {Utils} = require("utils"); - -let firstRead = true; -const BUFFER_SIZE = 0x8000; // 32kB - -let IO = exports.IO = -{ - /** - * Retrieves the platform-dependent line break string. - */ - get lineBreak() - { - let lineBreak = (Services.appinfo.OS == "WINNT" ? "\r\n" : "\n"); - delete IO.lineBreak; - IO.__defineGetter__("lineBreak", () => lineBreak); - return IO.lineBreak; - }, - - /** - * Tries to interpret a file path as an absolute path or a path relative to - * user's profile. Returns a file or null on failure. - */ - resolveFilePath: function(/**String*/ path) /**nsIFile*/ - { - if (!path) - return null; - - try { - // Assume an absolute path first - return new FileUtils.File(path); - } catch (e) {} - - try { - // Try relative path now - return FileUtils.getFile("ProfD", path.split("/")); - } catch (e) {} - - return null; - }, - - /** - * Reads strings from a file asynchronously, calls listener.process() with - * each line read and with a null parameter once the read operation is done. - * The callback will be called when the operation is done. - */ - readFromFile: function(/**nsIFile*/ file, /**Object*/ listener, /**Function*/ callback, /**String*/ timeLineID) - { - try - { - let processing = false; - let buffer = ""; - let loaded = false; - let error = null; - - let onProgress = function(data) - { - if (timeLineID) - { - TimeLine.asyncStart(timeLineID); - } - - let index = (processing ? -1 : Math.max(data.lastIndexOf("\n"), data.lastIndexOf("\r"))); - if (index >= 0) - { - // Protect against reentrance in case the listener processes events. - processing = true; - try - { - let oldBuffer = buffer; - buffer = data.substr(index + 1); - data = data.substr(0, index + 1); - let lines = data.split(/[\r\n]+/); - lines.pop(); - lines[0] = oldBuffer + lines[0]; - for (let i = 0; i < lines.length; i++) - listener.process(lines[i]); - } - finally - { - processing = false; - data = buffer; - buffer = ""; - onProgress(data); - - if (loaded) - { - loaded = false; - onSuccess(); - } - - if (error) - { - let param = error; - error = null; - onError(param); - } - } - } - else - buffer += data; - - if (timeLineID) - { - TimeLine.asyncEnd(timeLineID); - } - }; - - let onSuccess = function() - { - if (processing) - { - // Still processing data, delay processing this event. - loaded = true; - return; - } - - if (timeLineID) - { - TimeLine.asyncStart(timeLineID); - } - - if (buffer !== "") - listener.process(buffer); - listener.process(null); - - if (timeLineID) - { - TimeLine.asyncEnd(timeLineID); - TimeLine.asyncDone(timeLineID); - } - - callback(null); - }; - - let onError = function(e) - { - if (processing) - { - // Still processing data, delay processing this event. - error = e; - return; - } - - callback(e); - - if (timeLineID) - { - TimeLine.asyncDone(timeLineID); - } - }; - - let decoder = new TextDecoder(); - let array = new Uint8Array(BUFFER_SIZE); - Task.spawn(function() - { - if (firstRead && Services.vc.compare(Utils.platformVersion, "23.0a1") <= 0) - { - // See https://issues.adblockplus.org/ticket/530 - the first file - // opened cannot be closed due to Gecko bug 858723. Make sure that - // our patterns.ini file doesn't stay locked by opening a dummy file - // first. - try - { - let dummyPath = IO.resolveFilePath(Prefs.data_directory + "/dummy").path; - let dummy = yield OS.File.open(dummyPath, {write: true, truncate: true}); - yield dummy.close(); - } - catch (e) - { - // Dummy might be locked already, we don't care - } - } - firstRead = false; - - let f = yield OS.File.open(file.path, {read: true}); - let numBytes; - do - { - numBytes = yield f.readTo(array); - if (numBytes) - { - let data = decoder.decode(numBytes == BUFFER_SIZE ? - array : - array.subarray(0, numBytes), {stream: true}); - onProgress(data); - } - } while (numBytes); - - yield f.close(); - }.bind(this)).then(onSuccess, onError); - } - catch (e) - { - callback(e); - } - }, - - /** - * Writes string data to a file in UTF-8 format asynchronously. The callback - * will be called when the write operation is done. - */ - writeToFile: function(/**nsIFile*/ file, /**Iterator*/ data, /**Function*/ callback, /**String*/ timeLineID) - { - try - { - let encoder = new TextEncoder(); - - Task.spawn(function() - { - // This mimics OS.File.writeAtomic() but writes in chunks. - let tmpPath = file.path + ".tmp"; - let f = yield OS.File.open(tmpPath, {write: true, truncate: true}); - - let buf = []; - let bufLen = 0; - let lineBreak = this.lineBreak; - - function writeChunk() - { - let array = encoder.encode(buf.join(lineBreak) + lineBreak); - buf = []; - bufLen = 0; - return f.write(array); - } - - for (let line in data) - { - buf.push(line); - bufLen += line.length; - if (bufLen >= BUFFER_SIZE) - yield writeChunk(); - } - - if (bufLen) - yield writeChunk(); - - // OS.File.flush() isn't exposed prior to Gecko 27, see bug 912457. - if (typeof f.flush == "function") - yield f.flush(); - yield f.close(); - yield OS.File.move(tmpPath, file.path, {noCopy: true}); - }.bind(this)).then(callback.bind(null, null), callback); - } - catch (e) - { - callback(e); - } - }, - - /** - * Copies a file asynchronously. The callback will be called when the copy - * operation is done. - */ - copyFile: function(/**nsIFile*/ fromFile, /**nsIFile*/ toFile, /**Function*/ callback) - { - try - { - let promise = OS.File.copy(fromFile.path, toFile.path); - promise.then(callback.bind(null, null), callback); - } - catch (e) - { - callback(e); - } - }, - - /** - * Renames a file within the same directory, will call callback when done. - */ - renameFile: function(/**nsIFile*/ fromFile, /**String*/ newName, /**Function*/ callback) - { - try - { - toFile = fromFile.clone(); - toFile.leafName = newName; - let promise = OS.File.move(fromFile.path, toFile.path); - promise.then(callback.bind(null, null), callback); - } - catch(e) - { - callback(e); - } - }, - - /** - * Removes a file, will call callback when done. - */ - removeFile: function(/**nsIFile*/ file, /**Function*/ callback) - { - try - { - let promise = OS.File.remove(file.path); - promise.then(callback.bind(null, null), callback); - } - catch(e) - { - callback(e); - } - }, - - /** - * Gets file information such as whether the file exists. - */ - statFile: function(/**nsIFile*/ file, /**Function*/ callback) - { - try - { - let promise = OS.File.stat(file.path); - promise.then(function onSuccess(info) - { - callback(null, { - exists: true, - isDirectory: info.isDir, - isFile: !info.isDir, - lastModified: info.lastModificationDate.getTime() - }); - }, function onError(e) - { - if (e.becauseNoSuchFile) - { - callback(null, { - exists: false, - isDirectory: false, - isFile: false, - lastModified: 0 - }); - } - else - callback(e); - }); - } - catch(e) - { - callback(e); - } - } -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/keySelector.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/keySelector.js deleted file mode 100644 index 20847d9..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/keySelector.js +++ /dev/null @@ -1,228 +0,0 @@ -/* - * This file is part of the Adblock Plus build tools, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let validModifiers = -{ - ACCEL: null, - CTRL: "control", - CONTROL: "control", - SHIFT: "shift", - ALT: "alt", - META: "meta", - __proto__: null -}; - -/** - * Sets the correct value of validModifiers.ACCEL. - */ -function initAccelKey() -{ - validModifiers.ACCEL = "control"; - try - { - let accelKey = Services.prefs.getIntPref("ui.key.accelKey"); - if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_CONTROL) - validModifiers.ACCEL = "control"; - else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT) - validModifiers.ACCEL = "alt"; - else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META) - validModifiers.ACCEL = "meta"; - } - catch(e) - { - Cu.reportError(e); - } -} - -exports.KeySelector = KeySelector; - -/** - * This class provides capabilities to find and use available keyboard shortcut - * keys. - * @param {ChromeWindow} window the window where to look up existing shortcut - * keys - * @constructor - */ -function KeySelector(window) -{ - this._initExistingShortcuts(window); -} -KeySelector.prototype = -{ - /** - * Map listing existing shortcut keys as its keys. - * @type Object - */ - _existingShortcuts: null, - - /** - * Sets up _existingShortcuts property for a window. - */ - _initExistingShortcuts: function(/**ChromeWindow*/ window) - { - if (!validModifiers.ACCEL) - initAccelKey(); - - this._existingShortcuts = {__proto__: null}; - - let keys = window.document.getElementsByTagName("key"); - for (let i = 0; i < keys.length; i++) - { - let key = keys[i]; - let keyData = - { - shift: false, - meta: false, - alt: false, - control: false, - char: null, - code: null - }; - - let keyChar = key.getAttribute("key"); - if (keyChar && keyChar.length == 1) - keyData.char = keyChar.toUpperCase(); - - let keyCode = key.getAttribute("keycode"); - if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent) - keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()]; - - if (!keyData.char && !keyData.code) - continue; - - let keyModifiers = key.getAttribute("modifiers"); - if (keyModifiers) - for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g)) - if (modifier in validModifiers) - keyData[validModifiers[modifier]] = true; - - let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" "); - this._existingShortcuts[canonical] = true; - } - }, - - /** - * Selects a keyboard shortcut variant that isn't already taken, - * parses it into an object. - */ - selectKey: function(/**String*/ variants) /**Object*/ - { - for each (let variant in variants.split(/\s*,\s*/)) - { - if (!variant) - continue; - - let keyData = - { - shift: false, - meta: false, - alt: false, - control: false, - char: null, - code: null, - codeName: null - }; - for each (let part in variant.toUpperCase().split(/\s+/)) - { - if (part in validModifiers) - keyData[validModifiers[part]] = true; - else if (part.length == 1) - keyData.char = part; - else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent) - { - keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part]; - keyData.codeName = "VK_" + part; - } - } - - if (!keyData.char && !keyData.code) - continue; - - let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" "); - if (canonical in this._existingShortcuts) - continue; - - return keyData; - } - - return null; - } -}; - -/** - * Creates the text representation for a key. - * @static - */ -KeySelector.getTextForKey = function (/**Object*/ key) /**String*/ -{ - if (!key) - return null; - - if (!("text" in key)) - { - key.text = null; - try - { - let stringBundle = Services.strings.createBundle("chrome://global-platform/locale/platformKeys.properties"); - let parts = []; - if (key.control) - parts.push(stringBundle.GetStringFromName("VK_CONTROL")); - if (key.alt) - parts.push(stringBundle.GetStringFromName("VK_ALT")); - if (key.meta) - parts.push(stringBundle.GetStringFromName("VK_META")); - if (key.shift) - parts.push(stringBundle.GetStringFromName("VK_SHIFT")); - if (key.char) - parts.push(key.char.toUpperCase()); - else - { - let stringBundle2 = Services.strings.createBundle("chrome://global/locale/keys.properties"); - parts.push(stringBundle2.GetStringFromName(key.codeName)); - } - key.text = parts.join(stringBundle.GetStringFromName("MODIFIER_SEPARATOR")); - } - catch (e) - { - Cu.reportError(e); - return null; - } - } - return key.text; -}; - -/** - * Tests whether a keypress event matches the given key. - * @static - */ -KeySelector.matchesKey = function(/**Event*/ event, /**Object*/ key) /**Boolean*/ -{ - if (event.defaultPrevented || !key) - return false; - if (key.shift != event.shiftKey || key.alt != event.altKey) - return false; - if (key.meta != event.metaKey || key.control != event.ctrlKey) - return false; - - if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperCase() == key.char) - return true; - if (key.code && event.keyCode && event.keyCode == key.code) - return true; - return false; -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/main.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/main.js deleted file mode 100644 index f18cc05..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/main.js +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Starts up Adblock Plus - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {TimeLine} = require("timeline"); - -TimeLine.enter("Adblock Plus startup"); -registerPublicAPI(); -TimeLine.log("Done registering public API"); -require("filterListener"); -TimeLine.log("Done loading filter listener"); -require("contentPolicy"); -TimeLine.log("Done loading content policy"); -require("synchronizer"); -TimeLine.log("Done loading subscription synchronizer"); -require("notification"); -TimeLine.log("Done loading notification downloader"); -require("sync"); -TimeLine.log("Done loading sync support"); -require("ui"); -TimeLine.log("Done loading UI integration code"); -TimeLine.leave("Started up"); - -function registerPublicAPI() -{ - let {addonRoot} = require("info"); - - let uri = Services.io.newURI(addonRoot + "lib/Public.jsm", null, null); - if (uri instanceof Ci.nsIMutable) - uri.mutable = false; - - let classID = Components.ID("5e447bce-1dd2-11b2-b151-ec21c2b6a135"); - let contractID = "@adblockplus.org/abp/public;1"; - let factory = - { - createInstance: function(outer, iid) - { - if (outer) - throw Cr.NS_ERROR_NO_AGGREGATION; - return uri.QueryInterface(iid); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory]) - }; - - let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); - registrar.registerFactory(classID, "Adblock Plus public API URL", contractID, factory); - - onShutdown.add(function() - { - registrar.unregisterFactory(classID, factory); - Cu.unload(uri.spec); - }); -} diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/matcher.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/matcher.js deleted file mode 100644 index 908b0b8..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/matcher.js +++ /dev/null @@ -1,446 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Matcher class implementing matching addresses against a list of filters. - */ - -let {Filter, RegExpFilter, WhitelistFilter} = require("filterClasses"); - -/** - * Blacklist/whitelist filter matching - * @constructor - */ -function Matcher() -{ - this.clear(); -} -exports.Matcher = Matcher; - -Matcher.prototype = { - /** - * Lookup table for filters by their associated keyword - * @type Object - */ - filterByKeyword: null, - - /** - * Lookup table for keywords by the filter text - * @type Object - */ - keywordByFilter: null, - - /** - * Removes all known filters - */ - clear: function() - { - this.filterByKeyword = {__proto__: null}; - this.keywordByFilter = {__proto__: null}; - }, - - /** - * Adds a filter to the matcher - * @param {RegExpFilter} filter - */ - add: function(filter) - { - if (filter.text in this.keywordByFilter) - return; - - // Look for a suitable keyword - let keyword = this.findKeyword(filter); - let oldEntry = this.filterByKeyword[keyword]; - if (typeof oldEntry == "undefined") - this.filterByKeyword[keyword] = filter; - else if (oldEntry.length == 1) - this.filterByKeyword[keyword] = [oldEntry, filter]; - else - oldEntry.push(filter); - this.keywordByFilter[filter.text] = keyword; - }, - - /** - * Removes a filter from the matcher - * @param {RegExpFilter} filter - */ - remove: function(filter) - { - if (!(filter.text in this.keywordByFilter)) - return; - - let keyword = this.keywordByFilter[filter.text]; - let list = this.filterByKeyword[keyword]; - if (list.length <= 1) - delete this.filterByKeyword[keyword]; - else - { - let index = list.indexOf(filter); - if (index >= 0) - { - list.splice(index, 1); - if (list.length == 1) - this.filterByKeyword[keyword] = list[0]; - } - } - - delete this.keywordByFilter[filter.text]; - }, - - /** - * Chooses a keyword to be associated with the filter - * @param {String} text text representation of the filter - * @return {String} keyword (might be empty string) - */ - findKeyword: function(filter) - { - let result = ""; - let text = filter.text; - if (Filter.regexpRegExp.test(text)) - return result; - - // Remove options - let match = Filter.optionsRegExp.exec(text); - if (match) - text = match.input.substr(0, match.index); - - // Remove whitelist marker - if (text.substr(0, 2) == "@@") - text = text.substr(2); - - let candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); - if (!candidates) - return result; - - let hash = this.filterByKeyword; - let resultCount = 0xFFFFFF; - let resultLength = 0; - for (let i = 0, l = candidates.length; i < l; i++) - { - let candidate = candidates[i].substr(1); - let count = (candidate in hash ? hash[candidate].length : 0); - if (count < resultCount || (count == resultCount && candidate.length > resultLength)) - { - result = candidate; - resultCount = count; - resultLength = candidate.length; - } - } - return result; - }, - - /** - * Checks whether a particular filter is being matched against. - */ - hasFilter: function(/**RegExpFilter*/ filter) /**Boolean*/ - { - return (filter.text in this.keywordByFilter); - }, - - /** - * Returns the keyword used for a filter, null for unknown filters. - */ - getKeywordForFilter: function(/**RegExpFilter*/ filter) /**String*/ - { - if (filter.text in this.keywordByFilter) - return this.keywordByFilter[filter.text]; - else - return null; - }, - - /** - * Checks whether the entries for a particular keyword match a URL - */ - _checkEntryMatch: function(keyword, location, contentType, docDomain, thirdParty, privatenode) - { - let list = this.filterByKeyword[keyword]; - for (let i = 0; i < list.length; i++) - { - let filter = list[i]; - if (filter.matches(location, contentType, docDomain, thirdParty,privatenode)) - return filter; - } - return null; - }, - - /** - * Tests whether the URL matches any of the known filters - * @param {String} location URL to be tested - * @param {String} contentType content type identifier of the URL - * @param {String} docDomain domain name of the document that loads the URL - * @param {Boolean} thirdParty should be true if the URL is a third-party request - * @return {RegExpFilter} matching filter or null - */ - matchesAny: function(location, contentType, docDomain, thirdParty) - { - let candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); - if (candidates === null) - candidates = []; - candidates.push(""); - for (let i = 0, l = candidates.length; i < l; i++) - { - let substr = candidates[i]; - if (substr in this.filterByKeyword) - { - let result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty); - if (result) - return result; - } - } - - return null; - } -}; - -/** - * Combines a matcher for blocking and exception rules, automatically sorts - * rules into two Matcher instances. - * @constructor - */ -function CombinedMatcher() -{ - this.blacklist = new Matcher(); - this.whitelist = new Matcher(); - this.keys = {__proto__: null}; - this.resultCache = {__proto__: null}; -} -exports.CombinedMatcher = CombinedMatcher; - -/** - * Maximal number of matching cache entries to be kept - * @type Number - */ -CombinedMatcher.maxCacheEntries = 1000; - -CombinedMatcher.prototype = -{ - /** - * Matcher for blocking rules. - * @type Matcher - */ - blacklist: null, - - /** - * Matcher for exception rules. - * @type Matcher - */ - whitelist: null, - - /** - * Exception rules that are limited by public keys, mapped by the corresponding keys. - * @type Object - */ - keys: null, - - /** - * Lookup table of previous matchesAny results - * @type Object - */ - resultCache: null, - - /** - * Number of entries in resultCache - * @type Number - */ - cacheEntries: 0, - - /** - * @see Matcher#clear - */ - clear: function() - { - this.blacklist.clear(); - this.whitelist.clear(); - this.keys = {__proto__: null}; - this.resultCache = {__proto__: null}; - this.cacheEntries = 0; - }, - - /** - * @see Matcher#add - */ - add: function(filter) - { - if (filter instanceof WhitelistFilter) - { - if (filter.siteKeys) - { - for (let i = 0; i < filter.siteKeys.length; i++) - this.keys[filter.siteKeys[i]] = filter.text; - } - else - this.whitelist.add(filter); - } - else - this.blacklist.add(filter); - - if (this.cacheEntries > 0) - { - this.resultCache = {__proto__: null}; - this.cacheEntries = 0; - } - }, - - /** - * @see Matcher#remove - */ - remove: function(filter) - { - if (filter instanceof WhitelistFilter) - { - if (filter.siteKeys) - { - for (let i = 0; i < filter.siteKeys.length; i++) - delete this.keys[filter.siteKeys[i]]; - } - else - this.whitelist.remove(filter); - } - else - this.blacklist.remove(filter); - - if (this.cacheEntries > 0) - { - this.resultCache = {__proto__: null}; - this.cacheEntries = 0; - } - }, - - /** - * @see Matcher#findKeyword - */ - findKeyword: function(filter) - { - if (filter instanceof WhitelistFilter) - return this.whitelist.findKeyword(filter); - else - return this.blacklist.findKeyword(filter); - }, - - /** - * @see Matcher#hasFilter - */ - hasFilter: function(filter) - { - if (filter instanceof WhitelistFilter) - return this.whitelist.hasFilter(filter); - else - return this.blacklist.hasFilter(filter); - }, - - /** - * @see Matcher#getKeywordForFilter - */ - getKeywordForFilter: function(filter) - { - if (filter instanceof WhitelistFilter) - return this.whitelist.getKeywordForFilter(filter); - else - return this.blacklist.getKeywordForFilter(filter); - }, - - /** - * Checks whether a particular filter is slow - */ - isSlowFilter: function(/**RegExpFilter*/ filter) /**Boolean*/ - { - let matcher = (filter instanceof WhitelistFilter ? this.whitelist : this.blacklist); - if (matcher.hasFilter(filter)) - return !matcher.getKeywordForFilter(filter); - else - return !matcher.findKeyword(filter); - }, - - /** - * Optimized filter matching testing both whitelist and blacklist matchers - * simultaneously. For parameters see Matcher.matchesAny(). - * @see Matcher#matchesAny - */ - matchesAnyInternal: function(location, contentType, docDomain, thirdParty, privatenode) - { - let candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); - if (candidates === null) - candidates = []; - candidates.push(""); - - let blacklistHit = null; - for (let i = 0, l = candidates.length; i < l; i++) - { - let substr = candidates[i]; - if (substr in this.whitelist.filterByKeyword) - { - let result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, privatenode); - if (result) - return result; - } - if (substr in this.blacklist.filterByKeyword && blacklistHit === null) - blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, privatenode); - } - return blacklistHit; - }, - - /** - * @see Matcher#matchesAny - */ - matchesAny: function(location, contentType, docDomain, thirdParty, privatenode) - { - let key = location + " " + contentType + " " + docDomain + " " + thirdParty; - if (!privatenode){ - if (key in this.resultCache) - return this.resultCache[key]; - } - - let result = this.matchesAnyInternal(location, contentType, docDomain, thirdParty, privatenode); - - if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) - { - this.resultCache = {__proto__: null}; - this.cacheEntries = 0; - } - - if (!privatenode){ - this.resultCache[key] = result; - this.cacheEntries++; - } - - return result; - }, - - /** - * Looks up whether any filters match the given website key. - */ - matchesByKey: function(/**String*/ location, /**String*/ key, /**String*/ docDomain) - { - key = key.toUpperCase(); - if (key in this.keys) - { - let filter = Filter.knownFilters[this.keys[key]]; - if (filter && filter.matches(location, "DOCUMENT", docDomain, false)) - return filter; - else - return null; - } - else - return null; - } -} - -/** - * Shared CombinedMatcher instance that should usually be used. - * @type CombinedMatcher - */ -let defaultMatcher = exports.defaultMatcher = new CombinedMatcher(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/notification.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/notification.js deleted file mode 100644 index 06e949e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/notification.js +++ /dev/null @@ -1,339 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Handles notifications. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let {TimeLine} = require("timeline"); -let {Prefs} = require("prefs"); -let {Downloader, Downloadable, MILLIS_IN_MINUTE, MILLIS_IN_HOUR, MILLIS_IN_DAY} = require("downloader"); -let {Utils} = require("utils"); -let {Matcher} = require("matcher"); -let {Filter} = require("filterClasses"); - -let INITIAL_DELAY = 12 * MILLIS_IN_MINUTE; -let CHECK_INTERVAL = 1 * MILLIS_IN_HOUR; -let EXPIRATION_INTERVAL = 1 * MILLIS_IN_DAY; -let TYPE = { - information: 0, - question: 1, - critical: 2 -}; - -let listeners = {}; - -function getNumericalSeverity(notification) -{ - return (notification.type in TYPE ? TYPE[notification.type] : TYPE.information); -} - -function saveNotificationData() -{ - // HACK: JSON values aren't saved unless they are assigned a different object. - Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); -} - -function localize(translations, locale) -{ - if (locale in translations) - return translations[locale]; - - let languagePart = locale.substring(0, locale.indexOf("-")); - if (languagePart && languagePart in translations) - return translations[languagePart]; - - let defaultLocale = "en-US"; - return translations[defaultLocale]; -} - -/** - * The object providing actual downloading functionality. - * @type Downloader - */ -let downloader = null; -let localData = []; - -/** - * Regularly fetches notifications and decides which to show. - * @class - */ -let Notification = exports.Notification = -{ - /** - * Called on module startup. - */ - init: function() - { - TimeLine.enter("Entered Notification.init()"); - - downloader = new Downloader(this._getDownloadables.bind(this), INITIAL_DELAY, CHECK_INTERVAL); - onShutdown.add(function() - { - downloader.cancel(); - }); - - downloader.onExpirationChange = this._onExpirationChange.bind(this); - downloader.onDownloadSuccess = this._onDownloadSuccess.bind(this); - downloader.onDownloadError = this._onDownloadError.bind(this); - - TimeLine.leave("Notification.init() done"); - }, - - /** - * Yields a Downloadable instances for the notifications download. - */ - _getDownloadables: function() - { - let downloadable = new Downloadable(Prefs.notificationurl); - if (typeof Prefs.notificationdata.lastError === "number") - downloadable.lastError = Prefs.notificationdata.lastError; - if (typeof Prefs.notificationdata.lastCheck === "number") - downloadable.lastCheck = Prefs.notificationdata.lastCheck; - if (typeof Prefs.notificationdata.data === "object" && "version" in Prefs.notificationdata.data) - downloadable.lastVersion = Prefs.notificationdata.data.version; - if (typeof Prefs.notificationdata.softExpiration === "number") - downloadable.softExpiration = Prefs.notificationdata.softExpiration; - if (typeof Prefs.notificationdata.hardExpiration === "number") - downloadable.hardExpiration = Prefs.notificationdata.hardExpiration; - yield downloadable; - }, - - _onExpirationChange: function(downloadable) - { - Prefs.notificationdata.lastCheck = downloadable.lastCheck; - Prefs.notificationdata.softExpiration = downloadable.softExpiration; - Prefs.notificationdata.hardExpiration = downloadable.hardExpiration; - saveNotificationData(); - }, - - _onDownloadSuccess: function(downloadable, responseText, errorCallback, redirectCallback) - { - try - { - let data = JSON.parse(responseText); - for (let notification of data.notifications) - { - if ("severity" in notification) - { - if (!("type" in notification)) - notification.type = notification.severity; - delete notification.severity; - } - } - Prefs.notificationdata.data = data; - } - catch (e) - { - Cu.reportError(e); - errorCallback("synchronize_invalid_data"); - return; - } - - Prefs.notificationdata.lastError = 0; - Prefs.notificationdata.downloadStatus = "synchronize_ok"; - [Prefs.notificationdata.softExpiration, Prefs.notificationdata.hardExpiration] = downloader.processExpirationInterval(EXPIRATION_INTERVAL); - saveNotificationData(); - }, - - _onDownloadError: function(downloadable, downloadURL, error, channelStatus, responseStatus, redirectCallback) - { - Prefs.notificationdata.lastError = Date.now(); - Prefs.notificationdata.downloadStatus = error; - saveNotificationData(); - }, - - /** - * Determines which notification is to be shown next. - * @param {String} url URL to match notifications to (optional) - * @return {Object} notification to be shown, or null if there is none - */ - getNextToShow: function(url) - { - function checkTarget(target, parameter, name, version) - { - let minVersionKey = parameter + "MinVersion"; - let maxVersionKey = parameter + "MaxVersion"; - return !((parameter in target && target[parameter] != name) || - (minVersionKey in target && Services.vc.compare(version, target[minVersionKey]) < 0) || - (maxVersionKey in target && Services.vc.compare(version, target[maxVersionKey]) > 0)); - } - - let remoteData = []; - if (typeof Prefs.notificationdata.data == "object" && Prefs.notificationdata.data.notifications instanceof Array) - remoteData = Prefs.notificationdata.data.notifications; - - if (!(Prefs.notificationdata.shown instanceof Array)) - { - Prefs.notificationdata.shown = []; - saveNotificationData(); - } - - let notifications = localData.concat(remoteData); - if (notifications.length === 0) - return null; - - let {addonName, addonVersion, application, applicationVersion, platform, platformVersion} = require("info"); - let notificationToShow = null; - for (let notification of notifications) - { - if ((typeof notification.type === "undefined" || notification.type !== "critical") - && Prefs.notificationdata.shown.indexOf(notification.id) !== -1) - continue; - - if (typeof url === "string" || notification.urlFilters instanceof Array) - { - if (typeof url === "string" && notification.urlFilters instanceof Array) - { - let matcher = new Matcher(); - for (let urlFilter of notification.urlFilters) - matcher.add(Filter.fromText(urlFilter)); - if (!matcher.matchesAny(url, "DOCUMENT", url)) - continue; - } - else - continue; - } - - if (notification.targets instanceof Array) - { - let match = false; - for (let target of notification.targets) - { - if (checkTarget(target, "extension", addonName, addonVersion) && - checkTarget(target, "application", application, applicationVersion) && - checkTarget(target, "platform", platform, platformVersion)) - { - match = true; - break; - } - } - if (!match) - continue; - } - - if (!notificationToShow - || getNumericalSeverity(notification) > getNumericalSeverity(notificationToShow)) - notificationToShow = notification; - } - - if (notificationToShow && "id" in notificationToShow) - { - if (notificationToShow.type !== "question") - this.markAsShown(notificationToShow.id); - } - - return notificationToShow; - }, - - markAsShown: function(id) - { - if (Prefs.notificationdata.shown.indexOf(id) > -1) - return; - - Prefs.notificationdata.shown.push(id); - saveNotificationData(); - }, - - /** - * Localizes the texts of the supplied notification. - * @param {Object} notification notification to translate - * @param {String} locale the target locale (optional, defaults to the - * application locale) - * @return {Object} the translated texts - */ - getLocalizedTexts: function(notification, locale) - { - locale = locale || Utils.appLocale; - let textKeys = ["title", "message"]; - let localizedTexts = []; - for (let key of textKeys) - { - if (key in notification) - { - if (typeof notification[key] == "string") - localizedTexts[key] = notification[key]; - else - localizedTexts[key] = localize(notification[key], locale); - } - } - return localizedTexts; - }, - - /** - * Adds a local notification. - * @param {Object} notification notification to add - */ - addNotification: function(notification) - { - if (localData.indexOf(notification) == -1) - localData.push(notification); - }, - - /** - * Removes an existing local notification. - * @param {Object} notification notification to remove - */ - removeNotification: function(notification) - { - let index = localData.indexOf(notification); - if (index > -1) - localData.splice(index, 1); - }, - - /** - * Adds a listener for question-type notifications - */ - addQuestionListener: function(/**string*/ id, /**function(approved)*/ listener) - { - if (!(id in listeners)) - listeners[id] = []; - if (listeners[id].indexOf(listener) === -1) - listeners[id].push(listener); - }, - - /** - * Removes a listener that was previously added via addQuestionListener - */ - removeQuestionListener: function(/**string*/ id, /**function(approved)*/ listener) - { - if (!(id in listeners)) - return; - let index = listeners[id].indexOf(listener); - if (index > -1) - listeners[id].splice(index, 1); - if (listeners[id].length === 0) - delete listeners[id]; - }, - - /** - * Notifies listeners about interactions with a notification - * @param {String} id notification ID - * @param {Boolean} approved indicator whether notification has been approved or not - */ - triggerQuestionListeners: function(id, approved) - { - if (!(id in listeners)) - return; - let questionListeners = listeners[id]; - for (let listener of questionListeners) - listener(approved); - } -}; -Notification.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/objectTabs.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/objectTabs.js deleted file mode 100644 index 1227490..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/objectTabs.js +++ /dev/null @@ -1,492 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Code responsible for showing and hiding object tabs. - */ - -/** - * Class responsible for showing and hiding object tabs. - * @class - */ -var objTabs = -{ - /** - * Number of milliseconds to wait until hiding tab after the mouse moves away. - * @type Integer - */ - HIDE_DELAY: 1000, - - /** - * Flag used to trigger object tabs initialization first time object tabs are - * used. - * @type Boolean - */ - initialized: false, - - /** - * Will be set to true while initialization is in progress. - * @type Boolean - */ - initializing: false, - - /** - * Parameters for _showTab, to be called once initialization is complete. - */ - delayedShowParams: null, - - /** - * Randomly generated class to be used for visible object tabs on top of object. - * @type String - */ - objTabClassVisibleTop: null, - - /** - * Randomly generated class to be used for visible object tabs at the bottom of the object. - * @type String - */ - objTabClassVisibleBottom: null, - - /** - * Randomly generated class to be used for invisible object tabs. - * @type String - */ - objTabClassHidden: null, - - /** - * Document element the object tab is currently being displayed for. - * @type Element - */ - currentElement: null, - - /** - * Windows that the window event handler is currently registered for. - * @type Array of Window - */ - windowListeners: null, - - /** - * Panel element currently used as object tab. - * @type Element - */ - objtabElement: null, - - /** - * Time of previous position update. - * @type Integer - */ - prevPositionUpdate: 0, - - /** - * Timer used to update position of the object tab. - * @type nsITimer - */ - positionTimer: null, - - /** - * Timer used to delay hiding of the object tab. - * @type nsITimer - */ - hideTimer: null, - - /** - * Used when hideTimer is running, time when the tab should be hidden. - * @type Integer - */ - hideTargetTime: 0, - - /** - * Initializes object tabs (generates random classes and registers stylesheet). - */ - _initCSS: function() - { - function processCSSData(request) - { - if (onShutdown.done) - return; - - let data = request.responseText; - - let rnd = []; - let offset = "a".charCodeAt(0); - for (let i = 0; i < 60; i++) - rnd.push(offset + Math.random() * 26); - - this.objTabClassVisibleTop = String.fromCharCode.apply(String, rnd.slice(0, 20)); - this.objTabClassVisibleBottom = String.fromCharCode.apply(String, rnd.slice(20, 40)); - this.objTabClassHidden = String.fromCharCode.apply(String, rnd.slice(40, 60)); - - let {Utils} = require("utils"); - let url = Utils.makeURI("data:text/css," + encodeURIComponent(data.replace(/%%CLASSVISIBLETOP%%/g, this.objTabClassVisibleTop) - .replace(/%%CLASSVISIBLEBOTTOM%%/g, this.objTabClassVisibleBottom) - .replace(/%%CLASSHIDDEN%%/g, this.objTabClassHidden))); - Utils.styleService.loadAndRegisterSheet(url, Ci.nsIStyleSheetService.USER_SHEET); - onShutdown.add(function() - { - Utils.styleService.unregisterSheet(url, Ci.nsIStyleSheetService.USER_SHEET); - }); - - this.initializing = false; - this.initialized = true; - - if (this.delayedShowParams) - this._showTab.apply(this, this.delayedShowParams); - } - - this.delayedShowParams = arguments; - - if (!this.initializing) - { - this.initializing = true; - - // Load CSS asynchronously - try { - let request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", "chrome://adblockplus/content/objtabs.css"); - request.overrideMimeType("text/plain"); - - request.addEventListener("load", processCSSData.bind(this, request), false); - request.send(null); - } - catch (e) - { - Cu.reportError(e); - this.initializing = false; - } - } - }, - - /** - * Called to show object tab for an element. - */ - showTabFor: function(/**Element*/ element) - { - // Object tabs aren't usable in Fennec - let {application} = require("info"); - if (application == "fennec" || application == "fennec2") - return; - - let {Prefs} = require("prefs"); - if (!Prefs.frameobjects) - return; - - if (this.hideTimer) - { - this.hideTimer.cancel(); - this.hideTimer = null; - } - - if (this.objtabElement) - this.objtabElement.style.setProperty("opacity", "1", "important"); - - if (this.currentElement != element) - { - this._hideTab(); - - let {Policy} = require("contentPolicy"); - let {RequestNotifier} = require("requestNotifier"); - let data = RequestNotifier.getDataForNode(element, true, Policy.type.OBJECT); - if (data) - { - if (this.initialized) - this._showTab(element, data[1]); - else - this._initCSS(element, data[1]); - } - } - }, - - /** - * Called to hide object tab for an element (actual hiding happens delayed). - */ - hideTabFor: function(/**Element*/ element) - { - if (element != this.currentElement || this.hideTimer) - return; - - this.hideTargetTime = Date.now() + this.HIDE_DELAY; - this.hideTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - this.hideTimer.init(this, 40, Ci.nsITimer.TYPE_REPEATING_SLACK); - }, - - /** - * Makes the tab element visible. - */ - _showTab: function(/**Element*/ element, /**RequestEntry*/ data) - { - let {UI} = require("ui"); - if (!UI.overlay) - return; - - let doc = element.ownerDocument.defaultView.top.document; - - this.objtabElement = doc.createElementNS("http://www.w3.org/1999/xhtml", "a"); - this.objtabElement.textContent = UI.overlay.attributes.objtabtext; - this.objtabElement.setAttribute("title", UI.overlay.attributes.objtabtooltip); - this.objtabElement.setAttribute("href", data.location); - this.objtabElement.setAttribute("class", this.objTabClassHidden); - this.objtabElement.style.setProperty("opacity", "1", "important"); - this.objtabElement.nodeData = data; - - this.currentElement = element; - - // Register paint listeners for the relevant windows - this.windowListeners = []; - let wnd = element.ownerDocument.defaultView; - while (wnd) - { - wnd.addEventListener("MozAfterPaint", objectWindowEventHandler, false); - this.windowListeners.push(wnd); - wnd = (wnd.parent != wnd ? wnd.parent : null); - } - - // Register mouse listeners on the object tab - this.objtabElement.addEventListener("mouseover", objectTabEventHander, false); - this.objtabElement.addEventListener("mouseout", objectTabEventHander, false); - this.objtabElement.addEventListener("click", objectTabEventHander, true); - - // Insert the tab into the document and adjust its position - doc.documentElement.appendChild(this.objtabElement); - if (!this.positionTimer) - { - this.positionTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - this.positionTimer.init(this, 200, Ci.nsITimer.TYPE_REPEATING_SLACK); - } - this._positionTab(); - }, - - /** - * Hides the tab element. - */ - _hideTab: function() - { - this.delayedShowParams = null; - - if (this.objtabElement) - { - // Prevent recursive calls via popuphidden handler - let objtab = this.objtabElement; - this.objtabElement = null; - this.currentElement = null; - - if (this.hideTimer) - { - this.hideTimer.cancel(); - this.hideTimer = null; - } - - if (this.positionTimer) - { - this.positionTimer.cancel(); - this.positionTimer = null; - } - - try { - objtab.parentNode.removeChild(objtab); - } catch (e) {} - objtab.removeEventListener("mouseover", objectTabEventHander, false); - objtab.removeEventListener("mouseout", objectTabEventHander, false); - objtab.nodeData = null; - - for (let wnd of this.windowListeners) - wnd.removeEventListener("MozAfterPaint", objectWindowEventHandler, false); - this.windowListeners = null; - } - }, - - /** - * Updates position of the tab element. - */ - _positionTab: function() - { - // Test whether element is still in document - let elementDoc = null; - try - { - elementDoc = this.currentElement.ownerDocument; - } catch (e) {} // Ignore "can't access dead object" error - if (!elementDoc || !this.currentElement.offsetWidth || !this.currentElement.offsetHeight || - !elementDoc.defaultView || !elementDoc.documentElement) - { - this._hideTab(); - return; - } - - let objRect = this._getElementPosition(this.currentElement); - - let className = this.objTabClassVisibleTop; - let left = objRect.right - this.objtabElement.offsetWidth; - let top = objRect.top - this.objtabElement.offsetHeight; - if (top < 0) - { - top = objRect.bottom; - className = this.objTabClassVisibleBottom; - } - - if (this.objtabElement.style.left != left + "px") - this.objtabElement.style.setProperty("left", left + "px", "important"); - if (this.objtabElement.style.top != top + "px") - this.objtabElement.style.setProperty("top", top + "px", "important"); - - if (this.objtabElement.getAttribute("class") != className) - this.objtabElement.setAttribute("class", className); - - this.prevPositionUpdate = Date.now(); - }, - - /** - * Calculates element's position relative to the top frame and considering - * clipping due to scrolling. - * @return {left: Number, top: Number, right: Number, bottom: Number} - */ - _getElementPosition: function(/**Element*/ element) - { - // Restrict rectangle coordinates by the boundaries of a window's client area - function intersectRect(rect, wnd) - { - // Cannot use wnd.innerWidth/Height because they won't account for scrollbars - let doc = wnd.document; - let wndWidth = doc.documentElement.clientWidth; - let wndHeight = doc.documentElement.clientHeight; - if (doc.compatMode == "BackCompat") // clientHeight will be bogus in quirks mode - wndHeight = Math.max(doc.documentElement.offsetHeight, doc.body.offsetHeight) - wnd.scrollMaxY - 1; - - rect.left = Math.max(rect.left, 0); - rect.top = Math.max(rect.top, 0); - rect.right = Math.min(rect.right, wndWidth); - rect.bottom = Math.min(rect.bottom, wndHeight); - } - - let rect = element.getBoundingClientRect(); - let wnd = element.ownerDocument.defaultView; - - let style = wnd.getComputedStyle(element, null); - let offsets = [ - parseFloat(style.borderLeftWidth) + parseFloat(style.paddingLeft), - parseFloat(style.borderTopWidth) + parseFloat(style.paddingTop), - parseFloat(style.borderRightWidth) + parseFloat(style.paddingRight), - parseFloat(style.borderBottomWidth) + parseFloat(style.paddingBottom) - ]; - - rect = {left: rect.left + offsets[0], top: rect.top + offsets[1], - right: rect.right - offsets[2], bottom: rect.bottom - offsets[3]}; - while (true) - { - intersectRect(rect, wnd); - - if (!wnd.frameElement) - break; - - // Recalculate coordinates to be relative to frame's parent window - let frameElement = wnd.frameElement; - wnd = frameElement.ownerDocument.defaultView; - - let frameRect = frameElement.getBoundingClientRect(); - let frameStyle = wnd.getComputedStyle(frameElement, null); - let relLeft = frameRect.left + parseFloat(frameStyle.borderLeftWidth) + parseFloat(frameStyle.paddingLeft); - let relTop = frameRect.top + parseFloat(frameStyle.borderTopWidth) + parseFloat(frameStyle.paddingTop); - - rect.left += relLeft; - rect.right += relLeft; - rect.top += relTop; - rect.bottom += relTop; - } - - return rect; - }, - - doBlock: function() - { - let {UI} = require("ui"); - let {Utils} = require("utils"); - let chromeWindow = Utils.getChromeWindow(this.currentElement.ownerDocument.defaultView); - UI.blockItem(chromeWindow, this.currentElement, this.objtabElement.nodeData); - }, - - /** - * Called whenever a timer fires. - */ - observe: function(/**nsISupport*/ subject, /**String*/ topic, /**String*/ data) - { - if (subject == this.positionTimer) - { - // Don't update position if it was already updated recently (via MozAfterPaint) - if (Date.now() - this.prevPositionUpdate > 100) - this._positionTab(); - } - else if (subject == this.hideTimer) - { - let now = Date.now(); - if (now >= this.hideTargetTime) - this._hideTab(); - else if (this.hideTargetTime - now < this.HIDE_DELAY / 2) - this.objtabElement.style.setProperty("opacity", (this.hideTargetTime - now) * 2 / this.HIDE_DELAY, "important"); - } - } -}; - -onShutdown.add(objTabs._hideTab.bind(objTabs)); - -/** - * Function called whenever the mouse enters or leaves an object. - */ -function objectMouseEventHander(/**Event*/ event) -{ - if (!event.isTrusted) - return; - - if (event.type == "mouseover") - objTabs.showTabFor(event.target); - else if (event.type == "mouseout") - objTabs.hideTabFor(event.target); -} - -/** - * Function called for paint events of the object tab window. - */ -function objectWindowEventHandler(/**Event*/ event) -{ - if (!event.isTrusted) - return; - - // Don't trigger update too often, avoid overusing CPU on frequent page updates - if (event.type == "MozAfterPaint" && Date.now() - objTabs.prevPositionUpdate > 20) - objTabs._positionTab(); -} - -/** - * Function called whenever the mouse enters or leaves an object tab. - */ -function objectTabEventHander(/**Event*/ event) -{ - if (onShutdown.done || !event.isTrusted) - return; - - if (event.type == "click" && event.button == 0) - { - event.preventDefault(); - event.stopPropagation(); - - objTabs.doBlock(); - } - else if (event.type == "mouseover") - objTabs.showTabFor(objTabs.currentElement); - else if (event.type == "mouseout") - objTabs.hideTabFor(objTabs.currentElement); -} -exports.objectMouseEventHander = objectMouseEventHander; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/prefs.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/prefs.js deleted file mode 100644 index e1b6ae0..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/prefs.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - * This file is part of the Adblock Plus build tools, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -let {addonRoot, addonName} = require("info"); -let branchName = "extensions." + addonName + "."; -let branch = Services.prefs.getBranch(branchName); -let ignorePrefChanges = false; - -function init() -{ - // Load default preferences and set up properties for them - let defaultBranch = Services.prefs.getDefaultBranch(branchName); - let scope = - { - pref: function(pref, value) - { - if (pref.substr(0, branchName.length) != branchName) - { - Cu.reportError(new Error("Ignoring default preference " + pref + ", wrong branch.")); - return; - } - pref = pref.substr(branchName.length); - - let [getter, setter] = typeMap[typeof value]; - setter(defaultBranch, pref, value); - defineProperty(pref, false, getter, setter); - } - }; - Services.scriptloader.loadSubScript(addonRoot + "defaults/prefs.js", scope); - - // Add preference change observer - try - { - branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true); - onShutdown.add(function() branch.removeObserver("", Prefs)); - } - catch (e) - { - Cu.reportError(e); - } -} - -/** - * Sets up getter/setter on Prefs object for preference. - */ -function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, /**Function*/ writeFunc) -{ - let value = defaultValue; - Prefs["_update_" + name] = function() - { - try - { - value = readFunc(branch, name); - triggerListeners(name); - } - catch(e) - { - Cu.reportError(e); - } - }; - Prefs.__defineGetter__(name, function() value); - Prefs.__defineSetter__(name, function(newValue) - { - if (value == newValue) - return value; - - try - { - ignorePrefChanges = true; - writeFunc(branch, name, newValue); - value = newValue; - Services.prefs.savePrefFile(null); - triggerListeners(name); - } - catch(e) - { - Cu.reportError(e); - } - finally - { - ignorePrefChanges = false; - } - return value; - }); - Prefs["_update_" + name](); -} - -let listeners = []; -function triggerListeners(/**String*/ name) -{ - for (let i = 0; i < listeners.length; i++) - { - try - { - listeners[i](name); - } - catch(e) - { - Cu.reportError(e); - } - } -} - -/** - * Manages the preferences for an extension, object properties corresponding - * to extension's preferences are added automatically. Setting the property - * will automatically change the preference, external preference changes are - * also recognized automatically. - */ -let Prefs = exports.Prefs = -{ - /** - * Migrates an old preference to a new name. - */ - migrate: function(/**String*/ oldName, /**String*/ newName) - { - if (newName in this && Services.prefs.prefHasUserValue(oldName)) - { - let [getter, setter] = typeMap[typeof this[newName]]; - try - { - this[newName] = getter(Services.prefs, oldName); - } catch(e) {} - Services.prefs.clearUserPref(oldName); - } - }, - - /** - * Adds a preferences listener that will be fired whenever a preference - * changes. - */ - addListener: function(/**Function*/ listener) - { - if (listeners.indexOf(listener) < 0) - listeners.push(listener); - }, - - /** - * Removes a preferences listener. - */ - removeListener: function(/**Function*/ listener) - { - let index = listeners.indexOf(listener); - if (index >= 0) - listeners.splice(index, 1); - }, - - observe: function(subject, topic, data) - { - if (ignorePrefChanges || topic != "nsPref:changed") - return; - - if ("_update_" + data in this) - this["_update_" + data](); - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) -}; - -// Getter/setter functions for difference preference types -let typeMap = -{ - boolean: [getBoolPref, setBoolPref], - number: [getIntPref, setIntPref], - string: [getCharPref, setCharPref], - object: [getJSONPref, setJSONPref] -}; - -function getIntPref(branch, pref) branch.getIntPref(pref) -function setIntPref(branch, pref, newValue) branch.setIntPref(pref, newValue) - -function getBoolPref(branch, pref) branch.getBoolPref(pref) -function setBoolPref(branch, pref, newValue) branch.setBoolPref(pref, newValue) - -function getCharPref(branch, pref) branch.getComplexValue(pref, Ci.nsISupportsString).data -function setCharPref(branch, pref, newValue) -{ - let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString); - str.data = newValue; - branch.setComplexValue(pref, Ci.nsISupportsString, str); -} - -function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref)) -function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stringify(newValue)) - -init(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/requestNotifier.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/requestNotifier.js deleted file mode 100644 index 2ee9ec3..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/requestNotifier.js +++ /dev/null @@ -1,378 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Stores Adblock Plus data to be attached to a window. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let {Utils} = require("utils"); -let {BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, ElemHideException} = require("filterClasses"); - -let nodeData = new WeakMap(); -let windowStats = new WeakMap(); -let windowSelection = new WeakMap(); - -let setEntry, hasEntry, getEntry; -// Last issue(Bug 982561) preventing us from using WeakMap fixed for FF version 32 -if (Services.vc.compare(Utils.platformVersion, "32.0a1") >= 0) -{ - setEntry = (map, key, value) => map.set(key, value); - hasEntry = (map, key) => map.has(key); - getEntry = (map, key) => map.get(key); -} -else -{ - // Fall back to user data - let dataSeed = Math.random(); - let nodeDataProp = "abpNodeData" + dataSeed; - let windowStatsProp = "abpWindowStats" + dataSeed; - let windowSelectionProp = "abpWindowSelection" + dataSeed; - let getProp = function(map) - { - switch (map) - { - case nodeData: - return nodeDataProp; - case windowStats: - return windowStatsProp; - case windowSelection: - return windowSelectionProp; - default: - return null; - } - }; - - setEntry = (map, key, value) => key.setUserData(getProp(map), value, null); - hasEntry = (map, key) => key.getUserData(getProp(map)); - getEntry = (map, key) => key.getUserData(getProp(map)) || undefined; -} - -/** - * List of notifiers in use - these notifiers need to receive notifications on - * new requests. - * @type RequestNotifier[] - */ -let activeNotifiers = []; - -/** - * Creates a notifier object for a particular window. After creation the window - * will first be scanned for previously saved requests. Once that scan is - * complete only new requests for this window will be reported. - * @param {Window} wnd window to attach the notifier to - * @param {Function} listener listener to be called whenever a new request is found - * @param {Object} [listenerObj] "this" pointer to be used when calling the listener - */ -function RequestNotifier(wnd, listener, listenerObj) -{ - this.window = wnd; - this.listener = listener; - this.listenerObj = listenerObj || null; - activeNotifiers.push(this); - if (wnd) - this.startScan(wnd); - else - this.scanComplete = true; -} -exports.RequestNotifier = RequestNotifier; - -RequestNotifier.prototype = -{ - /** - * The window this notifier is associated with. - * @type Window - */ - window: null, - - /** - * The listener to be called when a new request is found. - * @type Function - */ - listener: null, - - /** - * "this" pointer to be used when calling the listener. - * @type Object - */ - listenerObj: null, - - /** - * Will be set to true once the initial window scan is complete. - * @type Boolean - */ - scanComplete: false, - - /** - * Shuts down the notifier once it is no longer used. The listener - * will no longer be called after that. - */ - shutdown: function() - { - delete this.window; - delete this.listener; - delete this.listenerObj; - - for (let i = activeNotifiers.length - 1; i >= 0; i--) - if (activeNotifiers[i] == this) - activeNotifiers.splice(i, 1); - }, - - /** - * Notifies listener about a new request. - */ - notifyListener: function(/**Window*/ wnd, /**Node*/ node, /**RequestEntry*/ entry) - { - this.listener.call(this.listenerObj, wnd, node, entry, this.scanComplete); - }, - - /** - * Number of currently posted scan events (will be 0 when the scan finishes - * running). - */ - eventsPosted: 0, - - /** - * Starts the initial scan of the window (will recurse into frames). - * @param {Window} wnd the window to be scanned - */ - startScan: function(wnd) - { - let doc = wnd.document; - let walker = doc.createTreeWalker(doc, Ci.nsIDOMNodeFilter.SHOW_ELEMENT, null, false); - - let process = function() - { - if (!this.listener) - return; - - let node = walker.currentNode; - let data = getEntry(nodeData, node); - if (typeof data != "undefined") - for (let k in data) - this.notifyListener(wnd, node, data[k]); - - if (walker.nextNode()) - Utils.runAsync(process); - else - { - // Done with the current window, start the scan for its frames - for (let i = 0; i < wnd.frames.length; i++) - this.startScan(wnd.frames[i]); - - this.eventsPosted--; - if (!this.eventsPosted) - { - this.scanComplete = true; - this.notifyListener(wnd, null, null); - } - } - }.bind(this); - - // Process each node in a separate event to allow other events to process - this.eventsPosted++; - Utils.runAsync(process); - } -}; - -RequestNotifier.storeSelection = function(/**Window*/ wnd, /**String*/ selection) -{ - setEntry(windowSelection, wnd.document, selection); -}; -RequestNotifier.getSelection = function(/**Window*/ wnd) /**String*/ -{ - if (hasEntry(windowSelection, wnd.document)) - return getEntry(windowSelection, wnd.document); - else - return null; -}; - -/** - * Attaches request data to a DOM node. - * @param {Node} node node to attach data to - * @param {Window} topWnd top-level window the node belongs to - * @param {Integer} contentType request type, one of the Policy.type.* constants - * @param {String} docDomain domain of the document that initiated the request - * @param {Boolean} thirdParty will be true if a third-party server has been requested - * @param {String} location the address that has been requested - * @param {Filter} filter filter applied to the request or null if none - */ -RequestNotifier.addNodeData = function(/**Node*/ node, /**Window*/ topWnd, /**Integer*/ contentType, /**String*/ docDomain, /**Boolean*/ thirdParty, /**String*/ location, /**Filter*/ filter) -{ - return new RequestEntry(node, topWnd, contentType, docDomain, thirdParty, location, filter); -} - -/** - * Retrieves the statistics for a window. - * @result {Object} Object with the properties items, blocked, whitelisted, hidden, filters containing statistics for the window (might be null) - */ -RequestNotifier.getWindowStatistics = function(/**Window*/ wnd) -{ - if (hasEntry(windowStats, wnd.document)) - return getEntry(windowStats, wnd.document); - else - return null; -} - -/** - * Retrieves the request entry associated with a DOM node. - * @param {Node} node - * @param {Boolean} noParent if missing or false, the search will extend to the parent nodes until one is found that has data associated with it - * @param {Integer} [type] request type to be looking for - * @param {String} [location] request location to be looking for - * @result {[Node, RequestEntry]} - * @static - */ -RequestNotifier.getDataForNode = function(node, noParent, type, location) -{ - while (node) - { - let data = getEntry(nodeData, node); - if (typeof data != "undefined") - { - // Look for matching entry - for (let k in data) - { - let entry = data[k]; - if ((typeof type == "undefined" || entry.type == type) && - (typeof location == "undefined" || entry.location == location)) - { - return [node, entry]; - } - } - } - - // If we don't have any match on this node then maybe its parent will do - if ((typeof noParent != "boolean" || !noParent) && - node.parentNode instanceof Ci.nsIDOMElement) - { - node = node.parentNode; - } - else - { - node = null; - } - } - - return null; -}; - -function RequestEntry(node, topWnd, contentType, docDomain, thirdParty, location, filter) -{ - this.type = contentType; - this.docDomain = docDomain; - this.thirdParty = thirdParty; - this.location = location; - this.filter = filter; - - this.attachToNode(node); - - // Update window statistics - if (!hasEntry(windowStats, topWnd.document)) - { - setEntry(windowStats, topWnd.document, { - items: 0, - hidden: 0, - blocked: 0, - whitelisted: 0, - filters: {} - }); - } - - let stats = getEntry(windowStats, topWnd.document); - if (!filter || !(filter instanceof ElemHideBase)) - stats.items++; - if (filter) - { - if (filter instanceof BlockingFilter) - stats.blocked++; - else if (filter instanceof WhitelistFilter || filter instanceof ElemHideException) - stats.whitelisted++; - else if (filter instanceof ElemHideFilter) - stats.hidden++; - - if (filter.text in stats.filters) - stats.filters[filter.text]++; - else - stats.filters[filter.text] = 1; - } - - // Notify listeners - for (let notifier of activeNotifiers) - if (!notifier.window || notifier.window == topWnd) - notifier.notifyListener(topWnd, node, this); -} -RequestEntry.prototype = -{ - /** - * Content type of the request (one of the nsIContentPolicy constants) - * @type Integer - */ - type: null, - /** - * Domain name of the requesting document - * @type String - */ - docDomain: null, - /** - * True if the request goes to a different domain than the domain of the containing document - * @type Boolean - */ - thirdParty: false, - /** - * Address being requested - * @type String - */ - location: null, - /** - * Filter that was applied to this request (if any) - * @type Filter - */ - filter: null, - /** - * String representation of the content type, e.g. "subdocument" - * @type String - */ - get typeDescr() - { - return require("contentPolicy").Policy.typeDescr[this.type]; - }, - /** - * User-visible localized representation of the content type, e.g. "frame" - * @type String - */ - get localizedDescr() - { - return require("contentPolicy").Policy.localizedDescr[this.type]; - }, - - /** - * Attaches this request object to a DOM node. - */ - attachToNode: function(/**Node*/ node) - { - let existingData = getEntry(nodeData, node); - if (typeof existingData == "undefined") - { - existingData = {}; - setEntry(nodeData, node, existingData); - } - - // Add this request to the node data - existingData[this.type + " " + this.location] = this; - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/subscriptionClasses.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/subscriptionClasses.js deleted file mode 100644 index 13dceaf..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/subscriptionClasses.js +++ /dev/null @@ -1,597 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Definition of Subscription class and its subclasses. - */ - -Cu.import("resource://gre/modules/Services.jsm"); - -let {ActiveFilter, BlockingFilter, WhitelistFilter, ElemHideBase} = require("filterClasses"); -let {FilterNotifier} = require("filterNotifier"); - -/** - * Abstract base class for filter subscriptions - * - * @param {String} url download location of the subscription - * @param {String} [title] title of the filter subscription - * @constructor - */ -function Subscription(url, title) -{ - this.url = url; - this.filters = []; - if (title) - this._title = title; - else - { - let {Utils} = require("utils"); - this._title = Utils.getString("newGroup_title"); - } - Subscription.knownSubscriptions[url] = this; -} -exports.Subscription = Subscription; - -Subscription.prototype = -{ - /** - * Download location of the subscription - * @type String - */ - url: null, - - /** - * Filters contained in the filter subscription - * @type Array of Filter - */ - filters: null, - - _title: null, - _fixedTitle: false, - _disabled: false, - - /** - * Title of the filter subscription - * @type String - */ - get title() - { - return this._title; - }, - set title(value) - { - if (value != this._title) - { - let oldValue = this._title; - this._title = value; - FilterNotifier.triggerListeners("subscription.title", this, value, oldValue); - } - return this._title; - }, - - /** - * Determines whether the title should be editable - * @type Boolean - */ - get fixedTitle() - { - return this._fixedTitle; - }, - set fixedTitle(value) - { - if (value != this._fixedTitle) - { - let oldValue = this._fixedTitle; - this._fixedTitle = value; - FilterNotifier.triggerListeners("subscription.fixedTitle", this, value, oldValue); - } - return this._fixedTitle; - }, - - /** - * Defines whether the filters in the subscription should be disabled - * @type Boolean - */ - get disabled() - { - return this._disabled; - }, - set disabled(value) - { - if (value != this._disabled) - { - let oldValue = this._disabled; - this._disabled = value; - FilterNotifier.triggerListeners("subscription.disabled", this, value, oldValue); - } - return this._disabled; - }, - - /** - * Serializes the filter to an array of strings for writing out on the disk. - * @param {Array of String} buffer buffer to push the serialization results into - */ - serialize: function(buffer) - { - buffer.push("[Subscription]"); - buffer.push("url=" + this.url); - buffer.push("title=" + this._title); - if (this._fixedTitle) - buffer.push("fixedTitle=true"); - if (this._disabled) - buffer.push("disabled=true"); - }, - - serializeFilters: function(buffer) - { - for (let filter of this.filters) - buffer.push(filter.text.replace(/\[/g, "\\[")); - }, - - toString: function() - { - let buffer = []; - this.serialize(buffer); - return buffer.join("\n"); - } -}; - -/** - * Cache for known filter subscriptions, maps URL to subscription objects. - * @type Object - */ -Subscription.knownSubscriptions = {__proto__: null}; - -/** - * Returns a subscription from its URL, creates a new one if necessary. - * @param {String} url URL of the subscription - * @return {Subscription} subscription or null if the subscription couldn't be created - */ -Subscription.fromURL = function(url) -{ - if (url in Subscription.knownSubscriptions) - return Subscription.knownSubscriptions[url]; - - try - { - // Test URL for validity - url = Services.io.newURI(url, null, null).spec; - return new DownloadableSubscription(url, null); - } - catch (e) - { - return new SpecialSubscription(url); - } -} - -/** - * Deserializes a subscription - * - * @param {Object} obj map of serialized properties and their values - * @return {Subscription} subscription or null if the subscription couldn't be created - */ -Subscription.fromObject = function(obj) -{ - let result; - try - { - obj.url = Services.io.newURI(obj.url, null, null).spec; - - // URL is valid - this is a downloadable subscription - result = new DownloadableSubscription(obj.url, obj.title); - if ("downloadStatus" in obj) - result._downloadStatus = obj.downloadStatus; - if ("lastSuccess" in obj) - result.lastSuccess = parseInt(obj.lastSuccess) || 0; - if ("lastCheck" in obj) - result._lastCheck = parseInt(obj.lastCheck) || 0; - if ("expires" in obj) - result.expires = parseInt(obj.expires) || 0; - if ("softExpiration" in obj) - result.softExpiration = parseInt(obj.softExpiration) || 0; - if ("errors" in obj) - result._errors = parseInt(obj.errors) || 0; - if ("version" in obj) - result.version = parseInt(obj.version) || 0; - if ("requiredVersion" in obj) - { - let {addonVersion} = require("info"); - result.requiredVersion = obj.requiredVersion; - if (Services.vc.compare(result.requiredVersion, addonVersion) > 0) - result.upgradeRequired = true; - } - if ("homepage" in obj) - result._homepage = obj.homepage; - if ("lastDownload" in obj) - result._lastDownload = parseInt(obj.lastDownload) || 0; - } - catch (e) - { - // Invalid URL - custom filter group - if (!("title" in obj)) - { - // Backwards compatibility - titles and filter types were originally - // determined by group identifier. - if (obj.url == "~wl~") - obj.defaults = "whitelist"; - else if (obj.url == "~fl~") - obj.defaults = "blocking"; - else if (obj.url == "~eh~") - obj.defaults = "elemhide"; - if ("defaults" in obj) - { - let {Utils} = require("utils"); - obj.title = Utils.getString(obj.defaults + "Group_title"); - } - } - result = new SpecialSubscription(obj.url, obj.title); - if ("defaults" in obj) - result.defaults = obj.defaults.split(" "); - } - if ("fixedTitle" in obj) - result._fixedTitle = (obj.fixedTitle == "true"); - if ("privateMode" in obj) - result.privateMode = (obj.privateMode == "true"); - if ("disabled" in obj) - result._disabled = (obj.disabled == "true"); - - return result; -} - -/** - * Class for special filter subscriptions (user's filters) - * @param {String} url see Subscription() - * @param {String} [title] see Subscription() - * @constructor - * @augments Subscription - */ -function SpecialSubscription(url, title) -{ - Subscription.call(this, url, title); -} -exports.SpecialSubscription = SpecialSubscription; - -SpecialSubscription.prototype = -{ - __proto__: Subscription.prototype, - - /** - * Filter types that should be added to this subscription by default - * (entries should correspond to keys in SpecialSubscription.defaultsMap). - * @type Array of String - */ - defaults: null, - - /** - * Tests whether a filter should be added to this group by default - * @param {Filter} filter filter to be tested - * @return {Boolean} - */ - isDefaultFor: function(filter) - { - if (this.defaults && this.defaults.length) - { - for (let type of this.defaults) - { - if (filter instanceof SpecialSubscription.defaultsMap[type]) - return true; - if (!(filter instanceof ActiveFilter) && type == "blacklist") - return true; - } - } - - return false; - }, - - /** - * See Subscription.serialize() - */ - serialize: function(buffer) - { - Subscription.prototype.serialize.call(this, buffer); - if (this.defaults && this.defaults.length) - buffer.push("defaults=" + this.defaults.filter((type) => type in SpecialSubscription.defaultsMap).join(" ")); - if (this._lastDownload) - buffer.push("lastDownload=" + this._lastDownload); - } -}; - -SpecialSubscription.defaultsMap = { - __proto__: null, - "whitelist": WhitelistFilter, - "blocking": BlockingFilter, - "elemhide": ElemHideBase -}; - -/** - * Creates a new user-defined filter group. - * @param {String} [title] title of the new filter group - * @result {SpecialSubscription} - */ -SpecialSubscription.create = function(title) -{ - let url; - do - { - url = "~user~" + Math.round(Math.random()*1000000); - } while (url in Subscription.knownSubscriptions); - return new SpecialSubscription(url, title) -}; - -/** - * Creates a new user-defined filter group and adds the given filter to it. - * This group will act as the default group for this filter type. - */ -SpecialSubscription.createForFilter = function(/**Filter*/ filter) /**SpecialSubscription*/ -{ - let subscription = SpecialSubscription.create(); - subscription.filters.push(filter); - for (let type in SpecialSubscription.defaultsMap) - { - if (filter instanceof SpecialSubscription.defaultsMap[type]) - subscription.defaults = [type]; - } - if (!subscription.defaults) - subscription.defaults = ["blocking"]; - - let {Utils} = require("utils"); - subscription.title = Utils.getString(subscription.defaults[0] + "Group_title"); - return subscription; -}; - -/** - * Abstract base class for regular filter subscriptions (both internally and externally updated) - * @param {String} url see Subscription() - * @param {String} [title] see Subscription() - * @constructor - * @augments Subscription - */ -function RegularSubscription(url, title) -{ - Subscription.call(this, url, title || url); -} -exports.RegularSubscription = RegularSubscription; - -RegularSubscription.prototype = -{ - __proto__: Subscription.prototype, - - _homepage: null, - _lastDownload: 0, - - /** - * Filter subscription homepage if known - * @type String - */ - get homepage() - { - return this._homepage; - }, - set homepage(value) - { - if (value != this._homepage) - { - let oldValue = this._homepage; - this._homepage = value; - FilterNotifier.triggerListeners("subscription.homepage", this, value, oldValue); - } - return this._homepage; - }, - - /** - * Time of the last subscription download (in seconds since the beginning of the epoch) - * @type Number - */ - get lastDownload() - { - return this._lastDownload; - }, - set lastDownload(value) - { - if (value != this._lastDownload) - { - let oldValue = this._lastDownload; - this._lastDownload = value; - FilterNotifier.triggerListeners("subscription.lastDownload", this, value, oldValue); - } - return this._lastDownload; - }, - - /** - * See Subscription.serialize() - */ - serialize: function(buffer) - { - Subscription.prototype.serialize.call(this, buffer); - if (this._homepage) - buffer.push("homepage=" + this._homepage); - if (this._lastDownload) - buffer.push("lastDownload=" + this._lastDownload); - } -}; - -/** - * Class for filter subscriptions updated by externally (by other extension) - * @param {String} url see Subscription() - * @param {String} [title] see Subscription() - * @constructor - * @augments RegularSubscription - */ -function ExternalSubscription(url, title) -{ - RegularSubscription.call(this, url, title); -} -exports.ExternalSubscription = ExternalSubscription; - -ExternalSubscription.prototype = -{ - __proto__: RegularSubscription.prototype, - - /** - * See Subscription.serialize() - */ - serialize: function(buffer) - { - throw new Error("Unexpected call, external subscriptions should not be serialized"); - } -}; - -/** - * Class for filter subscriptions updated by externally (by other extension) - * @param {String} url see Subscription() - * @param {String} [title] see Subscription() - * @constructor - * @augments RegularSubscription - */ -function DownloadableSubscription(url, title) -{ - RegularSubscription.call(this, url, title); -} -exports.DownloadableSubscription = DownloadableSubscription; - -DownloadableSubscription.prototype = -{ - __proto__: RegularSubscription.prototype, - - _downloadStatus: null, - _lastCheck: 0, - _errors: 0, - - /** - * Status of the last download (ID of a string) - * @type String - */ - get downloadStatus() - { - return this._downloadStatus; - }, - set downloadStatus(value) - { - let oldValue = this._downloadStatus; - this._downloadStatus = value; - FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue); - return this._downloadStatus; - }, - - /** - * Time of the last successful download (in seconds since the beginning of the - * epoch). - */ - lastSuccess: 0, - - /** - * Time when the subscription was considered for an update last time (in seconds - * since the beginning of the epoch). This will be used to increase softExpiration - * if the user doesn't use Adblock Plus for some time. - * @type Number - */ - get lastCheck() - { - return this._lastCheck; - }, - set lastCheck(value) - { - if (value != this._lastCheck) - { - let oldValue = this._lastCheck; - this._lastCheck = value; - FilterNotifier.triggerListeners("subscription.lastCheck", this, value, oldValue); - } - return this._lastCheck; - }, - - /** - * Hard expiration time of the filter subscription (in seconds since the beginning of the epoch) - * @type Number - */ - expires: 0, - - /** - * Soft expiration time of the filter subscription (in seconds since the beginning of the epoch) - * @type Number - */ - softExpiration: 0, - - /** - * Number of download failures since last success - * @type Number - */ - get errors() - { - return this._errors; - }, - set errors(value) - { - if (value != this._errors) - { - let oldValue = this._errors; - this._errors = value; - FilterNotifier.triggerListeners("subscription.errors", this, value, oldValue); - } - return this._errors; - }, - - /** - * Version of the subscription data retrieved on last successful download - * @type Number - */ - version: 0, - - /** - * Minimal Adblock Plus version required for this subscription - * @type String - */ - requiredVersion: null, - - /** - * Should be true if requiredVersion is higher than current Adblock Plus version - * @type Boolean - */ - upgradeRequired: false, - - /** - * Should be true if the Privatemode: header is set to true in the subscription - * @type Boolean - */ - privateMode: false, - - /** - * See Subscription.serialize() - */ - serialize: function(buffer) - { - RegularSubscription.prototype.serialize.call(this, buffer); - if (this.downloadStatus) - buffer.push("downloadStatus=" + this.downloadStatus); - if (this.lastSuccess) - buffer.push("lastSuccess=" + this.lastSuccess); - if (this.lastCheck) - buffer.push("lastCheck=" + this.lastCheck); - if (this.expires) - buffer.push("expires=" + this.expires); - if (this.softExpiration) - buffer.push("softExpiration=" + this.softExpiration); - if (this.errors) - buffer.push("errors=" + this.errors); - if (this.version) - buffer.push("version=" + this.version); - if (this.requiredVersion) - buffer.push("requiredVersion=" + this.requiredVersion); - if (this.privateMode) - buffer.push("privateMode=" + this.privateMode); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/sync.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/sync.js deleted file mode 100644 index 05eeced..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/sync.js +++ /dev/null @@ -1,459 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Firefox Sync integration - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {FilterStorage} = require("filterStorage"); -let {FilterNotifier} = require("filterNotifier"); -let {Synchronizer} = require("synchronizer"); -let {Subscription, SpecialSubscription, DownloadableSubscription, ExternalSubscription} = require("subscriptionClasses"); -let {Filter, ActiveFilter} = require("filterClasses"); - -// Firefox Sync classes are set later in initEngine() -let Service, Engines, SyncEngine, Store, Tracker; - -/** - * ID of the only record stored - * @type String - */ -let filtersRecordID = "6fad6286-8207-46b6-aa39-8e0ce0bd7c49"; - -let Sync = exports.Sync = -{ - /** - * Will be set to true if/when Weave starts up. - * @type Boolean - */ - initialized: false, - - /** - * Whether Weave requested us to track changes. - * @type Boolean - */ - trackingEnabled: false, - - /** - * Returns Adblock Plus sync engine. - * @result Engine - */ - getEngine: function() - { - if (this.initialized) - return Engines.get("adblockplus"); - else - return null; - } -}; - -/** - * Listens to notifications from Sync service. - */ -let SyncServiceObserver = -{ - init: function() - { - try - { - let {Status, STATUS_DISABLED, CLIENT_NOT_CONFIGURED} = Cu.import("resource://services-sync/status.js", null); - Sync.initialized = Status.ready; - Sync.trackingEnabled = (Status.service != STATUS_DISABLED && Status.service != CLIENT_NOT_CONFIGURED); - } - catch (e) - { - return; - } - - if (Sync.initialized) - this.initEngine(); - else - Services.obs.addObserver(this, "weave:service:ready", true); - Services.obs.addObserver(this, "weave:engine:start-tracking", true); - Services.obs.addObserver(this, "weave:engine:stop-tracking", true); - - onShutdown.add(function() - { - try - { - Services.obs.removeObserver(this, "weave:service:ready"); - } catch (e) {} - Services.obs.removeObserver(this, "weave:engine:start-tracking"); - Services.obs.removeObserver(this, "weave:engine:stop-tracking"); - }.bind(this)); - }, - - initEngine: function() - { - ({Engines, SyncEngine, Store, Tracker} = Cu.import("resource://services-sync/engines.js")); - if (typeof Engines == "undefined") - { - ({Service} = Cu.import("resource://services-sync/service.js")); - Engines = Service.engineManager; - } - - ABPEngine.prototype.__proto__ = SyncEngine.prototype; - ABPStore.prototype.__proto__ = Store.prototype; - ABPTracker.prototype.__proto__ = Tracker.prototype; - - Engines.register(ABPEngine); - onShutdown.add(function() - { - Engines.unregister("adblockplus"); - }); - }, - - observe: function(subject, topic, data) - { - switch (topic) - { - case "weave:service:ready": - if (Sync.initialized) - return; - - this.initEngine(); - Sync.initialized = true; - break; - case "weave:engine:start-tracking": - Sync.trackingEnabled = true; - if (trackerInstance) - trackerInstance.startTracking(); - break; - case "weave:engine:stop-tracking": - Sync.trackingEnabled = false; - if (trackerInstance) - trackerInstance.stopTracking(); - break; - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]), -}; - -function ABPEngine() -{ - SyncEngine.call(this, "AdblockPlus", Service); -} -ABPEngine.prototype = -{ - _storeObj: ABPStore, - _trackerObj: ABPTracker, - version: 1, - - _reconcile: function(item) - { - // Always process server data, we will do the merging ourselves - return true; - } -}; - -function ABPStore(name, engine) -{ - Store.call(this, name, engine); -} -ABPStore.prototype = -{ - getAllIDs: function() - { - let result = {} - result[filtersRecordID] = true; - return result; - }, - - changeItemID: function(oldId, newId) - { - // This should not be called, our engine doesn't implement _findDupe - throw Cr.NS_ERROR_UNEXPECTED; - }, - - itemExists: function(id) - { - // Only one id exists so far - return (id == filtersRecordID); - }, - - createRecord: function(id, collection) - { - let record = new ABPEngine.prototype._recordObj(collection, id); - if (id == filtersRecordID) - { - record.cleartext = { - id: id, - subscriptions: [], - }; - for (let subscription of FilterStorage.subscriptions) - { - if (subscription instanceof ExternalSubscription) - continue; - - let subscriptionEntry = - { - url: subscription.url, - disabled: subscription.disabled - }; - if (subscription instanceof SpecialSubscription) - { - subscriptionEntry.filters = []; - for (let filter of subscription.filters) - { - let filterEntry = {text: filter.text}; - if (filter instanceof ActiveFilter) - filterEntry.disabled = filter.disabled; - subscriptionEntry.filters.push(filterEntry); - } - } - else - subscriptionEntry.title = subscription.title; - record.cleartext.subscriptions.push(subscriptionEntry); - } - - // Data sent, forget about local changes now - trackerInstance.clearPrivateChanges() - } - else - record.deleted = true; - - return record; - }, - - create: function(record) - { - // This should not be called because our record list doesn't change but - // call update just in case. - this.update(record); - }, - - update: function(record) - { - if (record.id != filtersRecordID) - return; - - this._log.trace("Merging in remote data"); - - let data = record.cleartext.subscriptions; - - // First make sure we have the same subscriptions on both sides - let seenSubscription = {__proto__: null}; - for (let remoteSubscription of data) - { - seenSubscription[remoteSubscription.url] = true; - if (remoteSubscription.url in FilterStorage.knownSubscriptions) - { - let subscription = FilterStorage.knownSubscriptions[remoteSubscription.url]; - if (!trackerInstance.didSubscriptionChange(remoteSubscription)) - { - // Only change local subscription if there were no changes, otherwise dismiss remote changes - subscription.disabled = remoteSubscription.disabled; - if (subscription instanceof DownloadableSubscription) - subscription.title = remoteSubscription.title; - } - } - else if (!trackerInstance.didSubscriptionChange(remoteSubscription)) - { - // Subscription was added remotely, add it locally as well - let subscription = Subscription.fromURL(remoteSubscription.url); - if (!subscription) - continue; - - subscription.disabled = remoteSubscription.disabled; - if (subscription instanceof DownloadableSubscription) - { - subscription.title = remoteSubscription.title; - FilterStorage.addSubscription(subscription); - Synchronizer.execute(subscription); - } - } - } - - for (let subscription of FilterStorage.subscriptions.slice()) - { - if (!(subscription.url in seenSubscription) && subscription instanceof DownloadableSubscription && !trackerInstance.didSubscriptionChange(subscription)) - { - // Subscription was removed remotely, remove it locally as well - FilterStorage.removeSubscription(subscription); - } - } - - // Now sync the custom filters - let seenFilter = {__proto__: null}; - for (let remoteSubscription of data) - { - if (!("filters" in remoteSubscription)) - continue; - - for (let remoteFilter of remoteSubscription.filters) - { - seenFilter[remoteFilter.text] = true; - - let filter = Filter.fromText(remoteFilter.text); - if (trackerInstance.didFilterChange(filter)) - continue; - - if (filter.subscriptions.some((subscription) => subscription instanceof SpecialSubscription)) - { - // Filter might have been changed remotely - if (filter instanceof ActiveFilter) - filter.disabled = remoteFilter.disabled; - } - else - { - // Filter was added remotely, add it locally as well - FilterStorage.addFilter(filter); - } - } - } - - for (let subscription of FilterStorage.subscriptions) - { - if (!(subscription instanceof SpecialSubscription)) - continue; - - for (let filter of subscription.filters.slice()) - { - if (!(filter.text in seenFilter) && !trackerInstance.didFilterChange(filter)) - { - // Filter was removed remotely, remove it locally as well - FilterStorage.removeFilter(filter); - } - } - } - - // Merge done, forget about local changes now - trackerInstance.clearPrivateChanges() - }, - - remove: function(record) - { - // Shouldn't be called but if it is - ignore - }, - - wipe: function() - { - this._log.trace("Got wipe command, removing all data"); - - for (let subscription of FilterStorage.subscriptions.slice()) - { - if (subscription instanceof DownloadableSubscription) - FilterStorage.removeSubscription(subscription); - else if (subscription instanceof SpecialSubscription) - { - for (let filter of subscription.filters.slice()) - FilterStorage.removeFilter(filter); - } - } - - // Data wiped, forget about local changes now - trackerInstance.clearPrivateChanges() - } -}; - -/** - * Hack to allow store to use the tracker - store tracker pointer globally. - */ -let trackerInstance = null; - -function ABPTracker(name, engine) -{ - Tracker.call(this, name, engine); - - this.privateTracker = new Tracker(name + ".private", engine); - trackerInstance = this; - - this.onChange = this.onChange.bind(this); - - if (Sync.trackingEnabled) - this.startTracking(); -} -ABPTracker.prototype = -{ - privateTracker: null, - - startTracking: function() - { - FilterNotifier.addListener(this.onChange); - }, - - stopTracking: function() - { - FilterNotifier.removeListener(this.onChange); - }, - - clearPrivateChanges: function() - { - this.privateTracker.clearChangedIDs(); - }, - - addPrivateChange: function(id) - { - // Ignore changes during syncing - if (this.ignoreAll) - return; - - this.addChangedID(filtersRecordID); - this.privateTracker.addChangedID(id); - this.score += 10; - }, - - didSubscriptionChange: function(subscription) - { - return ("subscription " + subscription.url) in this.privateTracker.changedIDs; - }, - - didFilterChange: function(filter) - { - return ("filter " + filter.text) in this.privateTracker.changedIDs; - }, - - onChange: function(action, item) - { - switch (action) - { - case "subscription.updated": - if ("oldSubscription" in item) - { - // Subscription moved to a new address - this.addPrivateChange("subscription " + item.url); - this.addPrivateChange("subscription " + item.oldSubscription.url); - } - else if (item instanceof SpecialSubscription) - { - // User's filters changed via Preferences window - for (let filter of item.filters) - this.addPrivateChange("filter " + filter.text); - for (let filter of item.oldFilters) - this.addPrivateChange("filter " + filter.text); - } - break; - case "subscription.added": - case "subscription.removed": - case "subscription.disabled": - case "subscription.title": - this.addPrivateChange("subscription " + item.url); - break; - case "filter.added": - case "filter.removed": - case "filter.disabled": - this.addPrivateChange("filter " + item.text); - break; - } - } -}; - -SyncServiceObserver.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/synchronizer.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/synchronizer.js deleted file mode 100644 index b9f9e29..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/synchronizer.js +++ /dev/null @@ -1,330 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Manages synchronization of filter subscriptions. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {TimeLine} = require("timeline"); -let {Downloader, Downloadable, - MILLIS_IN_SECOND, MILLIS_IN_MINUTE, MILLIS_IN_HOUR, MILLIS_IN_DAY} = require("downloader"); -let {Filter, CommentFilter} = require("filterClasses"); -let {FilterStorage} = require("filterStorage"); -let {FilterNotifier} = require("filterNotifier"); -let {Prefs} = require("prefs"); -let {Subscription, DownloadableSubscription} = require("subscriptionClasses"); -let {Utils} = require("utils"); - -let INITIAL_DELAY = 6 * MILLIS_IN_MINUTE; -let CHECK_INTERVAL = 1 * MILLIS_IN_HOUR; -let DEFAULT_EXPIRATION_INTERVAL = 5 * MILLIS_IN_DAY; - -/** - * The object providing actual downloading functionality. - * @type Downloader - */ -let downloader = null; - -/** - * This object is responsible for downloading filter subscriptions whenever - * necessary. - * @class - */ -let Synchronizer = exports.Synchronizer = -{ - /** - * Called on module startup. - */ - init: function() - { - TimeLine.enter("Entered Synchronizer.init()"); - - downloader = new Downloader(this._getDownloadables.bind(this), INITIAL_DELAY, CHECK_INTERVAL); - onShutdown.add(function() - { - downloader.cancel(); - }); - - downloader.onExpirationChange = this._onExpirationChange.bind(this); - downloader.onDownloadStarted = this._onDownloadStarted.bind(this); - downloader.onDownloadSuccess = this._onDownloadSuccess.bind(this); - downloader.onDownloadError = this._onDownloadError.bind(this); - - TimeLine.leave("Synchronizer.init() done"); - }, - - /** - * Checks whether a subscription is currently being downloaded. - * @param {String} url URL of the subscription - * @return {Boolean} - */ - isExecuting: function(url) - { - return downloader.isDownloading(url); - }, - - /** - * Starts the download of a subscription. - * @param {DownloadableSubscription} subscription Subscription to be downloaded - * @param {Boolean} manual true for a manually started download (should not trigger fallback requests) - */ - execute: function(subscription, manual) - { - downloader.download(this._getDownloadable(subscription, manual)); - }, - - /** - * Yields Downloadable instances for all subscriptions that can be downloaded. - */ - _getDownloadables: function() - { - if (!Prefs.subscriptions_autoupdate) - return; - - for (let subscription of FilterStorage.subscriptions) - { - if (subscription instanceof DownloadableSubscription) - yield this._getDownloadable(subscription, false); - } - }, - - /** - * Creates a Downloadable instance for a subscription. - */ - _getDownloadable: function(/**Subscription*/ subscription, /**Boolean*/ manual) /**Downloadable*/ - { - let result = new Downloadable(subscription.url); - if (subscription.lastDownload != subscription.lastSuccess) - result.lastError = subscription.lastDownload * MILLIS_IN_SECOND; - result.lastCheck = subscription.lastCheck * MILLIS_IN_SECOND; - result.lastVersion = subscription.version; - result.softExpiration = subscription.softExpiration * MILLIS_IN_SECOND; - result.hardExpiration = subscription.expires * MILLIS_IN_SECOND; - result.manual = manual; - result.privateMode = subscription.privateMode; - return result; - }, - - _onExpirationChange: function(downloadable) - { - let subscription = Subscription.fromURL(downloadable.url); - subscription.lastCheck = Math.round(downloadable.lastCheck / MILLIS_IN_SECOND); - subscription.softExpiration = Math.round(downloadable.softExpiration / MILLIS_IN_SECOND); - subscription.expires = Math.round(downloadable.hardExpiration / MILLIS_IN_SECOND); - }, - - _onDownloadStarted: function(downloadable) - { - let subscription = Subscription.fromURL(downloadable.url); - FilterNotifier.triggerListeners("subscription.downloadStatus", subscription); - }, - - _onDownloadSuccess: function(downloadable, responseText, errorCallback, redirectCallback) - { - let lines = responseText.split(/[\r\n]+/); - let match = /\[Adblock(?:\s*Plus\s*([\d\.]+)?)?\]/i.exec(lines[0]); - if (!match) - return errorCallback("synchronize_invalid_data"); - let minVersion = match[1]; - - // Don't remove parameter comments immediately but add them to a list first, - // they need to be considered in the checksum calculation. - let remove = []; - let params = { - redirect: null, - homepage: null, - title: null, - version: null, - privatemode: null, - expires: null - }; - for (let i = 0; i < lines.length; i++) - { - let match = /^\s*!\s*(\w+)\s*:\s*(.*)/.exec(lines[i]); - if (match) - { - let keyword = match[1].toLowerCase(); - let value = match[2]; - if (keyword in params) - { - params[keyword] = value; - remove.push(i); - } - else if (keyword == "checksum") - { - lines.splice(i--, 1); - let checksum = Utils.generateChecksum(lines); - if (checksum && checksum != value.replace(/=+$/, "")) - return errorCallback("synchronize_checksum_mismatch"); - } - } - } - - if (params.redirect) - return redirectCallback(params.redirect); - - // Handle redirects - let subscription = Subscription.fromURL(downloadable.redirectURL || downloadable.url); - if (downloadable.redirectURL && downloadable.redirectURL != downloadable.url) - { - let oldSubscription = Subscription.fromURL(downloadable.url); - subscription.title = oldSubscription.title; - subscription.disabled = oldSubscription.disabled; - subscription.lastCheck = oldSubscription.lastCheck; - - let listed = (oldSubscription.url in FilterStorage.knownSubscriptions); - if (listed) - FilterStorage.removeSubscription(oldSubscription); - - delete Subscription.knownSubscriptions[oldSubscription.url]; - - if (listed) - FilterStorage.addSubscription(subscription); - } - - // The download actually succeeded - subscription.lastSuccess = subscription.lastDownload = Math.round(Date.now() / MILLIS_IN_SECOND); - subscription.downloadStatus = "synchronize_ok"; - subscription.errors = 0; - - // Remove lines containing parameters - for (let i = remove.length - 1; i >= 0; i--) - lines.splice(remove[i], 1); - - // Process parameters - if (params.homepage) - { - let uri = Utils.makeURI(params.homepage); - if (uri && (uri.scheme == "http" || uri.scheme == "https")) - subscription.homepage = uri.spec; - } - - if (params.privatemode) - { - subscription.privateMode = (params.privatemode == "true"); - } - - if (params.title) - { - subscription.title = params.title; - subscription.fixedTitle = true; - } - else - subscription.fixedTitle = false; - - subscription.version = (params.version ? parseInt(params.version, 10) : 0); - - let expirationInterval = DEFAULT_EXPIRATION_INTERVAL; - if (params.expires) - { - let match = /^(\d+)\s*(h)?/.exec(params.expires); - if (match) - { - let interval = parseInt(match[1], 10); - if (match[2]) - expirationInterval = interval * MILLIS_IN_HOUR; - else - expirationInterval = interval * MILLIS_IN_DAY; - } - } - - let [softExpiration, hardExpiration] = downloader.processExpirationInterval(expirationInterval); - subscription.softExpiration = Math.round(softExpiration / MILLIS_IN_SECOND); - subscription.expires = Math.round(hardExpiration / MILLIS_IN_SECOND); - - delete subscription.requiredVersion; - delete subscription.upgradeRequired; - if (minVersion) - { - let {addonVersion} = require("info"); - subscription.requiredVersion = minVersion; - if (Services.vc.compare(minVersion, addonVersion) > 0) - subscription.upgradeRequired = true; - } - - // Process filters - lines.shift(); - let filters = []; - for (let line of lines) - { - line = Filter.normalize(line); - if (line) - filters.push(Filter.fromText(line)); - } - - FilterStorage.updateSubscriptionFilters(subscription, filters); - - return undefined; - }, - - _onDownloadError: function(downloadable, downloadURL, error, channelStatus, responseStatus, redirectCallback) - { - let subscription = Subscription.fromURL(downloadable.url); - subscription.lastDownload = Math.round(Date.now() / MILLIS_IN_SECOND); - subscription.downloadStatus = error; - - // Request fallback URL if necessary - for automatic updates only - if (!downloadable.manual) - { - subscription.errors++; - - if (redirectCallback && subscription.errors >= Prefs.subscriptions_fallbackerrors && /^https?:\/\//i.test(subscription.url)) - { - subscription.errors = 0; - - let fallbackURL = Prefs.subscriptions_fallbackurl; - let {addonVersion} = require("info"); - fallbackURL = fallbackURL.replace(/%VERSION%/g, encodeURIComponent(addonVersion)); - fallbackURL = fallbackURL.replace(/%SUBSCRIPTION%/g, encodeURIComponent(subscription.url)); - fallbackURL = fallbackURL.replace(/%URL%/g, encodeURIComponent(downloadURL)); - fallbackURL = fallbackURL.replace(/%ERROR%/g, encodeURIComponent(error)); - fallbackURL = fallbackURL.replace(/%CHANNELSTATUS%/g, encodeURIComponent(channelStatus)); - fallbackURL = fallbackURL.replace(/%RESPONSESTATUS%/g, encodeURIComponent(responseStatus)); - - let request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", fallbackURL); - request.overrideMimeType("text/plain"); - request.channel.loadFlags = request.channel.loadFlags | - request.channel.INHIBIT_CACHING | - request.channel.VALIDATE_ALWAYS; - request.addEventListener("load", function(ev) - { - if (onShutdown.done) - return; - - if (!(subscription.url in FilterStorage.knownSubscriptions)) - return; - - let match = /^(\d+)(?:\s+(\S+))?$/.exec(request.responseText); - if (match && match[1] == "301" && match[2] && /^https?:\/\//i.test(match[2])) // Moved permanently - redirectCallback(match[2]); - else if (match && match[1] == "410") // Gone - { - let data = "[Adblock]\n" + subscription.filters.map((f) => f.text).join("\n"); - redirectCallback("data:text/plain," + encodeURIComponent(data)); - } - }, false); - request.send(null); - } - } - }, -}; -Synchronizer.init(); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/timeline.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/timeline.js deleted file mode 100644 index 18c10fb..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/timeline.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Debugging module used for load time measurements. - */ - -let nestingCounter = 0; -let firstTimeStamp = null; -let lastTimeStamp = null; - -let asyncActions = {__proto__: null}; - -/** - * Time logging module, used to measure startup time of Adblock Plus (development builds only). - * @class - */ -let TimeLine = exports.TimeLine = { - /** - * Logs an event to console together with the time it took to get there. - */ - log: function(/**String*/ message, /**Boolean*/ _forceDisplay) - { - if (!_forceDisplay && nestingCounter <= 0) - return; - - let now = Date.now(); - let diff = lastTimeStamp ? Math.round(now - lastTimeStamp) : "first event"; - lastTimeStamp = now; - - // Indent message depending on current nesting level - for (let i = 0; i < nestingCounter; i++) - message = "* " + message; - - // Pad message with spaces - let padding = []; - for (let i = message.toString().length; i < 80; i++) - padding.push(" "); - dump("[" + now + "] ABP timeline: " + message + padding.join("") + "\t (" + diff + ")\n"); - }, - - /** - * Called to indicate that application entered a block that needs to be timed. - */ - enter: function(/**String*/ message) - { - if (nestingCounter <= 0) - firstTimeStamp = Date.now(); - - this.log(message, true); - nestingCounter = (nestingCounter <= 0 ? 1 : nestingCounter + 1); - }, - - /** - * Called when application exited a block that TimeLine.enter() was called for. - * @param {String} message message to be logged - * @param {String} [asyncAction] identifier of a pending async action - */ - leave: function(message, asyncAction) - { - if (typeof asyncAction != "undefined") - message += " (async action pending)"; - - nestingCounter--; - this.log(message, true); - - if (nestingCounter <= 0) - { - if (firstTimeStamp !== null) - dump("ABP timeline: Total time elapsed: " + Math.round(Date.now() - firstTimeStamp) + "\n"); - firstTimeStamp = null; - lastTimeStamp = null; - } - - if (typeof asyncAction != "undefined") - { - if (asyncAction in asyncActions) - dump("ABP timeline: Warning: Async action " + asyncAction + " already executing\n"); - asyncActions[asyncAction] = {start: Date.now(), total: 0}; - } - }, - - /** - * Called when the application starts processing of an async action. - */ - asyncStart: function(/**String*/ asyncAction) - { - if (asyncAction in asyncActions) - { - let action = asyncActions[asyncAction]; - if ("currentStart" in action) - dump("ABP timeline: Warning: Processing reentered for async action " + asyncAction + "\n"); - action.currentStart = Date.now(); - } - else - dump("ABP timeline: Warning: Async action " + asyncAction + " is unknown\n"); - }, - - /** - * Called when the application finishes processing of an async action. - */ - asyncEnd: function(/**String*/ asyncAction) - { - if (asyncAction in asyncActions) - { - let action = asyncActions[asyncAction]; - if ("currentStart" in action) - { - action.total += Date.now() - action.currentStart; - delete action.currentStart; - } - else - dump("ABP timeline: Warning: Processing not entered for async action " + asyncAction + "\n"); - } - else - dump("ABP timeline: Warning: Async action " + asyncAction + " is unknown\n"); - }, - - /** - * Called when an async action is done and its time can be logged. - */ - asyncDone: function(/**String*/ asyncAction) - { - if (asyncAction in asyncActions) - { - let action = asyncActions[asyncAction]; - let now = Date.now(); - let diff = now - action.start; - if ("currentStart" in action) - dump("ABP timeline: Warning: Still processing for async action " + asyncAction + "\n"); - - let message = "Async action " + asyncAction + " done"; - let padding = []; - for (let i = message.toString().length; i < 80; i++) - padding.push(" "); - dump("[" + now + "] ABP timeline: " + message + padding.join("") + "\t (" + action.total + "/" + diff + ")\n"); - } - else - dump("ABP timeline: Warning: Async action " + asyncAction + " is unknown\n"); - } -}; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/ui.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/ui.js deleted file mode 100644 index 668e356..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/ui.js +++ /dev/null @@ -1,1973 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -let {Utils} = require("utils"); -let {Prefs} = require("prefs"); -let {Policy} = require("contentPolicy"); -let {FilterStorage} = require("filterStorage"); -let {FilterNotifier} = require("filterNotifier"); -let {RequestNotifier} = require("requestNotifier"); -let {Filter} = require("filterClasses"); -let {Subscription, SpecialSubscription, DownloadableSubscription} = require("subscriptionClasses"); -let {Synchronizer} = require("synchronizer"); -let {KeySelector} = require("keySelector"); -let {Notification} = require("notification"); -let {initAntiAdblockNotification} = require("antiadblockInit"); - -let CustomizableUI = null; - -/** - * Filter corresponding with "disable on site" menu item (set in fillIconMent()). - * @type Filter - */ -let siteWhitelist = null; -/** - * Filter corresponding with "disable on site" menu item (set in fillIconMenu()). - * @type Filter - */ -let pageWhitelist = null; - -/** - * Window containing the detached list of blockable items. - * @type Window - */ -let detachedBottombar = null; - -/** - * Object initializing add-on options, observes add-on manager notifications - * about add-on options being opened. - * @type nsIObserver - */ -let optionsObserver = -{ - init: function() - { - Services.obs.addObserver(this, "addon-options-displayed", true); - onShutdown.add(function() - { - Services.obs.removeObserver(this, "addon-options-displayed"); - }.bind(this)); - }, - - /** - * Initializes options in add-on manager when they show up. - */ - initOptionsDoc: function(/**Document*/ doc) - { - function hideElement(id, hide) - { - let element = doc.getElementById(id); - if (element) - element.collapsed = hide; - } - function setChecked(id, checked) - { - let element = doc.getElementById(id); - if (element) - element.value = checked; - } - function addCommandHandler(id, handler) - { - let element = doc.getElementById(id); - if (element) - element.addEventListener("command", handler, false); - } - - Utils.splitAllLabels(doc); - - addCommandHandler("adblockplus-filters", UI.openFiltersDialog.bind(UI)); - - let {Sync} = require("sync"); - let syncEngine = Sync.getEngine(); - hideElement("adblockplus-sync", !syncEngine); - - let {defaultToolbarPosition, statusbarPosition} = require("appSupport"); - let hasToolbar = defaultToolbarPosition; - let hasStatusBar = statusbarPosition; - - hideElement("adblockplus-showintoolbar", !hasToolbar); - hideElement("adblockplus-showinstatusbar", !hasStatusBar); - - let checkbox = doc.querySelector("setting[type=bool]"); - if (checkbox) - initCheckboxes(); - - function initCheckboxes() - { - if (!("value" in checkbox)) - { - // XBL bindings didn't apply yet (bug 708397), try later - Utils.runAsync(initCheckboxes); - return; - } - - setChecked("adblockplus-savestats", Prefs.savestats); - addCommandHandler("adblockplus-savestats", function() - { - UI.toggleSaveStats(doc.defaultView); - this.value = Prefs.savestats; - }); - - let hasAcceptableAds = FilterStorage.subscriptions.some((subscription) => subscription instanceof DownloadableSubscription && - subscription.url == Prefs.subscriptions_exceptionsurl); - setChecked("adblockplus-acceptableAds", hasAcceptableAds); - addCommandHandler("adblockplus-acceptableAds", function() - { - this.value = UI.toggleAcceptableAds(); - }); - - setChecked("adblockplus-sync", syncEngine && syncEngine.enabled); - addCommandHandler("adblockplus-sync", function() - { - this.value = UI.toggleSync(); - }); - - setChecked("adblockplus-showintoolbar", UI.isToolbarIconVisible()); - addCommandHandler("adblockplus-showintoolbar", function() - { - UI.toggleToolbarIcon(); - this.value = UI.isToolbarIconVisible(); - }); - - let list = doc.getElementById("adblockplus-subscription-list"); - if (list) - { - // Load subscriptions data - let request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", "chrome://adblockplus/content/ui/subscriptions.xml"); - request.addEventListener("load", function() - { - if (onShutdown.done) - return; - - let currentSubscription = FilterStorage.subscriptions.filter((subscription) => subscription instanceof DownloadableSubscription && - subscription.url != Prefs.subscriptions_exceptionsurl); - currentSubscription = (currentSubscription.length ? currentSubscription[0] : null); - - let subscriptions =request.responseXML.getElementsByTagName("subscription"); - for (let i = 0; i < subscriptions.length; i++) - { - let item = subscriptions[i]; - let url = item.getAttribute("url"); - if (!url) - continue; - - list.appendItem(item.getAttribute("title"), url, null); - if (currentSubscription && url == currentSubscription.url) - list.selectedIndex = list.itemCount - 1; - - if (currentSubscription && list.selectedIndex < 0) - { - list.appendItem(currentSubscription.title, currentSubscription.url, null); - list.selectedIndex = list.itemCount - 1; - } - } - - var listener = function() - { - if (list.value) - UI.setSubscription(list.value, list.label); - } - list.addEventListener("command", listener, false); - - // xul:menulist in Fennec is broken and doesn't trigger any events - // on selection. Have to detect selectIndex changes instead. - // See https://bugzilla.mozilla.org/show_bug.cgi?id=891736 - list.watch("selectedIndex", function(prop, oldval, newval) - { - Utils.runAsync(listener); - return newval; - }); - }, false); - request.send(); - } - } - }, - - observe: function(subject, topic, data) - { - let {addonID} = require("info") - if (data != addonID) - return; - - this.initOptionsDoc(subject.QueryInterface(Ci.nsIDOMDocument)); - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]) -}; -optionsObserver.init(); - -/** - * Session restore observer instance, stored to prevent it from being garbage - * collected. - * @type SessionRestoreObserver - */ -let sessionRestoreObserver = null; - -/** - * Observer waiting for the browsing session to be restored on startup. - */ -function SessionRestoreObserver(/**function*/ callback) -{ - sessionRestoreObserver = this; - - this.callback = callback; - Services.obs.addObserver(this, "sessionstore-windows-restored", true); - - // Just in case, don't wait longer than 5 seconds - this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - this.timer.init(this, 5000, Ci.nsITimer.TYPE_ONE_SHOT); -} -SessionRestoreObserver.prototype = -{ - callback: null, - timer: null, - observe: function(subject, topic, data) - { - Services.obs.removeObserver(this, "sessionstore-windows-restored"); - sessionRestoreObserver = null; - - this.timer.cancel(); - this.timer = null; - - if (!onShutdown.done) - this.callback(); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]) -} - -/** - * Timer used to delay notification handling. - * @type nsITimer - */ -let notificationTimer = null; - -let UI = exports.UI = -{ - /** - * Gets called on startup, initializes UI integration. - */ - init: function() - { - // We should call initDone once both overlay and filters are loaded - let overlayLoaded = false; - let filtersLoaded = false; - let sessionRestored = false; - - // Start loading overlay - let request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", "chrome://adblockplus/content/ui/overlay.xul"); - request.addEventListener("load", function(event) - { - if (onShutdown.done) - return; - - this.processOverlay(request.responseXML.documentElement); - - // Don't wait for the rest of the startup sequence, add icon already - this.addToolbarButton(); - - overlayLoaded = true; - if (overlayLoaded && filtersLoaded && sessionRestored) - this.initDone(); - }.bind(this), false); - request.send(null); - - // Wait for filters to load - if (FilterStorage._loading) - { - let listener = function(action) - { - if (action != "load") - return; - - FilterNotifier.removeListener(listener); - filtersLoaded = true; - if (overlayLoaded && filtersLoaded && sessionRestored) - this.initDone(); - }.bind(this); - FilterNotifier.addListener(listener); - } - else - filtersLoaded = true; - - // Initialize UI after the session is restored - let window = this.currentWindow; - if (!window && "nsISessionStore" in Ci) - { - // No application windows yet, the application must be starting up. Wait - // for session to be restored before initializing our UI. - new SessionRestoreObserver(function() - { - sessionRestored = true; - if (overlayLoaded && filtersLoaded && sessionRestored) - this.initDone(); - }.bind(this)); - } - else - sessionRestored = true; - }, - - /** - * Provesses overlay document data and initializes overlay property. - */ - processOverlay: function(/**Element*/ root) - { - Utils.splitAllLabels(root); - - let specialElements = {"abp-status-popup": true, "abp-status": true, "abp-toolbarbutton": true, "abp-menuitem": true, "abp-bottombar-container": true}; - - this.overlay = {all: []}; - - // Remove whitespace text nodes - let walker = root.ownerDocument.createTreeWalker( - root, Ci.nsIDOMNodeFilter.SHOW_TEXT, - (node) => !/\S/.test(node.nodeValue), false - ); - let whitespaceNodes = []; - while (walker.nextNode()) - whitespaceNodes.push(walker.currentNode); - - for (let i = 0; i < whitespaceNodes.length; i++) - whitespaceNodes[i].parentNode.removeChild(whitespaceNodes[i]); - - // Put overlay elements into appropriate fields - while (root.firstElementChild) - { - let child = root.firstElementChild; - if (child.getAttribute("id") in specialElements) - this.overlay[child.getAttribute("id")] = child; - else - this.overlay.all.push(child); - root.removeChild(child); - } - - // Read overlay attributes - this.overlay.attributes = {}; - for (let i = 0; i < root.attributes.length; i++) - this.overlay.attributes[root.attributes[i].name] = root.attributes[i].value; - - // Copy context menu into the toolbar icon and Tools menu item - function fixId(element, newId) - { - if (element.hasAttribute("id")) - element.setAttribute("id", element.getAttribute("id").replace("abp-status", newId)); - - for (let i = 0, len = element.children.length; i < len; i++) - fixId(element.children[i], newId); - - return element; - } - - if ("abp-status-popup" in this.overlay) - { - let menuSource = this.overlay["abp-status-popup"]; - delete this.overlay["abp-status-popup"]; - - if (this.overlay.all.length) - this.overlay.all[0].appendChild(menuSource); - if ("abp-toolbarbutton" in this.overlay) - this.overlay["abp-toolbarbutton"].appendChild(fixId(menuSource.cloneNode(true), "abp-toolbar")); - if ("abp-menuitem" in this.overlay) - this.overlay["abp-menuitem"].appendChild(fixId(menuSource.cloneNode(true), "abp-menuitem")); - } - }, - - /** - * Gets called once the initialization is finished and Adblock Plus elements - * can be added to the UI. - */ - initDone: function() - { - // The icon might be added already, make sure its state is correct - this.updateState(); - - // Listen for pref and filters changes - Prefs.addListener(function(name) - { - if (name == "enabled" || name == "defaulttoolbaraction" || name == "defaultstatusbaraction") - this.updateState(); - else if (name == "showinstatusbar") - { - for (let window in this.applicationWindows) - this.updateStatusbarIcon(window); - } - }.bind(this)); - FilterNotifier.addListener(function(action) - { - if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(action) || action == "load") - this.updateState(); - }.bind(this)); - - notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - notificationTimer.initWithCallback(this.showNextNotification.bind(this), - 3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT); - onShutdown.add(() => notificationTimer.cancel()); - - // Add "anti-adblock messages" notification - initAntiAdblockNotification(); - - let documentCreationObserver = { - observe: function(subject, topic, data) - { - if (!(subject instanceof Ci.nsIDOMWindow)) - return; - - this.showNextNotification(subject.location.href); - }.bind(UI) - }; - Services.obs.addObserver(documentCreationObserver, "content-document-global-created", false); - onShutdown.add(function() - { - Services.obs.removeObserver(documentCreationObserver, "content-document-global-created", false); - }); - - // Execute first-run actions if a window is open already, otherwise it - // will happen in applyToWindow() when a window is opened. - this.firstRunActions(this.currentWindow); - }, - - addToolbarButton: function() - { - let {WindowObserver} = require("windowObserver"); - new WindowObserver(this); - - let {defaultToolbarPosition} = require("appSupport"); - if ("abp-toolbarbutton" in this.overlay && defaultToolbarPosition) - { - try - { - ({CustomizableUI}) = Cu.import("resource:///modules/CustomizableUI.jsm", null); - } - catch (e) - { - // No built-in CustomizableUI API, use our own implementation. - ({CustomizableUI}) = require("customizableUI"); - } - - CustomizableUI.createWidget({ - id: "abp-toolbarbutton", - type: "custom", - positionAttribute: "abp-iconposition", // For emulation only - defaultArea: defaultToolbarPosition.parent, - defaultBefore: defaultToolbarPosition.before, // For emulation only - defaultAfter: defaultToolbarPosition.after, // For emulation only - removable: true, - onBuild: function(document) - { - let node = document.importNode(this.overlay["abp-toolbarbutton"], true); - node.addEventListener("click", this.onIconClick, false); - node.addEventListener("command", this.onIconClick, false); - this.updateIconState(document.defaultView, node); - return node; - }.bind(this), - onAdded: function(node) - { - // For emulation only, this callback isn't part of the official - // CustomizableUI API. - this.updateIconState(node.ownerDocument.defaultView, node); - }.bind(this), - }); - onShutdown.add(CustomizableUI.destroyWidget.bind(CustomizableUI, "abp-toolbarbutton")); - } - }, - - firstRunActions: function(window) - { - if (this.firstRunDone || !window || FilterStorage._loading) - return; - - this.firstRunDone = true; - - let {addonVersion} = require("info"); - let prevVersion = Prefs.currentVersion; - if (prevVersion != addonVersion) - { - Prefs.currentVersion = addonVersion; - this.addSubscription(window, prevVersion); - } - }, - - /** - * Will be set to true after the check whether first-run actions should run - * has been performed. - * @type Boolean - */ - firstRunDone: false, - - /** - * Initializes Adblock Plus UI in a window. - */ - applyToWindow: function(/**Window*/ window, /**Boolean*/ noDelay) - { - let {delayInitialization, isKnownWindow, getBrowser, addBrowserLocationListener, addBrowserClickListener} = require("appSupport"); - if (window.document.documentElement.id == "CustomizeToolbarWindow" || isKnownWindow(window)) - { - // Add style processing instruction - let style = window.document.createProcessingInstruction("xml-stylesheet", 'class="adblockplus-node" href="chrome://adblockplus/skin/overlay.css" type="text/css"'); - window.document.insertBefore(style, window.document.firstChild); - } - - if (!isKnownWindow(window)) - return; - - // Thunderbird windows will not be initialized at this point, execute - // delayed - if (!noDelay && delayInitialization) - { - Utils.runAsync(this.applyToWindow.bind(this, window, true)); - return; - } - - // Add general items to the document - for (let i = 0; i < this.overlay.all.length; i++) - window.document.documentElement.appendChild(this.overlay.all[i].cloneNode(true)); - - // Add status bar icon - this.updateStatusbarIcon(window); - - // Add tools menu item - if ("abp-menuitem" in this.overlay) - { - let {toolsMenu} = require("appSupport"); - let [parent, before] = this.resolveInsertionPoint(window, toolsMenu); - if (parent) - parent.insertBefore(this.overlay["abp-menuitem"].cloneNode(true), before); - } - - // Attach event handlers - for (let i = 0; i < eventHandlers.length; i++) - { - let [id, event, handler] = eventHandlers[i]; - let element = window.document.getElementById(id); - if (element) - element.addEventListener(event, handler.bind(null, window), false); - } - window.addEventListener("popupshowing", this.onPopupShowing, false); - window.addEventListener("keypress", this.onKeyPress, false); - - addBrowserLocationListener(window, function() - { - this.updateIconState(window, window.document.getElementById("abp-status")); - this.updateIconState(window, window.document.getElementById("abp-toolbarbutton")); - }.bind(this)); - addBrowserClickListener(window, this.onBrowserClick.bind(this, window)); - - window.document.getElementById("abp-notification-close").addEventListener("command", function(event) - { - window.document.getElementById("abp-notification").hidePopup(); - }, false); - - // First-run actions? - this.firstRunActions(window); - - // Some people actually switch off browser.frames.enabled and are surprised - // that things stop working... - window.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShell) - .allowSubframes = true; - }, - - /** - * Removes Adblock Plus UI from a window. - */ - removeFromWindow: function(/**Window*/ window) - { - let {isKnownWindow, removeBrowserLocationListeners, removeBrowserClickListeners} = require("appSupport"); - if (window.document.documentElement.id == "CustomizeToolbarWindow" || isKnownWindow(window)) - { - // Remove style processing instruction - for (let child = window.document.firstChild; child; child = child.nextSibling) - if (child.nodeType == child.PROCESSING_INSTRUCTION_NODE && child.data.indexOf("adblockplus-node") >= 0) - child.parentNode.removeChild(child); - } - - if (!isKnownWindow(window)) - return; - - for (let id in this.overlay) - { - if (id == "all") - { - let list = this.overlay[id]; - for (let i = 0; i < list.length; i++) - { - let clone = window.document.getElementById(list[i].getAttribute("id")); - if (clone) - clone.parentNode.removeChild(clone); - } - } - else - { - let clone = window.document.getElementById(id); - if (clone) - clone.parentNode.removeChild(clone); - } - } - - window.removeEventListener("popupshowing", this.onPopupShowing, false); - window.removeEventListener("keypress", this.onKeyPress, false); - removeBrowserLocationListeners(window); - removeBrowserClickListeners(window); - }, - - /** - * The overlay information to be used when adding elements to the UI. - * @type Object - */ - overlay: null, - - /** - * Iterator for application windows that Adblock Plus should apply to. - * @type Iterator - */ - get applicationWindows() - { - let {isKnownWindow} = require("appSupport"); - - let enumerator = Services.wm.getZOrderDOMWindowEnumerator(null, true); - if (!enumerator.hasMoreElements()) - { - // On Linux the list returned will be empty, see bug 156333. Fall back to random order. - enumerator = Services.wm.getEnumerator(null); - } - while (enumerator.hasMoreElements()) - { - let window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow); - if (isKnownWindow(window)) - yield window; - } - }, - - /** - * Returns the top-most application window or null if none exists. - * @type Window - */ - get currentWindow() - { - for (let window of this.applicationWindows) - return window; - return null; - }, - - /** - * Opens a URL in the browser window. If browser window isn't passed as parameter, - * this function attempts to find a browser window. If an event is passed in - * it should be passed in to the browser if possible (will e.g. open a tab in - * background depending on modifiers keys). - */ - loadInBrowser: function(/**String*/ url, /**Window*/ currentWindow, /**Event*/ event) - { - if (!currentWindow) - currentWindow = this.currentWindow; - - let {addTab} = require("appSupport"); - if (currentWindow && addTab) - addTab(currentWindow, url, event); - else - { - let protocolService = Cc["@mozilla.org/uriloader/external-protocol-service;1"].getService(Ci.nsIExternalProtocolService); - protocolService.loadURI(Services.io.newURI(url, null, null), null); - } - }, - - /** - * Opens a pre-defined documentation link in the browser window. This will - * send the UI language to adblockplus.org so that the correct language - * version of the page can be selected. - */ - loadDocLink: function(/**String*/ linkID, /**Window*/ window) - { - let link = Utils.getDocLink(linkID); - this.loadInBrowser(link, window); - }, - - - /** - * Brings up the filter composer dialog to block an item. - */ - blockItem: function(/**Window*/ window, /**Node*/ node, /**RequestEntry*/ item) - { - if (!item) - return; - - window.openDialog("chrome://adblockplus/content/ui/composer.xul", "_blank", "chrome,centerscreen,resizable,dialog=no,dependent", [node], item); - }, - - /** - * Opens filter preferences dialog or focuses an already open dialog. - * @param {Filter} [filter] filter to be selected - */ - openFiltersDialog: function(filter) - { - let existing = Services.wm.getMostRecentWindow("abp:filters"); - if (existing) - { - try - { - existing.focus(); - } catch (e) {} - if (filter) - existing.SubscriptionActions.selectFilter(filter); - } - else - { - Services.ww.openWindow(null, "chrome://adblockplus/content/ui/filters.xul", "_blank", "chrome,centerscreen,resizable,dialog=no", {wrappedJSObject: filter}); - } - }, - - /** - * Opens report wizard for the current page. - */ - openReportDialog: function(/**Window*/ window) - { - let wnd = Services.wm.getMostRecentWindow("abp:sendReport"); - if (wnd) - wnd.focus(); - else - { - let uri = this.getCurrentLocation(window); - if (uri) - { - let {getBrowser} = require("appSupport"); - window.openDialog("chrome://adblockplus/content/ui/sendReport.xul", "_blank", "chrome,centerscreen,resizable=no", getBrowser(window).contentWindow, uri); - } - } - }, - - /** - * Opens our contribution page. - */ - openContributePage: function(/**Window*/ window) - { - this.loadDocLink("contribute", window); - }, - - /** - * Executed on first run, adds a filter subscription and notifies that user - * about that. - */ - addSubscription: function(/**Window*/ window, /**String*/ prevVersion) - { - // Add "acceptable ads" subscription for new users and user updating from old ABP versions. - // Don't add it for users of privacy subscriptions (use a hardcoded list for now). - let addAcceptable = (Services.vc.compare(prevVersion, "2.0") < 0); - let privacySubscriptions = { - "https://easylist-downloads.adblockplus.org/easyprivacy+easylist.txt": true, - "https://easylist-downloads.adblockplus.org/easyprivacy.txt": true, - "https://secure.fanboy.co.nz/fanboy-tracking.txt": true, - "https://fanboy-adblock-list.googlecode.com/hg/fanboy-adblocklist-stats.txt": true, - "https://bitbucket.org/fanboy/fanboyadblock/raw/tip/fanboy-adblocklist-stats.txt": true, - "https://hg01.codeplex.com/fanboyadblock/raw-file/tip/fanboy-adblocklist-stats.txt": true, - "https://adversity.googlecode.com/hg/Adversity-Tracking.txt": true - }; - if (FilterStorage.subscriptions.some((subscription) => subscription.url == Prefs.subscriptions_exceptionsurl || subscription.url in privacySubscriptions)) - addAcceptable = false; - - // Don't add subscription if the user has a subscription already - let addSubscription = true; - //if (FilterStorage.subscriptions.some((subscription) => subscription instanceof DownloadableSubscription && subscription.url != Prefs.subscriptions_exceptionsurl)) - addSubscription = false; - - // If this isn't the first run, only add subscription if the user has no custom filters - if (addSubscription && Services.vc.compare(prevVersion, "0.0") > 0) - { - if (FilterStorage.subscriptions.some((subscription) => subscription.url != Prefs.subscriptions_exceptionsurl && subscription.filters.length)) - addSubscription = false; - } - - // Add "acceptable ads" subscription - if (false) - { - let subscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl); - if (subscription) - { - subscription.title = "Allow non-intrusive advertising"; - FilterStorage.addSubscription(subscription); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - } - else - addAcceptable = false; - } - - /* Add "anti-adblock messages" subscription for new users and users updating from old ABP versions - if (Services.vc.compare(prevVersion, "2.5") < 0) - { - let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); - if (subscription && !(subscription.url in FilterStorage.knownSubscriptions)) - { - subscription.disabled = true; - FilterStorage.addSubscription(subscription); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - } - }*/ - - // Extra subsriptions - let subscription = Subscription.fromURL("http://gnuzilla.gnu.org/filters/blacklist.txt"); - subscription.disabled = false; - FilterStorage.addSubscription(subscription); - Synchronizer.execute(subscription); - - let subscription = Subscription.fromURL("http://gnuzilla.gnu.org/filters/third-party.txt"); - subscription.disabled = false; - FilterStorage.addSubscription(subscription); - Synchronizer.execute(subscription); - - let subscription = Subscription.fromURL("http://gnuzilla.gnu.org/filters/javascript.txt"); - subscription.disabled = true; - FilterStorage.addSubscription(subscription); - Synchronizer.execute(subscription); - - if (!addSubscription && !addAcceptable) - return; - - function notifyUser() - {return; - let {addTab} = require("appSupport"); - if (addTab) - { - addTab(window, "chrome://adblockplus/content/ui/firstRun.html"); - } - else - { - let dialogSource = '\ - <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>\ - <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="document.title=content.document.title" buttons="accept" width="500" height="600">\ - <iframe type="content-primary" flex="1" src="chrome://adblockplus/content/ui/firstRun.html"/>\ - </dialog>'; - Services.ww.openWindow(window, - "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialogSource), - "_blank", "chrome,centerscreen,resizable,dialog=no", null); - } - } - - if (addSubscription) - { - // Load subscriptions data - let request = new XMLHttpRequest(); - request.mozBackgroundRequest = true; - request.open("GET", "chrome://adblockplus/content/ui/subscriptions.xml"); - request.addEventListener("load", function() - { - if (onShutdown.done) - return; - - let node = Utils.chooseFilterSubscription(request.responseXML.getElementsByTagName("subscription")); - let subscription = (node ? Subscription.fromURL(node.getAttribute("url")) : null); - if (subscription) - { - FilterStorage.addSubscription(subscription); - subscription.disabled = false; - subscription.title = node.getAttribute("title"); - subscription.homepage = node.getAttribute("homepage"); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - - notifyUser(); - } - }, false); - request.send(); - } - else - notifyUser(); - }, - - /** - * Handles clicks inside the browser's content area, will intercept clicks on - * abp: links. This can be called either with an event object or with the link - * target (if it is the former then link target will be retrieved from event - * target). - */ - onBrowserClick: function (/**Window*/ window, /**Event*/ event, /**String*/ linkTarget) - { - if (event) - { - // Ignore right-clicks - if (event.button == 2) - return; - - // Search the link associated with the click - let link = event.target; - while (link && !(link instanceof Ci.nsIDOMHTMLAnchorElement)) - link = link.parentNode; - - if (!link || link.protocol != "abp:") - return; - - // This is our link - make sure the browser doesn't handle it - event.preventDefault(); - event.stopPropagation(); - - linkTarget = link.href; - } - - let match = /^abp:\/*subscribe\/*\?(.*)/i.exec(linkTarget); - if (!match) - return; - - // Decode URL parameters - let title = null; - let url = null; - let mainSubscriptionTitle = null; - let mainSubscriptionURL = null; - for (let param of match[1].split('&')) - { - let parts = param.split("=", 2); - if (parts.length != 2 || !/\S/.test(parts[1])) - continue; - switch (parts[0]) - { - case "title": - title = decodeURIComponent(parts[1]); - break; - case "location": - url = decodeURIComponent(parts[1]); - break; - case "requiresTitle": - mainSubscriptionTitle = decodeURIComponent(parts[1]); - break; - case "requiresLocation": - mainSubscriptionURL = decodeURIComponent(parts[1]); - break; - } - } - if (!url) - return; - - // Default title to the URL - if (!title) - title = url; - - // Main subscription needs both title and URL - if (mainSubscriptionTitle && !mainSubscriptionURL) - mainSubscriptionTitle = null; - if (mainSubscriptionURL && !mainSubscriptionTitle) - mainSubscriptionURL = null; - - // Trim spaces in title and URL - title = title.replace(/^\s+/, "").replace(/\s+$/, ""); - url = url.replace(/^\s+/, "").replace(/\s+$/, ""); - if (mainSubscriptionURL) - { - mainSubscriptionTitle = mainSubscriptionTitle.replace(/^\s+/, "").replace(/\s+$/, ""); - mainSubscriptionURL = mainSubscriptionURL.replace(/^\s+/, "").replace(/\s+$/, ""); - } - - // Verify that the URL is valid - url = Utils.makeURI(url); - if (!url || (url.scheme != "http" && url.scheme != "https" && url.scheme != "ftp")) - return; - url = url.spec; - - if (mainSubscriptionURL) - { - mainSubscriptionURL = Utils.makeURI(mainSubscriptionURL); - if (!mainSubscriptionURL || (mainSubscriptionURL.scheme != "http" && mainSubscriptionURL.scheme != "https" && mainSubscriptionURL.scheme != "ftp")) - mainSubscriptionURL = mainSubscriptionTitle = null; - else - mainSubscriptionURL = mainSubscriptionURL.spec; - } - - this.openSubscriptionDialog(window, url, title, mainSubscriptionURL, mainSubscriptionTitle); - }, - - /** - * Opens a dialog letting the user confirm/adjust a filter subscription to - * be added. - */ - openSubscriptionDialog: function(/**Window*/ window, /**String*/ url, /**String*/ title, /**String*/ mainURL, /**String*/ mainTitle) - { - let subscription = {url: url, title: title, disabled: false, external: false, - mainSubscriptionTitle: mainTitle, mainSubscriptionURL: mainURL}; - window.openDialog("chrome://adblockplus/content/ui/subscriptionSelection.xul", "_blank", - "chrome,centerscreen,resizable,dialog=no", subscription, null); - }, - - /** - * Retrieves the current location of the browser. - */ - getCurrentLocation: function(/**Window*/ window) /**nsIURI*/ - { - let {getCurrentLocation} = require("appSupport"); - let result = getCurrentLocation(window); - return (result ? Utils.unwrapURL(result) : null); - }, - - /** - * Looks up an element with given ID in the window. If a list of IDs is given - * will try all of them until an element exists. - */ - findElement: function(/**Window*/ window, /**String|String[]*/ id) /**Element*/ - { - if (id instanceof Array) - { - for (let candidate of id) - { - let result = window.document.getElementById(candidate); - if (result) - return result; - } - return null; - } - else - return window.document.getElementById(id); - }, - - /** - * Resolves an insertion point as specified in appSupport module. Returns - * two elements: the parent element and the element to insert before. - */ - resolveInsertionPoint: function(/**Window*/ window, /**Object*/ insertionPoint) /**Element[]*/ - { - let parent = null; - let before = null; - if (insertionPoint) - { - if ("parent" in insertionPoint) - parent = this.findElement(window, insertionPoint.parent); - - if (parent && "before" in insertionPoint) - before = this.findElement(window, insertionPoint.before); - - if (parent && !before && "after" in insertionPoint) - { - let after = this.findElement(window, insertionPoint.after); - if (after) - before = after.nextElementSibling; - } - - if (before && before.parentNode != parent) - before = null; - } - - return [parent, before]; - }, - - /** - * Toggles visibility state of the toolbar icon. - */ - toggleToolbarIcon: function() - { - if (!CustomizableUI) - return; - if (this.isToolbarIconVisible()) - CustomizableUI.removeWidgetFromArea("abp-toolbarbutton"); - else - { - let {defaultToolbarPosition} = require("appSupport"); - CustomizableUI.addWidgetToArea("abp-toolbarbutton", defaultToolbarPosition.parent); - } - }, - - /** - * Updates Adblock Plus icon state for all windows. - */ - updateState: function() - { - for (let window in this.applicationWindows) - { - this.updateIconState(window, window.document.getElementById("abp-status")); - this.updateIconState(window, window.document.getElementById("abp-toolbarbutton")); - } - }, - - /** - * Updates Adblock Plus icon state for a single application window. - */ - updateIconState: function(/**Window*/ window, /**Element*/ icon) - { - if (!icon) - return; - - let state = (Prefs.enabled ? "active" : "disabled"); - if (state == "active") - { - let location = this.getCurrentLocation(window); - if (location && Policy.isWhitelisted(location.spec)) - state = "whitelisted"; - } - - let popupId = "abp-status-popup"; - if (icon.localName == "statusbarpanel") - { - if (Prefs.defaultstatusbaraction == 0) - { - icon.setAttribute("popup", popupId); - icon.removeAttribute("context"); - } - else - { - icon.removeAttribute("popup"); - icon.setAttribute("context", popupId); - } - } - else - { - if (Prefs.defaulttoolbaraction == 0) - { - icon.setAttribute("type", "menu"); - icon.removeAttribute("context"); - } - else - { - icon.setAttribute("type", "menu-button"); - icon.setAttribute("context", popupId); - } - } - - icon.setAttribute("abpstate", state); - }, - - /** - * Shows or hides status bar icons in all windows, according to pref. - */ - updateStatusbarIcon: function(/**Window*/ window) - { - if (!("abp-status" in this.overlay)) - return; - - let {statusbarPosition} = require("appSupport"); - if (!statusbarPosition) - return; - - let icon = window.document.getElementById("abp-status"); - if (Prefs.showinstatusbar && !icon) - { - let [parent, before] = this.resolveInsertionPoint(window, statusbarPosition); - if (!parent) - return; - - parent.insertBefore(this.overlay["abp-status"].cloneNode(true), before); - - icon = window.document.getElementById("abp-status"); - this.updateIconState(window, icon); - icon.addEventListener("click", this.onIconClick, false); - } - else if (!Prefs.showinstatusbar && icon) - icon.parentNode.removeChild(icon); - }, - - /** - * Toggles the value of a boolean preference. - */ - togglePref: function(/**String*/ pref) - { - Prefs[pref] = !Prefs[pref]; - }, - - /** - * If the given filter is already in user's list, removes it from the list. Otherwise adds it. - */ - toggleFilter: function(/**Filter*/ filter) - { - if (filter.subscriptions.length) - { - if (filter.disabled || filter.subscriptions.some((subscription) => !(subscription instanceof SpecialSubscription))) - filter.disabled = !filter.disabled; - else - FilterStorage.removeFilter(filter); - } - else - FilterStorage.addFilter(filter); - }, - - - /** - * Toggles "Count filter hits" option. - */ - toggleSaveStats: function(window) - { - if (Prefs.savestats) - { - if (!Utils.confirm(window, Utils.getString("clearStats_warning"))) - return; - - FilterStorage.resetHitCounts(); - Prefs.savestats = false; - } - else - Prefs.savestats = true; - }, - - /** - * Sets the current filter subscription in a single-subscription scenario, - * all other subscriptions will be removed. - */ - setSubscription: function(url, title) - { - let subscription = Subscription.fromURL(url); - let currentSubscriptions = FilterStorage.subscriptions.filter( - ((subscription) => subscription instanceof DownloadableSubscription && subscription.url != Prefs.subscriptions_exceptionsurl) - ); - if (!subscription || currentSubscriptions.indexOf(subscription) >= 0) - return; - - for (let i = 0; i < currentSubscriptions.length; i++) - FilterStorage.removeSubscription(currentSubscriptions[i]); - - subscription.title = title; - FilterStorage.addSubscription(subscription); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - }, - - /** - * Adds or removes "non-intrisive ads" filter list. - * @return {Boolean} true if the filter list has been added - **/ - toggleAcceptableAds: function() - { - let subscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl); - if (!subscription) - return false; - - subscription.disabled = false; - subscription.title = "Allow non-intrusive advertising"; - if (subscription.url in FilterStorage.knownSubscriptions) - FilterStorage.removeSubscription(subscription); - else - { - FilterStorage.addSubscription(subscription); - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) - Synchronizer.execute(subscription); - } - - return (subscription.url in FilterStorage.knownSubscriptions); - }, - - /** - * Toggles the pref for the Adblock Plus sync engine. - * @return {Boolean} new state of the sync engine - */ - toggleSync: function() - { - let {Sync} = require("sync"); - let syncEngine = Sync.getEngine(); - if (syncEngine) - { - syncEngine.enabled = !syncEngine.enabled; - return syncEngine.enabled; - } - else - return false; - }, - - /** - * Tests whether blockable items list is currently open. - */ - isBottombarOpen: function(/**Window*/ window) /**Boolean*/ - { - if (detachedBottombar && !detachedBottombar.closed) - return true; - - return !!window.document.getElementById("abp-bottombar"); - }, - - /** - * Called when some pop-up in the application window shows up, initializes - * pop-ups related to Adblock Plus. - */ - onPopupShowing: function(/**Event*/ event) - { - if (event.defaultPrevented) - return; - - let popup = event.originalTarget; - - let {contentContextMenu} = require("appSupport"); - if ((typeof contentContextMenu == "string" && popup.id == contentContextMenu) || - (contentContextMenu instanceof Array && contentContextMenu.indexOf(popup.id) >= 0)) - { - this.fillContentContextMenu(popup); - } - else if (popup.id == "abp-tooltip") - this.fillIconTooltip(event, popup.ownerDocument.defaultView); - else - { - let match = /^(abp-(?:toolbar|status|menuitem)-)popup$/.exec(popup.id); - if (match) - this.fillIconMenu(event, popup.ownerDocument.defaultView, match[1]); - } - }, - - /** - * Handles click on toolbar and status bar icons. - */ - onIconClick: function(/**Event*/ event) - { - if (event.eventPhase != event.AT_TARGET) - return; - - let isToolbar = (event.target.localName != "statusbarpanel"); - let action = 0; - if ((isToolbar && event.type == "command") || (!isToolbar && event.button == 0)) - action = (isToolbar ? Prefs.defaulttoolbaraction : Prefs.defaultstatusbaraction); - else if (event.button == 1) - action = 3; - - let window = event.target.ownerDocument.defaultView; - if (action == 1) - this.toggleBottombar(window); - else if (action == 2) - this.openFiltersDialog(); - else if (action == 3) - { - // If there is a whitelisting rule for current page - remove it (reenable). - // Otherwise flip "enabled" pref. - if (!this.removeWhitelist(window)) - this.togglePref("enabled"); - } - }, - - /** - * Removes/disables the exception rule applying for the current page. - */ - removeWhitelist: function(/**Window*/ window) - { - let location = this.getCurrentLocation(window); - let filter = null; - if (location) - filter = Policy.isWhitelisted(location.spec); - if (filter && filter.subscriptions.length && !filter.disabled) - { - UI.toggleFilter(filter); - return true; - } - return false; - }, - - /** - * Updates state of the icon tooltip. - */ - fillIconTooltip: function(/**Event*/ event, /**Window*/ window) - { - let E = (id) => window.document.getElementById(id); - - let node = window.document.tooltipNode; - if (!node || !node.hasAttribute("tooltip")) - { - event.preventDefault(); - return; - } - - // Prevent tooltip from overlapping menu - for (let id of ["abp-toolbar-popup", "abp-status-popup"]) - { - let element = E(id); - if (element && element.state == "open") - { - event.preventDefault(); - return; - } - } - - let type = (node.id == "abp-toolbarbutton" ? "toolbar" : "statusbar"); - let action = parseInt(Prefs["default" + type + "action"]); - if (isNaN(action)) - action = -1; - - let actionDescr = E("abp-tooltip-action"); - actionDescr.hidden = (action < 0 || action > 3); - if (!actionDescr.hidden) - actionDescr.setAttribute("value", Utils.getString("action" + action + "_tooltip")); - - let statusDescr = E("abp-tooltip-status"); - let state = node.getAttribute("abpstate"); - let statusStr = Utils.getString(state + "_tooltip"); - if (state == "active") - { - let [activeSubscriptions, activeFilters] = FilterStorage.subscriptions.reduce(function([subscriptions, filters], current) - { - if (current instanceof SpecialSubscription) - return [subscriptions, filters + current.filters.filter((filter) => !filter.disabled).length]; - else if (!current.disabled && !(Prefs.subscriptions_exceptionscheckbox && current.url == Prefs.subscriptions_exceptionsurl)) - return [subscriptions + 1, filters]; - else - return [subscriptions, filters] - }, [0, 0]); - - statusStr = statusStr.replace(/\?1\?/, activeSubscriptions).replace(/\?2\?/, activeFilters); - } - statusDescr.setAttribute("value", statusStr); - - let activeFilters = []; - E("abp-tooltip-blocked-label").hidden = (state != "active"); - E("abp-tooltip-blocked").hidden = (state != "active"); - if (state == "active") - { - let {getBrowser} = require("appSupport"); - let stats = RequestNotifier.getWindowStatistics(getBrowser(window).contentWindow); - - let blockedStr = Utils.getString("blocked_count_tooltip"); - blockedStr = blockedStr.replace(/\?1\?/, stats ? stats.blocked : 0).replace(/\?2\?/, stats ? stats.items : 0); - - if (stats && stats.whitelisted + stats.hidden) - { - blockedStr += " " + Utils.getString("blocked_count_addendum"); - blockedStr = blockedStr.replace(/\?1\?/, stats.whitelisted).replace(/\?2\?/, stats.hidden); - } - - E("abp-tooltip-blocked").setAttribute("value", blockedStr); - - if (stats) - { - let filterSort = function(a, b) - { - return stats.filters[b] - stats.filters[a]; - }; - for (let filter in stats.filters) - activeFilters.push(filter); - activeFilters = activeFilters.sort(filterSort); - } - - if (activeFilters.length > 0) - { - let filtersContainer = E("abp-tooltip-filters"); - while (filtersContainer.firstChild) - filtersContainer.removeChild(filtersContainer.firstChild); - - for (let i = 0; i < activeFilters.length && i < 3; i++) - { - let descr = filtersContainer.ownerDocument.createElement("description"); - descr.setAttribute("value", activeFilters[i] + " (" + stats.filters[activeFilters[i]] + ")"); - filtersContainer.appendChild(descr); - } - } - } - - E("abp-tooltip-filters-label").hidden = (activeFilters.length == 0); - E("abp-tooltip-filters").hidden = (activeFilters.length == 0); - E("abp-tooltip-more-filters").hidden = (activeFilters.length <= 3); - }, - - /** - * Updates state of the icon context menu. - */ - fillIconMenu: function(/**Event*/ event, /**Window*/ window, /**String*/ prefix) - { - function hideElement(id, hide) - { - let element = window.document.getElementById(id); - if (element) - element.hidden = hide; - } - function setChecked(id, checked) - { - let element = window.document.getElementById(id); - if (element) - element.setAttribute("checked", checked); - } - function setDisabled(id, disabled) - { - let element = window.document.getElementById(id); - if (element) - element.setAttribute("disabled", disabled); - } - function setDefault(id, isDefault) - { - let element = window.document.getElementById(id); - if (element) - element.setAttribute("default", isDefault); - } - function generateLabel(id, param) - { - let element = window.document.getElementById(id); - if (element) - element.setAttribute("label", element.getAttribute("labeltempl").replace(/\?1\?/, param)); - } - - let bottombarOpen = this.isBottombarOpen(window); - hideElement(prefix + "openbottombar", bottombarOpen); - hideElement(prefix + "closebottombar", !bottombarOpen); - - hideElement(prefix + "whitelistsite", true); - hideElement(prefix + "whitelistpage", true); - - let location = this.getCurrentLocation(window); - if (location && Policy.isBlockableScheme(location)) - { - let host = null; - try - { - host = location.host.replace(/^www\./, ""); - } catch (e) {} - - if (host) - { - let ending = "|"; - location = location.clone(); - if (location instanceof Ci.nsIURL) - location.ref = ""; - if (location instanceof Ci.nsIURL && location.query) - { - location.query = ""; - ending = "?"; - } - - siteWhitelist = Filter.fromText("@@||" + host + "^$document"); - setChecked(prefix + "whitelistsite", siteWhitelist.subscriptions.length && !siteWhitelist.disabled); - generateLabel(prefix + "whitelistsite", host); - hideElement(prefix + "whitelistsite", false); - - pageWhitelist = Filter.fromText("@@|" + location.spec + ending + "$document"); - setChecked(prefix + "whitelistpage", pageWhitelist.subscriptions.length && !pageWhitelist.disabled); - hideElement(prefix + "whitelistpage", false); - } - else - { - siteWhitelist = Filter.fromText("@@|" + location.spec + "|"); - setChecked(prefix + "whitelistsite", siteWhitelist.subscriptions.length && !siteWhitelist.disabled); - generateLabel(prefix + "whitelistsite", location.spec.replace(/^mailto:/, "")); - hideElement(prefix + "whitelistsite", false); - } - } - - setDisabled("abp-command-sendReport", !location || !Policy.isBlockableScheme(location) || location.scheme == "mailto"); - - setChecked(prefix + "disabled", !Prefs.enabled); - setChecked(prefix + "frameobjects", Prefs.frameobjects); - setChecked(prefix + "slowcollapse", !Prefs.fastcollapse); - setChecked(prefix + "savestats", Prefs.savestats); - - let {defaultToolbarPosition, statusbarPosition} = require("appSupport"); - let hasToolbar = defaultToolbarPosition; - let hasStatusBar = statusbarPosition; - hideElement(prefix + "showintoolbar", !hasToolbar || prefix == "abp-toolbar-"); - hideElement(prefix + "showinstatusbar", !hasStatusBar); - hideElement(prefix + "iconSettingsSeparator", (prefix == "abp-toolbar-" || !hasToolbar) && !hasStatusBar); - - setChecked(prefix + "showintoolbar", this.isToolbarIconVisible()); - setChecked(prefix + "showinstatusbar", Prefs.showinstatusbar); - - let {Sync} = require("sync"); - let syncEngine = Sync.getEngine(); - hideElement(prefix + "sync", !syncEngine); - setChecked(prefix + "sync", syncEngine && syncEngine.enabled); - - let defAction = (!window.document.popupNode || window.document.popupNode.id == "abp-toolbarbutton" ? - Prefs.defaulttoolbaraction : - Prefs.defaultstatusbaraction); - setDefault(prefix + "openbottombar", defAction == 1); - setDefault(prefix + "closebottombar", defAction == 1); - setDefault(prefix + "filters", defAction == 2); - setDefault(prefix + "disabled", defAction == 3); - - let popup = window.document.getElementById(prefix + "popup"); - let items = (popup ? popup.querySelectorAll('menuitem[key]') : []); - for (let i = 0; i < items.length; i++) - { - let item = items[i]; - let match = /^abp-key-/.exec(item.getAttribute("key")); - if (!match) - continue; - - let name = match.input.substr(match.index + match[0].length); - if (!this.hotkeys) - this.configureKeys(window); - if (name in this.hotkeys) - { - let text = KeySelector.getTextForKey(this.hotkeys[name]); - if (text) - item.setAttribute("acceltext", text); - else - item.removeAttribute("acceltext"); - } - } - - hideElement(prefix + "contributebutton", Prefs.hideContributeButton); - }, - - /** - * Adds Adblock Plus menu items to the content area context menu when it shows - * up. - */ - fillContentContextMenu: function(/**Element*/ popup) - { - let target = popup.triggerNode; - if (target instanceof Ci.nsIDOMHTMLMapElement || target instanceof Ci.nsIDOMHTMLAreaElement) - { - // HTML image maps will usually receive events when the mouse pointer is - // over a different element, get the real event target. - let rect = target.getClientRects()[0]; - target = target.ownerDocument.elementFromPoint(Math.max(rect.left, 0), Math.max(rect.top, 0)); - } - - if (!target) - return; - - let window = popup.ownerDocument.defaultView; - let menuItems = []; - let addMenuItem = function([node, nodeData]) - { - let type = nodeData.typeDescr.toLowerCase(); - if (type == "background") - { - type = "image"; - node = null; - } - - let label = this.overlay.attributes[type + "contextlabel"]; - if (!label) - return; - - let item = popup.ownerDocument.createElement("menuitem"); - item.setAttribute("label", label); - item.setAttribute("class", "abp-contextmenuitem"); - item.addEventListener("command", this.blockItem.bind(this, window, node, nodeData), false); - popup.appendChild(item); - - menuItems.push(item); - }.bind(this); - - // Look up data that we have for the node - let data = RequestNotifier.getDataForNode(target); - let hadImage = false; - if (data && !data[1].filter) - { - addMenuItem(data); - hadImage = (data[1].typeDescr == "IMAGE"); - } - - // Look for frame data - let wnd = Utils.getWindow(target); - if (wnd.frameElement) - { - let data = RequestNotifier.getDataForNode(wnd.frameElement, true); - if (data && !data[1].filter) - addMenuItem(data); - } - - // Look for a background image - if (!hadImage) - { - let extractImageURL = function(computedStyle, property) - { - let value = computedStyle.getPropertyCSSValue(property); - // CSSValueList - if ("length" in value && value.length >= 1) - value = value[0]; - // CSSValuePrimitiveType - if ("primitiveType" in value && value.primitiveType == value.CSS_URI) - return Utils.unwrapURL(value.getStringValue()).spec; - - return null; - }; - - let node = target; - while (node) - { - if (node.nodeType == Ci.nsIDOMNode.ELEMENT_NODE) - { - let style = wnd.getComputedStyle(node, ""); - let bgImage = extractImageURL(style, "background-image") || extractImageURL(style, "list-style-image"); - if (bgImage) - { - let data = RequestNotifier.getDataForNode(wnd.document, true, Policy.type.IMAGE, bgImage); - if (data && !data[1].filter) - { - addMenuItem(data); - break; - } - } - } - - node = node.parentNode; - } - } - - // Add "Remove exception" menu item if necessary - let location = this.getCurrentLocation(window); - let filter = (location ? Policy.isWhitelisted(location.spec) : null); - if (filter && filter.subscriptions.length && !filter.disabled) - { - let label = this.overlay.attributes.whitelistcontextlabel; - if (!label) - return; - - let item = popup.ownerDocument.createElement("menuitem"); - item.setAttribute("label", label); - item.setAttribute("class", "abp-contextmenuitem"); - item.addEventListener("command", this.toggleFilter.bind(this, filter), false); - popup.appendChild(item); - - menuItems.push(item); - } - - // Make sure to clean up everything once the context menu is closed - if (menuItems.length) - { - let cleanUp = function(event) - { - if (event.eventPhase != event.AT_TARGET) - return; - - popup.removeEventListener("popuphidden", cleanUp, false); - for (let i = 0; i < menuItems.length; i++) - if (menuItems[i].parentNode) - menuItems[i].parentNode.removeChild(menuItems[i]); - }.bind(this); - popup.addEventListener("popuphidden", cleanUp, false); - } - }, - - /** - * Called when the user presses a key in the application window, reacts to our - * shortcut keys. - */ - onKeyPress: function(/**Event*/ event) - { - if (!this.hotkeys) - this.configureKeys(event.currentTarget); - - for (let key in this.hotkeys) - { - if (KeySelector.matchesKey(event, this.hotkeys[key])) - { - event.preventDefault(); - let command = event.currentTarget.document.getElementById("abp-command-" + key); - if (command) - command.doCommand(); - } - } - }, - - /** - * Checks whether the toolbar icon is currently displayed. - */ - isToolbarIconVisible: function() /**Boolean*/ - { - if (!CustomizableUI) - return false; - let placement = CustomizableUI.getPlacementOfWidget("abp-toolbarbutton"); - return !!placement; - }, - - /** - * Stores the selected hotkeys, initialized when the user presses a key. - */ - hotkeys: null, - - /** - * Chooses shortcut keys that are available in the window according to - * preferences. - */ - configureKeys: function(/**Window*/ window) - { - let selector = new KeySelector(window); - - this.hotkeys = {}; - for (let name in Prefs) - { - let match = /_key$/.exec(name); - if (match && typeof Prefs[name] == "string") - { - let keyName = match.input.substr(0, match.index); - this.hotkeys[keyName] = selector.selectKey(Prefs[name]); - } - } - }, - - /** - * Toggles open/closed state of the blockable items list. - */ - toggleBottombar: function(/**Window*/ window) - { - if (detachedBottombar && !detachedBottombar.closed) - { - detachedBottombar.close(); - detachedBottombar = null; - } - else - { - let {addBottomBar, removeBottomBar, getBrowser} = require("appSupport"); - let mustDetach = !addBottomBar || !removeBottomBar || !("abp-bottombar-container" in this.overlay); - let detach = mustDetach || Prefs.detachsidebar; - if (!detach && window.document.getElementById("abp-bottombar")) - { - removeBottomBar(window); - - let browser = (getBrowser ? getBrowser(window) : null); - if (browser) - browser.contentWindow.focus(); - } - else if (!detach) - { - addBottomBar(window, this.overlay["abp-bottombar-container"]); - let element = window.document.getElementById("abp-bottombar"); - if (element) - { - element.setAttribute("width", Prefs.blockableItemsSize.width); - element.setAttribute("height", Prefs.blockableItemsSize.height); - - let splitter = window.document.getElementById("abp-bottombar-splitter"); - if (splitter) - { - splitter.addEventListener("command", function() - { - Prefs.blockableItemsSize = {width: element.width, height: element.height}; - }, false); - } - } - } - else - detachedBottombar = window.openDialog("chrome://adblockplus/content/ui/sidebarDetached.xul", "_blank", "chrome,resizable,dependent,dialog=no", mustDetach); - } - }, - - /** - * Hide contribute button and persist this choice. - */ - hideContributeButton: function(/**Window*/ window) - { - Prefs.hideContributeButton = true; - - for (let id of ["abp-status-contributebutton", "abp-toolbar-contributebutton", "abp-menuitem-contributebutton"]) - { - let button = window.document.getElementById(id); - if (button) - button.hidden = true; - } - }, - - showNextNotification: function(url) - { - let window = this.currentWindow; - if (!window) - return; - - let button = window.document.getElementById("abp-toolbarbutton") - || window.document.getElementById("abp-status"); - if (!button) - return; - - let notification = Notification.getNextToShow(url); - if (!notification) - return; - - this._showNotification(window, button, notification); - }, - - _showNotification: function(window, button, notification) - { - let panel = window.document.getElementById("abp-notification"); - if (panel.state !== "closed") - return; - - function insertMessage(element, text, links) - { - let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(text); - if (!match) - { - element.appendChild(window.document.createTextNode(text)); - return; - } - - let [_, before, tagName, value, after] = match; - - insertMessage(element, before, links); - - let newElement = window.document.createElementNS("http://www.w3.org/1999/xhtml", tagName); - if (tagName === "a" && links && links.length) - newElement.setAttribute("href", links.shift()); - insertMessage(newElement, value, links); - element.appendChild(newElement); - - insertMessage(element, after, links); - } - - let texts = Notification.getLocalizedTexts(notification); - let titleElement = window.document.getElementById("abp-notification-title"); - titleElement.textContent = texts.title; - let messageElement = window.document.getElementById("abp-notification-message"); - messageElement.innerHTML = ""; - let docLinks = []; - for (let link of notification.links) - docLinks.push(Utils.getDocLink(link)); - insertMessage(messageElement, texts.message, docLinks); - - messageElement.addEventListener("click", function(event) - { - let link = event.target; - while (link && link !== messageElement && link.localName !== "a") - link = link.parentNode; - if (!link || link.localName !== "a") - return; - event.preventDefault(); - event.stopPropagation(); - this.loadInBrowser(link.href, window); - }.bind(this)); - - if (notification.type === "question") - { - function buttonHandler(approved, event) - { - event.preventDefault(); - event.stopPropagation(); - panel.hidePopup(); - Notification.triggerQuestionListeners(notification.id, approved) - Notification.markAsShown(notification.id); - } - window.document.getElementById("abp-notification-yes").onclick = buttonHandler.bind(null, true); - window.document.getElementById("abp-notification-no").onclick = buttonHandler.bind(null, false); - } - - panel.setAttribute("class", "abp-" + notification.type); - panel.setAttribute("noautohide", notification.type === "question"); - panel.openPopup(button, "bottomcenter topcenter", 0, 0, false, false, null); - } -}; -UI.onPopupShowing = UI.onPopupShowing.bind(UI); -UI.onKeyPress = UI.onKeyPress.bind(UI); -UI.onIconClick = UI.onIconClick.bind(UI); -UI.init(); - -/** - * List of event handers to be registered for each window. For each event - * handler the element ID, event and the actual event handler are listed. - * @type Array - */ -let eventHandlers = [ - ["abp-command-sendReport", "command", UI.openReportDialog.bind(UI)], - ["abp-command-filters", "command", UI.openFiltersDialog.bind(UI)], - ["abp-command-sidebar", "command", UI.toggleBottombar.bind(UI)], - ["abp-command-togglesitewhitelist", "command", function() { UI.toggleFilter(siteWhitelist); }], - ["abp-command-togglepagewhitelist", "command", function() { UI.toggleFilter(pageWhitelist); }], - ["abp-command-toggleobjtabs", "command", UI.togglePref.bind(UI, "frameobjects")], - ["abp-command-togglecollapse", "command", UI.togglePref.bind(UI, "fastcollapse")], - ["abp-command-togglesavestats", "command", UI.toggleSaveStats.bind(UI)], - ["abp-command-togglesync", "command", UI.toggleSync.bind(UI)], - ["abp-command-toggleshowintoolbar", "command", UI.toggleToolbarIcon.bind(UI)], - ["abp-command-toggleshowinstatusbar", "command", UI.togglePref.bind(UI, "showinstatusbar")], - ["abp-command-enable", "command", UI.togglePref.bind(UI, "enabled")], - ["abp-command-contribute", "command", UI.openContributePage.bind(UI)], - ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)] -]; - -onShutdown.add(function() -{ - for (let window in UI.applicationWindows) - if (UI.isBottombarOpen(window)) - UI.toggleBottombar(window); -}); diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/utils.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/utils.js deleted file mode 100644 index 8fbdf3e..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/utils.js +++ /dev/null @@ -1,787 +0,0 @@ -/* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * @fileOverview Module containing a bunch of utility functions. - */ - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); -let sidebarParams = null; - -/** - * Provides a bunch of utility functions. - * @class - */ -let Utils = exports.Utils = -{ - /** - * Returns the add-on ID used by Adblock Plus - */ - get addonID() - { - let {addonID} = require("info"); - return addonID; - }, - - /** - * Returns the installed Adblock Plus version - */ - get addonVersion() - { - let {addonVersion} = require("info"); - return addonVersion; - }, - - /** - * Returns whether we are running in Fennec, for Fennec-specific hacks - * @type Boolean - */ - get isFennec() - { - let {application} = require("info"); - let result = (application == "fennec" || application == "fennec2"); - Utils.__defineGetter__("isFennec", () => result); - return result; - }, - - /** - * Returns the user interface locale selected for adblockplus chrome package. - */ - get appLocale() - { - let locale = "en-US"; - try - { - locale = Utils.chromeRegistry.getSelectedLocale("adblockplus"); - } - catch (e) - { - Cu.reportError(e); - } - Utils.__defineGetter__("appLocale", () => locale); - return Utils.appLocale; - }, - - /** - * Returns version of the Gecko platform - */ - get platformVersion() - { - let platformVersion = Services.appinfo.platformVersion; - Utils.__defineGetter__("platformVersion", () => platformVersion); - return Utils.platformVersion; - }, - - /** - * Retrieves a string from global.properties string bundle, will throw if string isn't found. - * - * @param {String} name string name - * @return {String} - */ - getString: function(name) - { - // Randomize URI to work around bug 719376 - let stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/global.properties?" + Math.random()); - Utils.getString = function(name) - { - return stringBundle.GetStringFromName(name); - } - return Utils.getString(name); - }, - - /** - * Shows an alert message like window.alert() but with a custom title. - * - * @param {Window} parentWindow parent window of the dialog (can be null) - * @param {String} message message to be displayed - * @param {String} [title] dialog title, default title will be used if omitted - */ - alert: function(parentWindow, message, title) - { - if (!title) - title = Utils.getString("default_dialog_title"); - Utils.promptService.alert(parentWindow, title, message); - }, - - /** - * Asks the user for a confirmation like window.confirm() but with a custom title. - * - * @param {Window} parentWindow parent window of the dialog (can be null) - * @param {String} message message to be displayed - * @param {String} [title] dialog title, default title will be used if omitted - * @return {Bool} - */ - confirm: function(parentWindow, message, title) - { - if (!title) - title = Utils.getString("default_dialog_title"); - return Utils.promptService.confirm(parentWindow, title, message); - }, - - /** - * Retrieves the window for a document node. - * @return {Window} will be null if the node isn't associated with a window - */ - getWindow: function(/**Node*/ node) - { - if ("ownerDocument" in node && node.ownerDocument) - node = node.ownerDocument; - - if ("defaultView" in node) - return node.defaultView; - - return null; - }, - - /** - * Retrieves the top-level chrome window for a content window. - */ - getChromeWindow: function(/**Window*/ window) /**Window*/ - { - return window.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindow); - }, - - /** - * If the window doesn't have its own security context (e.g. about:blank or - * data: URL) walks up the parent chain until a window is found that has a - * security context. - */ - getOriginWindow: function(/**Window*/ wnd) /**Window*/ - { - while (wnd != wnd.parent) - { - let uri = Utils.makeURI(wnd.location.href); - if (uri.spec != "about:blank" && uri.spec != "moz-safe-about:blank" && - !Utils.netUtils.URIChainHasFlags(uri, Ci.nsIProtocolHandler.URI_INHERITS_SECURITY_CONTEXT)) - { - break; - } - wnd = wnd.parent; - } - return wnd; - }, - - /** - * If a protocol using nested URIs like jar: is used - retrieves innermost - * nested URI. - */ - unwrapURL: function(/**nsIURI or String*/ url) /**nsIURI*/ - { - if (!(url instanceof Ci.nsIURI)) - url = Utils.makeURI(url); - - if (url instanceof Ci.nsINestedURI) - return url.innermostURI; - else - return url; - }, - - /** - * Translates a string URI into its nsIURI representation, will return null for - * invalid URIs. - */ - makeURI: function(/**String*/ url) /**nsIURI*/ - { - try - { - return Utils.ioService.newURI(url, null, null); - } - catch (e) { - return null; - } - }, - - /** - * Posts an action to the event queue of the current thread to run it - * asynchronously. Any additional parameters to this function are passed - * as parameters to the callback. - */ - runAsync: function(/**Function*/ callback, /**Object*/ thisPtr) - { - let params = Array.prototype.slice.call(arguments, 2); - let runnable = { - run: function() - { - callback.apply(thisPtr, params); - } - }; - Services.tm.currentThread.dispatch(runnable, Ci.nsIEventTarget.DISPATCH_NORMAL); - }, - - /** - * Gets the DOM window associated with a particular request (if any). - */ - getRequestWindow: function(/**nsIChannel*/ channel) /**nsIDOMWindow*/ - { - try - { - if (channel.notificationCallbacks) - return channel.notificationCallbacks.getInterface(Ci.nsILoadContext).associatedWindow; - } catch(e) {} - - try - { - if (channel.loadGroup && channel.loadGroup.notificationCallbacks) - return channel.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext).associatedWindow; - } catch(e) {} - - return null; - }, - - /** - * Generates filter subscription checksum. - * - * @param {Array of String} lines filter subscription lines (with checksum line removed) - * @return {String} checksum or null - */ - generateChecksum: function(lines) - { - let stream = null; - try - { - // Checksum is an MD5 checksum (base64-encoded without the trailing "=") of - // all lines in UTF-8 without the checksum line, joined with "\n". - - let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); - converter.charset = "UTF-8"; - stream = converter.convertToInputStream(lines.join("\n")); - - let hashEngine = Cc["@mozilla.org/security/hash;1"].createInstance(Ci.nsICryptoHash); - hashEngine.init(hashEngine.MD5); - hashEngine.updateFromStream(stream, stream.available()); - return hashEngine.finish(true).replace(/=+$/, ""); - } - catch (e) - { - return null; - } - finally - { - if (stream) - stream.close(); - } - }, - - /** - * Formats a unix time according to user's locale. - * @param {Integer} time unix time in milliseconds - * @return {String} formatted date and time - */ - formatTime: function(time) - { - try - { - let date = new Date(time); - return Utils.dateFormatter.FormatDateTime("", Ci.nsIScriptableDateFormat.dateFormatShort, - Ci.nsIScriptableDateFormat.timeFormatNoSeconds, - date.getFullYear(), date.getMonth() + 1, date.getDate(), - date.getHours(), date.getMinutes(), date.getSeconds()); - } - catch(e) - { - // Make sure to return even on errors - Cu.reportError(e); - return ""; - } - }, - - /** - * Checks whether any of the prefixes listed match the application locale, - * returns matching prefix if any. - */ - checkLocalePrefixMatch: function(/**String*/ prefixes) /**String*/ - { - if (!prefixes) - return null; - - let appLocale = Utils.appLocale; - for (let prefix of prefixes.split(/,/)) - if (new RegExp("^" + prefix + "\\b").test(appLocale)) - return prefix; - - return null; - }, - - /** - * Chooses the best filter subscription for user's language. - */ - chooseFilterSubscription: function(/**NodeList*/ subscriptions) /**Node*/ - { - let selectedItem = null; - let selectedPrefix = null; - let matchCount = 0; - for (let i = 0; i < subscriptions.length; i++) - { - let subscription = subscriptions[i]; - if (!selectedItem) - selectedItem = subscription; - - let prefix = Utils.checkLocalePrefixMatch(subscription.getAttribute("prefixes")); - if (prefix) - { - if (!selectedPrefix || selectedPrefix.length < prefix.length) - { - selectedItem = subscription; - selectedPrefix = prefix; - matchCount = 1; - } - else if (selectedPrefix && selectedPrefix.length == prefix.length) - { - matchCount++; - - // If multiple items have a matching prefix of the same length: - // Select one of the items randomly, probability should be the same - // for all items. So we replace the previous match here with - // probability 1/N (N being the number of matches). - if (Math.random() * matchCount < 1) - { - selectedItem = subscription; - selectedPrefix = prefix; - } - } - } - } - return selectedItem; - }, - - /** - * Pauses code execution and allows events to be processed. Warning: - * other extension code might execute, the extension might even shut down. - */ - yield: function() - { - let {Prefs} = require("prefs"); - if (Prefs.please_kill_startup_performance) - { - this.yield = function() {}; - return; - } - let thread = Services.tm.currentThread; - while (thread.processNextEvent(false)); - }, - - /** - * Saves sidebar state before detaching/reattaching - */ - setParams: function(params) - { - sidebarParams = params; - }, - - /** - * Retrieves and removes sidebar state after detaching/reattaching - */ - getParams: function() - { - let ret = sidebarParams; - sidebarParams = null; - return ret; - }, - - /** - * Verifies RSA signature. The public key and signature should be base64-encoded. - */ - verifySignature: function(/**String*/ key, /**String*/ signature, /**String*/ data) /**Boolean*/ - { - if (!Utils.crypto) - return false; - - // Maybe we did the same check recently, look it up in the cache - if (!("_cache" in Utils.verifySignature)) - Utils.verifySignature._cache = new Cache(5); - let cache = Utils.verifySignature._cache; - let cacheKey = key + " " + signature + " " + data; - if (cacheKey in cache.data) - return cache.data[cacheKey]; - else - cache.add(cacheKey, false); - - let keyInfo, pubKey, context; - try - { - let keyItem = Utils.crypto.getSECItem(atob(key)); - keyInfo = Utils.crypto.SECKEY_DecodeDERSubjectPublicKeyInfo(keyItem.address()); - if (keyInfo.isNull()) - throw new Error("SECKEY_DecodeDERSubjectPublicKeyInfo failed"); - - pubKey = Utils.crypto.SECKEY_ExtractPublicKey(keyInfo); - if (pubKey.isNull()) - throw new Error("SECKEY_ExtractPublicKey failed"); - - let signatureItem = Utils.crypto.getSECItem(atob(signature)); - - context = Utils.crypto.VFY_CreateContext(pubKey, signatureItem.address(), Utils.crypto.SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE, null); - if (context.isNull()) - return false; // This could happen if the signature is invalid - - let error = Utils.crypto.VFY_Begin(context); - if (error < 0) - throw new Error("VFY_Begin failed"); - - error = Utils.crypto.VFY_Update(context, data, data.length); - if (error < 0) - throw new Error("VFY_Update failed"); - - error = Utils.crypto.VFY_End(context); - if (error < 0) - return false; - - cache.data[cacheKey] = true; - return true; - } - catch (e) - { - Cu.reportError(e); - return false; - } - finally - { - if (keyInfo && !keyInfo.isNull()) - Utils.crypto.SECKEY_DestroySubjectPublicKeyInfo(keyInfo); - if (pubKey && !pubKey.isNull()) - Utils.crypto.SECKEY_DestroyPublicKey(pubKey); - if (context && !context.isNull()) - Utils.crypto.VFY_DestroyContext(context, true); - } - }, - - /** - * Returns the documentation link from the preferences. - */ - getDocLink: function(/**String*/ linkID) - { - let {Prefs} = require("prefs"); - let docLink = Prefs.documentation_link; - return docLink.replace(/%LINK%/g, linkID).replace(/%LANG%/g, Utils.appLocale); - }, - - /** - * Splits up a combined label into the label and access key components. - * - * @return {Array} An array with two strings: label and access key - */ - splitLabel: function(/**String*/ label) - { - let match = /^(.*)\s*\(&(.)\)\s*(\u2026?)$/.exec(label); - if (match) - { - // Access key not part of the label - return [match[1] + match[3], match[2]]; - } - else - { - // Access key part of the label - let pos = label.indexOf("&"); - if (pos >= 0 && pos < label.length - 1) - return [label.substr(0, pos) + label.substr(pos + 1), label[pos + 1]]; - else - return [label, ""]; - } - }, - - /** - * Split all labels starting from a particular DOM node. - */ - splitAllLabels: function(/**DOMNode*/ root) - { - let attrMap = { - __proto__: null, - "label": "value", - "setting": "title" - }; - - let elements = root.querySelectorAll("*[label], label[value], setting[title]"); - for (let i = 0; i < elements.length; i++) - { - let element = elements[i]; - let attr = (element.localName in attrMap ? attrMap[element.localName] : "label"); - let origLabel = element.getAttribute(attr); - - let [label, accesskey] = this.splitLabel(origLabel); - if (label != origLabel) - element.setAttribute(attr, label); - if (accesskey != "") - element.setAttribute("accesskey", accesskey); - - // Labels forward changes of the accessKey property to their control, only - // set it for actual controls. - if (element.localName != "label") - element.accessKey = accesskey; - } - } -}; - -/** - * A cache with a fixed capacity, newer entries replace entries that have been - * stored first. - * @constructor - */ -function Cache(/**Integer*/ size) -{ - this._ringBuffer = new Array(size); - this.data = {__proto__: null}; -} -exports.Cache = Cache; - -Cache.prototype = -{ - /** - * Ring buffer storing hash keys, allows determining which keys need to be - * evicted. - * @type Array - */ - _ringBuffer: null, - - /** - * Index in the ring buffer to be written next. - * @type Integer - */ - _bufferIndex: 0, - - /** - * Cache data, maps values to the keys. Read-only access, for writing use - * add() method. - * @type Object - */ - data: null, - - /** - * Adds a key and the corresponding value to the cache. - */ - add: function(/**String*/ key, value) - { - if (!(key in this.data)) - { - // This is a new key - we need to add it to the ring buffer and evict - // another entry instead. - let oldKey = this._ringBuffer[this._bufferIndex]; - if (typeof oldKey != "undefined") - delete this.data[oldKey]; - this._ringBuffer[this._bufferIndex] = key; - - this._bufferIndex++; - if (this._bufferIndex >= this._ringBuffer.length) - this._bufferIndex = 0; - } - - this.data[key] = value; - }, - - /** - * Clears cache contents. - */ - clear: function() - { - this._ringBuffer = new Array(this._ringBuffer.length); - this.data = {__proto__: null}; - } -} - -// Getters for common services, this should be replaced by Services.jsm in future - -XPCOMUtils.defineLazyServiceGetter(Utils, "categoryManager", "@mozilla.org/categorymanager;1", "nsICategoryManager"); -XPCOMUtils.defineLazyServiceGetter(Utils, "ioService", "@mozilla.org/network/io-service;1", "nsIIOService"); -XPCOMUtils.defineLazyServiceGetter(Utils, "promptService", "@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService"); -XPCOMUtils.defineLazyServiceGetter(Utils, "effectiveTLD", "@mozilla.org/network/effective-tld-service;1", "nsIEffectiveTLDService"); -XPCOMUtils.defineLazyServiceGetter(Utils, "netUtils", "@mozilla.org/network/util;1", "nsINetUtil"); -XPCOMUtils.defineLazyServiceGetter(Utils, "styleService", "@mozilla.org/content/style-sheet-service;1", "nsIStyleSheetService"); -XPCOMUtils.defineLazyServiceGetter(Utils, "prefService", "@mozilla.org/preferences-service;1", "nsIPrefService"); -XPCOMUtils.defineLazyServiceGetter(Utils, "versionComparator", "@mozilla.org/xpcom/version-comparator;1", "nsIVersionComparator"); -XPCOMUtils.defineLazyServiceGetter(Utils, "windowMediator", "@mozilla.org/appshell/window-mediator;1", "nsIWindowMediator"); -XPCOMUtils.defineLazyServiceGetter(Utils, "windowWatcher", "@mozilla.org/embedcomp/window-watcher;1", "nsIWindowWatcher"); -XPCOMUtils.defineLazyServiceGetter(Utils, "chromeRegistry", "@mozilla.org/chrome/chrome-registry;1", "nsIXULChromeRegistry"); -XPCOMUtils.defineLazyServiceGetter(Utils, "systemPrincipal", "@mozilla.org/systemprincipal;1", "nsIPrincipal"); -XPCOMUtils.defineLazyServiceGetter(Utils, "dateFormatter", "@mozilla.org/intl/scriptabledateformat;1", "nsIScriptableDateFormat"); -XPCOMUtils.defineLazyServiceGetter(Utils, "childMessageManager", "@mozilla.org/childprocessmessagemanager;1", "nsISyncMessageSender"); -XPCOMUtils.defineLazyServiceGetter(Utils, "parentMessageManager", "@mozilla.org/parentprocessmessagemanager;1", "nsIFrameMessageManager"); -XPCOMUtils.defineLazyServiceGetter(Utils, "httpProtocol", "@mozilla.org/network/protocol;1?name=http", "nsIHttpProtocolHandler"); -XPCOMUtils.defineLazyServiceGetter(Utils, "clipboard", "@mozilla.org/widget/clipboard;1", "nsIClipboard"); -XPCOMUtils.defineLazyServiceGetter(Utils, "clipboardHelper", "@mozilla.org/widget/clipboardhelper;1", "nsIClipboardHelper"); -XPCOMUtils.defineLazyGetter(Utils, "crypto", function() -{ - try - { - let ctypes = Components.utils.import("resource://gre/modules/ctypes.jsm", null).ctypes; - - let nsslib; - try - { - nsslib = ctypes.open(ctypes.libraryName("nss3")); - } - catch (e) - { - // It seems that on Mac OS X the full path name needs to be specified - let file = Services.dirsvc.get("GreD", Ci.nsILocalFile); - file.append(ctypes.libraryName("nss3")); - nsslib = ctypes.open(file.path); - } - - let result = {}; - - // seccomon.h - result.siUTF8String = 14; - - // secoidt.h - result.SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE = 15; - - // The following types are opaque to us - result.VFYContext = ctypes.void_t; - result.SECKEYPublicKey = ctypes.void_t; - result.CERTSubjectPublicKeyInfo = ctypes.void_t; - - /* - * seccomon.h - * struct SECItemStr { - * SECItemType type; - * unsigned char *data; - * unsigned int len; - * }; - */ - result.SECItem = ctypes.StructType("SECItem", [ - {type: ctypes.int}, - {data: ctypes.unsigned_char.ptr}, - {len: ctypes.int} - ]); - - /* - * cryptohi.h - * extern VFYContext *VFY_CreateContext(SECKEYPublicKey *key, SECItem *sig, - * SECOidTag sigAlg, void *wincx); - */ - result.VFY_CreateContext = nsslib.declare( - "VFY_CreateContext", - ctypes.default_abi, result.VFYContext.ptr, - result.SECKEYPublicKey.ptr, - result.SECItem.ptr, - ctypes.int, - ctypes.voidptr_t - ); - - /* - * cryptohi.h - * extern void VFY_DestroyContext(VFYContext *cx, PRBool freeit); - */ - result.VFY_DestroyContext = nsslib.declare( - "VFY_DestroyContext", - ctypes.default_abi, ctypes.void_t, - result.VFYContext.ptr, - ctypes.bool - ); - - /* - * cryptohi.h - * extern SECStatus VFY_Begin(VFYContext *cx); - */ - result.VFY_Begin = nsslib.declare("VFY_Begin", - ctypes.default_abi, ctypes.int, - result.VFYContext.ptr - ); - - /* - * cryptohi.h - * extern SECStatus VFY_Update(VFYContext *cx, const unsigned char *input, - * unsigned int inputLen); - */ - result.VFY_Update = nsslib.declare( - "VFY_Update", - ctypes.default_abi, ctypes.int, - result.VFYContext.ptr, - ctypes.unsigned_char.ptr, - ctypes.int - ); - - /* - * cryptohi.h - * extern SECStatus VFY_End(VFYContext *cx); - */ - result.VFY_End = nsslib.declare( - "VFY_End", - ctypes.default_abi, ctypes.int, - result.VFYContext.ptr - ); - - /* - * keyhi.h - * extern CERTSubjectPublicKeyInfo * - * SECKEY_DecodeDERSubjectPublicKeyInfo(SECItem *spkider); - */ - result.SECKEY_DecodeDERSubjectPublicKeyInfo = nsslib.declare( - "SECKEY_DecodeDERSubjectPublicKeyInfo", - ctypes.default_abi, result.CERTSubjectPublicKeyInfo.ptr, - result.SECItem.ptr - ); - - /* - * keyhi.h - * extern void SECKEY_DestroySubjectPublicKeyInfo(CERTSubjectPublicKeyInfo *spki); - */ - result.SECKEY_DestroySubjectPublicKeyInfo = nsslib.declare( - "SECKEY_DestroySubjectPublicKeyInfo", - ctypes.default_abi, ctypes.void_t, - result.CERTSubjectPublicKeyInfo.ptr - ); - - /* - * keyhi.h - * extern SECKEYPublicKey * - * SECKEY_ExtractPublicKey(CERTSubjectPublicKeyInfo *); - */ - result.SECKEY_ExtractPublicKey = nsslib.declare( - "SECKEY_ExtractPublicKey", - ctypes.default_abi, result.SECKEYPublicKey.ptr, - result.CERTSubjectPublicKeyInfo.ptr - ); - - /* - * keyhi.h - * extern void SECKEY_DestroyPublicKey(SECKEYPublicKey *key); - */ - result.SECKEY_DestroyPublicKey = nsslib.declare( - "SECKEY_DestroyPublicKey", - ctypes.default_abi, ctypes.void_t, - result.SECKEYPublicKey.ptr - ); - - // Convenience method - result.getSECItem = function(data) - { - var dataArray = new ctypes.ArrayType(ctypes.unsigned_char, data.length)(); - for (let i = 0; i < data.length; i++) - dataArray[i] = data.charCodeAt(i) % 256; - return new result.SECItem(result.siUTF8String, dataArray, dataArray.length); - }; - - return result; - } - catch (e) - { - Cu.reportError(e); - // Expected, ctypes isn't supported in Gecko 1.9.2 - return null; - } -}); - -if ("@mozilla.org/messenger/headerparser;1" in Cc) - XPCOMUtils.defineLazyServiceGetter(Utils, "headerParser", "@mozilla.org/messenger/headerparser;1", "nsIMsgHeaderParser"); -else - Utils.headerParser = null; diff --git a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/windowObserver.js b/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/windowObserver.js deleted file mode 100644 index eb0b13a..0000000 --- a/helpers/DATA/firefox/gnu/extensions/spyblock@gnu.org/lib/windowObserver.js +++ /dev/null @@ -1,112 +0,0 @@ -/* - * This file is part of the Adblock Plus build tools, - * Copyright (C) 2006-2014 Eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -exports.WindowObserver = WindowObserver; - -/** - * This class will call listener's method applyToWindow() for all new chrome - * windows being opened. It will also call listener's method removeFromWindow() - * for all windows still open when the extension is shut down. - * @param {Object} listener - * @param {String} [when] when to execute applyToWindow(). "start" means immediately - * when the window opens, "ready" when its contents are available - * and "end" (default) means to wait until the "load" event. - * @constructor - */ -function WindowObserver(listener, when) -{ - this._listener = listener; - this._when = when; - - let windows = []; - let e = Services.wm.getZOrderDOMWindowEnumerator(null, true); - while (e.hasMoreElements()) - windows.push(e.getNext()); - - // Check if there are any windows that we missed - let eAll = Services.ww.getWindowEnumerator(); - while (eAll.hasMoreElements()) - { - let element = eAll.getNext(); - if (windows.indexOf(element) < 0) - windows.push(element); - } - - for (let i = 0; i < windows.length; i++) - { - let window = windows[i].QueryInterface(Ci.nsIDOMWindow); - if (when == "start" || window.document.readyState == "complete") - this._listener.applyToWindow(window); - else - this.observe(window, "chrome-document-global-created", null); - } - - Services.obs.addObserver(this, "chrome-document-global-created", true); - - this._shutdownHandler = function() - { - let e = Services.ww.getWindowEnumerator(); - while (e.hasMoreElements()) - this._listener.removeFromWindow(e.getNext().QueryInterface(Ci.nsIDOMWindow)); - - Services.obs.removeObserver(this, "chrome-document-global-created"); - }.bind(this); - onShutdown.add(this._shutdownHandler); -} -WindowObserver.prototype = -{ - _listener: null, - _when: null, - _shutdownHandler: null, - - shutdown: function() - { - if (!this._shutdownHandler) - return; - - onShutdown.remove(this._shutdownHandler); - this._shutdownHandler(); - this._shutdownHandler = null; - }, - - observe: function(subject, topic, data) - { - if (topic == "chrome-document-global-created") - { - let window = subject.QueryInterface(Ci.nsIDOMWindow); - if (this._when == "start") - { - this._listener.applyToWindow(window); - return; - } - - let event = (this._when == "ready" ? "DOMContentLoaded" : "load"); - let listener = function() - { - window.removeEventListener(event, listener, false); - if (this._shutdownHandler) - this._listener.applyToWindow(window); - }.bind(this); - window.addEventListener(event, listener, false); - } - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) -}; diff --git a/helpers/DATA/firefox/gnu/settings.js b/helpers/DATA/firefox/gnu/settings.js deleted file mode 100644 index 4c68914..0000000 --- a/helpers/DATA/firefox/gnu/settings.js +++ /dev/null @@ -1,148 +0,0 @@ -// Disable default browser checking. -pref("browser.shell.checkDefaultBrowser", false); - -// Don't disable extensions dropped in to a system -// location, or those owned by the application -pref("extensions.autoDisableScopes", 3); -//pref("extensions.enabledScopes", 15); - -// Don't display the one-off addon selection dialog when -// upgrading from a version of Firefox older than 8.0 -pref("extensions.shownSelectionUI", true); - -// Don't call home for blacklisting -pref("extensions.blocklist.enabled", false); - -// Release notes and vendor URLs -pref("app.releaseNotesURL", "https://www.gnu.org/software/gnuzilla/"); -pref("app.vendorURL", "https://www.gnu.org/software/gnuzilla/"); - -// Disable plugin installer -pref("plugins.hide_infobar_for_missing_plugin", true); -pref("plugins.hide_infobar_for_outdated_plugin", true); -pref("plugins.notifyMissingFlash", false); - -//https://developer.mozilla.org/en-US/docs/Web/API/MediaSource -//pref("media.mediasource.enabled",true); - -//Speeding it up -pref("network.http.pipelining", true); -pref("network.http.proxy.pipelining", true); -pref("network.http.pipelining.maxrequests", 10); -pref("nglayout.initialpaint.delay", 0); - -// Disable third party cookies -pref("network.cookie.cookieBehavior", 1); - -// Extensions can be updated -pref("extensions.update.enabled", true); -// Use LANG environment variable to choose locale -pref("intl.locale.matchOS", true); -// Disable default browser checking. -pref("browser.shell.checkDefaultBrowser", false); -// Prevent EULA dialog to popup on first run -pref("browser.EULA.override", true); - -// Default name strings -pref ("distribution.about", "GNU IceCat"); -pref ("distribution.id", "gnu"); -pref ("distribution.version", "1.0"); - -// Set useragent to Firefox compatible -//pref("general.useragent.compatMode.firefox",true); -// Spoof the useragent to a generic one -pref("general.useragent.compatMode.firefox",true); -// Spoof the useragent to a generic one -pref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"); -pref("general.appname.override", "Netscape"); -pref("general.appversion.override", "31.0"); -pref("general.buildID.override", "Gecko/20100101"); -pref("general.oscpu.override", "Windows NT 6.1; WOW64"); -pref("general.platform.override", "Win32"); - -// Startup page -//pref ("browser.startup.page" , 3); -//pref ("browser.startup.homepage" , "https://www.gnu.org/software/gnuzilla/"); -//pref ("startup.homepage_welcome_url", "https://www.gnu.org/software/gnuzilla/"); -pref ("startup.homepage_welcome_url", ""); -//pref ("startup.homepage_override_url" , "https://www.gnu.org/software/gnuzilla/"); - -// Help URL -pref ("app.support.baseURL", "https://www.gnu.org/software/gnuzilla/"); -pref ("app.support.inputURL", "https://lists.gnu.org/mailman/listinfo/bug-gnuzilla"); -pref ("app.feedback.baseURL", "https://lists.gnu.org/mailman/listinfo/bug-gnuzilla"); -pref ("browser.uitour.url", "https://www.gnu.org/software/gnuzilla/"); -pref ("plugins.update.url", "https://www.gnu.org/software/gnuzilla/"); -pref ("browser.customizemode.tip0.learnMoreUrl", "https://www.gnu.org/software/gnuzilla/"); - -// Dictionary download preference -pref("browser.dictionaries.download.url", "http://dictionaries.mozdev.org/"); -pref("browser.search.searchEnginesURL", "http://mycroft.mozdev.org/"); -// Enable Spell Checking In All Text Fields -pref("layout.spellcheckDefault", 2); - -// Apturl preferences -pref("network.protocol-handler.app.apt","/usr/bin/apturl"); -pref("network.protocol-handler.warn-external.apt",false); -pref("network.protocol-handler.app.apt+http","/usr/bin/apturl"); -pref("network.protocol-handler.warn-external.apt+http",false); -pref("network.protocol-handler.external.apt",true); -pref("network.protocol-handler.external.apt+http",true); - -// Privacy & Freedom Issues -// https://webdevelopmentaid.wordpress.com/2013/10/21/customize-privacy-settings-in-mozilla-firefox-part-1-aboutconfig/ -// https://panopticlick.eff.org -// http://ip-check.info -// http://browserspy.dk -// https://wiki.mozilla.org/Fingerprinting -// http://www.browserleaks.com -// http://fingerprint.pet-portal.eu -pref("privacy.donottrackheader.enabled", true); -pref("privacy.donottrackheader.value", 1); -pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false); -pref("browser.safebrowsing.enabled", false); -pref("browser.safebrowsing.malware.enabled", false); -pref("services.sync.privacyURL", "https://www.gnu.org/software/gnuzilla/"); -pref("social.enabled", false); -pref("social.remote-install.enabled", false); -pref("datareporting.healthreport.uploadEnabled", false); -pref("social.toast-notifications.enabled", false); -pref("datareporting.policy.dataSubmissionEnabled", false); -pref("datareporting.healthreport.uploadEnabled", false); -pref("datareporting.healthreport.service.enabled", false); -pref("browser.slowStartup.notificationDisabled", true); -pref("network.http.sendRefererHeader", 2); -pref("network.http.referer.spoofSource", true); -//http://grack.com/blog/2010/01/06/3rd-party-cookies-dom-storage-and-privacy/ -//pref("dom.storage.enabled", false); -pref("dom.event.clipboardevents.enabled",false); -pref("network.prefetch-next", false); -pref("network.dns.disablePrefetch", true); -pref("network.http.sendSecureXSiteReferrer", false); -pref("toolkit.telemetry.enabled", false); -// Do not tell what plugins do we have enabled: https://mail.mozilla.org/pipermail/firefox-dev/2013-November/001186.html -pref("plugins.enumerable_names", ""); -pref("plugin.state.flash", 1); -// Do not autoupdate search engines -pref("browser.search.update", false); -// Warn when the page tries to redirect or refresh -pref("accessibility.blockautorefresh", true); - - - -// Services -pref("gecko.handlerService.schemes.mailto.0.name", ""); -pref("gecko.handlerService.schemes.mailto.1.name", ""); -pref("handlerService.schemes.mailto.1.uriTemplate", ""); -pref("gecko.handlerService.schemes.mailto.0.uriTemplate", ""); -pref("browser.contentHandlers.types.0.title", ""); -pref("browser.contentHandlers.types.0.uri", ""); -pref("browser.contentHandlers.types.1.title", ""); -pref("browser.contentHandlers.types.1.uri", ""); -pref("gecko.handlerService.schemes.webcal.0.name", ""); -pref("gecko.handlerService.schemes.webcal.0.uriTemplate", ""); -pref("gecko.handlerService.schemes.irc.0.name", ""); -pref("gecko.handlerService.schemes.irc.0.uriTemplate", ""); -// https://kiwiirc.com/client/irc.247cdn.net/?nick=Your%20Nickname#underwater-hockey - -pref("font.default.x-western", "sans-serif"); diff --git a/helpers/DATA/firefox/patches/enable-js-options.patch b/helpers/DATA/firefox/patches/enable-js-options.patch deleted file mode 100644 index 2ba6cb8..0000000 --- a/helpers/DATA/firefox/patches/enable-js-options.patch +++ /dev/null @@ -1,304 +0,0 @@ -# revert https://bug851702.bugzilla.mozilla.org/attachment.cgi?id=733785 - -# HG changeset patch -# User Gijs Kruitbosch <gijskruitbosch@gmail.com> -# Date 1365155574 -7200 -# Node ID 444b9baa31d6065d37edbd61a2dcb892c989e0e2 -# Parent 99121d529b47ec285d61f64988335e60ac120cf7 -Bug 851702 - Remove JS load and advanced preferences from the UI - ---- b/browser/components/preferences/content.xul -+++ a/browser/components/preferences/content.xul -@@ -17,18 +17,23 @@ - - <prefpane id="paneContent" - onpaneload="gContentPane.init();" - helpTopic="prefs-content"> - - <preferences id="contentPreferences"> - <!--XXX buttons prefs --> - -+ <!-- POPUPS, JAVASCRIPT --> -- <!-- POPUPS --> - <preference id="dom.disable_open_during_load" name="dom.disable_open_during_load" type="bool"/> -+ <preference id="javascript.enabled" name="javascript.enabled" type="bool"/> -+ -+ <preference id="pref.advanced.javascript.disable_button.advanced" -+ name="pref.advanced.javascript.disable_button.advanced" -+ type="bool"/> - - <!-- FONTS --> - <preference id="font.language.group" - name="font.language.group" - type="wstring" - onchange="gContentPane._rebuildFonts();"/> - </preferences> - -@@ -51,16 +56,30 @@ - label="&blockPopups.label;" accesskey="&blockPopups.accesskey;" - onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton', - 'dom.disable_open_during_load');"/> - </vbox> - <button id="popupPolicyButton" label="&popupExceptions.label;" - oncommand="gContentPane.showPopupExceptions();" - accesskey="&popupExceptions.accesskey;"/> - </row> -+ <row id="enableJavaScriptRow"> -+ <vbox align="start"> -+ <checkbox id="enableJavaScript" preference="javascript.enabled" -+ label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;" -+ onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton', -+ 'javascript.enabled');"/> -+ </vbox> -+ <vbox> -+ <button id="advancedJSButton" label="&advancedJS.label;" -+ accesskey="&advancedJS.accesskey;" -+ oncommand="gContentPane.showAdvancedJS();" -+ preference="pref.advanced.javascript.disable_button.advanced"/> -+ </vbox> -+ </row> - </rows> - </grid> - </groupbox> - - <!-- Fonts and Colors --> - <groupbox id="fontsGroup"> - <caption label="&fontsAndColors.label;"/> - ---- b/browser/components/preferences/in-content/content.xul -+++ a/browser/components/preferences/in-content/content.xul -@@ -1,18 +1,24 @@ - <!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this file, - - You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <preferences id="contentPreferences"> - -+ <!-- Popups and JavaScript --> -- <!-- Popups --> - <preference id="dom.disable_open_during_load" - name="dom.disable_open_during_load" - type="bool"/> -+ <preference id="javascript.enabled" -+ name="javascript.enabled" -+ type="bool"/> -+ <preference id="pref.advanced.javascript.disable_button.advanced" -+ name="pref.advanced.javascript.disable_button.advanced" -+ type="bool"/> - - <!-- Fonts --> - <preference id="font.language.group" - name="font.language.group" - type="wstring" - onchange="gContentPane._rebuildFonts();"/> - </preferences> - -@@ -39,16 +45,30 @@ - label="&blockPopups.label;" accesskey="&blockPopups.accesskey;" - onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton', - 'dom.disable_open_during_load');"/> - </vbox> - <button id="popupPolicyButton" label="&popupExceptions.label;" - oncommand="gContentPane.showPopupExceptions();" - accesskey="&popupExceptions.accesskey;"/> - </row> -+ <row id="enableJavaScriptRow"> -+ <vbox align="start"> -+ <checkbox id="enableJavaScript" preference="javascript.enabled" -+ label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;" -+ onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton', -+ 'javascript.enabled');"/> -+ </vbox> -+ <vbox> -+ <button id="advancedJSButton" label="&advancedJS.label;" -+ accesskey="&advancedJS.accesskey;" -+ oncommand="gContentPane.showAdvancedJS();" -+ preference="pref.advanced.javascript.disable_button.advanced"/> -+ </vbox> -+ </row> - </rows> - </grid> - </groupbox> - - <!-- Fonts and Colors --> - <groupbox id="fontsGroup" data-category="paneContent" hidden="true"> - <caption label="&fontsAndColors.label;"/> - ---- b/browser/components/preferences/jar.mn -+++ a/browser/components/preferences/jar.mn -@@ -4,16 +4,17 @@ - - browser.jar: - content/browser/preferences/aboutPermissions.xul - content/browser/preferences/aboutPermissions.js - content/browser/preferences/aboutPermissions.css - content/browser/preferences/aboutPermissions.xml - * content/browser/preferences/advanced.xul - * content/browser/preferences/advanced.js -+ content/browser/preferences/advanced-scripts.xul - content/browser/preferences/applications.xul - * content/browser/preferences/applications.js - content/browser/preferences/applicationManager.xul - * content/browser/preferences/applicationManager.js - * content/browser/preferences/colors.xul - * content/browser/preferences/cookies.xul - content/browser/preferences/cookies.js - content/browser/preferences/content.xul ---- b/browser/locales/en-US/chrome/browser/preferences/content.dtd -+++ a/browser/locales/en-US/chrome/browser/preferences/content.dtd -@@ -2,16 +2,25 @@ - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <!ENTITY blockPopups.label "Block pop-up windows"> - <!ENTITY blockPopups.accesskey "B"> - <!ENTITY popupExceptions.label "Exceptions…"> - <!ENTITY popupExceptions.accesskey "E"> - -+<!ENTITY enableJavaScript.label "Enable JavaScript"> -+<!ENTITY enableJavaScript.accesskey "J"> -+<!ENTITY advancedJS.label "Advanced…"> -+<!ENTITY advancedJS.accesskey "v"> -+ -+<!ENTITY enableJava.label "Enable Java"> -+<!ENTITY enableJava.accesskey "n"> -+ -+ - <!ENTITY fontsAndColors.label "Fonts & Colors"> - - <!ENTITY defaultFont.label "Default font:"> - <!ENTITY defaultFont.accesskey "D"> - <!ENTITY defaultSize.label "Size:"> - <!ENTITY defaultSize.accesskey "S"> - - <!ENTITY advancedFonts.label "Advanced…"> ---- b/browser/locales/jar.mn -+++ a/browser/locales/jar.mn -@@ -81,16 +81,17 @@ - #endif - locale/browser/feeds/subscribe.dtd (%chrome/browser/feeds/subscribe.dtd) - locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties) - locale/browser/migration/migration.dtd (%chrome/browser/migration/migration.dtd) - locale/browser/migration/migration.properties (%chrome/browser/migration/migration.properties) - locale/browser/preferences/aboutPermissions.dtd (%chrome/browser/preferences/aboutPermissions.dtd) - locale/browser/preferences/aboutPermissions.properties (%chrome/browser/preferences/aboutPermissions.properties) - locale/browser/preferences/advanced.dtd (%chrome/browser/preferences/advanced.dtd) -+ locale/browser/preferences/advanced-scripts.dtd (%chrome/browser/preferences/advanced-scripts.dtd) - locale/browser/preferences/applicationManager.dtd (%chrome/browser/preferences/applicationManager.dtd) - locale/browser/preferences/applicationManager.properties (%chrome/browser/preferences/applicationManager.properties) - locale/browser/preferences/colors.dtd (%chrome/browser/preferences/colors.dtd) - locale/browser/preferences/cookies.dtd (%chrome/browser/preferences/cookies.dtd) - locale/browser/preferences/content.dtd (%chrome/browser/preferences/content.dtd) - locale/browser/preferences/connection.dtd (%chrome/browser/preferences/connection.dtd) - locale/browser/preferences/applications.dtd (%chrome/browser/preferences/applications.dtd) - locale/browser/preferences/fonts.dtd (%chrome/browser/preferences/fonts.dtd) ---- b/browser/components/preferences/content.js 2014-05-07 17:02:34.000000000 +0200 -+++ a/browser/components/preferences/content.js 2014-04-28 01:52:01.000000000 +0200 -@@ -57,7 +57,18 @@ - "chrome://browser/content/preferences/permissions.xul", - "", params); - }, -+ -+ // JAVASCRIPT - -+ /** -+ * Displays the advanced JavaScript preferences for enabling or disabling -+ * various annoying behaviors. -+ */ -+ showAdvancedJS: function () -+ { -+ openDialog("chrome://browser/content/preferences/advanced-scripts.xul", -+ "Browser:AdvancedScripts", null); -+ }, - - // FONTS - ---- b/browser/components/preferences/in-content/content.js 2014-04-28 01:52:01.000000000 +0200 -+++ a/browser/components/preferences/in-content/content.js 2014-05-07 17:01:48.000000000 +0200 -@@ -58,6 +58,18 @@ - "Browser:Permissions", "resizable=yes", params); - }, - -+ // JAVASCRIPT -+ -+ /** -+ * Displays the advanced JavaScript preferences for enabling or disabling -+ * various annoying behaviors. -+ */ -+ showAdvancedJS: function () -+ { -+ openDialog("chrome://browser/content/preferences/advanced-scripts.xul", -+ "Browser:AdvancedScripts", null); -+ }, -+ - // FONTS - - /** -diff --git a/browser/components/preferences/advanced-scripts.xul b/browser/components/preferences/advanced-scripts.xul ---- /dev/null -+++ a/browser/components/preferences/advanced-scripts.xul -@@ -0,0 +1,46 @@ -+<?xml version="1.0"?> -+ -+<!-- -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- --> -+<!-- This Source Code Form is subject to the terms of the Mozilla Public -+ - License, v. 2.0. If a copy of the MPL was not distributed with this -+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -+ -+<!DOCTYPE prefwindow SYSTEM "chrome://browser/locale/preferences/advanced-scripts.dtd"> -+ -+<?xml-stylesheet href="chrome://global/skin/"?> -+ -+<prefwindow id="AdvancedJSDialog" type="child" -+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" -+ title="&advancedJSDialog.title;" -+ dlgbuttons="accept,cancel,help" -+ ondialoghelp="openPrefsHelp()"> -+ -+ <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/> -+ -+ <prefpane id="AdvancedJSDialogPane" -+ helpTopic="prefs-advanced-javascript"> -+ -+ <preferences> -+ <preference id="dom.event.contextmenu.enabled" name="dom.event.contextmenu.enabled" type="bool"/> -+ <preference id="dom.disable_window_move_resize" name="dom.disable_window_move_resize" type="bool" inverted="true"/> -+ <preference id="dom.disable_window_flip" name="dom.disable_window_flip" type="bool" inverted="true"/> -+ </preferences> -+ -+ <script type="application/javascript" src="chrome://browser/content/preferences/advanced-scripts.js"/> -+ -+ <stringbundle id="preferencesBundle" src="chrome://browser/locale/preferences/preferences.properties"/> -+ -+ <description value="&allowScripts.label;"/> -+ -+ <checkbox id="moveResizePopupWindows" label="&moveResizePopupWindows.label;" -+ accesskey="&moveResizePopupWindows.accesskey;" -+ preference="dom.disable_window_move_resize"/> -+ <checkbox id="raiseLowerWindows" label="&raiseLowerWindows.label;" -+ accesskey="&raiseLowerWindows.accesskey;" -+ preference="dom.disable_window_flip"/> -+ <checkbox id="disableContextMenus" label="&disableContextMenus.label;" -+ accesskey="&disableContextMenus.accesskey;" -+ preference="dom.event.contextmenu.enabled"/> -+ -+ </prefpane> -+</prefwindow> ---- /dev/null -+++ a/browser/locales/en-US/chrome/browser/preferences/advanced-scripts.dtd -@@ -0,0 +1,15 @@ -+<!-- This Source Code Form is subject to the terms of the Mozilla Public -+ - License, v. 2.0. If a copy of the MPL was not distributed with this -+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -+ -+<!ENTITY advancedJSDialog.title "Advanced JavaScript Settings"> -+<!ENTITY window.width "37em"> -+ -+<!ENTITY allowScripts.label "Allow scripts to:"> -+ -+<!ENTITY moveResizePopupWindows.label "Move or resize popup windows"> -+<!ENTITY moveResizePopupWindows.accesskey "M"> -+<!ENTITY raiseLowerWindows.label "Raise or lower windows"> -+<!ENTITY raiseLowerWindows.accesskey "R"> -+<!ENTITY disableContextMenus.label "Disable or replace context menus"> -+<!ENTITY disableContextMenus.accesskey "D"> diff --git a/helpers/DATA/firefox/patches/hack-manifest-packaging.patch b/helpers/DATA/firefox/patches/hack-manifest-packaging.patch deleted file mode 100644 index 5cede80..0000000 --- a/helpers/DATA/firefox/patches/hack-manifest-packaging.patch +++ /dev/null @@ -1,17 +0,0 @@ -# Hack allowing to bundle whole unpacked extensions without their manifests -# breaking the packaging process. - ---- a/python/mozbuild/mozpack/packager/__init__.py 2014-10-04 19:03:00.000000000 +0000 -+++ b/python/mozbuild/mozpack/packager/__init__.py 2014-10-06 12:07:03.000000000 +0000 -@@ -246,7 +246,10 @@ - ''' - assert not self._closed - if is_manifest(path): -- self._add_manifest_file(path, file) -+ if "chrome.manifest" in path and "extensions" in path: -+ self._file_queue.append(self.formatter.add, path, file) -+ else: -+ self._add_manifest_file(path, file) - elif path.endswith('.xpt'): - self._queue.append(self.formatter.add_interfaces, path, file) - else: |