Merge "rdbms: clean up session/transaction loss logic in Database"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 3 Apr 2018 19:53:55 +0000 (19:53 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 3 Apr 2018 19:53:55 +0000 (19:53 +0000)
1266 files changed:
.phpcs.xml
RELEASE-NOTES-1.31
autoload.php
composer.json
includes/CommentStore.php
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/MediaWikiServices.php
includes/OutputPage.php
includes/Pingback.php
includes/Title.php
includes/actions/RawAction.php
includes/api/ApiBlock.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryWatchlist.php
includes/api/i18n/en.json
includes/api/i18n/eu.json
includes/api/i18n/pt-br.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/composer/ComposerHookHandler.php
includes/composer/ComposerPackageModifier.php
includes/composer/ComposerVersionNormalizer.php
includes/dao/DBAccessBase.php
includes/htmlform/HTMLForm.php
includes/htmlform/VFormHTMLForm.php
includes/installer/DatabaseUpdater.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/i18n/diq.json
includes/installer/i18n/es.json
includes/installer/i18n/pt-br.json
includes/installer/i18n/uk.json
includes/jobqueue/jobs/ActivityUpdateJob.php
includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php [new file with mode: 0644]
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/database/position/MySQLMasterPos.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/loadmonitor/LoadMonitor.php
includes/logging/LogEntry.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/preferences/DefaultPreferencesFactory.php
includes/profiler/ProfileSection.php [deleted file]
includes/profiler/output/ProfilerOutputDb.php
includes/resourceloader/ResourceLoaderClientHtml.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/skins/BaseTemplate.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialWhatlinkshere.php
includes/user/User.php
includes/watcheditem/NoWriteWatchedItemStore.php
includes/watcheditem/WatchedItemQueryService.php
includes/watcheditem/WatchedItemStore.php
includes/watcheditem/WatchedItemStoreInterface.php
languages/classes/LanguageCrh.php
languages/classes/LanguageEn.php
languages/classes/LanguageKu.php
languages/classes/LanguageSr.php
languages/data/Names.php
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/gcr.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ko.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/my.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sat.json
languages/i18n/skr-arab.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/te.json
languages/i18n/th.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/zgh.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesBs.php
languages/messages/MessagesHe.php
maintenance/archives/patch-ar_rev_id-not-null.sql [new file with mode: 0644]
maintenance/archives/patch-image-img_description_id.sql [new file with mode: 0644]
maintenance/archives/patch-site_stats-modify.sql [new file with mode: 0644]
maintenance/deleteAutoPatrolLogs.php [new file with mode: 0644]
maintenance/dev/includes/router.php
maintenance/dictionary/mediawiki.dic
maintenance/exportSites.php
maintenance/migrateArchiveText.php
maintenance/mssql/archives/patch-ar_rev_id-not-null.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-image-img_description_id.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-rc_patrolled_type.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-site_stats-modify.sql [new file with mode: 0644]
maintenance/mssql/tables.sql
maintenance/oracle/archives/patch-ar_rev_id-not-null.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-image-img_description_id.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-site_stats-modify.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/populateArchiveRevId.php [new file with mode: 0644]
maintenance/postgres/archives/patch-ar_rev_id-not-null.sql [new file with mode: 0644]
maintenance/postgres/archives/patch-site_stats-modify.sql [new file with mode: 0644]
maintenance/postgres/tables.sql
maintenance/reassignEdits.php
maintenance/resources/update-ooui.sh
maintenance/sqlite/archives/patch-actor-table.sql
maintenance/sqlite/archives/patch-ar_rev_id-not-null.sql [new file with mode: 0644]
maintenance/sqlite/archives/patch-image-img_description_id.sql [new file with mode: 0644]
maintenance/sqlite/archives/patch-site_stats-modify.sql [new file with mode: 0644]
maintenance/tables.sql
package.json
resources/lib/oojs-ui/AUTHORS.txt [new file with mode: 0644]
resources/lib/oojs-ui/History.md [new file with mode: 0644]
resources/lib/oojs-ui/LICENSE-MIT [new file with mode: 0644]
resources/lib/oojs-ui/README.md [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-wikimediaui.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-wikimediaui.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-wikimediaui.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-wikimediaui.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/lib/oojs-ui/themes/apex/images/icons/add.png
resources/lib/oojs-ui/themes/apex/images/icons/advanced.png
resources/lib/oojs-ui/themes/apex/images/icons/alert.png
resources/lib/oojs-ui/themes/apex/images/icons/align-center.png
resources/lib/oojs-ui/themes/apex/images/icons/align-float-left.png
resources/lib/oojs-ui/themes/apex/images/icons/align-float-right.png
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/arrow-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/arrow-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/article-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/article-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/articles-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/articles-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/attachment-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/attachment-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/bell.png
resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/block.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-a.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-b.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-be.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-te.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-f.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-geor-man.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-l.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-n.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-v.png
resources/lib/oojs-ui/themes/apex/images/icons/bookmark.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/bright-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/bright.png
resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/cancel.png
resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png
resources/lib/oojs-ui/themes/apex/images/icons/check.png
resources/lib/oojs-ui/themes/apex/images/icons/clear.png
resources/lib/oojs-ui/themes/apex/images/icons/clock.png
resources/lib/oojs-ui/themes/apex/images/icons/close.png
resources/lib/oojs-ui/themes/apex/images/icons/code.png
resources/lib/oojs-ui/themes/apex/images/icons/collapse.png
resources/lib/oojs-ui/themes/apex/images/icons/comment.png
resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png
resources/lib/oojs-ui/themes/apex/images/icons/downTriangle.png
resources/lib/oojs-ui/themes/apex/images/icons/draggable.png
resources/lib/oojs-ui/themes/apex/images/icons/edit-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/edit-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/editLock-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/editLock-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/editUndo-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/editUndo-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/ellipsis.png
resources/lib/oojs-ui/themes/apex/images/icons/expand.png
resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/eye-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/eye.png
resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed.png
resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/flag-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/flag-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/fullScreen.png
resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/halfBright-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/halfBright.png
resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/heart.png
resources/lib/oojs-ui/themes/apex/images/icons/help-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/help-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/history.png
resources/lib/oojs-ui/themes/apex/images/icons/image.png
resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/indent-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/info.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-a.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-e.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-i.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-k.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png
resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/key-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/key-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/layout-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/layout-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/lightbulb.png
resources/lib/oojs-ui/themes/apex/images/icons/link.png
resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/listBullet-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/lock.png
resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/markup.png
resources/lib/oojs-ui/themes/apex/images/icons/menu.png
resources/lib/oojs-ui/themes/apex/images/icons/message-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/message-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/moon-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/moon.png
resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/move.png
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/newline-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/newline-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/notBright-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/notBright.png
resources/lib/oojs-ui/themes/apex/images/icons/notice.png
resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/outdent-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/outline-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/outline-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/play-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/play-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png
resources/lib/oojs-ui/themes/apex/images/icons/puzzle.png
resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png
resources/lib/oojs-ui/themes/apex/images/icons/reload-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/reload-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png
resources/lib/oojs-ui/themes/apex/images/icons/settings.png
resources/lib/oojs-ui/themes/apex/images/icons/signature-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/signature-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/star.png
resources/lib/oojs-ui/themes/apex/images/icons/stop.png
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-a.png
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-y.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/subscript-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/subscript-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/subtract.png
resources/lib/oojs-ui/themes/apex/images/icons/superscript-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/superscript-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/table-caption.png
resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-after.png
resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-before.png
resources/lib/oojs-ui/themes/apex/images/icons/table-merge-cells.png
resources/lib/oojs-ui/themes/apex/images/icons/table.png
resources/lib/oojs-ui/themes/apex/images/icons/tag.png
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/text-dir-lefttoright.png
resources/lib/oojs-ui/themes/apex/images/icons/text-dir-righttoleft.png
resources/lib/oojs-ui/themes/apex/images/icons/text-style.png
resources/lib/oojs-ui/themes/apex/images/icons/trash.png
resources/lib/oojs-ui/themes/apex/images/icons/tray.png
resources/lib/oojs-ui/themes/apex/images/icons/unBlock-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/unBlock-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/unFlag-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/unFlag-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/unLock-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/unStar.png
resources/lib/oojs-ui/themes/apex/images/icons/unTrash-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/unTrash-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/underline-a.png
resources/lib/oojs-ui/themes/apex/images/icons/underline-u.png
resources/lib/oojs-ui/themes/apex/images/icons/upTriangle.png
resources/lib/oojs-ui/themes/apex/images/icons/upload-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/upload-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png
resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png
resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator.png
resources/lib/oojs-ui/themes/apex/images/icons/wikiText.png
resources/lib/oojs-ui/themes/apex/images/icons/window.png
resources/lib/oojs-ui/themes/apex/images/indicators/alert.png
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png
resources/lib/oojs-ui/themes/apex/images/indicators/clear.png
resources/lib/oojs-ui/themes/apex/images/indicators/required.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-warning.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-warning.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-destructive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.svg
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up-invert.png
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up.png
resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js
resources/src/mediawiki/htmlform/ooui.styles.less
resources/src/mediawiki/mediawiki.user.js
tests/common/TestsAutoLoader.php
tests/integration/includes/http/CurlHttpRequestTest.php
tests/integration/includes/http/PhpHttpRequestTest.php
tests/integration/includes/shell/FirejailCommandTest.php
tests/parser/ParserTestRunner.php
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/Storage/RevisionStoreRecordTest.php
tests/phpunit/includes/TitleMethodsTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/actions/ActionTest.php
tests/phpunit/includes/api/ApiBlockTest.php
tests/phpunit/includes/api/ApiDeleteTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiQueryWatchlistIntegrationTest.php
tests/phpunit/includes/api/query/ApiQueryBasicTest.php
tests/phpunit/includes/api/query/ApiQueryContinue2Test.php
tests/phpunit/includes/api/query/ApiQueryContinueTest.php
tests/phpunit/includes/htmlform/HTMLFormTest.php
tests/phpunit/includes/import/ImportLinkCacheIntegrationTest.php
tests/phpunit/includes/jobqueue/JobQueueMemoryTest.php
tests/phpunit/includes/jobqueue/jobs/CategoryMembershipChangeJobTest.php
tests/phpunit/includes/jobqueue/jobs/ClearUserWatchlistJobTest.php
tests/phpunit/includes/libs/ArrayUtilsTest.php
tests/phpunit/includes/libs/MemoizedCallableTest.php
tests/phpunit/includes/libs/rdbms/database/DatabaseMysqlBaseTest.php
tests/phpunit/includes/parser/ParserIntegrationTest.php
tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php
tests/phpunit/includes/specials/SpecialBlankPageTest.php
tests/phpunit/includes/specials/SpecialPageTestBase.php
tests/phpunit/includes/specials/SpecialShortpagesTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/phpunit/maintenance/deleteAutoPatrolLogsTest.php [new file with mode: 0644]
tests/phpunit/mocks/MockMessageLocalizer.php [new file with mode: 0644]
tests/phpunit/mocks/content/DummyContentHandlerForTesting.php
tests/phpunit/mocks/content/DummySerializeErrorContentHandler.php [new file with mode: 0644]
tests/phpunit/suites/UploadFromUrlTestSuite.php
tests/phpunit/tests/MediaWikiTestCaseSchema1Test.php
tests/phpunit/tests/MediaWikiTestCaseSchema2Test.php
tests/phpunit/tests/MediaWikiTestCaseSchemaTest.sql
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.upload.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js
tests/selenium/wdio.conf.js

index d77d398..31e6eeb 100644 (file)
@@ -2,7 +2,6 @@
 <ruleset name="MediaWiki">
        <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
                <exclude name="Generic.ControlStructures.InlineControlStructure" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
                <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
+               <exclude name="MediaWiki.Commenting.LicenseComment.InvalidLicenseTag" />
                <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
                <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
                <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
                <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.SingleSpaceBeforeSingleLineComment" />
                <exclude name="MediaWiki.Usage.DbrQueryUsage.DbrQueryFound" />
                <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage" />
+               <exclude name="MediaWiki.Usage.ForbiddenFunctions.assert" />
                <exclude name="MediaWiki.Usage.SuperGlobalsUsage.SuperGlobals" />
                <exclude name="MediaWiki.Files.ClassMatchesFilename.WrongCase" />
                <exclude name="MediaWiki.Files.ClassMatchesFilename.NotMatch" />
                </properties>
        </rule>
        <rule ref="Generic.Files.LineLength">
-               <exclude-pattern>*/languages/messages/Messages*.php</exclude-pattern>
+               <exclude-pattern>*/languages/messages/Messages*\.php</exclude-pattern>
        </rule>
        <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
-               <exclude-pattern>*/includes/StubObject.php</exclude-pattern>
+               <exclude-pattern>*/includes/StubObject\.php</exclude-pattern>
        </rule>
        <file>.</file>
        <arg name="encoding" value="UTF-8"/>
index cd0fd4c..75d7b7a 100644 (file)
@@ -33,6 +33,8 @@ production.
   was configured with 'any'.
 
 === New features in 1.31 ===
+* (T76554) User sub-pages named ….json are now protected in the same way that ….js
+  and ….css pages are, so that configuration options can safely be placed there.
 * Wikimedia\Rdbms\IDatabase->select() and similar methods now support
   joins with parentheses for grouping.
 * As a first pass in standardizing dialog boxes across the MediaWiki product,
@@ -71,6 +73,7 @@ production.
 * Wikimedia\Rdbms\IDatabase::doAtomicSection(), non-native ::insertSelect(),
   and non-MySQL ::replace() and ::upsert() no longer roll back the whole
   transaction on failure.
+* (T189785) Added a monthly heartbeat ping to the pingback feature.
 
 === External library changes in 1.31 ===
 
@@ -294,6 +297,8 @@ changes to languages because of Phabricator reports.
   * StripState::merge()
 * The "free" CSS class is now only applied to unbracketed URLs in wikitext. Links
   written using square brackets will get the class "text" not "free".
+* SpecialPageFactory::getList(), deprecated in 1.24, has been removed. You can
+  use ::getNames() instead.
 * OpenSearch::getOpenSearchTemplate(), deprecated in 1.25, has been removed. You
   can use ApiOpenSearch::getOpenSearchTemplate() instead.
 * The global function wfBaseConvert, deprecated in 1.27, has been removed. Use
@@ -310,6 +315,13 @@ changes to languages because of Phabricator reports.
 * The global function wfOutputHandler() was removed, use the its replacement
   MediaWiki\OutputHandler::handle() instead. The global function was only sometimes defined.
   Its replacement is always available via the autoloader.
+* ChangeTags::listExtensionActivatedTags and ::listExtensionDefinedTags, deprecated
+  in 1.28, have been removed.  Use ::listSoftwareActivatedTags() and
+  ::listSoftwareDefinedTags() instead.
+* Title::getTitleInvalidRegex(), deprecated in 1.25, has been removed. You
+  can use MediaWikiTitleCodec::getTitleInvalidRegex() instead.
+* HTMLForm & VFormHTMLForm::isVForm(), deprecated in 1.25, have been removed.
+* The ProfileSection class, deprecated in 1.25 and unused, has been removed.
 
 == Compatibility ==
 MediaWiki 1.31 requires PHP 5.5.9 or later. Although HHVM 3.18.5 or later is supported,
@@ -322,7 +334,7 @@ Oracle and Microsoft SQL Server.
 The supported versions are:
 
 * MySQL 5.0.3 or later
-* PostgreSQL 8.3 or later
+* PostgreSQL 9.2 or later
 * SQLite 3.3.7 or later
 * Oracle 9.0.1 or later
 * Microsoft SQL Server 2005 (9.00.1399)
index eb3d776..eed1c95 100644 (file)
@@ -271,6 +271,7 @@ $wgAutoloadLocalClasses = [
        'CleanupUsersWithNoId' => __DIR__ . '/maintenance/cleanupUsersWithNoId.php',
        'ClearInterwikiCache' => __DIR__ . '/maintenance/clearInterwikiCache.php',
        'ClearUserWatchlistJob' => __DIR__ . '/includes/jobqueue/jobs/ClearUserWatchlistJob.php',
+       'ClearWatchlistNotificationsJob' => __DIR__ . '/includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php',
        'CliInstaller' => __DIR__ . '/includes/installer/CliInstaller.php',
        'CloneDatabase' => __DIR__ . '/includes/db/CloneDatabase.php',
        'CodeCleanerGlobalsPass' => __DIR__ . '/maintenance/CodeCleanerGlobalsPass.inc',
@@ -365,6 +366,7 @@ $wgAutoloadLocalClasses = [
        'DeleteAction' => __DIR__ . '/includes/actions/DeleteAction.php',
        'DeleteArchivedFiles' => __DIR__ . '/maintenance/deleteArchivedFiles.php',
        'DeleteArchivedRevisions' => __DIR__ . '/maintenance/deleteArchivedRevisions.php',
+       'DeleteAutoPatrolLogs' => __DIR__ . '/maintenance/deleteAutoPatrolLogs.php',
        'DeleteBatch' => __DIR__ . '/maintenance/deleteBatch.php',
        'DeleteDefaultMessages' => __DIR__ . '/maintenance/deleteDefaultMessages.php',
        'DeleteEqualMessages' => __DIR__ . '/maintenance/deleteEqualMessages.php',
@@ -1158,6 +1160,7 @@ $wgAutoloadLocalClasses = [
        'PoolCounterWorkViaCallback' => __DIR__ . '/includes/poolcounter/PoolCounterWorkViaCallback.php',
        'PoolCounter_Stub' => __DIR__ . '/includes/poolcounter/PoolCounter.php',
        'PoolWorkArticleView' => __DIR__ . '/includes/poolcounter/PoolWorkArticleView.php',
+       'PopulateArchiveRevId' => __DIR__ . '/maintenance/populateArchiveRevId.php',
        'PopulateBacklinkNamespace' => __DIR__ . '/maintenance/populateBacklinkNamespace.php',
        'PopulateCategory' => __DIR__ . '/maintenance/populateCategory.php',
        'PopulateContentModel' => __DIR__ . '/maintenance/populateContentModel.php',
@@ -1184,7 +1187,6 @@ $wgAutoloadLocalClasses = [
        'Preprocessor_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
        'ProcessCacheLRU' => __DIR__ . '/includes/libs/ProcessCacheLRU.php',
        'Processor' => __DIR__ . '/includes/registration/Processor.php',
-       'ProfileSection' => __DIR__ . '/includes/profiler/ProfileSection.php',
        'Profiler' => __DIR__ . '/includes/profiler/Profiler.php',
        'ProfilerOutput' => __DIR__ . '/includes/profiler/output/ProfilerOutput.php',
        'ProfilerOutputDb' => __DIR__ . '/includes/profiler/output/ProfilerOutputDb.php',
index c242e59..e193218 100644 (file)
@@ -25,7 +25,7 @@
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.2.0",
-               "oojs/oojs-ui": "0.26.0",
+               "oojs/oojs-ui": "0.26.1",
                "oyejorge/less.php": "1.7.0.14",
                "php": ">=5.5.9",
                "psr/log": "1.0.2",
                "jakub-onderka/php-parallel-lint": "0.9.2",
                "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
                "justinrainbow/json-schema": "~5.2",
-               "mediawiki/mediawiki-codesniffer": "16.0.0",
+               "mediawiki/mediawiki-codesniffer": "17.0.0",
                "monolog/monolog": "~1.22.1",
                "nikic/php-parser": "3.1.3",
                "nmred/kafka-php": "0.1.5",
                "phpunit/phpunit": "4.8.36",
                "psy/psysh": "0.8.11",
-               "wikimedia/avro": "1.7.7",
+               "wikimedia/avro": "1.8.0",
                "wikimedia/testing-access-wrapper": "~1.0",
                "wmde/hamcrest-html-matchers": "^0.1.0"
        },
index 8447b2c..55f6857 100644 (file)
@@ -34,7 +34,7 @@ class CommentStore {
         * Maximum length of a comment in UTF-8 characters. Longer comments will be truncated.
         * @note This must be at least 255 and not greater than floor( MAX_COMMENT_LENGTH / 4 ).
         */
-       const COMMENT_CHARACTER_LIMIT = 1000;
+       const COMMENT_CHARACTER_LIMIT = 500;
 
        /**
         * Maximum length of a comment in bytes. Longer comments will be truncated.
index 538c1b2..81d3c35 100644 (file)
@@ -5150,6 +5150,7 @@ $wgGroupPermissions['user']['reupload'] = true;
 $wgGroupPermissions['user']['reupload-shared'] = true;
 $wgGroupPermissions['user']['minoredit'] = true;
 $wgGroupPermissions['user']['editmyusercss'] = true;
+$wgGroupPermissions['user']['editmyuserjson'] = true;
 $wgGroupPermissions['user']['editmyuserjs'] = true;
 $wgGroupPermissions['user']['purge'] = true;
 $wgGroupPermissions['user']['sendemail'] = true;
@@ -5185,6 +5186,7 @@ $wgGroupPermissions['sysop']['deletedtext'] = true;
 $wgGroupPermissions['sysop']['undelete'] = true;
 $wgGroupPermissions['sysop']['editinterface'] = true;
 $wgGroupPermissions['sysop']['editusercss'] = true;
+$wgGroupPermissions['sysop']['edituserjson'] = true;
 $wgGroupPermissions['sysop']['edituserjs'] = true;
 $wgGroupPermissions['sysop']['import'] = true;
 $wgGroupPermissions['sysop']['importupload'] = true;
@@ -5816,6 +5818,7 @@ $wgGrantPermissions['editprotected']['editprotected'] = true;
 // FIXME: Rename editmycssjs to editmyconfig
 $wgGrantPermissions['editmycssjs'] = $wgGrantPermissions['editpage'];
 $wgGrantPermissions['editmycssjs']['editmyusercss'] = true;
+$wgGrantPermissions['editmycssjs']['editmyuserjson'] = true;
 $wgGrantPermissions['editmycssjs']['editmyuserjs'] = true;
 
 $wgGrantPermissions['editmyoptions']['editmyoptions'] = true;
@@ -5823,6 +5826,7 @@ $wgGrantPermissions['editmyoptions']['editmyoptions'] = true;
 $wgGrantPermissions['editinterface'] = $wgGrantPermissions['editpage'];
 $wgGrantPermissions['editinterface']['editinterface'] = true;
 $wgGrantPermissions['editinterface']['editusercss'] = true;
+$wgGrantPermissions['editinterface']['edituserjson'] = true;
 $wgGrantPermissions['editinterface']['edituserjs'] = true;
 
 $wgGrantPermissions['createeditmovepage'] = $wgGrantPermissions['editpage'];
@@ -7454,8 +7458,9 @@ $wgJobClasses = [
        'categoryMembershipChange' => CategoryMembershipChangeJob::class,
        'clearUserWatchlist' => ClearUserWatchlistJob::class,
        'cdnPurge' => CdnPurgeJob::class,
-       'enqueue' => EnqueueJob::class, // local queue for multi-DC setups
        'userGroupExpiry' => UserGroupExpiryJob::class,
+       'clearWatchlistNotifications' => ClearWatchlistNotificationsJob::class,
+       'enqueue' => EnqueueJob::class, // local queue for multi-DC setups
        'null' => NullJob::class,
 ];
 
index ad5f75d..a1d9ae8 100644 (file)
@@ -1706,7 +1706,7 @@ class EditPage {
        }
 
        /**
-        * Wrap status errors in an errorbox for increased visiblity
+        * Wrap status errors in an errorbox for increased visibility
         *
         * @param Status $status
         * @return string Wikitext
@@ -2473,9 +2473,11 @@ ERROR;
                if ( $namespace == NS_MEDIAWIKI ) {
                        # Show a warning if editing an interface message
                        $out->wrapWikiMsg( "<div class='mw-editinginterface'>\n$1\n</div>", 'editinginterface' );
-                       # If this is a default message (but not css or js),
+                       # If this is a default message (but not css, json, or js),
                        # show a hint that it is translatable on translatewiki.net
-                       if ( !$this->mTitle->hasContentModel( CONTENT_MODEL_CSS )
+                       if (
+                               !$this->mTitle->hasContentModel( CONTENT_MODEL_CSS )
+                               && !$this->mTitle->hasContentModel( CONTENT_MODEL_JSON )
                                && !$this->mTitle->hasContentModel( CONTENT_MODEL_JAVASCRIPT )
                        ) {
                                $defaultMessageText = $this->mTitle->getDefaultMessageText();
@@ -3095,10 +3097,12 @@ ERROR;
                                }
                                if ( $this->getTitle()->isSubpageOf( $user->getUserPage() ) ) {
                                        $isUserCssConfig = $this->mTitle->isUserCssConfigPage();
+                                       $isUserJsonConfig = $this->mTitle->isUserJsonConfigPage();
+                                       $isUserJsConfig = $this->mTitle->isUserJsConfigPage();
 
                                        $warning = $isUserCssConfig
                                                ? 'usercssispublic'
-                                               : 'userjsispublic';
+                                               : ( $isUserJsonConfig ? 'userjsonispublic' : 'userjsispublic' );
 
                                        $out->wrapWikiMsg( '<div class="mw-userconfigpublic">$1</div>', $warning );
 
@@ -3109,9 +3113,12 @@ ERROR;
                                                                "<div id='mw-usercssyoucanpreview'>\n$1\n</div>",
                                                                [ 'usercssyoucanpreview' ]
                                                        );
-                                               }
-
-                                               if ( $this->mTitle->isJsSubpage() && $config->get( 'AllowUserJs' ) ) {
+                                               } elseif ( $isUserJsonConfig /* No comparable 'AllowUserJson' */ ) {
+                                                       $out->wrapWikiMsg(
+                                                               "<div id='mw-userjsonyoucanpreview'>\n$1\n</div>",
+                                                               [ 'userjsonyoucanpreview' ]
+                                                       );
+                                               } elseif ( $isUserJsConfig && $config->get( 'AllowUserJs' ) ) {
                                                        $out->wrapWikiMsg(
                                                                "<div id='mw-userjsyoucanpreview'>\n$1\n</div>",
                                                                [ 'userjsyoucanpreview' ]
@@ -3848,6 +3855,11 @@ ERROR;
                                        if ( $level === 'user' && !$config->get( 'AllowUserCss' ) ) {
                                                $format = false;
                                        }
+                               } elseif ( $content->getModel() == CONTENT_MODEL_JSON ) {
+                                       $format = 'json';
+                                       if ( $level === 'user' /* No comparable 'AllowUserJson' */ ) {
+                                               $format = false;
+                                       }
                                } elseif ( $content->getModel() == CONTENT_MODEL_JAVASCRIPT ) {
                                        $format = 'js';
                                        if ( $level === 'user' && !$config->get( 'AllowUserJs' ) ) {
@@ -3858,7 +3870,8 @@ ERROR;
                                }
 
                                # Used messages to make sure grep find them:
-                               # Messages: usercsspreview, userjspreview, sitecsspreview, sitejspreview
+                               # Messages: usercsspreview, userjsonpreview, userjspreview,
+                               #   sitecsspreview, sitejsonpreview, sitejspreview
                                if ( $level && $format ) {
                                        $note = "<div id='mw-{$level}{$format}preview'>" .
                                                $this->context->msg( "{$level}{$format}preview" )->text() .
index 42a6573..513f593 100644 (file)
@@ -3019,7 +3019,7 @@ function wfWaitForSlaves(
        $ifWritesSince = null, $wiki = false, $cluster = false, $timeout = null
 ) {
        if ( $timeout === null ) {
-               $timeout = wfIsCLI() ? 86400 : 10;
+               $timeout = wfIsCLI() ? 60 : 10;
        }
 
        if ( $cluster === '*' ) {
index 8bb0a40..ac98683 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace MediaWiki;
 
+use ActorMigration;
 use CommentStore;
 use Config;
 use ConfigFactory;
index 4d6db4c..99dd4a7 100644 (file)
@@ -2788,7 +2788,9 @@ class OutputPage extends ContextSource {
                                $this->rlUserModuleState = $exemptStates['user'] = $userState;
                        }
 
-                       $rlClient = new ResourceLoaderClientHtml( $context, $this->getTarget() );
+                       $rlClient = new ResourceLoaderClientHtml( $context, [
+                               'target' => $this->getTarget(),
+                       ] );
                        $rlClient->setConfig( $this->getJSVars() );
                        $rlClient->setModules( $this->getModules( /*filter*/ true ) );
                        $rlClient->setModuleStyles( $moduleStyles );
index c3393bc..64b54f1 100644 (file)
@@ -68,14 +68,25 @@ class Pingback {
        }
 
        /**
-        * Has a pingback already been sent for this MediaWiki version?
+        * Has a pingback been sent in the last month for this MediaWiki version?
         * @return bool
         */
        private function checkIfSent() {
                $dbr = wfGetDB( DB_REPLICA );
-               $sent = $dbr->selectField(
-                       'updatelog', '1', [ 'ul_key' => $this->key ], __METHOD__ );
-               return $sent !== false;
+               $timestamp = $dbr->selectField(
+                       'updatelog',
+                       'ul_value',
+                       [ 'ul_key' => $this->key ],
+                       __METHOD__
+               );
+               if ( $timestamp === false ) {
+                       return false;
+               }
+               // send heartbeat ping if last ping was over a month ago
+               if ( time() - (int)$timestamp > 60 * 60 * 24 * 30 ) {
+                       return false;
+               }
+               return true;
        }
 
        /**
@@ -84,8 +95,14 @@ class Pingback {
         */
        private function markSent() {
                $dbw = wfGetDB( DB_MASTER );
-               return $dbw->insert(
-                       'updatelog', [ 'ul_key' => $this->key ], __METHOD__, 'IGNORE' );
+               $timestamp = time();
+               return $dbw->upsert(
+                       'updatelog',
+                       [ 'ul_key' => $this->key, 'ul_value' => $timestamp ],
+                       [ 'ul_key' => $this->key ],
+                       [ 'ul_value' => $timestamp ],
+                       __METHOD__
+               );
        }
 
        /**
index 66aadeb..58e6885 100644 (file)
@@ -625,20 +625,6 @@ class Title implements LinkTarget {
                return $wgLegalTitleChars;
        }
 
-       /**
-        * Returns a simple regex that will match on characters and sequences invalid in titles.
-        * Note that this doesn't pick up many things that could be wrong with titles, but that
-        * replacing this regex with something valid will make many titles valid.
-        *
-        * @deprecated since 1.25, use MediaWikiTitleCodec::getTitleInvalidRegex() instead
-        *
-        * @return string Regex string
-        */
-       static function getTitleInvalidRegex() {
-               wfDeprecated( __METHOD__, '1.25' );
-               return MediaWikiTitleCodec::getTitleInvalidRegex();
-       }
-
        /**
         * Utility method for converting a character sequence from bytes to Unicode.
         *
@@ -1292,15 +1278,15 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Could this page contain custom CSS or JavaScript for the global UI.
-        * This is generally true for pages in the MediaWiki namespace having CONTENT_MODEL_CSS
-        * or CONTENT_MODEL_JAVASCRIPT.
+        * Could this MediaWiki namespace page contain custom CSS, JSON, or JavaScript for the
+        * global UI. This is generally true for pages in the MediaWiki namespace having
+        * CONTENT_MODEL_CSS, CONTENT_MODEL_JSON, or CONTENT_MODEL_JAVASCRIPT.
         *
-        * This method does *not* return true for per-user JS/CSS. Use isCssJsSubpage()
+        * This method does *not* return true for per-user JS/JSON/CSS. Use isUserConfigPage()
         * for that!
         *
-        * Note that this method should not return true for pages that contain and
-        * show "inactive" CSS or JS.
+        * Note that this method should not return true for pages that contain and show
+        * "inactive" CSS, JSON, or JS.
         *
         * @return bool
         * @since 1.31
@@ -1310,6 +1296,7 @@ class Title implements LinkTarget {
                        NS_MEDIAWIKI == $this->mNamespace
                        && (
                                $this->hasContentModel( CONTENT_MODEL_CSS )
+                               || $this->hasContentModel( CONTENT_MODEL_JSON )
                                || $this->hasContentModel( CONTENT_MODEL_JAVASCRIPT )
                        )
                );
@@ -1317,7 +1304,7 @@ class Title implements LinkTarget {
 
        /**
         * @return bool
-        * @deprecated Since 1.31; use ::isSiteConfigPage() instead
+        * @deprecated Since 1.31; use ::isSiteConfigPage() instead (which also checks for JSON pages)
         */
        public function isCssOrJsPage() {
                wfDeprecated( __METHOD__, '1.31' );
@@ -1327,7 +1314,7 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Is this a "config" (.css or .js) sub-page of a user page?
+        * Is this a "config" (.css, .json, or .js) sub-page of a user page?
         *
         * @return bool
         * @since 1.31
@@ -1338,6 +1325,7 @@ class Title implements LinkTarget {
                        && $this->isSubpage()
                        && (
                                $this->hasContentModel( CONTENT_MODEL_CSS )
+                               || $this->hasContentModel( CONTENT_MODEL_JSON )
                                || $this->hasContentModel( CONTENT_MODEL_JAVASCRIPT )
                        )
                );
@@ -1345,7 +1333,7 @@ class Title implements LinkTarget {
 
        /**
         * @return bool
-        * @deprecated Since 1.31; use ::isUserConfigPage() instead
+        * @deprecated Since 1.31; use ::isUserConfigPage() instead (which also checks for JSON pages)
         */
        public function isCssJsSubpage() {
                wfDeprecated( __METHOD__, '1.31' );
@@ -1355,9 +1343,9 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Trim down a .css or .js subpage title to get the corresponding skin name
+        * Trim down a .css, .json, or .js subpage title to get the corresponding skin name
         *
-        * @return string Containing skin name from .css or .js subpage title
+        * @return string Containing skin name from .css, .json, or .js subpage title
         * @since 1.31
         */
        public function getSkinFromConfigSubpage() {
@@ -1365,14 +1353,14 @@ class Title implements LinkTarget {
                $subpage = $subpage[count( $subpage ) - 1];
                $lastdot = strrpos( $subpage, '.' );
                if ( $lastdot === false ) {
-                       return $subpage; # Never happens: only called for names ending in '.css' or '.js'
+                       return $subpage; # Never happens: only called for names ending in '.css'/'.json'/'.js'
                }
                return substr( $subpage, 0, $lastdot );
        }
 
        /**
         * @deprecated Since 1.31; use ::getSkinFromConfigSubpage() instead
-        * @return string Containing skin name from .css or .js subpage title
+        * @return string Containing skin name from .css, .json, or .js subpage title
         */
        public function getSkinFromCssJsSubpage() {
                wfDeprecated( __METHOD__, '1.31' );
@@ -1403,7 +1391,21 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Is this a .js subpage of a user page?
+        * Is this a JSON "config" sub-page of a user page?
+        *
+        * @return bool
+        * @since 1.31
+        */
+       public function isUserJsonConfigPage() {
+               return (
+                       NS_USER == $this->mNamespace
+                       && $this->isSubpage()
+                       && $this->hasContentModel( CONTENT_MODEL_JSON )
+               );
+       }
+
+       /**
+        * Is this a JS "config" sub-page of a user page?
         *
         * @return bool
         * @since 1.31
@@ -2316,7 +2318,7 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Check CSS/JS sub-page permissions
+        * Check CSS/JSON/JS sub-page permissions
         *
         * @param string $action The action to check
         * @param User $user User to check
@@ -2327,7 +2329,7 @@ class Title implements LinkTarget {
         * @return array List of errors
         */
        private function checkUserConfigPermissions( $action, $user, $errors, $rigor, $short ) {
-               # Protect css/js subpages of user pages
+               # Protect css/json/js subpages of user pages
                # XXX: this might be better using restrictions
 
                if ( $action != 'patrol' ) {
@@ -2337,6 +2339,11 @@ class Title implements LinkTarget {
                                        && !$user->isAllowedAny( 'editmyusercss', 'editusercss' )
                                ) {
                                        $errors[] = [ 'mycustomcssprotected', $action ];
+                               } elseif (
+                                       $this->isUserJsonConfigPage()
+                                       && !$user->isAllowedAny( 'editmyuserjson', 'edituserjson' )
+                               ) {
+                                       $errors[] = [ 'mycustomjsonprotected', $action ];
                                } elseif (
                                        $this->isUserJsConfigPage()
                                        && !$user->isAllowedAny( 'editmyuserjs', 'edituserjs' )
@@ -2349,6 +2356,11 @@ class Title implements LinkTarget {
                                        && !$user->isAllowed( 'editusercss' )
                                ) {
                                        $errors[] = [ 'customcssprotected', $action ];
+                               } elseif (
+                                       $this->isUserJsonConfigPage()
+                                       && !$user->isAllowed( 'edituserjson' )
+                               ) {
+                                       $errors[] = [ 'customjsonprotected', $action ];
                                } elseif (
                                        $this->isUserJsConfigPage()
                                        && !$user->isAllowed( 'edituserjs' )
@@ -3824,6 +3836,8 @@ class Title implements LinkTarget {
                // If we are looking at a css/js user subpage, purge the action=raw.
                if ( $this->isUserJsConfigPage() ) {
                        $urls[] = $this->getInternalURL( 'action=raw&ctype=text/javascript' );
+               } elseif ( $this->isUserJsonConfigPage() ) {
+                       $urls[] = $this->getInternalURL( 'action=raw&ctype=application/json' );
                } elseif ( $this->isUserCssConfigPage() ) {
                        $urls[] = $this->getInternalURL( 'action=raw&ctype=text/css' );
                }
index be10ae4..812f962 100644 (file)
@@ -59,20 +59,19 @@ class RawAction extends FormlessAction {
                        return; // Client cache fresh and headers sent, nothing more to do.
                }
 
-               $gen = $request->getVal( 'gen' );
-               if ( $gen == 'css' || $gen == 'js' ) {
-                       $this->gen = true;
-               }
-
                $contentType = $this->getContentType();
 
                $maxage = $request->getInt( 'maxage', $config->get( 'SquidMaxage' ) );
                $smaxage = $request->getIntOrNull( 'smaxage' );
                if ( $smaxage === null ) {
-                       if ( $contentType == 'text/css' || $contentType == 'text/javascript' ) {
-                               // CSS/JS raw content has its own CDN max age configuration.
-                               // Note: Title::getCdnUrls() includes action=raw for css/js pages,
-                               // so if using the canonical url, this will get HTCP purges.
+                       if (
+                               $contentType == 'text/css' ||
+                               $contentType == 'application/json' ||
+                               $contentType == 'text/javascript'
+                       ) {
+                               // CSS/JSON/JS raw content has its own CDN max age configuration.
+                               // Note: Title::getCdnUrls() includes action=raw for css/json/js
+                               // pages, so if using the canonical url, this will get HTCP purges.
                                $smaxage = intval( $config->get( 'ForcedRawSMaxage' ) );
                        } else {
                                // No CDN cache for anything else
@@ -166,7 +165,7 @@ class RawAction extends FormlessAction {
                                        }
 
                                        if ( $content === null || $content === false ) {
-                                               // section not found (or section not supported, e.g. for JS and CSS)
+                                               // section not found (or section not supported, e.g. for JS, JSON, and CSS)
                                                $text = false;
                                        } else {
                                                $text = $content->getNativeData();
@@ -175,7 +174,7 @@ class RawAction extends FormlessAction {
                        }
                }
 
-               if ( $text !== false && $text !== '' && $request->getVal( 'templates' ) === 'expand' ) {
+               if ( $text !== false && $text !== '' && $request->getRawVal( 'templates' ) === 'expand' ) {
                        $text = $wgParser->preprocess(
                                $text,
                                $title,
@@ -225,10 +224,14 @@ class RawAction extends FormlessAction {
         * @return string
         */
        public function getContentType() {
-               $ctype = $this->getRequest()->getVal( 'ctype' );
+               // Use getRawVal instead of getVal because we only
+               // need to match against known strings, there is no
+               // storing of localised content or other user input.
+               $ctype = $this->getRequest()->getRawVal( 'ctype' );
 
                if ( $ctype == '' ) {
-                       $gen = $this->getRequest()->getVal( 'gen' );
+                       // Legacy compatibilty
+                       $gen = $this->getRequest()->getRawVal( 'gen' );
                        if ( $gen == 'js' ) {
                                $ctype = 'text/javascript';
                        } elseif ( $gen == 'css' ) {
@@ -240,6 +243,7 @@ class RawAction extends FormlessAction {
                        'text/x-wiki',
                        'text/javascript',
                        'text/css',
+                       // FIXME: Should we still allow Zope editing? External editing feature was dropped
                        'application/x-zope-edit',
                        'application/json'
                ];
index f4aea98..8f40283 100644 (file)
@@ -124,8 +124,8 @@ class ApiBlock extends ApiBase {
                        $res['id'] = $block->getId();
                } else {
                        # should be unreachable
-                       $res['expiry'] = '';
-                       $res['id'] = '';
+                       $res['expiry'] = ''; // @codeCoverageIgnore
+                       $res['id'] = ''; // @codeCoverageIgnore
                }
 
                $res['reason'] = $params['reason'];
index e19f1f2..a63dee6 100644 (file)
@@ -116,7 +116,8 @@ class ApiDelete extends ApiBase {
                        $hasHistory = false;
                        $reason = $page->getAutoDeleteReason( $hasHistory );
                        if ( $reason === false ) {
-                               return Status::newFatal( 'cannotdelete', $title->getPrefixedText() );
+                               // Should be reachable only if the page has no revisions
+                               return Status::newFatal( 'cannotdelete', $title->getPrefixedText() ); // @codeCoverageIgnore
                        }
                }
 
index e887ef5..83f72e5 100644 (file)
@@ -133,7 +133,7 @@ class ApiEditPage extends ApiBase {
                                        }
 
                                        try {
-                                               $content = ContentHandler::makeContent( $text, $this->getTitle() );
+                                               $content = ContentHandler::makeContent( $text, $titleObj );
                                        } catch ( MWContentSerializationException $ex ) {
                                                $this->dieWithException( $ex, [
                                                        'wrap' => ApiMessage::create( 'apierror-contentserializationexception', 'parseerror' )
@@ -402,10 +402,17 @@ class ApiEditPage extends ApiBase {
                                        return;
                                }
                                if ( !$status->getErrors() ) {
-                                       $status->fatal( 'hookaborted' );
+                                       // This appears to be unreachable right now, because all
+                                       // code paths will set an error.  Could change, though.
+                                       $status->fatal( 'hookaborted' ); //@codeCoverageIgnore
                                }
                                $this->dieStatus( $status );
 
+                       // These two cases will normally have been caught earlier, and will
+                       // only occur if something blocks the user between the earlier
+                       // check and the check in EditPage (presumably a hook).  It's not
+                       // obvious that this is even possible.
+                       // @codeCoverageIgnoreStart
                        case EditPage::AS_BLOCKED_PAGE_FOR_USER:
                                $this->dieWithError(
                                        'apierror-blocked',
@@ -415,6 +422,7 @@ class ApiEditPage extends ApiBase {
 
                        case EditPage::AS_READ_ONLY_PAGE:
                                $this->dieReadOnly();
+                       // @codeCoverageIgnoreEnd
 
                        case EditPage::AS_SUCCESS_NEW_ARTICLE:
                                $r['new'] = true;
@@ -446,7 +454,7 @@ class ApiEditPage extends ApiBase {
                                                        $status->fatal( 'apierror-noimageredirect-anon' );
                                                        break;
                                                case EditPage::AS_IMAGE_REDIRECT_LOGGED:
-                                                       $status->fatal( 'apierror-noimageredirect-logged' );
+                                                       $status->fatal( 'apierror-noimageredirect' );
                                                        break;
                                                case EditPage::AS_CONTENT_TOO_BIG:
                                                case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED:
@@ -468,6 +476,7 @@ class ApiEditPage extends ApiBase {
                                                // Currently shouldn't be needed, but here in case
                                                // hooks use them without setting appropriate
                                                // errors on the status.
+                                               // @codeCoverageIgnoreStart
                                                case EditPage::AS_SPAM_ERROR:
                                                        $status->fatal( 'apierror-spamdetected', $result['spam'] );
                                                        break;
@@ -493,10 +502,10 @@ class ApiEditPage extends ApiBase {
                                                        wfWarn( __METHOD__ . ": Unknown EditPage code {$status->value} with no message" );
                                                        $status->fatal( 'apierror-unknownerror-editpage', $status->value );
                                                        break;
+                                               // @codeCoverageIgnoreEnd
                                        }
                                }
                                $this->dieStatus( $status );
-                               break;
                }
                $apiResult->addValue( null, $this->getModuleName(), $r );
        }
@@ -566,10 +575,14 @@ class ApiEditPage extends ApiBase {
                                ApiBase::PARAM_TYPE => 'text',
                        ],
                        'undo' => [
-                               ApiBase::PARAM_TYPE => 'integer'
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_MIN => 0,
+                               ApiBase::PARAM_RANGE_ENFORCE => true,
                        ],
                        'undoafter' => [
-                               ApiBase::PARAM_TYPE => 'integer'
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_MIN => 0,
+                               ApiBase::PARAM_RANGE_ENFORCE => true,
                        ],
                        'redirect' => [
                                ApiBase::PARAM_TYPE => 'boolean',
index e431202..9ff4149 100644 (file)
@@ -192,6 +192,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                || ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) )
                                || ( isset( $show['patrolled'] ) && isset( $show['unpatrolled'] ) )
                                || ( isset( $show['!patrolled'] ) && isset( $show['unpatrolled'] ) )
+                               || ( isset( $show['autopatrolled'] ) && isset( $show['!autopatrolled'] ) )
+                               || ( isset( $show['autopatrolled'] ) && isset( $show['unpatrolled'] ) )
+                               || ( isset( $show['autopatrolled'] ) && isset( $show['!patrolled'] ) )
                        ) {
                                $this->dieWithError( 'apierror-show' );
                        }
@@ -200,6 +203,8 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        if ( isset( $show['patrolled'] )
                                || isset( $show['!patrolled'] )
                                || isset( $show['unpatrolled'] )
+                               || isset( $show['autopatrolled'] )
+                               || isset( $show['!autopatrolled'] )
                        ) {
                                if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
                                        $this->dieWithError( 'apierror-permissiondenied-patrolflag', 'permissiondenied' );
@@ -237,6 +242,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                }
                        }
 
+                       $this->addWhereIf( 'rc_patrolled != 2', isset( $show['!autopatrolled'] ) );
+                       $this->addWhereIf( 'rc_patrolled = 2', isset( $show['autopatrolled'] ) );
+
                        // Don't throw log entries out the window here
                        $this->addWhereIf(
                                'page_is_redirect = 0 OR page_is_redirect IS NULL',
@@ -544,8 +552,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
 
                /* Add the patrolled flag */
                if ( $this->fld_patrolled ) {
-                       $vals['patrolled'] = $row->rc_patrolled == 1;
+                       $vals['patrolled'] = $row->rc_patrolled != 0;
                        $vals['unpatrolled'] = ChangesList::isUnpatrolled( $row, $user );
+                       $vals['autopatrolled'] = $row->rc_patrolled == 2;
                }
 
                if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
@@ -694,7 +703,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                        '!redirect',
                                        'patrolled',
                                        '!patrolled',
-                                       'unpatrolled'
+                                       'unpatrolled',
+                                       'autopatrolled',
+                                       '!autopatrolled',
                                ]
                        ],
                        'limit' => [
index bb4a2ef..f6bc8cb 100644 (file)
@@ -82,19 +82,20 @@ class ApiQueryContributions extends ApiQueryBase {
                        $userIter = call_user_func( function () use ( $dbSecondary, $sort, $op, $fname ) {
                                global $wgActorTableSchemaMigrationStage;
 
-                               $from = $fromName = false;
+                               $fromName = false;
                                if ( !is_null( $this->params['continue'] ) ) {
                                        $continue = explode( '|', $this->params['continue'] );
                                        $this->dieContinueUsageIf( count( $continue ) != 4 );
                                        $this->dieContinueUsageIf( $continue[0] !== 'name' );
                                        $fromName = $continue[1];
-                                       $from = "$op= " . $dbSecondary->addQuotes( $fromName );
                                }
                                $like = $dbSecondary->buildLike( $this->params['userprefix'], $dbSecondary->anyString() );
 
                                $limit = 501;
 
                                do {
+                                       $from = $fromName ? "$op= " . $dbSecondary->addQuotes( $fromName ) : false;
+
                                        // For the new schema, pull from the actor table. For the
                                        // old, pull from rev_user. For migration a FULL [OUTER]
                                        // JOIN would be what we want, except MySQL doesn't support
@@ -158,15 +159,15 @@ class ApiQueryContributions extends ApiQueryBase {
                                        }
 
                                        $count = 0;
-                                       $from = null;
+                                       $fromName = false;
                                        foreach ( $res as $row ) {
                                                if ( ++$count >= $limit ) {
-                                                       $from = $row->user_name;
+                                                       $fromName = $row->user_name;
                                                        break;
                                                }
                                                yield User::newFromRow( $row );
                                        }
-                               } while ( $from !== null );
+                               } while ( $fromName !== false );
                        } );
                        // Do the actual sorting client-side, because otherwise
                        // prepareQuery might try to sort by actor and confuse everything.
@@ -529,6 +530,8 @@ class ApiQueryContributions extends ApiQueryBase {
 
                        if ( ( isset( $show['minor'] ) && isset( $show['!minor'] ) )
                                || ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) )
+                               || ( isset( $show['autopatrolled'] ) && isset( $show['!autopatrolled'] ) )
+                               || ( isset( $show['autopatrolled'] ) && isset( $show['!patrolled'] ) )
                                || ( isset( $show['top'] ) && isset( $show['!top'] ) )
                                || ( isset( $show['new'] ) && isset( $show['!new'] ) )
                        ) {
@@ -539,6 +542,8 @@ class ApiQueryContributions extends ApiQueryBase {
                        $this->addWhereIf( 'rev_minor_edit != 0', isset( $show['minor'] ) );
                        $this->addWhereIf( 'rc_patrolled = 0', isset( $show['!patrolled'] ) );
                        $this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
+                       $this->addWhereIf( 'rc_patrolled != 2', isset( $show['!autopatrolled'] ) );
+                       $this->addWhereIf( 'rc_patrolled = 2', isset( $show['autopatrolled'] ) );
                        $this->addWhereIf( $idField . ' != page_latest', isset( $show['!top'] ) );
                        $this->addWhereIf( $idField . ' = page_latest', isset( $show['top'] ) );
                        $this->addWhereIf( 'rev_parent_id != 0', isset( $show['!new'] ) );
@@ -547,15 +552,17 @@ class ApiQueryContributions extends ApiQueryBase {
                $this->addOption( 'LIMIT', $limit + 1 );
 
                if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ||
-                       $this->fld_patrolled
+                       isset( $show['autopatrolled'] ) || isset( $show['!autopatrolled'] ) || $this->fld_patrolled
                ) {
                        if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
                                $this->dieWithError( 'apierror-permissiondenied-patrolflag', 'permissiondenied' );
                        }
 
+                       $isFilterset = isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ||
+                               isset( $show['autopatrolled'] ) || isset( $show['!autopatrolled'] );
                        $this->addTables( 'recentchanges' );
                        $this->addJoinConds( [ 'recentchanges' => [
-                               isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ? 'JOIN' : 'LEFT JOIN',
+                               $isFilterset ? 'JOIN' : 'LEFT JOIN',
                                [
                                        // This is a crazy hack. recentchanges has no index on rc_this_oldid, so instead of adding
                                        // one T19237 did a join using rc_user_text and rc_timestamp instead. Now rc_user_text is
@@ -659,7 +666,8 @@ class ApiQueryContributions extends ApiQueryBase {
                }
 
                if ( $this->fld_patrolled ) {
-                       $vals['patrolled'] = (bool)$row->rc_patrolled;
+                       $vals['patrolled'] = $row->rc_patrolled != RecentChange::PRC_UNPATROLLED;
+                       $vals['autopatrolled'] = $row->rc_patrolled == RecentChange::PRC_AUTOPATROLLED;
                }
 
                if ( $this->fld_size && !is_null( $row->rev_len ) ) {
@@ -777,6 +785,8 @@ class ApiQueryContributions extends ApiQueryBase {
                                        '!minor',
                                        'patrolled',
                                        '!patrolled',
+                                       'autopatrolled',
+                                       '!autopatrolled',
                                        'top',
                                        '!top',
                                        'new',
index 69f1838..52ad26c 100644 (file)
@@ -233,6 +233,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                }
                if ( $this->fld_patrol ) {
                        $includeFields[] = WatchedItemQueryService::INCLUDE_PATROL_INFO;
+                       $includeFields[] = WatchedItemQueryService::INCLUDE_AUTOPATROL_INFO;
                }
                if ( $this->fld_sizes ) {
                        $includeFields[] = WatchedItemQueryService::INCLUDE_SIZES;
@@ -255,6 +256,10 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        && isset( $show[WatchedItemQueryService::FILTER_NOT_ANON] ) )
                || ( isset( $show[WatchedItemQueryService::FILTER_PATROLLED] )
                        && isset( $show[WatchedItemQueryService::FILTER_NOT_PATROLLED] ) )
+               || ( isset( $show[WatchedItemQueryService::FILTER_AUTOPATROLLED] )
+                       && isset( $show[WatchedItemQueryService::FILTER_NOT_AUTOPATROLLED] ) )
+               || ( isset( $show[WatchedItemQueryService::FILTER_AUTOPATROLLED] )
+                       && isset( $show[WatchedItemQueryService::FILTER_NOT_PATROLLED] ) )
                || ( isset( $show[WatchedItemQueryService::FILTER_UNREAD] )
                        && isset( $show[WatchedItemQueryService::FILTER_NOT_UNREAD] ) );
        }
@@ -370,8 +375,9 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
 
                /* Add the patrolled flag */
                if ( $this->fld_patrol ) {
-                       $vals['patrolled'] = $recentChangeInfo['rc_patrolled'] == 1;
+                       $vals['patrolled'] = $recentChangeInfo['rc_patrolled'] != 0;
                        $vals['unpatrolled'] = ChangesList::isUnpatrolled( (object)$recentChangeInfo, $user );
+                       $vals['autopatrolled'] = $recentChangeInfo['rc_patrolled'] == 2;
                }
 
                if ( $this->fld_loginfo && $recentChangeInfo['rc_type'] == RC_LOG ) {
@@ -477,6 +483,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                        WatchedItemQueryService::FILTER_NOT_ANON,
                                        WatchedItemQueryService::FILTER_PATROLLED,
                                        WatchedItemQueryService::FILTER_NOT_PATROLLED,
+                                       WatchedItemQueryService::FILTER_AUTOPATROLLED,
+                                       WatchedItemQueryService::FILTER_NOT_AUTOPATROLLED,
                                        WatchedItemQueryService::FILTER_UNREAD,
                                        WatchedItemQueryService::FILTER_NOT_UNREAD,
                                ]
index 7568526..d158b2c 100644 (file)
        "apihelp-query+recentchanges-paramvalue-prop-sizes": "Adds the new and old page length in bytes.",
        "apihelp-query+recentchanges-paramvalue-prop-redirect": "Tags edit if page is a redirect.",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Tags patrollable edits as being patrolled or unpatrolled.",
+       "apihelp-query+recentchanges-paramvalue-prop-autopatrolled": "Tags patrollable edits as being autopatrolled or not.",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Adds log information (log ID, log type, etc) to log entries.",
        "apihelp-query+recentchanges-paramvalue-prop-tags": "Lists tags for the entry.",
        "apihelp-query+recentchanges-paramvalue-prop-sha1": "Adds the content checksum for entries associated with a revision.",
        "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Adds the size delta of the edit against its parent.",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "Adds flags of the edit.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Tags patrolled edits.",
+       "apihelp-query+usercontribs-paramvalue-prop-autopatrolled": "Tags autopatrolled edits.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Lists tags for the edit.",
        "apihelp-query+usercontribs-param-show": "Show only items that meet these criteria, e.g. non minor edits only: <kbd>$2show=!minor</kbd>.\n\nIf <kbd>$2show=patrolled</kbd> or <kbd>$2show=!patrolled</kbd> is set, revisions older than <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|second|seconds}}) won't be shown.",
        "apihelp-query+usercontribs-param-tag": "Only list revisions tagged with this tag.",
        "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Adds parsed comment of the edit.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Adds timestamp of the edit.",
        "apihelp-query+watchlist-paramvalue-prop-patrol": "Tags edits that are patrolled.",
+       "apihelp-query+watchlist-paramvalue-prop-autopatrol": "Tags edits that are autopatrolled.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Adds the old and new lengths of the page.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adds timestamp of when the user was last notified about the edit.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adds log information where appropriate.",
index f6a4118..f15e819 100644 (file)
@@ -5,7 +5,8 @@
                        "Sator",
                        "An13sa",
                        "Gorkaazk",
-                       "Mikel Ibaiba"
+                       "Mikel Ibaiba",
+                       "Iñaki LL"
                ]
        },
        "apihelp-main-param-action": "Zein ekintza burutuko da.",
@@ -59,7 +60,7 @@
        "apihelp-edit-summary": "Orrialdeak sortu eta aldatu.",
        "apihelp-edit-param-title": "Orri izenburua aldatzeke. Hurrengoarekin batera ezin da erabili: <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "Ezabatzeko orri edo ID orria. Hurrengoarekin batera ezin da erabili: <var>$1title</var>.",
-       "apihelp-edit-param-sectiontitle": "Atal berri baten titulua.",
+       "apihelp-edit-param-sectiontitle": "Atal berri baten izenburua.",
        "apihelp-edit-param-text": "Orrialdearen edukia.",
        "apihelp-edit-param-tags": "Aldatu etiketak berrikusketa eskatzeko.",
        "apihelp-edit-param-minor": "Aldaketa txikia.",
index a2a0e79..7102f73 100644 (file)
        "apihelp-opensearch-summary": "Procure na wiki usando o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Pesquisar string.",
        "apihelp-opensearch-param-limit": "Número máximo de resultados.",
-       "apihelp-opensearch-param-namespace": "Espaço nominal para pesquisar.",
+       "apihelp-opensearch-param-namespace": "Espaços nominais a pesquisar. Ignorados se <var>$1search</var> começar com um prefixo de espaço nominal válido.",
        "apihelp-opensearch-param-suggest": "Não fazer nada se <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> é false.",
        "apihelp-opensearch-param-redirects": "Como lidar com os redirecionamentos:\n;return: Retornar o redirecionamento em si.\n;resolve: Retornar a página de destino. Pode retornar menos de $1 resultados.\nPor razões históricas, o padrão é \"return\" para $1format=json e \"resolve\" para outros formatos.",
        "apihelp-opensearch-param-format": "O formato da saída.",
        "apihelp-query+prefixsearch-summary": "Execute uma pesquisa de prefixo para títulos de página.",
        "apihelp-query+prefixsearch-extended-description": "Apesar da semelhança nos nomes, este módulo não se destina a ser equivalente a[[Special:PrefixIndex]]; para isso, veja <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> com o parâmetro <kbd>apprefix</kbd>.O propósito deste módulo é semelhante a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: para inserir o usuário e fornecer os títulos de melhor correspondência. Dependendo do backend do mecanismo de pesquisa, isso pode incluir correção de digitação, evasão de redirecionamento ou outras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "Pesquisar string.",
-       "apihelp-query+prefixsearch-param-namespace": "Espaço nominal para pesquisar.",
+       "apihelp-query+prefixsearch-param-namespace": "Os espaços nominais onde realizar a pesquisa. Ignorados se <var>$1search</var> começar com um prefixo de espaço nominal válido.",
        "apihelp-query+prefixsearch-param-limit": "Número máximo de resultados.",
        "apihelp-query+prefixsearch-param-offset": "Número de resultados a ignorar.",
        "apihelp-query+prefixsearch-example-simple": "Procure títulos de páginas começando com <kbd>meaning</kbd>.",
index 14cf5aa..a519b3f 100644 (file)
        "apihelp-opensearch-summary": "Pesquisar a wiki usando o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Texto a pesquisar.",
        "apihelp-opensearch-param-limit": "O número máximo de resultados a serem devolvidos.",
-       "apihelp-opensearch-param-namespace": "Espaços nominais a pesquisar.",
+       "apihelp-opensearch-param-namespace": "Espaços nominais a pesquisar. Ignorados se <var>$1search</var> começar com um prefixo de espaço nominal válido.",
        "apihelp-opensearch-param-suggest": "Não fazer nada se <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> for falso.",
        "apihelp-opensearch-param-redirects": "Como tratar redirecionamentos:\n;return:Devolver o próprio redirecionamento.\n;resolve:Devolver a página de destino. Pode devolver menos de $1limit resultados.\nPor razões históricas, o valor por omissão é \"return\" para o formato $1format=json e \"resolve\" para outros formatos.",
        "apihelp-opensearch-param-format": "O formato do resultado.",
        "apihelp-query+prefixsearch-summary": "Realizar uma procura de prefixo nos títulos de página.",
        "apihelp-query+prefixsearch-extended-description": "Apesar da semelhança de nomes, este módulo não pretende ser equivalente a [[Special:PrefixIndex]]; para este, consulte <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> com o parâmetro <kbd>apprefix</kbd>. O propósito deste módulo é semelhante a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: receber dados introduzidos pelo utilizador e devolver os títulos com melhor correspondência. Dependendo do motor de busca do servidor, isto pode incluir correções de erros ortográficos, evitar redirecionamentos, e outras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "O texto a ser pesquisado.",
-       "apihelp-query+prefixsearch-param-namespace": "Os espaços nominais onde realizar a pesquisa.",
+       "apihelp-query+prefixsearch-param-namespace": "Os espaços nominais onde realizar a pesquisa. Ignorados se <var>$1search</var> começar com um prefixo de espaço nominal válido.",
        "apihelp-query+prefixsearch-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-query+prefixsearch-param-offset": "O número de resultados a serem omitidos.",
        "apihelp-query+prefixsearch-example-simple": "Procurar os títulos de página que começam por <kbd>meaning</kbd>.",
index fc0de4e..96ff10f 100644 (file)
        "apihelp-query+recentchanges-paramvalue-prop-sizes": "{{doc-apihelp-paramvalue|query+recentchanges|prop|sizes}}",
        "apihelp-query+recentchanges-paramvalue-prop-redirect": "{{doc-apihelp-paramvalue|query+recentchanges|prop|redirect}}",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "{{doc-apihelp-paramvalue|query+recentchanges|prop|patrolled}}",
+       "apihelp-query+recentchanges-paramvalue-prop-autopatrolled": "{{doc-apihelp-paramvalue|query+recentchanges|prop|autopatrolled}}",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "{{doc-apihelp-paramvalue|query+recentchanges|prop|loginfo}}",
        "apihelp-query+recentchanges-paramvalue-prop-tags": "{{doc-apihelp-paramvalue|query+recentchanges|prop|tags}}",
        "apihelp-query+recentchanges-paramvalue-prop-sha1": "{{doc-apihelp-paramvalue|query+recentchanges|prop|sha1}}",
        "apihelp-query+usercontribs-paramvalue-prop-sizediff": "{{doc-apihelp-paramvalue|query+usercontribs|prop|sizediff}}",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "{{doc-apihelp-paramvalue|query+usercontribs|prop|flags}}",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "{{doc-apihelp-paramvalue|query+usercontribs|prop|patrolled}}",
+       "apihelp-query+usercontribs-paramvalue-prop-autopatrolled": "{{doc-apihelp-paramvalue|query+usercontribs|prop|autopatrolled}}",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "{{doc-apihelp-paramvalue|query+usercontribs|prop|tags}}",
        "apihelp-query+usercontribs-param-show": "{{doc-apihelp-param|query+usercontribs|show|params=* $1 - Value of [[mw:Manual:$RCMaxAge|$RCMaxAge]]|paramstart=2}}",
        "apihelp-query+usercontribs-param-tag": "{{doc-apihelp-param|query+usercontribs|tag}}",
        "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|query+watchlist|prop|parsedcomment}}",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+watchlist|prop|timestamp}}",
        "apihelp-query+watchlist-paramvalue-prop-patrol": "{{doc-apihelp-paramvalue|query+watchlist|prop|patrol}}",
+       "apihelp-query+watchlist-paramvalue-prop-autopatrol": "{{doc-apihelp-paramvalue|query+watchlist|prop|autopatrol}}",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "{{doc-apihelp-paramvalue|query+watchlist|prop|sizes}}",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "{{doc-apihelp-paramvalue|query+watchlist|prop|notificationtimestamp}}",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "{{doc-apihelp-paramvalue|query+watchlist|prop|loginfo}}",
index 3dacf6a..b051120 100644 (file)
@@ -74,6 +74,10 @@ class RecentChange {
        const SRC_EXTERNAL = 'mw.external'; // obsolete
        const SRC_CATEGORIZE = 'mw.categorize';
 
+       const PRC_UNPATROLLED = 0;
+       const PRC_PATROLLED = 1;
+       const PRC_AUTOPATROLLED = 2;
+
        public $mAttribs = [];
        public $mExtra = [];
 
index b30b82d..5b6088d 100644 (file)
@@ -1295,20 +1295,9 @@ class ChangeTags {
                );
        }
 
-       /**
-        * @see listSoftwareActivatedTags
-        * @deprecated since 1.28 call listSoftwareActivatedTags directly
-        * @return array
-        */
-       public static function listExtensionActivatedTags() {
-               wfDeprecated( __METHOD__, '1.28' );
-               return self::listSoftwareActivatedTags();
-       }
-
        /**
         * Basically lists defined tags which count even if they aren't applied to anything.
-        * It returns a union of the results of listExplicitlyDefinedTags() and
-        * listExtensionDefinedTags().
+        * It returns a union of the results of listExplicitlyDefinedTags()
         *
         * @return string[] Array of strings: tags
         */
@@ -1385,18 +1374,6 @@ class ChangeTags {
                );
        }
 
-       /**
-        * Call listSoftwareDefinedTags directly
-        *
-        * @see listSoftwareDefinedTags
-        * @deprecated since 1.28
-        * @return array
-        */
-       public static function listExtensionDefinedTags() {
-               wfDeprecated( __METHOD__, '1.28' );
-               return self::listSoftwareDefinedTags();
-       }
-
        /**
         * Invalidates the short-term cache of defined tags used by the
         * list*DefinedTags functions, as well as the tag statistics cache.
index 2587b1d..a1943be 100644 (file)
@@ -7,7 +7,7 @@ $GLOBALS['IP'] = __DIR__ . '/../../';
 require_once __DIR__ . '/../AutoLoader.php';
 
 /**
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class ComposerHookHandler {
index 9f60394..168336b 100644 (file)
@@ -5,7 +5,7 @@ use Composer\Package\Package;
 use Composer\Semver\Constraint\Constraint;
 
 /**
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class ComposerPackageModifier {
index a0d31cf..2194bed 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class ComposerVersionNormalizer {
index 6e171d5..3947f4b 100644 (file)
@@ -27,7 +27,7 @@ use Wikimedia\Rdbms\LoadBalancer;
  * @file
  * @ingroup Database
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Daniel Kinzler
  */
 abstract class DBAccessBase implements IDBAccessObject {
index 9b58f92..af1743e 100644 (file)
@@ -430,17 +430,6 @@ class HTMLForm extends ContextSource {
                return $this->displayFormat;
        }
 
-       /**
-        * Test if displayFormat is 'vform'
-        * @since 1.22
-        * @deprecated since 1.25
-        * @return bool
-        */
-       public function isVForm() {
-               wfDeprecated( __METHOD__, '1.25' );
-               return false;
-       }
-
        /**
         * Get the HTMLFormField subclass for this descriptor.
         *
index 325526b..7bf5f9e 100644 (file)
@@ -37,11 +37,6 @@ class VFormHTMLForm extends HTMLForm {
         */
        protected $displayFormat = 'vform';
 
-       public function isVForm() {
-               wfDeprecated( __METHOD__, '1.25' );
-               return true;
-       }
-
        public static function loadInputFromParameters( $fieldname, $descriptor,
                HTMLForm $parent = null
        ) {
index 0d55454..7a1aba6 100644 (file)
@@ -1263,4 +1263,23 @@ abstract class DatabaseUpdater {
                $this->output( "done.\n" );
        }
 
+       /**
+        * Populate ar_rev_id, then make it not nullable
+        * @since 1.31
+        */
+        protected function populateArchiveRevId() {
+                $info = $this->db->fieldInfo( 'archive', 'ar_rev_id', __METHOD__ );
+                if ( !$info ) {
+                        throw new MWException( 'Missing ar_rev_id field of archive table. Should not happen.' );
+                }
+                if ( $info->isNullable() ) {
+                        $this->output( "Populating ar_rev_id.\n" );
+                        $task = $this->maintenance->runChild( 'PopulateArchiveRevId', 'populateArchiveRevId.php' );
+                        if ( $task->execute() ) {
+                                $this->applyPatch( 'patch-ar_rev_id-not-null.sql', false,
+                                        'Making ar_rev_id not nullable' );
+                        }
+                }
+        }
+
 }
index 908dc94..2d245a7 100644 (file)
@@ -108,6 +108,9 @@ class MssqlUpdater extends DatabaseUpdater {
 
                        // Should have been in 1.30
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+                       // This field was added in 1.31, but is put here so it can be used by 'migrateComments'
+                       [ 'addField', 'image', 'img_description_id', 'patch-image-img_description_id.sql' ],
+                       // Should have been in 1.30
                        [ 'migrateComments' ],
 
                        // 1.31
@@ -120,6 +123,9 @@ class MssqlUpdater extends DatabaseUpdater {
                        [ 'addTable', 'actor', 'patch-actor-table.sql' ],
                        [ 'migrateActors' ],
                        [ 'modifyField', 'revision', 'rev_text_id', 'patch-rev_text_id-default.sql' ],
+                       [ 'modifyTable', 'site_stats', 'patch-site_stats-modify.sql' ],
+                       [ 'populateArchiveRevId' ],
+                       [ 'modifyField', 'recentchanges', 'rc_patrolled', 'patch-rc_patrolled_type.sql' ],
                ];
        }
 
index 710cebf..73a9689 100644 (file)
@@ -325,6 +325,10 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false,
                                'patch-user_properties-fix-pk.sql' ],
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+
+                       // This field was added in 1.31, but is put here so it can be used by 'migrateComments'
+                       [ 'addField', 'image', 'img_description_id', 'patch-image-img_description_id.sql' ],
+
                        [ 'migrateComments' ],
                        [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false,
                                'patch-l10n_cache-primary-key.sql' ],
@@ -340,6 +344,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'addTable', 'actor', 'patch-actor-table.sql' ],
                        [ 'migrateActors' ],
                        [ 'modifyField', 'revision', 'rev_text_id', 'patch-rev_text_id-default.sql' ],
+                       [ 'modifyTable', 'site_stats', 'patch-site_stats-modify.sql' ],
+                       [ 'populateArchiveRevId' ],
                ];
        }
 
index 43b74f1..ab349f7 100644 (file)
@@ -129,6 +129,9 @@ class OracleUpdater extends DatabaseUpdater {
 
                        // Should have been in 1.30
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+                       // This field was added in 1.31, but is put here so it can be used by 'migrateComments'
+                       [ 'addField', 'image', 'img_description_id', 'patch-image-img_description_id.sql' ],
+                       // Should have been in 1.30
                        [ 'migrateComments' ],
 
                        // 1.31
@@ -140,6 +143,8 @@ class OracleUpdater extends DatabaseUpdater {
                        [ 'migrateArchiveText' ],
                        [ 'addTable', 'actor', 'patch-actor-table.sql' ],
                        [ 'migrateActors' ],
+                       [ 'modifyTable', 'site_stats', 'patch-site_stats-modify.sql' ],
+                       [ 'populateArchiveRevId' ],
 
                        // KEEP THIS AT THE BOTTOM!!
                        [ 'doRebuildDuplicateFunction' ],
index 21d83d2..16b47e2 100644 (file)
@@ -46,7 +46,7 @@ class PostgresInstaller extends DatabaseInstaller {
                '_InstallUser' => 'postgres',
        ];
 
-       public static $minimumVersion = '8.3';
+       public static $minimumVersion = '9.2';
        protected static $notMiniumumVerisonMessage = 'config-postgres-old';
        public $maxRoleSearchDepth = 5;
 
index 48f47f5..c829d51 100644 (file)
@@ -294,7 +294,7 @@ class PostgresUpdater extends DatabaseUpdater {
                                [ 'log_timestamp', 'timestamptz_ops', 'btree', 0 ],
                        ],
                        'CREATE INDEX "logging_times" ON "logging" USING "btree" ("log_timestamp")' ],
-                       [ 'dropIndex', 'oldimage', 'oi_name' ],
+                       [ 'dropPgIndex', 'oldimage', 'oi_name' ],
                        [ 'checkIndex', 'oi_name_archive_name', [
                                [ 'oi_name', 'text_ops', 'btree', 0 ],
                                [ 'oi_archive_name', 'text_ops', 'btree', 0 ],
@@ -353,7 +353,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        [ 'checkOiNameConstraint' ],
                        [ 'checkPageDeletedTrigger' ],
                        [ 'checkRevUserFkey' ],
-                       [ 'dropIndex', 'ipblocks', 'ipb_address' ],
+                       [ 'dropPgIndex', 'ipblocks', 'ipb_address' ],
                        [ 'checkIndex', 'ipb_address_unique', [
                                [ 'ipb_address', 'text_ops', 'btree', 0 ],
                                [ 'ipb_user', 'int4_ops', 'btree', 0 ],
@@ -481,6 +481,10 @@ class PostgresUpdater extends DatabaseUpdater {
                        [ 'changeNullableField', 'protected_titles', 'pt_reason', 'NOT NULL', true ],
                        [ 'addPgField', 'protected_titles', 'pt_reason_id', 'INTEGER NOT NULL DEFAULT 0' ],
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+
+                       // This field was added in 1.31, but is put here so it can be used by 'migrateComments'
+                       [ 'addPgField', 'image', 'img_description_id', 'INTEGER NOT NULL DEFAULT 0' ],
+
                        [ 'migrateComments' ],
                        [ 'addIndex', 'site_stats', 'site_stats_pkey', 'patch-site_stats-pk.sql' ],
                        [ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ],
@@ -533,6 +537,8 @@ class PostgresUpdater extends DatabaseUpdater {
                        [ 'addPgIndex', 'logging', 'logging_actor_type_time', '( log_actor, log_type, log_timestamp )' ],
                        [ 'addPgIndex', 'logging', 'logging_actor_time', '( log_actor, log_timestamp )' ],
                        [ 'migrateActors' ],
+                       [ 'modifyTable', 'site_stats', 'patch-site_stats-modify.sql' ],
+                       [ 'populateArchiveRevId' ],
                ];
        }
 
@@ -1060,7 +1066,7 @@ END;
                }
        }
 
-       protected function dropIndex( $table, $index, $patch = '', $fullpath = false ) {
+       protected function dropPgIndex( $table, $index ) {
                if ( $this->db->indexExists( $table, $index ) ) {
                        $this->output( "Dropping obsolete index '$index'\n" );
                        $this->db->query( "DROP INDEX \"" . $index . "\"" );
index 7ed6f86..309f30f 100644 (file)
@@ -190,6 +190,10 @@ class SqliteUpdater extends DatabaseUpdater {
                        [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false,
                                'patch-user_properties-fix-pk.sql' ],
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+
+                       // This field was added in 1.31, but is put here so it can be used by 'migrateComments'
+                       [ 'addField', 'image', 'img_description_id', 'patch-image-img_description_id.sql' ],
+
                        [ 'migrateComments' ],
                        [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false,
                                'patch-l10n_cache-primary-key.sql' ],
@@ -204,6 +208,8 @@ class SqliteUpdater extends DatabaseUpdater {
                        [ 'addTable', 'actor', 'patch-actor-table.sql' ],
                        [ 'migrateActors' ],
                        [ 'modifyField', 'revision', 'rev_text_id', 'patch-rev_text_id-default.sql' ],
+                       [ 'modifyTable', 'site_stats', 'patch-site_stats-modify.sql' ],
+                       [ 'populateArchiveRevId' ],
                ];
        }
 
index 68b4720..26cdb59 100644 (file)
@@ -86,7 +86,7 @@
        "config-extensions": "Olekeni",
        "config-skins": "Temey",
        "config-install-step-done": "qeyd ke",
-       "config-install-step-failed": "nêbı",
+       "config-install-step-failed": "ebe ser nêkewt",
        "config-install-schema": "Şema dek",
        "config-install-pg-commit": "Vırnayışa cemaati",
        "config-install-tables": "Tabloy dek",
index c07bdc6..8f9e592 100644 (file)
        "config-cc-again": "Elegir otra vez...",
        "config-cc-not-chosen": "Elige la licencia Creative Commons que desees y haz clic en \"proceed\".",
        "config-advanced-settings": "Configuración avanzada",
-       "config-cache-options": "Configuración de la caché de objetos:",
+       "config-cache-options": "Configuración de la antememoria de objetos:",
        "config-cache-help": "El almacenamiento en caché de objetos se utiliza para mejorar la velocidad de MediaWiki mediante el almacenamiento en caché los datos usados más frecuentemente.\nA los sitios medianos y grandes se les recomienda que permitirlo. También es beneficioso para los sitios pequeños.",
        "config-cache-none": "Sin almacenamiento en caché (no se pierde ninguna funcionalidad, pero la velocidad puede resentirse en sitios grandes)",
        "config-cache-accel": "Almacenamiento en caché de objetos PHP (APC, APCu, XCache o WinCache)",
index 2d692ed..b6b1357 100644 (file)
        "config-install-mainpage-failed": "Não foi possível inserir a página principal: $1",
        "config-install-done": "<strong>Parabéns!</strong>\nVocê instalou o MediaWiki.\n\nO instalador gerou um arquivo <code>LocalSettings.php</code>.\nEste arquivo contém todas as suas configurações.\n\nVocê precisa fazer o download desse arquivo e colocá-lo na raiz da sua instalação (o mesmo diretório onde está o arquivo index.php). O download deve iniciar automaticamente.\n\nSe o download não foi iniciado ou se ele foi cancelado, você pode recomeçá-lo clicando no link abaixo:\n\n$3\n\n<strong>Nota:</strong> Se você não fizer isso agora, o arquivo de configuração que foi gerado não estará mais disponível se você sair da instalação sem fazer o download.\n\nQuando isso tiver sido feito, você pode <strong>[$2 entrar na sua wiki]</strong>.",
        "config-install-done-path": "<strong>Parabéns!</strong>\nVocê instalou o MediaWiki.\n\nO instalador gerou um arquivo <code>LocalSettings.php</code>.\nEste arquivo contém todas as suas configurações.\n\nVocê precisa fazer o download desse arquivo e colocá-lo em <code>$4</code>. O download deve iniciar automaticamente.\n\nSe o download não foi iniciado ou se ele foi cancelado, você pode recomeçá-lo clicando no link abaixo:\n\n$3\n\n<strong>Nota:</strong> Se você não fizer isso agora, o arquivo de configuração que foi gerado não estará mais disponível se você sair da instalação sem fazer o download.\n\nQuando isso tiver sido feito, você pode <strong>[$2 entrar na sua wiki]</strong>.",
+       "config-install-success": "O MediaWiki foi instalado. Já pode visitar <$1$2> para ver a sua wiki.\nSe tiver dúvidas, veja a nossa lista de perguntas frequentes,\n<https://www.mediawiki.org/wiki/Manual:FAQ/pt-br>, ou utilize um dos fóruns de suporte indicados nessa página.",
        "config-download-localsettings": "Baixar <code>LocalSettings.php</code>",
        "config-help": "ajuda",
        "config-help-tooltip": "clique para expandir",
index 3bfa1a0..f57bcd1 100644 (file)
@@ -72,7 +72,7 @@
        "config-apc": "[http://www.php.net/apc APC] встановлено",
        "config-apcu": "[http://www.php.net/apcu APCu] встановлено",
        "config-wincache": "[https://www.iis.net/download/WinCacheForPhp WinCache] встановлено",
-       "config-no-cache-apcu": "<strong>Увага:</strong> Не вдалося знайти [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] чи [http://www.iis.net/download/WinCacheForPhp WinCache].\nКешування об'єктів не ввімкнено.",
+       "config-no-cache-apcu": "<strong>Увага:</strong> Не вдалося знайти [http://www.php.net/apcu APCu] чи [http://www.iis.net/download/WinCacheForPhp WinCache].\nКешування об'єктів не ввімкнено.",
        "config-mod-security": "'''Увага''': на Вашому веб-сервері увімкнено [https://modsecurity.org/ mod_security]. У разі неправильних налаштувать, він може викликати проблеми MediaWiki або іншого ПЗ, яке дозволяє користувачам надсилати довільний вміст.\nЗверніться до [https://modsecurity.org/documentation/ документації mod_security] або підтримки Вашого хостера, якщо під час роботи виникають незрозумілі помилки.",
        "config-diff3-bad": "GNU diff3 не знайдено.",
        "config-git": "Знайшов програму управління версіями Git: <code>$1</code>.",
        "config-cache-options": "Налаштування кешування об'єктів:",
        "config-cache-help": "Кешування об'єктів використовується для покращення швидкодії MediaWiki методом кешування часто використовуваних даних.\nЗаохочується увімкнення цієї можливості для середніх і великих сайтів, малі сайти також можуть відчути її перевагу.",
        "config-cache-none": "Без кешування (жодні функції не втрачаються, але впливає на швидкодію великих вікі-сайтів)",
-       "config-cache-accel": "PHP кешування об'єктів (APC, APCu, XCache чи WinCache)",
+       "config-cache-accel": "PHP кешування об'єктів (APC, APCu чи WinCache)",
        "config-cache-memcached": "Використовувати Memcached (вимагає додаткової установки і налаштування)",
        "config-memcached-servers": "Сервери Memcached:",
        "config-memcached-help": "Список IP-адрес, що викоритовує Memcached.\nВкажіть по одному в рядку, разом з портами. Наприклад:\n 127.0.0.1:11211\n 192.168.1.25:1234",
index da4ec23..8cc14e5 100644 (file)
 /**
  * Job for updating user activity like "last viewed" timestamps
  *
+ * Job parameters include:
+ *   - type: one of (updateWatchlistNotification) [required]
+ *   - userid: affected user ID [required]
+ *   - notifTime: timestamp to set watchlist entries to [required]
+ *   - curTime: UNIX timestamp of the event that triggered this job [required]
+ *
  * @ingroup JobQueue
  * @since 1.26
  */
@@ -29,8 +35,10 @@ class ActivityUpdateJob extends Job {
        function __construct( Title $title, array $params ) {
                parent::__construct( 'activityUpdateJob', $title, $params );
 
-               if ( !isset( $params['type'] ) ) {
-                       throw new InvalidArgumentException( "Missing 'type' parameter." );
+               static $required = [ 'type', 'userid', 'notifTime', 'curTime' ];
+               $missing = implode( ', ', array_diff( $required, array_keys( $this->params ) ) );
+               if ( $missing != '' ) {
+                       throw new InvalidArgumentException( "Missing paramter(s) $missing" );
                }
 
                $this->removeDuplicates = true;
@@ -40,8 +48,7 @@ class ActivityUpdateJob extends Job {
                if ( $this->params['type'] === 'updateWatchlistNotification' ) {
                        $this->updateWatchlistNotification();
                } else {
-                       throw new InvalidArgumentException(
-                               "Invalid 'type' parameter '{$this->params['type']}'." );
+                       throw new InvalidArgumentException( "Invalid 'type' '{$this->params['type']}'." );
                }
 
                return true;
diff --git a/includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php b/includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php
new file mode 100644 (file)
index 0000000..94c1351
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+/**
+ * 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.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup JobQueue
+ */
+
+use MediaWiki\MediaWikiServices;
+
+/**
+ * Job for clearing all of the "last viewed" timestamps for a user's watchlist
+ *
+ * Job parameters include:
+ *   - userId: affected user ID [required]
+ *   - casTime: UNIX timestamp of the event that triggered this job [required]
+ *
+ * @ingroup JobQueue
+ * @since 1.31
+ */
+class ClearWatchlistNotificationsJob extends Job {
+       function __construct( Title $title, array $params ) {
+               parent::__construct( 'clearWatchlistNotifications', $title, $params );
+
+               static $required = [ 'userId', 'casTime' ];
+               $missing = implode( ', ', array_diff( $required, array_keys( $this->params ) ) );
+               if ( $missing != '' ) {
+                       throw new InvalidArgumentException( "Missing paramter(s) $missing" );
+               }
+
+               $this->removeDuplicates = true;
+       }
+
+       public function run() {
+               $services = MediaWikiServices::getInstance();
+               $lbFactory = $services->getDBLoadBalancerFactory();
+               $rowsPerQuery = $services->getMainConfig()->get( 'UpdateRowsPerQuery' );
+
+               $dbw = $lbFactory->getMainLB()->getConnection( DB_MASTER );
+               $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ );
+
+               $asOfTimes = array_unique( $dbw->selectFieldValues(
+                       'watchlist',
+                       'wl_notificationtimestamp',
+                       [ 'wl_user' => $this->params['userId'], 'wl_notificationtimestamp IS NOT NULL' ],
+                       __METHOD__,
+                       [ 'ORDER BY' => 'wl_notificationtimestamp DESC' ]
+               ) );
+
+               foreach ( array_chunk( $asOfTimes, $rowsPerQuery ) as $asOfTimeBatch ) {
+                       $dbw->update(
+                               'watchlist',
+                               [ 'wl_notificationtimestamp' => null ],
+                               [
+                                       'wl_user' => $this->params['userId'],
+                                       'wl_notificationtimestamp' => $asOfTimeBatch,
+                                       // New notifications since the reset should not be cleared
+                                       'wl_notificationtimestamp < ' .
+                                               $dbw->addQuotes( $dbw->timestamp( $this->params['casTime'] ) )
+                               ],
+                               __METHOD__
+                       );
+                       $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
+               }
+       }
+}
index 25938f1..dde26c7 100644 (file)
@@ -35,6 +35,7 @@ use BagOStuff;
 use HashBagOStuff;
 use LogicException;
 use InvalidArgumentException;
+use UnexpectedValueException;
 use Exception;
 use RuntimeException;
 
@@ -282,6 +283,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                $this->flags |= self::DBO_TRX;
                        }
                }
+               // Disregard deprecated DBO_IGNORE flag (T189999)
+               $this->flags &= ~self::DBO_IGNORE;
 
                $this->sessionVars = $params['variables'];
 
@@ -537,32 +540,6 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $res;
        }
 
-       /**
-        * Turns on (false) or off (true) the automatic generation and sending
-        * of a "we're sorry, but there has been a database error" page on
-        * database errors. Default is on (false). When turned off, the
-        * code should use lastErrno() and lastError() to handle the
-        * situation as appropriate.
-        *
-        * Do not use this function outside of the Database classes.
-        *
-        * @param null|bool $ignoreErrors
-        * @return bool The previous value of the flag.
-        */
-       protected function ignoreErrors( $ignoreErrors = null ) {
-               $res = $this->getFlag( self::DBO_IGNORE );
-               if ( $ignoreErrors !== null ) {
-                       // setFlag()/clearFlag() do not allow DBO_IGNORE changes for sanity
-                       if ( $ignoreErrors ) {
-                               $this->flags |= self::DBO_IGNORE;
-                       } else {
-                               $this->flags &= ~self::DBO_IGNORE;
-                       }
-               }
-
-               return $res;
-       }
-
        public function trxLevel() {
                return $this->trxLevel;
        }
@@ -719,7 +696,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        public function setFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
                if ( ( $flag & self::DBO_IGNORE ) ) {
-                       throw new \UnexpectedValueException( "Modifying DBO_IGNORE is not allowed." );
+                       throw new UnexpectedValueException( "Modifying DBO_IGNORE is not allowed." );
                }
 
                if ( $remember === self::REMEMBER_PRIOR ) {
@@ -730,7 +707,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        public function clearFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
                if ( ( $flag & self::DBO_IGNORE ) ) {
-                       throw new \UnexpectedValueException( "Modifying DBO_IGNORE is not allowed." );
+                       throw new UnexpectedValueException( "Modifying DBO_IGNORE is not allowed." );
                }
 
                if ( $remember === self::REMEMBER_PRIOR ) {
@@ -1305,7 +1282,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @throws DBQueryError
         */
        public function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) {
-               if ( $this->ignoreErrors() || $tempIgnore ) {
+               if ( $tempIgnore ) {
                        $this->queryLogger->debug( "SQL ERROR (ignored): $error\n" );
                } else {
                        $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5 * 1024 );
@@ -3417,10 +3394,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->trxWriteAdjQueryCount = 0;
                $this->trxWriteCallers = [];
                // First SELECT after BEGIN will establish the snapshot in REPEATABLE-READ.
-               // Get an estimate of the replica DB lag before then, treating estimate staleness
-               // as lag itself just to be safe
-               $status = $this->getApproximateLagStatus();
-               $this->trxReplicaLag = $status['lag'] + ( microtime( true ) - $status['since'] );
+               // Get an estimate of the replication lag before any such queries.
+               $this->trxReplicaLag = $this->getApproximateLagStatus()['lag'];
                // T147697: make explicitTrxActive() return true until begin() finishes. This way, no
                // caller will think its OK to muck around with the transaction just because startAtomic()
                // has not yet completed (e.g. setting trxAtomicLevels).
@@ -3723,7 +3698,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @return array|null ('lag': seconds or false on error, 'since': UNIX timestamp of BEGIN)
         * @since 1.27
         */
-       protected function getTransactionLagStatus() {
+       final protected function getTransactionLagStatus() {
                return $this->trxLevel
                        ? [ 'lag' => $this->trxReplicaLag, 'since' => $this->trxTimestamp() ]
                        : null;
index 286d658..b079eb0 100644 (file)
@@ -73,6 +73,9 @@ abstract class DatabaseMysqlBase extends Database {
        // Cache getServerId() for 24 hours
        const SERVER_ID_CACHE_TTL = 86400;
 
+       /** @var float Warn if lag estimates are made for transactions older than this many seconds */
+       const LAG_STALE_WARN_THRESHOLD = 0.100;
+
        /**
         * Additional $params include:
         *   - lagDetectionMethod : set to one of (Seconds_Behind_Master,pt-heartbeat).
@@ -749,6 +752,7 @@ abstract class DatabaseMysqlBase extends Database {
        protected function getLagFromSlaveStatus() {
                $res = $this->query( 'SHOW SLAVE STATUS', __METHOD__ );
                $row = $res ? $res->fetchObject() : false;
+               // If the server is not replicating, there will be no row
                if ( $row && strval( $row->Seconds_Behind_Master ) !== '' ) {
                        return intval( $row->Seconds_Behind_Master );
                }
@@ -762,6 +766,20 @@ abstract class DatabaseMysqlBase extends Database {
        protected function getLagFromPtHeartbeat() {
                $options = $this->lagDetectionOptions;
 
+               $staleness = $this->trxLevel
+                       ? microtime( true ) - $this->trxTimestamp()
+                       : 0;
+               if ( $staleness > self::LAG_STALE_WARN_THRESHOLD ) {
+                       // Avoid returning higher and higher lag value due to snapshot age
+                       // given that the isolation level will typically be REPEATABLE-READ
+                       $this->queryLogger->warning(
+                               "Using cached lag value for {db_server} due to active transaction",
+                               $this->getLogContext( [ 'method' => __METHOD__ ] )
+                       );
+
+                       return $this->getTransactionLagStatus()['lag'];
+               }
+
                if ( isset( $options['conds'] ) ) {
                        // Best method for multi-DC setups: use logical channel names
                        $data = $this->getHeartbeatData( $options['conds'] );
@@ -856,7 +874,8 @@ abstract class DatabaseMysqlBase extends Database {
                        // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
                        // percision field is not supported in MySQL <= 5.5.
                        $res = $this->query(
-                               "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1"
+                               "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1",
+                               __METHOD__
                        );
                        $row = $res ? $res->fetchObject() : false;
                } finally {
@@ -901,27 +920,29 @@ abstract class DatabaseMysqlBase extends Database {
                        $rpos = $this->getReplicaPos();
                        $gtidsWait = $rpos ? MySQLMasterPos::getCommonDomainGTIDs( $pos, $rpos ) : [];
                        if ( !$gtidsWait ) {
+                               $this->queryLogger->error(
+                                       "No GTIDs with the same domain between master ($pos) and replica ($rpos)",
+                                       $this->getLogContext( [
+                                               'method' => __METHOD__,
+                                       ] )
+                               );
+
                                return -1; // $pos is from the wrong cluster?
                        }
                        // Wait on the GTID set (MariaDB only)
                        $gtidArg = $this->addQuotes( implode( ',', $gtidsWait ) );
-                       if ( strpos( $gtidArg, ':' ) !== false ) {
-                               // MySQL GTIDs, e.g "source_id:transaction_id"
-                               $res = $this->doQuery( "SELECT WAIT_FOR_EXECUTED_GTID_SET($gtidArg, $timeout)" );
-                       } else {
-                               // MariaDB GTIDs, e.g."domain:server:sequence"
-                               $res = $this->doQuery( "SELECT MASTER_GTID_WAIT($gtidArg, $timeout)" );
-                       }
+                       $res = $this->doQuery( "SELECT MASTER_GTID_WAIT($gtidArg, $timeout)" );
                } else {
                        // Wait on the binlog coordinates
                        $encFile = $this->addQuotes( $pos->getLogFile() );
-                       $encPos = intval( $pos->getLogPosition()[$pos::CORD_EVENT] );
+                       $encPos = intval( $pos->pos[1] );
                        $res = $this->doQuery( "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)" );
                }
 
                $row = $res ? $this->fetchRow( $res ) : false;
                if ( !$row ) {
-                       throw new DBExpectedError( $this, "Replication wait failed: {$this->lastError()}" );
+                       throw new DBExpectedError( $this,
+                               "MASTER_POS_WAIT() or MASTER_GTID_WAIT() failed: {$this->lastError()}" );
                }
 
                // Result can be NULL (error), -1 (timeout), or 0+ per the MySQL manual
@@ -953,23 +974,21 @@ abstract class DatabaseMysqlBase extends Database {
         * @return MySQLMasterPos|bool
         */
        public function getReplicaPos() {
-               $now = microtime( true ); // as-of-time *before* fetching GTID variables
-
-               if ( $this->useGTIDs() ) {
-                       // Try to use GTIDs, fallbacking to binlog positions if not possible
-                       $data = $this->getServerGTIDs( __METHOD__ );
-                       // Use gtid_current_pos for MariaDB and gtid_executed for MySQL
-                       foreach ( [ 'gtid_current_pos', 'gtid_executed' ] as $name ) {
-                               if ( isset( $data[$name] ) && strlen( $data[$name] ) ) {
-                                       return new MySQLMasterPos( $data[$name], $now );
-                               }
+               $now = microtime( true );
+
+               if ( $this->useGTIDs ) {
+                       $res = $this->query( "SELECT @@global.gtid_slave_pos AS Value", __METHOD__ );
+                       $gtidRow = $this->fetchObject( $res );
+                       if ( $gtidRow && strlen( $gtidRow->Value ) ) {
+                               return new MySQLMasterPos( $gtidRow->Value, $now );
                        }
                }
 
-               $data = $this->getServerRoleStatus( 'SLAVE', __METHOD__ );
-               if ( $data && strlen( $data['Relay_Master_Log_File'] ) ) {
+               $res = $this->query( 'SHOW SLAVE STATUS', __METHOD__ );
+               $row = $this->fetchObject( $res );
+               if ( $row && strlen( $row->Relay_Master_Log_File ) ) {
                        return new MySQLMasterPos(
-                               "{$data['Relay_Master_Log_File']}/{$data['Exec_Master_Log_Pos']}",
+                               "{$row->Relay_Master_Log_File}/{$row->Exec_Master_Log_Pos}",
                                $now
                        );
                }
@@ -983,97 +1002,23 @@ abstract class DatabaseMysqlBase extends Database {
         * @return MySQLMasterPos|bool
         */
        public function getMasterPos() {
-               $now = microtime( true ); // as-of-time *before* fetching GTID variables
-
-               $pos = false;
-               if ( $this->useGTIDs() ) {
-                       // Try to use GTIDs, fallbacking to binlog positions if not possible
-                       $data = $this->getServerGTIDs( __METHOD__ );
-                       // Use gtid_current_pos for MariaDB and gtid_executed for MySQL
-                       foreach ( [ 'gtid_current_pos', 'gtid_executed' ] as $name ) {
-                               if ( isset( $data[$name] ) && strlen( $data[$name] ) ) {
-                                       $pos = new MySQLMasterPos( $data[$name], $now );
-                                       break;
-                               }
-                       }
-                       // Filter domains that are inactive or not relevant to the session
-                       if ( $pos ) {
-                               $pos->setActiveOriginServerId( $this->getServerId() );
-                               $pos->setActiveOriginServerUUID( $this->getServerUUID() );
-                               if ( isset( $data['gtid_domain_id'] ) ) {
-                                       $pos->setActiveDomain( $data['gtid_domain_id'] );
-                               }
-                       }
-               }
+               $now = microtime( true );
 
-               if ( !$pos ) {
-                       $data = $this->getServerRoleStatus( 'MASTER', __METHOD__ );
-                       if ( $data && strlen( $data['File'] ) ) {
-                               $pos = new MySQLMasterPos( "{$data['File']}/{$data['Position']}", $now );
+               if ( $this->useGTIDs ) {
+                       $res = $this->query( "SELECT @@global.gtid_binlog_pos AS Value", __METHOD__ );
+                       $gtidRow = $this->fetchObject( $res );
+                       if ( $gtidRow && strlen( $gtidRow->Value ) ) {
+                               return new MySQLMasterPos( $gtidRow->Value, $now );
                        }
                }
 
-               return $pos;
-       }
-
-       /**
-        * @return int
-        * @throws DBQueryError If the variable doesn't exist for some reason
-        */
-       protected function getServerId() {
-               return $this->srvCache->getWithSetCallback(
-                       $this->srvCache->makeGlobalKey( 'mysql-server-id', $this->getServer() ),
-                       self::SERVER_ID_CACHE_TTL,
-                       function () {
-                               $res = $this->query( "SELECT @@server_id AS id", __METHOD__ );
-                               return intval( $this->fetchObject( $res )->id );
-                       }
-               );
-       }
-
-       /**
-        * @return string|null
-        */
-       protected function getServerUUID() {
-               return $this->srvCache->getWithSetCallback(
-                       $this->srvCache->makeGlobalKey( 'mysql-server-uuid', $this->getServer() ),
-                       self::SERVER_ID_CACHE_TTL,
-                       function () {
-                               $res = $this->query( "SHOW GLOBAL VARIABLES LIKE 'server_uuid'" );
-                               $row = $this->fetchObject( $res );
-
-                               return $row ? $row->Value : null;
-                       }
-               );
-       }
-
-       /**
-        * @param string $fname
-        * @return string[]
-        */
-       protected function getServerGTIDs( $fname = __METHOD__ ) {
-               $map = [];
-               // Get global-only variables like gtid_executed
-               $res = $this->query( "SHOW GLOBAL VARIABLES LIKE 'gtid_%'", $fname );
-               foreach ( $res as $row ) {
-                       $map[$row->Variable_name] = $row->Value;
-               }
-               // Get session-specific (e.g. gtid_domain_id since that is were writes will log)
-               $res = $this->query( "SHOW SESSION VARIABLES LIKE 'gtid_%'", $fname );
-               foreach ( $res as $row ) {
-                       $map[$row->Variable_name] = $row->Value;
+               $res = $this->query( 'SHOW MASTER STATUS', __METHOD__ );
+               $row = $this->fetchObject( $res );
+               if ( $row && strlen( $row->File ) ) {
+                       return new MySQLMasterPos( "{$row->File}/{$row->Position}", $now );
                }
 
-               return $map;
-       }
-
-       /**
-        * @param string $role One of "MASTER"/"SLAVE"
-        * @param string $fname
-        * @return string[] Latest available server status row
-        */
-       protected function getServerRoleStatus( $role, $fname = __METHOD__ ) {
-               return $this->query( "SHOW $role STATUS", $fname )->fetchRow() ?: [];
+               return false;
        }
 
        public function serverIsReadOnly() {
@@ -1518,12 +1463,6 @@ abstract class DatabaseMysqlBase extends Database {
                return 'CAST( ' . $field . ' AS SIGNED )';
        }
 
-       /*
-        * @return bool Whether GTID support is used (mockable for testing)
-        */
-       protected function useGTIDs() {
-               return $this->useGTIDs;
-       }
 }
 
 class_alias( DatabaseMysqlBase::class, 'DatabaseMysqlBase' );
index 07f1e23..545c8e3 100644 (file)
@@ -1752,11 +1752,9 @@ interface IDatabase {
        public function ping( &$rtt = null );
 
        /**
-        * Get replica DB lag. Currently supported only by MySQL.
+        * Get the amount of replication lag for this database server
         *
-        * Note that this function will generate a fatal error on many
-        * installations. Most callers should use LoadBalancer::safeGetLag()
-        * instead.
+        * Callers should avoid using this method while a transaction is active
         *
         * @return int|bool Database replication lag in seconds or false on error
         * @throws DBError
index 38f2bd6..cdcb79c 100644 (file)
@@ -12,36 +12,16 @@ use UnexpectedValueException;
  *  - Binlog-based usage assumes single-source replication and non-hierarchical replication.
  *  - GTID-based usage allows getting/syncing with multi-source replication. It is assumed
  *    that GTID sets are complete (e.g. include all domains on the server).
- *
- * @see https://mariadb.com/kb/en/library/gtid/
- * @see https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.html
  */
 class MySQLMasterPos implements DBMasterPos {
-       /** @var int One of (BINARY_LOG, GTID_MYSQL, GTID_MARIA) */
-       private $style;
-       /** @var string|null Base name of all Binary Log files */
-       private $binLog;
-       /** @var int[]|null Binary Log position tuple (index number, event number) */
-       private $logPos;
-       /** @var string[] Map of (server_uuid/gtid_domain_id => GTID) */
-       private $gtids = [];
-       /** @var int|null Active GTID domain ID */
-       private $activeDomain;
-       /** @var int|null ID of the server were DB writes originate */
-       private $activeServerId;
-       /** @var string|null UUID of the server were DB writes originate */
-       private $activeServerUUID;
+       /** @var string|null Binlog file base name */
+       public $binlog;
+       /** @var int[]|null Binglog file position tuple */
+       public $pos;
+       /** @var string[] GTID list */
+       public $gtids = [];
        /** @var float UNIX timestamp */
-       private $asOfTime = 0.0;
-
-       const BINARY_LOG = 'binary-log';
-       const GTID_MARIA = 'gtid-maria';
-       const GTID_MYSQL = 'gtid-mysql';
-
-       /** @var int Key name of the binary log index number of a position tuple */
-       const CORD_INDEX = 0;
-       /** @var int Key name of the binary log event number of a position tuple */
-       const CORD_EVENT = 1;
+       public $asOfTime = 0.0;
 
        /**
         * @param string $position One of (comma separated GTID list, <binlog file>/<integer>)
@@ -58,38 +38,18 @@ class MySQLMasterPos implements DBMasterPos {
        protected function init( $position, $asOfTime ) {
                $m = [];
                if ( preg_match( '!^(.+)\.(\d+)/(\d+)$!', $position, $m ) ) {
-                       $this->binLog = $m[1]; // ideally something like host name
-                       $this->logPos = [ self::CORD_INDEX => (int)$m[2], self::CORD_EVENT => (int)$m[3] ];
-                       $this->style = self::BINARY_LOG;
+                       $this->binlog = $m[1]; // ideally something like host name
+                       $this->pos = [ (int)$m[2], (int)$m[3] ];
                } else {
                        $gtids = array_filter( array_map( 'trim', explode( ',', $position ) ) );
                        foreach ( $gtids as $gtid ) {
-                               $components = self::parseGTID( $gtid );
-                               if ( !$components ) {
+                               if ( !self::parseGTID( $gtid ) ) {
                                        throw new InvalidArgumentException( "Invalid GTID '$gtid'." );
                                }
-
-                               list( $domain, $pos ) = $components;
-                               if ( isset( $this->gtids[$domain] ) ) {
-                                       // For MySQL, handle the case where some past issue caused a gap in the
-                                       // executed GTID set, e.g. [last_purged+1,N-1] and [N+1,N+2+K]. Ignore the
-                                       // gap by using the GTID with the highest ending sequence number.
-                                       list( , $otherPos ) = self::parseGTID( $this->gtids[$domain] );
-                                       if ( $pos > $otherPos ) {
-                                               $this->gtids[$domain] = $gtid;
-                                       }
-                               } else {
-                                       $this->gtids[$domain] = $gtid;
-                               }
-
-                               if ( is_int( $domain ) ) {
-                                       $this->style = self::GTID_MARIA; // gtid_domain_id
-                               } else {
-                                       $this->style = self::GTID_MYSQL; // server_uuid
-                               }
+                               $this->gtids[] = $gtid;
                        }
                        if ( !$this->gtids ) {
-                               throw new InvalidArgumentException( "GTID set cannot be empty." );
+                               throw new InvalidArgumentException( "Got empty GTID set." );
                        }
                }
 
@@ -106,8 +66,8 @@ class MySQLMasterPos implements DBMasterPos {
                }
 
                // Prefer GTID comparisons, which work with multi-tier replication
-               $thisPosByDomain = $this->getActiveGtidCoordinates();
-               $thatPosByDomain = $pos->getActiveGtidCoordinates();
+               $thisPosByDomain = $this->getGtidCoordinates();
+               $thatPosByDomain = $pos->getGtidCoordinates();
                if ( $thisPosByDomain && $thatPosByDomain ) {
                        $comparisons = [];
                        // Check that this has positions reaching those in $pos for all domains in common
@@ -140,8 +100,8 @@ class MySQLMasterPos implements DBMasterPos {
                }
 
                // Prefer GTID comparisons, which work with multi-tier replication
-               $thisPosDomains = array_keys( $this->getActiveGtidCoordinates() );
-               $thatPosDomains = array_keys( $pos->getActiveGtidCoordinates() );
+               $thisPosDomains = array_keys( $this->getGtidCoordinates() );
+               $thatPosDomains = array_keys( $pos->getGtidCoordinates() );
                if ( $thisPosDomains && $thatPosDomains ) {
                        // Check that $this has a GTID for at least one domain also in $pos; due to MariaDB
                        // quirks, prior master switch-overs may result in inactive garbage GTIDs that cannot
@@ -158,119 +118,74 @@ class MySQLMasterPos implements DBMasterPos {
        }
 
        /**
-        * @return string|null Base name of binary log files
-        * @since 1.31
-        */
-       public function getLogName() {
-               return $this->gtids ? null : $this->binLog;
-       }
-
-       /**
-        * @return int[]|null Tuple of (binary log file number, event number)
-        * @since 1.31
-        */
-       public function getLogPosition() {
-               return $this->gtids ? null : $this->logPos;
-       }
-
-       /**
-        * @return string|null Name of the binary log file for this position
-        * @since 1.31
+        * @return string|null
         */
        public function getLogFile() {
-               return $this->gtids ? null : "{$this->binLog}.{$this->logPos[self::CORD_INDEX]}";
+               return $this->gtids ? null : "{$this->binlog}.{$this->pos[0]}";
        }
 
        /**
-        * @return string[] Map of (server_uuid/gtid_domain_id => GTID)
-        * @since 1.31
+        * @return string[]
         */
        public function getGTIDs() {
                return $this->gtids;
        }
 
        /**
-        * @param int|null $id @@gtid_domain_id of the active replication stream
-        * @since 1.31
+        * @return string GTID set or <binlog file>/<position> (e.g db1034-bin.000976/843431247)
         */
-       public function setActiveDomain( $id ) {
-               $this->activeDomain = (int)$id;
-       }
-
-       /**
-        * @param int|null $id @@server_id of the server were writes originate
-        * @since 1.31
-        */
-       public function setActiveOriginServerId( $id ) {
-               $this->activeServerId = (int)$id;
-       }
-
-       /**
-        * @param string|null $id @@server_uuid of the server were writes originate
-        * @since 1.31
-        */
-       public function setActiveOriginServerUUID( $id ) {
-               $this->activeServerUUID = $id;
+       public function __toString() {
+               return $this->gtids
+                       ? implode( ',', $this->gtids )
+                       : $this->getLogFile() . "/{$this->pos[1]}";
        }
 
        /**
         * @param MySQLMasterPos $pos
         * @param MySQLMasterPos $refPos
         * @return string[] List of GTIDs from $pos that have domains in $refPos
-        * @since 1.31
         */
        public static function getCommonDomainGTIDs( MySQLMasterPos $pos, MySQLMasterPos $refPos ) {
-               return array_values(
-                       array_intersect_key( $pos->gtids, $refPos->getActiveGtidCoordinates() )
-               );
+               $gtidsCommon = [];
+
+               $relevantDomains = $refPos->getGtidCoordinates(); // (domain => unused)
+               foreach ( $pos->gtids as $gtid ) {
+                       list( $domain ) = self::parseGTID( $gtid );
+                       if ( isset( $relevantDomains[$domain] ) ) {
+                               $gtidsCommon[] = $gtid;
+                       }
+               }
+
+               return $gtidsCommon;
        }
 
        /**
         * @see https://mariadb.com/kb/en/mariadb/gtid
         * @see https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.html
-        * @return array Map of (server_uuid/gtid_domain_id => integer position); possibly empty
+        * @return array Map of (domain => integer position); possibly empty
         */
-       protected function getActiveGtidCoordinates() {
+       protected function getGtidCoordinates() {
                $gtidInfos = [];
-
-               foreach ( $this->gtids as $domain => $gtid ) {
-                       list( $domain, $pos, $server ) = self::parseGTID( $gtid );
-
-                       $ignore = false;
-                       // Filter out GTIDs from non-active replication domains
-                       if ( $this->style === self::GTID_MARIA && $this->activeDomain !== null ) {
-                               $ignore |= ( $domain !== $this->activeDomain );
-                       }
-                       // Likewise for GTIDs from non-active replication origin servers
-                       if ( $this->style === self::GTID_MARIA && $this->activeServerId !== null ) {
-                               $ignore |= ( $server !== $this->activeServerId );
-                       } elseif ( $this->style === self::GTID_MYSQL && $this->activeServerUUID !== null ) {
-                               $ignore |= ( $server !== $this->activeServerUUID );
-                       }
-
-                       if ( !$ignore ) {
-                               $gtidInfos[$domain] = $pos;
-                       }
+               foreach ( $this->gtids as $gtid ) {
+                       list( $domain, $pos ) = self::parseGTID( $gtid );
+                       $gtidInfos[$domain] = $pos;
                }
 
                return $gtidInfos;
        }
 
        /**
-        * @param string $id GTID
-        * @return array|null [domain ID or server UUID, sequence number, server ID/UUID] or null
+        * @param string $gtid
+        * @return array|null [domain, integer position] or null
         */
-       protected static function parseGTID( $id ) {
+       protected static function parseGTID( $gtid ) {
                $m = [];
-               if ( preg_match( '!^(\d+)-(\d+)-(\d+)$!', $id, $m ) ) {
+               if ( preg_match( '!^(\d+)-\d+-(\d+)$!', $gtid, $m ) ) {
                        // MariaDB style: <domain>-<server id>-<sequence number>
-                       return [ (int)$m[1], (int)$m[3], (int)$m[2] ];
-               } elseif ( preg_match( '!^(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}):(?:\d+-|)(\d+)$!', $id, $m ) ) {
-                       // MySQL style: <server UUID>:<sequence number>-<sequence number>
-                       // Normally, the first number should reflect the point (gtid_purged) where older
-                       // binary logs where purged to save space. When doing comparisons, it may as well
-                       // be 1 in that case. Assume that this is generally the situation.
-                       return [ $m[1], (int)$m[2], $m[1] ];
+                       return [ (int)$m[1], (int)$m[2] ];
+               } elseif ( preg_match( '!^(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}):(\d+)$!', $gtid, $m ) ) {
+                       // MySQL style: <UUID domain>:<sequence number>
+                       return [ $m[1], (int)$m[2] ];
                }
 
                return null;
@@ -279,11 +194,11 @@ class MySQLMasterPos implements DBMasterPos {
        /**
         * @see https://dev.mysql.com/doc/refman/5.7/en/show-master-status.html
         * @see https://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html
-        * @return array|bool Map of (binlog:<string>, pos:(<integer>, <integer>)) or false
+        * @return array|bool (binlog, (integer file number, integer position)) or false
         */
        protected function getBinlogCoordinates() {
-               return ( $this->binLog !== null && $this->logPos !== null )
-                       ? [ 'binlog' => $this->binLog, 'pos' => $this->logPos ]
+               return ( $this->binlog !== null && $this->pos !== null )
+                       ? [ 'binlog' => $this->binlog, 'pos' => $this->pos ]
                        : false;
        }
 
@@ -299,13 +214,4 @@ class MySQLMasterPos implements DBMasterPos {
 
                $this->init( $data['position'], $data['asOfTime'] );
        }
-
-       /**
-        * @return string GTID set or <binary log file>/<position> (e.g db1034-bin.000976/843431247)
-        */
-       public function __toString() {
-               return $this->gtids
-                       ? implode( ',', $this->gtids )
-                       : $this->getLogFile() . "/{$this->logPos[self::CORD_EVENT]}";
-       }
 }
index 32886e2..bc428ec 100644 (file)
@@ -313,7 +313,7 @@ abstract class LBFactory implements ILBFactory {
                $opts += [
                        'domain' => false,
                        'cluster' => false,
-                       'timeout' => 60,
+                       'timeout' => $this->cliMode ? 60 : 10,
                        'ifWritesSince' => null
                ];
 
index 50c878d..3372839 100644 (file)
@@ -157,7 +157,9 @@ class LoadMonitor implements ILoadMonitor {
                        }
 
                        $conn = $this->parent->getAnyOpenConnection( $i );
-                       if ( $conn ) {
+                       if ( $conn && !$conn->trxLevel() ) {
+                               # Handles with open transactions are avoided since they might be subject
+                               # to REPEATABLE-READ snapshots, which could affect the lag estimate query.
                                $close = false; // already open
                        } else {
                                $conn = $this->parent->openConnection( $i, '' );
index 80a138d..c672ef7 100644 (file)
@@ -785,7 +785,7 @@ class ManualLogEntry extends LogEntryBase {
 
                                        // Log the autopatrol if the log entry is patrollable
                                        if ( $this->getIsPatrollable() &&
-                                               $rc->getAttribute( 'rc_patrolled' ) === 1
+                                               $rc->getAttribute( 'rc_patrolled' ) === 2
                                        ) {
                                                PatrolLog::record( $rc, true, $this->getPerformer() );
                                        }
index 32953df..f45036c 100644 (file)
@@ -26,7 +26,6 @@ use MediaWiki\MediaWikiServices;
 use Wikimedia\Assert\Assert;
 use Wikimedia\Rdbms\FakeResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
-use Wikimedia\Rdbms\DBError;
 use Wikimedia\Rdbms\DBUnexpectedError;
 
 /**
@@ -1147,14 +1146,16 @@ class WikiPage implements Page, IDBAccessObject {
                        return;
                }
 
-               Hooks::run( 'PageViewUpdates', [ $this, $user ] );
-               // Update newtalk / watchlist notification status
-               try {
-                       $user->clearNotification( $this->mTitle, $oldid );
-               } catch ( DBError $e ) {
-                       // Avoid outage if the master is not reachable
-                       MWExceptionHandler::logException( $e );
-               }
+               // Update newtalk / watchlist notification status;
+               // Avoid outage if the master is not reachable by using a deferred updated
+               DeferredUpdates::addCallableUpdate(
+                       function () use ( $user, $oldid ) {
+                               Hooks::run( 'PageViewUpdates', [ $this, $user ] );
+
+                               $user->clearNotification( $this->mTitle, $oldid );
+                       },
+                       DeferredUpdates::PRESEND
+               );
        }
 
        /**
@@ -1780,7 +1781,7 @@ class WikiPage implements Page, IDBAccessObject {
                        // Update recentchanges
                        if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
                                // Mark as patrolled if the user can do so
-                               $patrolled = $wgUseRCPatrol && !count(
+                               $autopatrolled = $wgUseRCPatrol && !count(
                                                $this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
                                // Add RC row to the DB
                                RecentChange::notifyEdit(
@@ -1796,7 +1797,8 @@ class WikiPage implements Page, IDBAccessObject {
                                        $oldContent ? $oldContent->getSize() : 0,
                                        $newsize,
                                        $revisionId,
-                                       $patrolled,
+                                       $autopatrolled ? RecentChange::PRC_AUTOPATROLLED :
+                                               RecentChange::PRC_UNPATROLLED,
                                        $tags
                                );
                        }
@@ -3254,8 +3256,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $target->getId(),
                        $guser,
                        null,
-                       $tags,
-                       $current->getId()
+                       $tags
                );
 
                // Set patrolling and bot flag on the edits, which gets rollbacked.
index e545887..d34257f 100644 (file)
@@ -1623,7 +1623,9 @@ class Parser {
        public function doHeadings( $text ) {
                for ( $i = 6; $i >= 1; --$i ) {
                        $h = str_repeat( '=', $i );
-                       $text = preg_replace( "/^$h(.+)$h\\s*$/m", "<h$i>\\1</h$i>", $text );
+                       // Trim non-newline whitespace from headings
+                       // Using \s* will break for: "==\n===\n" and parse as <h2>=</h2>
+                       $text = preg_replace( "/^(?:$h)[ \\t]*(.+?)[ \\t]*(?:$h)\\s*$/m", "<h$i>\\1</h$i>", $text );
                }
                return $text;
        }
@@ -4056,10 +4058,11 @@ class Parser {
 
                # Get all headlines for numbering them and adding funky stuff like [edit]
                # links - this is for later, but we need the number of headlines right now
-               # This regexp also trims whitespace in the heading's content
+               # NOTE: white space in headings have been trimmed in doHeadings. They shouldn't
+               # be trimmed here since whitespace in HTML headings is significant.
                $matches = [];
                $numMatches = preg_match_all(
-                       '/<H(?P<level>[1-6])(?P<attrib>.*?>)\s*(?P<header>[\s\S]*?)\s*<\/H[1-6] *>/i',
+                       '/<H(?P<level>[1-6])(?P<attrib>.*?>)(?P<header>[\s\S]*?)<\/H[1-6] *>/i',
                        $text,
                        $matches
                );
index 478f373..b2b68d2 100644 (file)
@@ -1117,11 +1117,18 @@ class DefaultPreferencesFactory implements PreferencesFactory {
                        'section' => 'watchlist/advancedwatchlist',
                        'label-message' => 'tog-watchlisthideliu',
                ];
-               $defaultPreferences['watchlistreloadautomatically'] = [
-                       'type' => 'toggle',
-                       'section' => 'watchlist/advancedwatchlist',
-                       'label-message' => 'tog-watchlistreloadautomatically',
-               ];
+
+               if ( !\SpecialWatchlist::checkStructuredFilterUiEnabled(
+                       $this->config,
+                       $user
+               ) ) {
+                       $defaultPreferences['watchlistreloadautomatically'] = [
+                               'type' => 'toggle',
+                               'section' => 'watchlist/advancedwatchlist',
+                               'label-message' => 'tog-watchlistreloadautomatically',
+                       ];
+               }
+
                $defaultPreferences['watchlistunwatchlinks'] = [
                        'type' => 'toggle',
                        'section' => 'watchlist/advancedwatchlist',
diff --git a/includes/profiler/ProfileSection.php b/includes/profiler/ProfileSection.php
deleted file mode 100644 (file)
index 124e2d3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Function scope profiling assistant
- *
- * 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.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Profiler
- */
-
-/**
- * Class for handling function-scope profiling
- *
- * @since 1.22
- * @deprecated since 1.25 No-op now
- */
-class ProfileSection {
-       /**
-        * Begin profiling of a function and return an object that ends profiling
-        * of the function when that object leaves scope. As long as the object is
-        * not specifically linked to other objects, it will fall out of scope at
-        * the same moment that the function to be profiled terminates.
-        *
-        * This is typically called like:
-        * @code $section = new ProfileSection( __METHOD__ ); @endcode
-        *
-        * @param string $name Name of the function to profile
-        */
-       public function __construct( $name ) {
-               wfDeprecated( __CLASS__, '1.25' );
-       }
-}
index 2225e3f..28dc2cc 100644 (file)
@@ -48,46 +48,59 @@ class ProfilerOutputDb extends ProfilerOutput {
        }
 
        public function log( array $stats ) {
-               $pfhost = $this->perHost ? wfHostname() : '';
-
                try {
                        $dbw = wfGetDB( DB_MASTER );
-                       $useTrx = ( $dbw->getType() === 'sqlite' ); // much faster
-                       if ( $useTrx ) {
-                               $dbw->startAtomic( __METHOD__ );
-                       }
-                       foreach ( $stats as $data ) {
-                               $name = $data['name'];
-                               $eventCount = $data['calls'];
-                               $timeSum = (float)$data['real'];
-                               $memorySum = (float)$data['memory'];
-                               $name = substr( $name, 0, 255 );
+               } catch ( DBError $e ) {
+                       return; // ignore
+               }
+
+               $fname = __METHOD__;
+               $dbw->onTransactionIdle( function () use ( $stats, $dbw, $fname ) {
+                       $pfhost = $this->perHost ? wfHostname() : '';
+                       // Sqlite: avoid excess b-tree rebuilds (mostly for non-WAL mode)
+                       // non-Sqlite: lower contention with small transactions
+                       $useTrx = ( $dbw->getType() === 'sqlite' );
 
-                               // Kludge
-                               $timeSum = $timeSum >= 0 ? $timeSum : 0;
-                               $memorySum = $memorySum >= 0 ? $memorySum : 0;
+                       try {
+                               $useTrx ? $dbw->startAtomic( $fname ) : null;
 
-                               $dbw->upsert( 'profiling',
-                                       [
-                                               'pf_name' => $name,
-                                               'pf_count' => $eventCount,
-                                               'pf_time' => $timeSum,
-                                               'pf_memory' => $memorySum,
-                                               'pf_server' => $pfhost
-                                       ],
-                                       [ [ 'pf_name', 'pf_server' ] ],
-                                       [
-                                               "pf_count=pf_count+{$eventCount}",
-                                               "pf_time=pf_time+{$timeSum}",
-                                               "pf_memory=pf_memory+{$memorySum}",
-                                       ],
-                                       __METHOD__
-                               );
+                               foreach ( $stats as $data ) {
+                                       $name = $data['name'];
+                                       $eventCount = $data['calls'];
+                                       $timeSum = (float)$data['real'];
+                                       $memorySum = (float)$data['memory'];
+                                       $name = substr( $name, 0, 255 );
+
+                                       // Kludge
+                                       $timeSum = $timeSum >= 0 ? $timeSum : 0;
+                                       $memorySum = $memorySum >= 0 ? $memorySum : 0;
+
+                                       $dbw->upsert( 'profiling',
+                                               [
+                                                       'pf_name' => $name,
+                                                       'pf_count' => $eventCount,
+                                                       'pf_time' => $timeSum,
+                                                       'pf_memory' => $memorySum,
+                                                       'pf_server' => $pfhost
+                                               ],
+                                               [ [ 'pf_name', 'pf_server' ] ],
+                                               [
+                                                       "pf_count=pf_count+{$eventCount}",
+                                                       "pf_time=pf_time+{$timeSum}",
+                                                       "pf_memory=pf_memory+{$memorySum}",
+                                               ],
+                                               $fname
+                                       );
+                               }
+                       } catch ( DBError $e ) {
+                               // ignore
                        }
-                       if ( $useTrx ) {
-                               $dbw->endAtomic( __METHOD__ );
+
+                       try {
+                               $useTrx ? $dbw->endAtomic( $fname ) : null;
+                       } catch ( DBError $e ) {
+                               // ignore
                        }
-               } catch ( DBError $e ) {
-               }
+               } );
        }
 }
index a9e2f92..545fd3b 100644 (file)
@@ -33,8 +33,8 @@ class ResourceLoaderClientHtml {
        /** @var ResourceLoader */
        private $resourceLoader;
 
-       /** @var string|null */
-       private $target;
+       /** @var array */
+       private $options;
 
        /** @var array */
        private $config = [];
@@ -56,12 +56,13 @@ class ResourceLoaderClientHtml {
 
        /**
         * @param ResourceLoaderContext $context
-        * @param string|null $target [optional] Custom 'target' parameter for the startup module
+        * @param array $options [optional] Array of options
+        *  - 'target': Custom parameter passed to StartupModule.
         */
-       public function __construct( ResourceLoaderContext $context, $target = null ) {
+       public function __construct( ResourceLoaderContext $context, array $options = [] ) {
                $this->context = $context;
                $this->resourceLoader = $context->getResourceLoader();
-               $this->target = $target;
+               $this->options = $options;
        }
 
        /**
@@ -309,8 +310,10 @@ class ResourceLoaderClientHtml {
                }
 
                // Async scripts. Once the startup is loaded, inline RLQ scripts will run.
-               // Pass-through a custom target from OutputPage (T143066).
-               $startupQuery = $this->target ? [ 'target' => $this->target ] : [];
+               // Pass-through a custom 'target' from OutputPage (T143066).
+               $startupQuery = isset( $this->options['target'] )
+                       ? [ 'target' => (string)$this->options['target'] ]
+                       : [];
                $chunks[] = $this->getLoad(
                        'startup',
                        ResourceLoaderModule::TYPE_SCRIPTS,
index 370046a..c4e9884 100644 (file)
@@ -63,12 +63,8 @@ class ResourceLoaderContext implements MessageLocalizer {
                $this->request = $request;
                $this->logger = $resourceLoader->getLogger();
 
-               // Future developers: Avoid use of getVal() in this class, which performs
-               // expensive UTF normalisation by default. Use getRawVal() instead.
-               // Values here are either one of a finite number of internal IDs,
-               // or previously-stored user input (e.g. titles, user names) that were passed
-               // to this endpoint by ResourceLoader itself from the canonical value.
-               // Values do not come directly from user input and need not match.
+               // Future developers: Use WebRequest::getRawVal() instead getVal().
+               // The getVal() method performs slow Language+UTF logic. (f303bb9360)
 
                // List of modules
                $modules = $request->getRawVal( 'modules' );
index e5fe928..681e8dc 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Module for ResourceLoader initialization.
- *
  * 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
  * @author Roan Kattouw
  */
 
+/**
+ * Module for ResourceLoader initialization.
+ *
+ * See also <https://www.mediawiki.org/wiki/ResourceLoader/Features#Startup_Module>
+ *
+ * The startup module, as being called only from ResourceLoaderClientHtml, has
+ * the ability to vary based extra query parameters, in addition to those
+ * from ResourceLoaderContext:
+ *
+ * - target: Only register modules in the client allowed within this target.
+ *   Default: "desktop".
+ *   See also: OutputPage::setTarget(), ResourceLoaderModule::getTargets().
+ */
 class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
        // Cache for getConfigSettings() as it's called by multiple methods
@@ -195,7 +206,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         */
        public function getModuleRegistrations( ResourceLoaderContext $context ) {
                $resourceLoader = $context->getResourceLoader();
-               $target = $context->getRequest()->getVal( 'target', 'desktop' );
+               // Future developers: Use WebRequest::getRawVal() instead getVal().
+               // The getVal() method performs slow Language+UTF logic. (f303bb9360)
+               $target = $context->getRequest()->getRawVal( 'target', 'desktop' );
                // Bypass target filter if this request is Special:JavaScriptTest.
                // To prevent misuse in production, this is only allowed if testing is enabled server-side.
                $byPassTargetFilter = $this->getConfig()->get( 'EnableJavaScriptTest' ) && $target === 'test';
index 08ab86a..e1f2969 100644 (file)
@@ -98,14 +98,7 @@ abstract class BaseTemplate extends QuickTemplate {
                }
                if ( isset( $this->data['nav_urls']['permalink'] ) && $this->data['nav_urls']['permalink'] ) {
                        $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
-                       if ( $toolbox['permalink']['href'] === '' ) {
-                               unset( $toolbox['permalink']['href'] );
-                               $toolbox['ispermalink']['tooltiponly'] = true;
-                               $toolbox['ispermalink']['id'] = 't-ispermalink';
-                               $toolbox['ispermalink']['msg'] = 'permalink';
-                       } else {
-                               $toolbox['permalink']['id'] = 't-permalink';
-                       }
+                       $toolbox['permalink']['id'] = 't-permalink';
                }
                if ( isset( $this->data['nav_urls']['info'] ) && $this->data['nav_urls']['info'] ) {
                        $toolbox['info'] = $this->data['nav_urls']['info'];
index 9469e69..fdf4d52 100644 (file)
@@ -212,17 +212,6 @@ class SpecialPageFactory {
                return array_keys( self::getPageList() );
        }
 
-       /**
-        * Get the special page list as an array
-        *
-        * @deprecated since 1.24, use getNames() instead.
-        * @return array
-        */
-       public static function getList() {
-               wfDeprecated( __FUNCTION__, '1.24' );
-               return self::getPageList();
-       }
-
        /**
         * Get the special page list as an array
         *
index 6f91c46..3080fbf 100644 (file)
@@ -162,7 +162,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        ];
                        $on['rd_namespace'] = $target->getNamespace();
                        // Inner LIMIT is 2X in case of stale backlinks with wrong namespaces
-                       $subQuery = $dbr->selectSQLText(
+                       $subQuery = $dbr->buildSelectSubquery(
                                [ $table, 'redirect', 'page' ],
                                [ $fromCol, 'rd_from' ],
                                $conds[$table],
@@ -175,7 +175,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                                ]
                        );
                        return $dbr->select(
-                               [ 'page', 'temp_backlink_range' => "($subQuery)" ],
+                               [ 'page', 'temp_backlink_range' => $subQuery ],
                                [ 'page_id', 'page_namespace', 'page_title', 'rd_from', 'page_is_redirect' ],
                                [],
                                __CLASS__ . '::showIndirectLinks',
index fda49a5..9ef880b 100644 (file)
@@ -150,10 +150,12 @@ class User implements IDBAccessObject, UserIdentity {
                'editmyoptions',
                'editmyprivateinfo',
                'editmyusercss',
+               'editmyuserjson',
                'editmyuserjs',
                'editmywatchlist',
                'editsemiprotected',
                'editusercss',
+               'edituserjson',
                'edituserjs',
                'hideuser',
                'import',
@@ -3969,51 +3971,9 @@ class User implements IDBAccessObject, UserIdentity {
                        return;
                }
 
-               $dbw = wfGetDB( DB_MASTER );
-               $asOfTimes = array_unique( $dbw->selectFieldValues(
-                       'watchlist',
-                       'wl_notificationtimestamp',
-                       [ 'wl_user' => $id, 'wl_notificationtimestamp IS NOT NULL' ],
-                       __METHOD__,
-                       [ 'ORDER BY' => 'wl_notificationtimestamp DESC', 'LIMIT' => 500 ]
-               ) );
-               if ( !$asOfTimes ) {
-                       return;
-               }
-               // Immediately update the most recent touched rows, which hopefully covers what
-               // the user sees on the watchlist page before pressing "mark all pages visited"....
-               $dbw->update(
-                       'watchlist',
-                       [ 'wl_notificationtimestamp' => null ],
-                       [ 'wl_user' => $id, 'wl_notificationtimestamp' => $asOfTimes ],
-                       __METHOD__
-               );
-               // ...and finish the older ones in a post-send update with lag checks...
-               DeferredUpdates::addUpdate( new AutoCommitUpdate(
-                       $dbw,
-                       __METHOD__,
-                       function () use ( $dbw, $id ) {
-                               global $wgUpdateRowsPerQuery;
-
-                               $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
-                               $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ );
-                               $asOfTimes = array_unique( $dbw->selectFieldValues(
-                                       'watchlist',
-                                       'wl_notificationtimestamp',
-                                       [ 'wl_user' => $id, 'wl_notificationtimestamp IS NOT NULL' ],
-                                       __METHOD__
-                               ) );
-                               foreach ( array_chunk( $asOfTimes, $wgUpdateRowsPerQuery ) as $asOfTimeBatch ) {
-                                       $dbw->update(
-                                               'watchlist',
-                                               [ 'wl_notificationtimestamp' => null ],
-                                               [ 'wl_user' => $id, 'wl_notificationtimestamp' => $asOfTimeBatch ],
-                                               __METHOD__
-                                       );
-                                       $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
-                               }
-                       }
-               ) );
+               $watchedItemStore = MediaWikiServices::getInstance()->getWatchedItemStore();
+               $watchedItemStore->resetAllNotificationTimestampsForUser( $this );
+
                // We also need to clear here the "you have new message" notification for the own
                // user_talk page; it's cleared one page view later in WikiPage::doViewUpdates().
        }
index 1a0f504..86e7be8 100644 (file)
@@ -122,6 +122,10 @@ class NoWriteWatchedItemStore implements WatchedItemStoreInterface {
                throw new DBReadOnlyError( null, 'The watchlist is currently readonly.' );
        }
 
+       public function resetAllNotificationTimestampsForUser( User $user ) {
+               throw new DBReadOnlyError( null, 'The watchlist is currently readonly.' );
+       }
+
        public function resetNotificationTimestamp(
                User $user,
                Title $title,
index 412fdf5..bf419a9 100644 (file)
@@ -25,6 +25,7 @@ class WatchedItemQueryService {
        const INCLUDE_USER_ID = 'userid';
        const INCLUDE_COMMENT = 'comment';
        const INCLUDE_PATROL_INFO = 'patrol';
+       const INCLUDE_AUTOPATROL_INFO = 'autopatrol';
        const INCLUDE_SIZES = 'sizes';
        const INCLUDE_LOG_INFO = 'loginfo';
        const INCLUDE_TAGS = 'tags';
@@ -40,6 +41,8 @@ class WatchedItemQueryService {
        const FILTER_NOT_ANON = '!anon';
        const FILTER_PATROLLED = 'patrolled';
        const FILTER_NOT_PATROLLED = '!patrolled';
+       const FILTER_AUTOPATROLLED = 'autopatrolled';
+       const FILTER_NOT_AUTOPATROLLED = '!autopatrolled';
        const FILTER_UNREAD = 'unread';
        const FILTER_NOT_UNREAD = '!unread';
        const FILTER_CHANGED = 'changed';
@@ -499,6 +502,12 @@ class WatchedItemQueryService {
                        } elseif ( in_array( self::FILTER_NOT_PATROLLED, $options['filters'] ) ) {
                                $conds[] = 'rc_patrolled = 0';
                        }
+
+                       if ( in_array( self::FILTER_AUTOPATROLLED, $options['filters'] ) ) {
+                               $conds[] = 'rc_patrolled = 2';
+                       } elseif ( in_array( self::FILTER_NOT_AUTOPATROLLED, $options['filters'] ) ) {
+                               $conds[] = 'rc_patrolled != 2';
+                       }
                }
 
                if ( in_array( self::FILTER_UNREAD, $options['filters'] ) ) {
index 1b37968..6e907de 100644 (file)
@@ -504,7 +504,7 @@ class WatchedItemStore implements WatchedItemStoreInterface, StatsdAwareInterfac
         * @since 1.27
         * @param User $user
         * @param LinkTarget $target
-        * @return bool
+        * @return WatchedItem|bool
         */
        public function loadWatchedItem( User $user, LinkTarget $target ) {
                // Only loggedin user can have a watchlist
@@ -765,12 +765,34 @@ class WatchedItemStore implements WatchedItemStoreInterface, StatsdAwareInterfac
                return $success;
        }
 
+       public function resetAllNotificationTimestampsForUser( User $user ) {
+               // Only loggedin user can have a watchlist
+               if ( $user->isAnon() ) {
+                       return;
+               }
+
+               // If the page is watched by the user (or may be watched), update the timestamp
+               $job = new ClearWatchlistNotificationsJob(
+                       $user->getUserPage(),
+                       [ 'userId'  => $user->getId(), 'casTime' => time() ]
+               );
+
+               // Try to run this post-send
+               // Calls DeferredUpdates::addCallableUpdate in normal operation
+               call_user_func(
+                       $this->deferredUpdatesAddCallableUpdateCallback,
+                       function () use ( $job ) {
+                               $job->run();
+                       }
+               );
+       }
+
        /**
         * @since 1.27
         * @param User $editor
         * @param LinkTarget $target
         * @param string|int $timestamp
-        * @return int
+        * @return int[]
         */
        public function updateNotificationTimestamp( User $editor, LinkTarget $target, $timestamp ) {
                $dbw = $this->getConnectionRef( DB_MASTER );
index 133f480..a450ae5 100644 (file)
@@ -209,7 +209,7 @@ interface WatchedItemStoreInterface {
        /**
         * @since 1.31
         *
-        * @param User $user The user to set the timestamp for
+        * @param User $user The user to set the timestamps for
         * @param string|null $timestamp Set the update timestamp to this value
         * @param LinkTarget[] $targets List of targets to update. Default to all targets
         *
@@ -221,6 +221,15 @@ interface WatchedItemStoreInterface {
                array $targets = []
        );
 
+       /**
+        * Reset all watchlist notificaton timestamps for a user using the job queue
+        *
+        * @since 1.31
+        *
+        * @param User $user The user to reset the timestamps for
+        */
+       public function resetAllNotificationTimestampsForUser( User $user );
+
        /**
         * @since 1.31
         *
@@ -246,7 +255,7 @@ interface WatchedItemStoreInterface {
         * @param int $oldid The revision id being viewed. If not given or 0, latest revision is
         *     assumed.
         *
-        * @return bool success
+        * @return bool success Whether a job was enqueued
         */
        public function resetNotificationTimestamp( User $user, Title $title, $force = '', $oldid = 0 );
 
index d5418b9..01a5a79 100644 (file)
@@ -219,7 +219,8 @@ class CrhConverter extends LanguageConverter {
                }
 
                // check for roman numbers like VII, XIX...
-               $roman = '/^M{0,3}(C[DM]|D{0,1}C{0,3})(X[LC]|L{0,1}X{0,3})(I[VX]|V{0,1}I{0,3})$/u';
+               // Lookahead assertion ensures $roman doesn't match the empty string
+               $roman = '/^(?=[MDCLXVI])M{0,4}(C[DM]|D?C{0,3})(X[LC]|L?X{0,3})(I[VX]|V?I{0,3})$/u';
 
                # match any sub-string of the relevant letters and convert it
                $matches = preg_split( '/(\b|^)[^' . $letters . ']+(\b|$)/u',
index 709ce1b..6d603f5 100644 (file)
@@ -47,12 +47,12 @@ class EnConverter extends LanguageConverter {
                        // Only process words composed of standard English alphabet, leave the rest unchanged.
                        // This skips some English words like 'naïve' or 'résumé', but we can live with that.
                        // Ignore single letters and words which aren't lowercase or uppercase-first.
-                       return preg_replace_callback( '/[A-Za-z][a-z]+/', function ( $matches ) {
+                       return preg_replace_callback( '/[A-Za-z][a-z\']+/', function ( $matches ) {
                                $word = $matches[0];
                                if ( preg_match( '/^[aeiou]/i', $word ) ) {
                                        return $word . 'way';
                                } else {
-                                       return preg_replace_callback( '/^(qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
+                                       return preg_replace_callback( '/^(s?qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
                                                $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
                                                if ( $ucfirst ) {
                                                        return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
index ef77775..b90ca41 100644 (file)
@@ -192,7 +192,8 @@ class KuConverter extends LanguageConverter {
                /* From Kazakh interface, maybe we need it later
                $breaks = '[^\w\x80-\xff]';
                // regexp for roman numbers
-               $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
+               // Lookahead assertion ensures $roman doesn't match the empty string
+               $roman = '(?=[MDCLXVI])M{0,4}(C[DM]|D?C{0,3})(X[LC]|L?X{0,3})(I[VX]|V?I{0,3})';
                $roman = '';
 
                $reg = '/^'.$roman.'$|^'.$roman.$breaks.'|'.$breaks.$roman.'$|'.$breaks.$roman.$breaks.'/';
index e0ff5e1..0ad7860 100644 (file)
@@ -115,7 +115,8 @@ class SrConverter extends LanguageConverter {
                $breaks = '[^\w\x80-\xff]';
 
                // regexp for roman numbers
-               $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
+               // Lookahead assertion ensures $roman doesn't match the empty string
+               $roman = '(?=[MDCLXVI])M{0,4}(C[DM]|D?C{0,3})(X[LC]|L?X{0,3})(I[VX]|V?I{0,3})';
 
                $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
                        . $roman . '$|' . $breaks . $roman . $breaks . '/';
index 2b0eeb8..710d6be 100644 (file)
@@ -253,8 +253,8 @@ class Names {
                'ks-arab' => 'کٲشُر', # Kashmiri (Perso-Arabic script)
                'ks-deva' => 'कॉशुर', # Kashmiri (Devanagari script)
                'ksh' => 'Ripoarisch', # Ripuarian
-               'ku' => 'Kurdî', # Kurdish (multiple scripts - defaults to Latin)
-               'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E", # Northern Kurdish (Latin script)
+               'ku' => 'kurdî', # Kurdish (multiple scripts - defaults to Latin)
+               'ku-latn' => "kurdî (latînî)\xE2\x80\x8E", # Northern Kurdish (Latin script)
                'ku-arab' => "كوردي (عەرەبی)\xE2\x80\x8F", # Northern Kurdish (Arabic script) (falls back to ckb)
                'kum' => 'къумукъ', # Kumyk (Cyrillic, 'kum-latn' for Latin script)
                'kv' => 'коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
index cb72b81..bf012ac 100644 (file)
        "recentchanges-legend-heading": "<strong>ব্যাখ্যা:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (লগতে [[Special:NewPages|নতুন পৃষ্ঠাসমূহৰ তালিকা]] চাওক)",
        "recentchanges-legend-plusminus": "(''±১২৩'')",
+       "rcfilters-legend-heading": "<strong>সংক্ষিপ্ত ৰূপৰ তালিকা:</strong>",
+       "rcfilters-other-review-tools": "আন পুনৰীক্ষণ সঁজুলি",
        "rcnotefrom": "<strong>$2</strong>ৰ পৰা হোৱা পৰিৱৰ্তনসমূহ (সৰ্বোচ্চ <strong>$1টা</strong> দেখুৱা হৈছে)।",
        "rclistfrom": "$3 $2ৰ পৰা নতুন সালসলনি দেখুৱাওক",
        "rcshowhideminor": "$1 -সংখ্যক নগণ্য সম্পাদনা",
index b4ecdd5..9eed2c7 100644 (file)
        "cascadeprotected": "Esta páxina ta protexida d'ediciones porque ta trescluída {{PLURAL:$1|na siguiente páxina, protexida|nes siguientes páxines, protexíes}} cola opción «en cascada» activada:\n$2",
        "namespaceprotected": "Nun tienes permisu pa editar páxines nel espaciu de nomes '''$1'''.",
        "customcssprotected": "Nun tienes permisu pa editar esta páxina CSS porque contien preferencies personales d'otru usuariu.",
+       "customjsonprotected": "Nun tienes permisu pa editar esta páxina JSON porque contien preferencies personales d'otru usuariu.",
        "customjsprotected": "Nun tienes permisu pa editar esta páxina de JavaScript porque contien preferencies personales d'otru usuariu.",
        "mycustomcssprotected": "Nun tien permisu pa editar esta páxina CSS.",
+       "mycustomjsonprotected": "Nun tien permisu pa editar esta páxina JSON.",
        "mycustomjsprotected": "Nun tien permisu pa editar esta páxina JavaScript.",
        "myprivateinfoprotected": "Nun tien permisu pa editar la so información privada.",
        "mypreferencesprotected": "Nun tien permisu pa editar les sos preferencies.",
        "wrongpasswordempty": "La contraseña taba en blanco.\nVuelvi a intentalo.",
        "passwordtooshort": "Les contraseñes han de tener polo menos {{PLURAL:$1|1 caráuter|$1 caráuteres}}.",
        "passwordtoolong": "Les contraseñes nun puen ser mayores de {{PLURAL:$1|1 caráuter|$1 caráuteres}}.",
-       "passwordtoopopular": "Les contraseñes más escoyíes de vezu nun pueden usase. Escueye una contraseña más única.",
+       "passwordtoopopular": "Les contraseñes más escoyíes de vezu nun pueden usase. Escueye una contraseña más difícil d'aldovinar.",
        "password-name-match": "La contraseña tien de ser distinta del nome d'usuariu.",
        "password-login-forbidden": "Ta torgao usar esti nome d'usuariu y contraseña.",
        "mailmypassword": "Reaniciar contraseña",
        "savechanges": "Guardar los cambios",
        "publishpage": "Publicar la páxina",
        "publishchanges": "Publicar los cambios",
+       "savearticle-start": "Guardar la páxina...",
+       "savechanges-start": "Guardar los cambios...",
+       "publishpage-start": "Publicar la páxina...",
+       "publishchanges-start": "Publicar los cambios...",
        "preview": "Vista previa",
        "showpreview": "Amosar previsualización",
        "showdiff": "Amosar cambeos",
        "blocked-notice-logextract": "Anguaño esti usuariu ta bloquiáu.\nMás abaxo ufrese la entrada del rexistru de bloqueos pa referencia:",
        "clearyourcache": "'''Nota:''' Llueu de guardar, seique tengas que llimpiar la caché del restolador pa ver los cambeos.\n*'''Firefox / Safari:''' Caltén ''Mayús'' mentes calques en ''Recargar'', o calca ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' nun Mac)\n* '''Google Chrome:''' Calca ''Ctrl-Mayús-R'' (''⌘-Mayús-R'' nun Mac)\n* '''Internet Explorer:''' Caltén ''Ctrl'' mentes calques ''Refrescar'', o calca ''Ctrl-F5''\n* '''Opera:''' Entra'n Menú → Preferencies'' (''Opera → Preferencies'' nun Mac) y d'ehí en ''Intimidá y seguridá → Llimpiar datos de navegación → Imáxenes y ficheros en caché''.",
        "usercssyoucanpreview": "'''Conseyu:''' Usa'l botón \"{{int:showpreview}}\" pa probar el CSS nuevu enantes de guardalu.",
+       "userjsonyoucanpreview": "<strong>Conseyu:</strong> Usa'l botón \"{{int:showpreview}}\" pa probar el JSON nuevu enantes de guardalu.",
        "userjsyoucanpreview": "'''Conseyu:''' Usa'l botón \"{{int:showpreview}}\" pa probar el JavaScript nuevu enantes de guardalu.",
        "usercsspreview": "'''Recuerda que namái ye la vista previa del CSS d'usuariu.'''\n'''¡Inda nun ta guardáu!'''",
+       "userjsonpreview": "<strong>Recuerda que namái ye la prueba/vista previa de la configuración JSON d'usuariu.\n¡Inda nun ta guardada!</strong>",
        "userjspreview": "'''Recuerda que namái ye la prueba/vista previa del JavaScript d'usuariu.'''\n'''¡Inda nun ta guardáu!'''",
        "sitecsspreview": "'''Recuerda que namái tas previsualizando esti CSS.'''\n'''¡Tovía nun ta guardáu!'''",
+       "sitejsonpreview": "<strong>Recuerda que namái tas previsualizando esta configuración JSON.\n'''¡Tovía nun se guardó!'''",
        "sitejspreview": "'''Recuerda que namái tas probando esti códigu JavaScript.'''\n'''¡Inda nun tá guardáu!'''",
-       "userinvalidconfigtitle": "'''Avisu:''' Nun esiste'l tema «$1».\nLes páxines personalizaes de .css y .js usen un títulu en minúscules, p. ex. {{ns:user}}:Foo/vector.css y non {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Avisu:</strong> Nun esiste'l tema «$1».\nLes páxines personalizaes de .css, .json y .js usen un títulu en minúscules, p. ex. {{ns:user}}:Foo/vector.css y non {{ns:user}}:Foo/Vector.css.",
        "updated": "(Anovao)",
        "note": "'''Nota:'''",
        "previewnote": "'''Alcuerdate de qu'esto ye sólo una vista previa.'''\n¡Los cambios entá nun se guardaron!",
        "default": "predetermináu",
        "prefs-files": "Ficheros",
        "prefs-custom-css": "CSS personalizáu",
+       "prefs-custom-json": "JSON personalizáu",
        "prefs-custom-js": "JavaScript personalizáu",
-       "prefs-common-config": "CSS/JavaScript compartíu pa toles pieles:",
+       "prefs-common-config": "CSS/JSON/JavaScript compartíu pa toles pieles:",
        "prefs-reset-intro": "Pues usar esta páxina pa reaniciar les preferencies a los valores predeterminaos del sitiu.\nEsto nun se pue desfacer.",
        "prefs-emailconfirm-label": "Confirmación del corréu:",
        "youremail": "Corréu electrónicu:",
        "right-editcontentmodel": "Editar el modelu de conteníu d'una páxina",
        "right-editinterface": "Editar la interfaz d'usuariu",
        "right-editusercss": "Editar los ficheros CSS d'otros usuarios",
+       "right-edituserjson": "Editar los ficheros JSON d'otros usuarios",
        "right-edituserjs": "Editar los ficheros JavaScript d'otros usuarios",
        "right-editmyusercss": "Editar los propios ficheros CSS d'usuariu",
+       "right-editmyuserjson": "Editar los ficheros JSON d'usuariu propios",
        "right-editmyuserjs": "Editar los propios ficheros JavaScript d'usuariu",
        "right-viewmywatchlist": "Ver la llista de vixilancia propia",
        "right-editmywatchlist": "Editar la llista de vixilancia propia. Tenga en cuenta que dalgunes aiciones amestarán páxines igual, inda ensin esti permisu.",
        "grant-createaccount": "Crear cuentes",
        "grant-createeditmovepage": "Crear, editar y mover páxines",
        "grant-delete": "Desaniciar páxines, revisiones y entraes del rexistru",
-       "grant-editinterface": "Editar l'espaciu de nomes MediaWiki y los CSS/JavaScript d'usuariu",
-       "grant-editmycssjs": "Editar los CSS/JavaScript d'usuariu propios",
+       "grant-editinterface": "Editar l'espaciu de nomes MediaWiki y los CSS/JSON/JavaScript d'usuariu",
+       "grant-editmycssjs": "Editar los CSS/JSON/JavaScript d'usuariu propios",
        "grant-editmyoptions": "Editar les preferencies d'usuariu propies",
        "grant-editmywatchlist": "Editar la llista de vixilancia propia",
        "grant-editpage": "Editar páxines esistentes",
        "group-bot.css": "/* Los CSS allugaos equí afeutarán a los bots namái */",
        "group-sysop.css": "/* Los CSS allugaos equí afeutarán a los sysops namái */",
        "group-bureaucrat.css": "/* Los CSS allugaos equí afeutarán a los burócrates namái */",
+       "common.json": "/* Cualquier JavaScript que tea equí cargaráse pa tolos usuarios en cada carga de páxina. */",
        "common.js": "/* Cualesquier JavaScript que tea equí se cargará pa tolos usuarios en cada carga de páxina. */",
        "group-autoconfirmed.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios autoconfirmaos namái */",
        "group-bot.js": "/* Cualesquier JavaScript que tea equí se cargará pa los bots namái */",
        "unlinkaccounts-success": "Desenllazóse la cuenta.",
        "authenticationdatachange-ignored": "Nun se xestionó'l cambéu de los datos d'autentificacion. ¿Seique, nun se configuró un fornidor?",
        "userjsispublic": "Atención: les subpáxines JavaScript nun tendríen de contener datos acutaos porque son visibles pa otros usuarios.",
+       "userjsonispublic": "Recuerda: les subpáxines JSON nun tendríen de contener datos acutaos porque pueden veles otros usuarios.",
        "usercssispublic": "Atención: les subpáxines CSS nun tendríen de contener datos acutaos porque son visibles pa otros usuarios.",
        "restrictionsfield-badip": "Direición o rangu IP inválidu: $1",
        "restrictionsfield-label": "Rangos d'IP permitíos:",
index faa81f9..00a4921 100644 (file)
        "cascadeprotected": "Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|1=наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:\n$2",
        "namespaceprotected": "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў <strong>$1</strong>.",
        "customcssprotected": "Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.",
+       "customjsonprotected": "Вы ня маеце дазволу на рэдагаваньне гэтай JSON-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.",
        "customjsprotected": "Вы ня маеце правоў на рэдагаваньне гэтай старонкі JavaScript, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.",
        "mycustomcssprotected": "Вы ня маеце дазволу рэдагаваць гэтую CSS-старонку.",
+       "mycustomjsonprotected": "Вы ня маеце дазволу на рэдагаваньне гэтай JSON-старонкі.",
        "mycustomjsprotected": "Вы ня маеце дазволу рэдагаваць гэтую JavaScript-старонку.",
        "myprivateinfoprotected": "Вы ня маеце дазволу на зьмяненьне ўласных прыватных зьвестак.",
        "mypreferencesprotected": "Вы ня маеце дазволу на зьмяненьне сваіх наладаў.",
        "userjspreview": "<strong>Памятайце, што гэта толькі папярэдні прагляд Вашага JavaScript. Ён яшчэ не запісаны!</strong>",
        "sitecsspreview": "<strong>Памятайце, што гэта толькі папярэдні прагляд гэтага CSS.\nЁн яшчэ не захаваны!</strong>",
        "sitejspreview": "<strong>Памятайце, што гэта толькі папярэдні прагляд гэтага коду JavaScript.\nЁн яшчэ не захаваны!</strong>",
-       "userinvalidconfigtitle": "<strong>Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:</strong> Ð½Ñ\8fма Ñ\82Ñ\8dмÑ\8b Ð°Ñ\84аÑ\80мленÑ\8cнÑ\8f Â«$1».\nÐ\9fамÑ\8fÑ\82айÑ\86е, Ñ\88Ñ\82о Ñ\9eлаÑ\81нÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96 .css і .js павінны мець назву, якая складаецца з малых літараў, напрыклад, {{ns:user}}:Хтосьці/vector.css, а не {{ns:user}}:Хтосьці/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:</strong> Ð½Ñ\8fма Ñ\82Ñ\8dмÑ\8b Ð°Ñ\84аÑ\80мленÑ\8cнÑ\8f Â«$1».\nУлаÑ\81нÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96 .css, .json і .js павінны мець назву, якая складаецца з малых літараў, напрыклад, {{ns:user}}:Хтосьці/vector.css, а не {{ns:user}}:Хтосьці/Vector.css.",
        "updated": "(Абноўлена)",
        "note": "<strong>Заўвага:</strong>",
        "previewnote": "<strong>Гэта толькі папярэдні прагляд.</strong>\nВашыя зьмены яшчэ не былі захаваныя!",
        "prefs-files": "Файлы",
        "prefs-custom-css": "Уласны CSS",
        "prefs-custom-js": "Уласны JavaScript",
-       "prefs-common-config": "Агульны CSS/JavaScript для ўсіх тэмаў афармленьня:",
+       "prefs-common-config": "Агульны CSS/JSON/JavaScript для ўсіх тэмаў афармленьня:",
        "prefs-reset-intro": "Вы можаце выкарыстаць гэтую старонку для замены вашых наладаў на налады сайту па змоўчаньні.\nГэтае дзеяньне ня можа быць адмененае.",
        "prefs-emailconfirm-label": "Пацьверджаньне адрасу электроннай пошты:",
        "youremail": "Адрас электроннай пошты:",
        "right-autopatrol": "Аўтаматычнае пазначэньне рэдагаваньняў як «патруляваных»",
        "right-patrolmarks": "Прагляд пазначэньняў пра патруляваньне ў апошніх зьменах",
        "right-unwatchedpages": "Прагляд сьпісу старонак, за якімі ніхто не назірае",
-       "right-mergehistory": "аб’яднаньне гісторыі старонак",
-       "right-userrights": "рэдагаваньне правоў усіх удзельнікаў",
-       "right-userrights-interwiki": "рэдагаваньне правоў удзельнікаў у іншых вікі",
+       "right-mergehistory": "Ð\90б’яднаньне гісторыі старонак",
+       "right-userrights": "Рэдагаваньне ўсіх правоў удзельнікаў",
+       "right-userrights-interwiki": "Рэдагаваньне правоў удзельнікаў у іншых вікі",
        "right-siteadmin": "блякаваньне і разблякаваньне базы зьвестак",
-       "right-override-export-depth": "экспартаваньне старонак, уключаючы зьвязаныя старонкі з глыбінёй да 5",
-       "right-sendemail": "адпраўка электронных лістоў іншым удзельнікам",
+       "right-override-export-depth": "Экспартаваньне старонак, у тым ліку зьвязаных старонак з глыбінёй да 5",
+       "right-sendemail": "Ð\90дпраўка электронных лістоў іншым удзельнікам",
        "right-managechangetags": "стварэньне і (дэ)актывацыя [[Special:Tags|метак]]",
        "right-applychangetags": "дадаваць [[Special:Tags|меткі]] пры рэдагаваньні",
        "right-changetags": "дадаваць і выдаляць адвольныя [[Special:Tags|меткі]] да асобных вэрсіяў і запісаў у журнале падзеяў",
        "grant-group-private-information": "Доступ да прыватных зьвестак пра вас",
        "grant-group-other": "Розная актыўнасьць",
        "grant-blockusers": "Блякаваньне і разблякаваньне ўдзельнікаў",
-       "grant-createaccount": "СÑ\82ваÑ\80Ñ\8bÑ\86Ñ\8c Ñ\80аÑ\85Ñ\83нкÑ\96",
-       "grant-createeditmovepage": "Ствараць, рэдагаваць і пераносіць старонкі",
+       "grant-createaccount": "СÑ\82ваÑ\80Ñ\8dнÑ\8cне Ñ\80аÑ\85Ñ\83нкаÑ\9e",
+       "grant-createeditmovepage": "Стварэньне, рэдагаваньне і перанос старонак",
        "grant-delete": "Выдаляць старонкі, вэрсіі і запісы журналу",
        "grant-editinterface": "Рэдагаваць прасторы назваў МэдыяВікі і CSS/JavaScript удзельніка",
        "grant-editmycssjs": "Рэдагаваць Ваш CSS/JavaScript",
index 64cc98e..92e1c50 100644 (file)
        "cascadeprotected": "এই পাতাটিকে সম্পাদনা করা থেকে সুরক্ষিত করা হয়েছে, কারণ এটি নিম্নোক্ত {{PLURAL:$1|পাতায়|পাতাগুলিতে}} অন্তর্ভুক্ত, {{PLURAL:$1|যেটি|যেগুলি}} \"প্রপাতাকার\" বৈশিষ্ট্য সহযোগে সুরক্ষিত করা আছে:\n$2",
        "namespaceprotected": "<strong>$1</strong> নামস্থানের কোন পাতা আপনার সম্পাদনা করার অনুমতি নেই।",
        "customcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
+       "customjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এই পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
        "customjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
        "mycustomcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই।",
+       "mycustomjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই।",
        "mycustomjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই।",
        "myprivateinfoprotected": "আপনার ব্যক্তিগত তথ্য সম্পাদনা করতে আপনার অনুমতি নেই",
        "mypreferencesprotected": "আপনার পছন্দসমূহ সম্পাদনা করতে আপনার অনুমতি নেই",
        "wrongpasswordempty": "পাসওয়ার্ড প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
        "passwordtooshort": "পাসওয়ার্ড কমপক্ষে {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
        "passwordtoolong": "পাসওয়ার্ড {{PLURAL:$1|১|$1}} অক্ষরের চেয়ে দীর্ঘ হতে পারবে না।",
-       "passwordtoopopular": "সাধারণভাবà§\87 à¦¨à¦¿à¦°à§\8dবাà¦\9aিত à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¬à§\8dযবহার à¦\95রা à¦¯à¦¾à¦¬à§\87 à¦¨à¦¾à¥¤ à¦¦à¦¯à¦¼à¦¾ à¦\95রà§\87 à¦\8fà¦\95à¦\9fি à¦\85ননà§\8dয à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¨à¦¿à¦°à§\8dবাà¦\9aন à¦\95রà§\81ন।",
+       "passwordtoopopular": "সাধারণভাবà§\87 à¦¨à¦¿à¦°à§\8dবাà¦\9aিত à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¬à§\8dযবহার à¦\95রা à¦¯à¦¾à¦¬à§\87 à¦¨à¦¾à¥¤ à¦¦à¦¯à¦¼à¦¾ à¦\95রà§\87 à¦\8fমন à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¨à¦¿à¦°à§\8dবাà¦\9aন à¦\95রà§\81ন à¦¯à¦¾ à¦\85নà§\81মান à¦\95রা à¦\86রà¦\93 à¦\95ঠিন।",
        "password-name-match": "আপনার পাসওয়ার্ড আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
        "password-login-forbidden": "এই ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
        "mailmypassword": "পাসওয়ার্ড পুনঃস্থাপন",
        "savechanges": "পরিবর্তন সংরক্ষণ",
        "publishpage": "পাতা প্রকাশ করুন",
        "publishchanges": "পরিবর্তন প্রকাশ করুন",
+       "savearticle-start": "পাতা সংরক্ষণ করুন...",
+       "savechanges-start": "পরিবর্তন সংরক্ষণ করুন...",
+       "publishpage-start": "পাতা প্রকাশ করুন...",
+       "publishchanges-start": "পরিবর্তন প্রকাশ করুন...",
        "preview": "প্রাকদর্শন",
        "showpreview": "প্রাকদর্শন",
        "showdiff": "পরিবর্তনসমূহ",
        "blocked-notice-logextract": "এই ব্যবহারকারী বর্তমানে অবরুদ্ধ রয়েছেন।\nসূত্রের জন্য সাম্প্রতিক বাধাদান লগের ভুক্তিটি নিচে দেওয়া হল:",
        "clearyourcache": "<strong>লক্ষ্য করুন:</strong> সংরক্ষণের পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।\n* <strong>ফায়ারফক্স / সাফারি:</strong> <em>Shift</em> ধরে রাখা অবস্থায়<em>পুনঃলোড করুন</em>-এ ক্লিক করুন, অথবা <em>Ctrl-F5</em> বা <em>Ctrl-R</em> (ম্যাক-এ <em>⌘-R</em>) চাপুন\n* <strong>গুগল ক্রোম:</strong> <em>Ctrl-Shift-R</em> (ম্যাক-এ <em>⌘-Shift-R</em>) চাপুন\n* <strong>ইন্টারনেট এক্সপ্লোরার:</strong> <em>Ctrl</em> ধরে রাখা অবস্থায় <em>Refresh</em>-এ ক্লিক করুন, অথবা <em>Ctrl-F5</em> চাপুন\n* <strong>অপেরা:</strong> <em>মেনু → ব্যবস্থাপনাসমূহ</em>-এ যান (ম্যাকে <em>অপেরা → পছন্দসমূহ</em>) এবং এরপর <em>গোপনীয়তা ও সুরক্ষা → ব্রাউজিং-এর তথ্য পরিষ্কার করুন → ক্যাশে করা ছবি ও ফাইলগুলি</em>।",
        "usercssyoucanpreview": "'''পরামর্শ:''' \"{{int:showpreview}}\" বোতাম ব্যবহার করে সংরক্ষণের আগে আপনার নতুন CSS পরীক্ষা করুন।",
+       "userjsonyoucanpreview": "<strong>পরামর্শ:</strong> \"{{int:showpreview}}\" বোতাম ব্যবহার করে সংরক্ষণের আগে আপনার নতুন JSON পরীক্ষা করুন।",
        "userjsyoucanpreview": "'''পরামর্শ:''' \"{{int:showpreview}}\" বোতাম ব্যবহার করে সংরক্ষণের আগে আপনার নতুন JavaScript পরীক্ষা করুন।",
        "usercsspreview": "'''মনে রাখবেন আপনি আপনার জন্য বরাদ্ধকৃত সিএসএস প্রাকদর্শন করছেন।\nএটা এখনও সংরক্ষণ করা হয়নি!'''",
+       "userjsonpreview": "<strong>মনে রাখুন আপনি আপনার ব্যবহারকারী JSON কেবলমাত্র পরীক্ষা/প্রাকদর্শন করছেন। এটা এখনও সংরক্ষণ করা হয়নি!</strong>",
        "userjspreview": "'''মনে রাখুন আপনি আপনার ব্যবহারকারী জাভাস্ক্রিপ্ট কেবলমাত্র পরীক্ষা/প্রাকদর্শন করছেন। এটা এখনও সংরক্ষণ করা হয়নি!'''",
        "sitecsspreview": "'''মনে রাখবেন আপনি আপনার জন্য বরাদ্ধকৃত সিএসএস প্রাকদর্শন করছেন।\nএটা এখনও সংরক্ষণ করা হয়নি!'''",
+       "sitejsonpreview": "<strong>মনে রাখুন আপনি আপনার ব্যবহারকারী JSON কেবলমাত্র প্রাকদর্শন করছেন। এটা এখনও সংরক্ষণ করা হয়নি!</strong>",
        "sitejspreview": "'''মনে রাখুন আপনি আপনার ব্যবহারকারী জাভাস্ক্রিপ্ট কেবলমাত্র প্রাকদর্শন করছেন।'''\n'''এটা এখনও সংরক্ষণ করা হয়নি!'''",
-       "userinvalidconfigtitle": "'''সতর্কীকরণ:''' \"$1\" নামে কোন আবরণ নেই। মনে রাখবেন, পছন্দমাফিক .css এবং .js পাতাগুলি ছোট হাতের শিরোনাম ব্যবহার করে, যেমন {{ns:user}}:Foo/vector.css; কিন্তু এরকম শিরোনাম নয়: {{ns:user}}:Foo/Vector.css",
+       "userinvalidconfigtitle": "<strong>সতর্কীকরণ:</strong> \"$1\" নামে কোন আবরণ নেই।\nমনে রাখবেন, পছন্দমাফিক .css, .json, এবং .js পাতাগুলি ছোট হাতের শিরোনাম ব্যবহার করে, যেমন {{ns:user}}:উদাহরণ/vector.css; কিন্তু এরকম শিরোনাম নয়: {{ns:user}}:উদাহরণ/Vector.css।",
        "updated": "(হালনাগাদ)",
        "note": "<strong>টীকা:</strong>",
        "previewnote": "'''খেয়াল করুন, এটি একটি প্রাকদর্শন মাত্র।'''\nআপনার পরিবর্তন এখনও সংরক্ষণ করা হয়নি!",
        "copyrightwarning": "অনুগ্রহ করে লক্ষ্য করুন {{SITENAME}}-তে সমস্ত অবদান $2-এর আওতায় প্রাপ্য (বিস্তারিত $1-তে দেখুন)। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে পুনর্বিতরণ করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না।<br />\nআপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন, বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন।\n'''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না!'''",
        "copyrightwarning2": "অনুগ্রহ করে লক্ষ করুন: {{SITENAME}}-এর এই ভুক্তিতে আপনার লেখা বা অবদান অন্যান্য ব্যবহারকারীরা পরিবর্তন বা পরিবর্ধন করতে, এমনকি মুছে ফেলতে পারবেন। {{SITENAME}} এ আপনার সকল লেখালেখি/অবদান গনু ফ্রি ডকুমেন্টেশনের ($1) আওতায় বিনামূল্যে প্রাপ্য ও হস্তান্তরযোগ্য। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে ব্যবহার করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না। আপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন (তবে কোন মৌলিক গবেষণা নয়) বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন। '''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না।'''",
        "editpage-cannot-use-custom-model": "এই পাতার বিষয়বস্তুর রূপ পরিবর্তন করা যাবে না।",
-       "longpageerror": "'''ত্রুটি:  আপনার জমা দেয়া টেক্সটের পরিমাণ {{PLURAL:$1|এক কিলোবাইট|$1 কিলোবাইট}}, যা সর্বোচ্চ সীমা {{PLURAL:$2|এক কিলোবাইটের|$2 কিলোবাইটের}} চেয়ে বেশি।'''\nএটি সংরক্ষণ করা সম্ভব নয়।",
+       "longpageerror": "<strong>ত্রুটি: আপনার জমা দেয়া লেখার পরিমাণ {{PLURAL:$1|এক কিলোবাইট|$1 কিলোবাইট}}, যা সর্বোচ্চ সীমা {{PLURAL:$2|এক কিলোবাইটের|$2 কিলোবাইটের}} চেয়ে বেশি।</strong>\nএটি সংরক্ষণ করা সম্ভব নয়।",
        "readonlywarning": "<strong>সতর্কবার্তা: রক্ষণাবেক্ষণের জন্য ডাটাবেজ অবরুদ্ধ রাখা হয়েছে, তাই এই মুহূর্তে আপনি আপনার সম্পাদনা সংরক্ষণ করতে পারবেন না।</strong>\nআপনি চাইলে লেখাটি প্রতিলিপি করে কোন টেক্সট ফাইলে সেঁটে ভবিষ্যতের জন্য সংরক্ষণ করতে পারেন।\n\nযে সিস্টেম প্রশাসক ডাটাবেজটি  অবরুদ্ধ করেছেন তিনি এই ব্যাখ্যা দিয়েছেন: $1",
        "protectedpagewarning": "'''সতর্কীকরণ: এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি সম্পাদনা করতে পারবেন।'''\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
        "semiprotectedpagewarning": "<strong>টীকা:</strong> এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি সম্পাদনা করতে পারবেন।\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক লগের বিবরণ নিচে দেওয়া হলো:",
        "default": "পূর্বনির্ধারিত",
        "prefs-files": "ফাইল",
        "prefs-custom-css": "স্বনির্ধারিত CSS",
+       "prefs-custom-json": "স্বনির্ধারিত JSON",
        "prefs-custom-js": "স্বনির্ধারিত JS",
-       "prefs-common-config": "সà¦\95ল à¦\95à§\8dষà§\87তà§\8dরà§\87র à¦\9cনà§\8dয à¦¸à¦¿à¦\8fসà¦\8fস/à¦\9cাভাসà§\8dà¦\95à§\8dরিপà§\8dà¦\9f",
+       "prefs-common-config": "সà¦\95ল à¦\86বরণà§\87র à¦\9cনà§\8dয à¦­à¦¾à¦\97à¦\95à§\83ত CSS/JSON/à¦\9cাভাসà§\8dà¦\95à§\8dরিপà§\8dà¦\9f:",
        "prefs-reset-intro": "আপনি এই পাতা ব্যবহার করে আপনার পছন্দসমূহকে সাইটের পূর্বপ্রদত্ত সেটিংসে পরিবর্তন করতে পারেন।\nপরিবর্তন করার পর এটা  আর ফিরিয়ে আনা যাবে না।",
        "prefs-emailconfirm-label": "ই-মেইল নিশ্চিতকরণ:",
        "youremail": "ইমেইল *",
        "grant-createeditmovepage": "পাতা তৈরি, সম্পাদনা এবং স্থানান্তর করুন",
        "grant-delete": "পাতা, পুনর্বিবেচনা ও লগ ভুক্তিসমূহ মুছে ফেলুন।",
        "grant-editinterface": "মিডিয়াউইকি নামস্থান এবং ব্যবহারকারীর সিএসএস/জাভাস্ক্রিপ্ট সম্পাদনা করে",
-       "grant-editmycssjs": "à¦\86পনার à¦¸à¦¿à¦\8fসà¦\8fস/জাভাস্ক্রিপ্ট সম্পাদনা করুন",
+       "grant-editmycssjs": "à¦\86পনার à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¸à¦¿à¦\8fসà¦\8fস/à¦\9cà§\87à¦\8fসà¦\93à¦\8fন/জাভাস্ক্রিপ্ট সম্পাদনা করুন",
        "grant-editmyoptions": "আপনার ব্যবহারকারী পছন্দসমূহ সম্পাদনা করুন",
        "grant-editmywatchlist": "আপনার নজরতালিকা সম্পাদনা করুন",
        "grant-editpage": "বিদ্যমান পাতা সম্পাদনা করুন",
index 5f1419d..7f61393 100644 (file)
        "timezoneregion-indian": "Indijski okean",
        "timezoneregion-pacific": "Tihi okean",
        "allowemail": "Dozvoli e-poštu od ostalih korisnika",
+       "email-allow-new-users-label": "Dozvoli e-poštu od potpuno novih korisnika",
        "email-blacklist-label": "Zabrani sljedećim korisnicima da mi šalju e-poštu:",
        "prefs-searchoptions": "Pretraga",
        "prefs-namespaces": "Imenski prostori",
        "tag-mw-blank": "pražnjenje",
        "tag-mw-replace": "zamijenjeno",
        "tag-mw-rollback": "vraćanje",
+       "tag-mw-undo": "poništenje",
        "tags-title": "Oznake",
        "tags-intro": "Ova stranica prikazuje spisak oznaka koje softver može staviti na svaku izmjenu i njihovo značenje.",
        "tags-tag": "Naziv oznake",
index 7215225..32ac529 100644 (file)
        "recentchangesdays-max": "(ئەوپەڕی $1 {{PLURAL:$1|ڕۆژە|ڕۆژە}})",
        "recentchangescount": "ژمارەی گۆڕانکارییەکان کە نیشان ئەدرێن لە حاڵەتی دیفاڵت:",
        "prefs-help-recentchangescount": "ئەمە دوایین گۆڕانکارییەکان، مێژووی پەڕەکان و لۆگەکانیش لەبەردەگرێت.",
+       "prefs-help-watchlist-token2": "ئەمە کلیلێکی تایبەتیی پێڕستی چاودێرییەکەتە. ھەرکەسێک بیزانێت دەتوانێت پێڕستی چاودێرییەکەت ببینێت، بۆیە لای خۆت بیپارێزە.\nئەگەر پێویستی کرد، [[Special:ResetTokens|دەتوانیت بیگۆڕیت]].",
        "savedprefs": "ھەڵبژاردەکانت پاشەکەوت کران",
        "timezonelegend": "ناوچەی کاتی:",
        "localtime": "کاتی خۆماڵی:",
index f14b971..a4a9afe 100644 (file)
@@ -37,7 +37,9 @@
                        "Marek Pavlica",
                        "Asmen",
                        "Meliganai",
-                       "Ilimanaq29"
+                       "Ilimanaq29",
+                       "Patriccck",
+                       "Ed g2s"
                ]
        },
        "tog-underline": "Podtrhávat odkazy:",
        "savechanges": "Uložit změny",
        "publishpage": "Zveřejnit stránku",
        "publishchanges": "Zveřejnit změny",
+       "savearticle-start": "Uložit změny…",
+       "savechanges-start": "Uložit změny…",
+       "publishpage-start": "Zveřejnit stránku…",
+       "publishchanges-start": "Zveřejnit změny…",
        "preview": "Náhled",
        "showpreview": "Ukázat náhled",
        "showdiff": "Ukázat změny",
index 0873467..6be7e50 100644 (file)
@@ -91,7 +91,8 @@
                        "ThePiscin",
                        "Osnard",
                        "Suriyaa Kudo",
-                       "KPFC"
+                       "KPFC",
+                       "ToBeFree"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "tog-showhiddencats": "Versteckte Kategorien anzeigen",
        "tog-norollbackdiff": "Unterschiede nach dem Zurücksetzen nicht anzeigen",
        "tog-useeditwarning": "Warnen, sofern eine zur Bearbeitung geöffnete Seite verlassen wird, die nicht gespeicherte Änderungen enthält",
-       "tog-prefershttps": "Stets eine sichere Verbindung benutzen, solange ich angemeldet bin",
+       "tog-prefershttps": "Immer eine sichere Verbindung benutzen, solange ich angemeldet bin",
        "underline-always": "immer",
        "underline-never": "nie",
        "underline-default": "abhängig von der Benutzeroberfläche oder Browsereinstellung",
        "pool-queuefull": "Poolwarteschlange ist voll",
        "pool-errorunknown": "Unbekannter Fehler",
        "pool-servererror": "Der Poolzählerdienst ist nicht verfügbar ($1).",
-       "poolcounter-usage-error": "Anwendungsfehler: $1",
+       "poolcounter-usage-error": "Benutzungsfehler: $1",
        "aboutsite": "Über {{SITENAME}}",
        "aboutpage": "Project:Über_{{SITENAME}}",
        "copyright": "Der Inhalt ist verfügbar unter der Lizenz $1, sofern nicht anders angegeben.",
        "cascadeprotected": "Diese Seite ist zur Bearbeitung gesperrt. Sie ist in die {{PLURAL:$1|folgende Seite|folgenden Seiten}} eingebunden, die mittels der Kaskadensperroption geschützt {{PLURAL:$1|ist|sind}}:\n$2",
        "namespaceprotected": "Du hast nicht die erforderliche Berechtigung, um Seiten im Namensraum <strong>$1</strong> bearbeiten zu können.",
        "customcssprotected": "Du hast nicht die Berechtigung, diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.",
+       "customjsonprotected": "Du hast keine Berechtigung, diese JSON-Seite zu bearbeiten, da sie persönliche Einstellungen eines anderen Benutzers enthält.",
        "customjsprotected": "Du hast nicht die Berechtigung, diese JavaScript enthaltende Seite zu bearbeiten, da es sich hierbei um die persönlichen Einstellungen eines anderen Benutzers handelt.",
        "mycustomcssprotected": "Du hast keine Berechtigung, diese CSS-Seite zu bearbeiten.",
+       "mycustomjsonprotected": "Du hast keine Berechtigung, diese JSON-Seite zu bearbeiten.",
        "mycustomjsprotected": "Du hast keine Berechtigung, diese JavaScript-Seite zu bearbeiten.",
        "myprivateinfoprotected": "Du hast keine Berechtigung, deine privaten Informationen zu bearbeiten.",
        "mypreferencesprotected": "Du bist nicht berechtigt, deine Einstellungen zu ändern.",
        "savechanges": "Änderungen speichern",
        "publishpage": "Seite veröffentlichen",
        "publishchanges": "Änderungen veröffentlichen",
+       "savearticle-start": "Seite speichern …",
+       "savechanges-start": "Änderungen speichern …",
+       "publishpage-start": "Seite veröffentlichen …",
+       "publishchanges-start": "Änderungen veröffentlichen …",
        "preview": "Vorschau",
        "showpreview": "Vorschau zeigen",
        "showdiff": "Änderungen zeigen",
        "blocked-notice-logextract": "{{GENDER:$1|Dieser Benutzer|Diese Benutzerin}} ist zurzeit gesperrt.\nZur Information folgt ein aktueller Auszug aus dem Benutzersperr-Logbuch:",
        "clearyourcache": "<strong>Hinweis:</strong> Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.\n* <strong>Firefox/Safari:</strong> <em>Umschalttaste</em> drücken und gleichzeitig <em>Aktualisieren</em> anklicken oder entweder <em>Strg+F5</em> oder <em>Strg+R</em> (<em>⌘+R</em> auf dem Mac) drücken\n* <strong>Google Chrome:</strong> <em>Umschalttaste+Strg+R</em> (<em>⌘+Umschalttaste+R</em> auf dem Mac) drücken\n* <strong>Internet Explorer:</strong> <em>Strg+F5</em> drücken oder <em>Strg</em> drücken und gleichzeitig <em>Aktualisieren</em> anklicken\n* <strong>Opera:</strong> Gehe zu <em>Menü → Einstellungen</em> (<em>Opera → Einstellungen</em> auf dem Mac) und dann auf <em>Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien</em>.",
        "usercssyoucanpreview": "'''Tipp:''' Benutze den „{{int:showpreview}}“-Button, um dein neues CSS vor dem Speichern zu testen.",
+       "userjsonyoucanpreview": "<strong>Tipp:</strong> Benutze den „{{int:showpreview}}“-Button, um dein neues JSON vor dem Speichern zu testen.",
        "userjsyoucanpreview": "'''Tipp:''' Benutze den „{{int:showpreview}}“-Button, um dein neues JavaScript vor dem Speichern zu testen.",
        "usercsspreview": "'''Beachte, dass du nur eine Vorschau deines Benutzer-CSS betrachtest.'''\n'''Es wurde noch nicht gespeichert!'''",
+       "userjsonpreview": "<strong>Du testest/zeigst nur eine Vorschau deiner Benutzer-JSON-Konfiguration an.\nSie wurde noch nicht gespeichert!</strong>",
        "userjspreview": "'''Beachte, dass du nur eine Vorschau deines Benutzer-JavaScripts betrachtest.'''\n'''Es wurde noch nicht gespeichert!'''",
        "sitecsspreview": "'''Beachte, dass du nur eine Vorschau dieses CSS betrachtest.'''\n'''Es wurde noch nicht gespeichert!'''",
+       "sitejsonpreview": "<strong>Du zeigst nur eine Vorschau dieser JSON-Konfiguration an.\nSie wurde noch nicht gespeichert!</strong>",
        "sitejspreview": "'''Beachte, dass du nur eine Vorschau dieses JavaScript betrachtest.'''\n'''Es wurde noch nicht gespeichert!'''",
-       "userinvalidconfigtitle": "'''Achtung:''' Die Benutzeroberfläche „$1“ existiert nicht. Bedenke, dass benutzerspezifische .css- und .js-Seiten mit einem Kleinbuchstaben anfangen müssen, also beispielsweise ''{{ns:user}}:Mustermann/vector.css'' an Stelle von ''{{ns:user}}:Mustermann/Vector.css''.",
+       "userinvalidconfigtitle": "'''Achtung:''' Die Benutzeroberfläche „$1“ existiert nicht. Bedenke, dass benutzerspezifische .css-, .json- und .js-Seiten mit einem Kleinbuchstaben anfangen müssen, also beispielsweise ''{{ns:user}}:Mustermann/vector.css'' an Stelle von ''{{ns:user}}:Mustermann/Vector.css''.",
        "updated": "(Geändert)",
        "note": "'''Hinweis:'''",
        "previewnote": "'''Dies ist nur eine Vorschau.'''\nDie Seite wurde noch nicht gespeichert!",
        "default": "Voreinstellung",
        "prefs-files": "Dateien",
        "prefs-custom-css": "Benutzerdefiniertes CSS",
+       "prefs-custom-json": "Benutzerdefiniertes JSON",
        "prefs-custom-js": "Benutzerdefiniertes JavaScript",
-       "prefs-common-config": "Gemeinsames CSS/JavaScript aller Benutzeroberflächen:",
+       "prefs-common-config": "Gemeinsames CSS/JSON/JavaScript aller Benutzeroberflächen:",
        "prefs-reset-intro": "Du kannst diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.\nDies kann nicht mehr rückgängig gemacht werden.",
        "prefs-emailconfirm-label": "Bestätigung:",
        "youremail": "E-Mail-Adresse:",
        "right-editcontentmodel": "Das Inhaltsmodell einer Seite bearbeiten",
        "right-editinterface": "Systemnachrichten und Benutzeroberflächen bearbeiten",
        "right-editusercss": "Fremde CSS-Dateien bearbeiten",
+       "right-edituserjson": "JSON-Dateien anderer Benutzer bearbeiten",
        "right-edituserjs": "Fremde JavaScript-Dateien bearbeiten",
        "right-editmyusercss": "Eigene Benutzer-CSS-Dateien bearbeiten",
+       "right-editmyuserjson": "Eigene Benutzer-JSON-Dateien bearbeiten",
        "right-editmyuserjs": "Eigene Benutzer-JavaScript-Dateien bearbeiten",
        "right-viewmywatchlist": "Eigene Beobachtungsliste ansehen",
        "right-editmywatchlist": "Eigene Beobachtungsliste bearbeiten. Einige Aktionen ermöglichen das Hinzufügen von Seiten ohne dieses Recht.",
        "grant-createaccount": "Benutzerkonten erstellen",
        "grant-createeditmovepage": "Seiten erstellen, bearbeiten und verschieben",
        "grant-delete": "Seiten, Versionen und Logbucheinträge löschen",
-       "grant-editinterface": "MediaWiki-Namensraum und Benutzer-CSS/JavaScript bearbeiten",
-       "grant-editmycssjs": "Dein Benutzer-CSS/JavaScript bearbeiten",
+       "grant-editinterface": "MediaWiki-Namensraum und Benutzer-CSS/JSON/JavaScript bearbeiten",
+       "grant-editmycssjs": "Dein Benutzer-CSS/JSON/JavaScript bearbeiten",
        "grant-editmyoptions": "Deine Benutzereinstellungen bearbeiten",
        "grant-editmywatchlist": "Deine Beobachtungsliste bearbeiten",
        "grant-editpage": "Vorhandene Seiten bearbeiten",
        "group-bot.css": "/* CSS an dieser Stelle wirkt sich nur auf Bots aus */",
        "group-sysop.css": "/* CSS an dieser Stelle wirkt sich nur auf Administratoren aus */",
        "group-bureaucrat.css": "/* Das folgende CSS wird nur für Bürokraten geladen. */",
+       "common.json": "/* JSON an dieser Stelle wird bei jeder Seitenladung für alle Benutzer geladen. */",
        "common.js": "/* Das folgende JavaScript wird für alle Benutzer geladen. */",
        "group-autoconfirmed.js": "/* Das folgende JavaScript wird nur für automatisch bestätigte Benutzer geladen. */",
        "group-user.js": "/* Das folgende JavaScript wird nur für angemeldete Benutzer geladen. */",
        "unlinkaccounts-success": "Das Benutzerkonto wurde getrennt.",
        "authenticationdatachange-ignored": "Die Änderung der Authentifizierungsdaten wurde nicht bearbeitet. Vielleicht wurde kein Anbieter konfiguriert?",
        "userjsispublic": "Bitte beachten: JavaScript-Unterseiten sollten keine vertraulichen Daten enthalten, da sie von anderen Benutzern eingesehen werden können.",
+       "userjsonispublic": "Bitte beachte: JSON-Unterseiten sollten keine vertraulichen Daten enthalten, da sie von anderen Benutzern einsehbar sind.",
        "usercssispublic": "Bitte beachten: CSS-Unterseiten sollten keine vertraulichen Daten enthalten, da sie von anderen Benutzern eingesehen werden können.",
        "restrictionsfield-badip": "Ungültige IP-Adresse oder ungültiger IP-Adressbereich: $1",
        "restrictionsfield-label": "Erlaubte IP-Adressbereiche:",
index 0f58aaf..74ee879 100644 (file)
@@ -65,7 +65,7 @@
        "tog-watchlisthidebots": "Lista seyr kerdışi ra vurnayışanê boti bınımne",
        "tog-watchlisthideminor": "Vurnayışanê qıckekan lista mına seyr kerdışi de bınımne",
        "tog-watchlisthideliu": "Lista seyr kerdışi ra vurnayışanê karberanê cı kewteyan bınımne",
-       "tog-watchlistreloadautomatically": "Filtra vıriyayış dı listey seyri otomatikman anewe kı",
+       "tog-watchlistreloadautomatically": "Yew filtre ke vurriya, lista seyrkerdışi be xo newe ke (JavaScript lazımo)",
        "tog-watchlisthideanons": "Lista seyr kerdışi ra vurnayışanê karberanê anoniman bınımne",
        "tog-watchlisthidepatrolled": "Lista seyr kerdışi ra vurnayışanê qontrol kerdeyan bınımne",
        "tog-watchlisthidecategorization": "Pera kategorizasyoni bınımne",
index fd1d050..c30d87e 100644 (file)
        "savechanges": "Αποθήκευση αλλαγών",
        "publishpage": "Δημοσίευση σελίδας",
        "publishchanges": "Δημοσίευση αλλαγών",
+       "savearticle-start": "Αποθήκευση σελίδας σε εξέλιξη...",
+       "publishpage-start": "Δημοσίευση σελίδας...",
+       "publishchanges-start": "Δημοσίευση αλλαγών...",
        "preview": "Προεπισκόπηση",
        "showpreview": "Εμφάνιση προεπισκόπησης",
        "showdiff": "Εμφάνιση αλλαγών",
        "userjspreview": "'''Σας υπενθυμίζουμε ότι κάνετε απλώς έλεγχο/προεπισκόπηση του JavaScript του χρήστη -δεν το έχετε ακόμα αποθηκεύσει!'''",
        "sitecsspreview": "<strong>Θυμηθείτε ότι είναι απλώς μια προεπισκόπηση αυτού του CSS.\nΔεν έχει αποθηκευτεί ακόμα!</strong>",
        "sitejspreview": "''' Θυμηθείτε ότι κάνετε μόνο προεπισκόπηση σ'αυτόν τον κώδικα JavaScript.'' '\n'' ' Δεν τον έχετε αποθηκεύσει ακόμη!'' '",
-       "userinvalidconfigtitle": "'''Προσοχή:''' Δεν υπάρχει skin με τίτλο \"$1\". Θυμηθείτε οι προσαρμοσμένες σελίδες .css και .js χρησιμοποιούν έναν τίτλο με μικρά γράμματα, π.χ. {{ns:user}}:Foo/vector.css σε αντίθεση με το {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Προσοχή:<strong> Δεν υπάρχει skin με τίτλο \"$1\". Θυμηθείτε οι προσαρμοσμένες σελίδες .css, .json, .js χρησιμοποιούν έναν τίτλο με μικρά γράμματα, π.χ. {{ns:user}}:Foo/vector.css σε αντίθεση με το {{ns:user}}:Foo/Vector.css.",
        "updated": "(Ενημερώθηκε)",
        "note": "'''Προσοχή: '''",
        "previewnote": "<strong>Να θυμάστε ότι αυτό είναι απλώς προεπισκόπηση.</strong>\nΟι αλλαγές σας δεν έχουν αποθηκευτεί ακόμα!",
        "default": "προεπιλογή",
        "prefs-files": "Αρχεία",
        "prefs-custom-css": "Προκαθορισμένη CSS",
+       "prefs-custom-json": "Εξατομικευμένο JSON",
        "prefs-custom-js": "Προσαρμοσμένη JavaScript",
-       "prefs-common-config": "Κοινά CSS/JavaScript για όλα τα θέματα εμφάνισης:",
+       "prefs-common-config": "Κοινά CSS/JSON/JavaScript για όλα τα θέματα εμφάνισης:",
        "prefs-reset-intro": "Μπορείτε να χρησιμοποιήσετε αυτήν την σελίδα για να επαναρρυθμίσετε τις προτιμήσεις σας στις προεπιλογές του ιστότοπου. Αυτό δεν μπορεί να αναστρεφθεί.",
        "prefs-emailconfirm-label": "Επιβεβαίωση διεύθυνσης ηλεκτρονικού ταχυδρομείου:",
        "youremail": "Διεύθυνση ηλεκτρονικού ταχυδρομείου:",
        "grant-createaccount": "Δημιουργία λογαριασμών",
        "grant-createeditmovepage": "Δημιουργία, επεξεργασία και μετακίνηση σελίδων",
        "grant-delete": "Διαγραφή σελίδων, αναθεωρήσεων και καταχωρίσεων σε αρχεία καταγραφής",
-       "grant-editinterface": "Επεξεργασία του ονοματοχώρου Mediawiki και των CSS/JavaScript των χρηστών",
-       "grant-editmycssjs": "Επεξεργασία των CSS/JavaScript χρήστη σας",
+       "grant-editinterface": "Επεξεργασία του ονοματοχώρου Mediawiki και των CSS/JSON/JavaScript των χρηστών",
+       "grant-editmycssjs": "Επεξεργασία των CSS/JSON/JavaScript του χρήστη σας",
        "grant-editmyoptions": "Επεξεργασία των προτιμήσεων χρήστη σας",
        "grant-editmywatchlist": "Επεξεργασία της λίστας παρακολούθησής σας",
        "grant-editpage": "Επεξεργασία υπαρχουσών σελίδων",
        "rcfilters-view-namespaces-tooltip": "Φιλτράρισμα αποτελεσμάτων κατά ονοματοχώρο",
        "rcfilters-liveupdates-button": "Ζωντανή ανανέωση",
        "rcfilters-liveupdates-button-title-on": "Απενεργοποίηση ζωντανής ανανέωσης",
+       "rcfilters-watchlist-markseen-button": "Σημειώστε όλες τις αλλαγές ως εξετασμένες",
+       "rcfilters-watchlist-edit-watchlist-button": "Διορθώστε τη λίστα παρακολούθησης",
+       "rcfilters-watchlist-showupdated": "Σελίδες που έχουν υποστεί αλλαγές από την τελευταία φορά που τις επισκεφθήκατε εμφανίζονται με '''έντονους χαρακτήρες'''.",
        "rcfilters-preference-label": "Απόκρυψη της βελτιωμένης έκδοσης των Πρόσφατων Αλλαγών",
        "rcfilters-preference-help": "Αναστέλλει τον επανασχεδιασμό διεπαφής 2017 και όλα τα εργαλεία που προστέθηκαν στη συνέχεια και από τότε.",
        "rcnotefrom": "Παρακάτω {{PLURAL:$5|είναι η αλλαγή|είναι οι αλλαγές}} από <strong>$3, $4</strong> (έως <strong>$1</strong> που εμφανίζεται).",
index aaddece..9036396 100644 (file)
        "cascadeprotected": "This page has been protected from editing because it is transcluded in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the \"cascading\" option turned on:\n$2",
        "namespaceprotected": "You do not have permission to edit pages in the <strong>$1</strong> namespace.",
        "customcssprotected": "You do not have permission to edit this CSS page because it contains another user's personal settings.",
+       "customjsonprotected": "You do not have permission to edit this JSON page because it contains another user's personal settings.",
        "customjsprotected": "You do not have permission to edit this JavaScript page because it contains another user's personal settings.",
        "mycustomcssprotected": "You do not have permission to edit this CSS page.",
+       "mycustomjsonprotected": "You do not have permission to edit this JSON page.",
        "mycustomjsprotected": "You do not have permission to edit this JavaScript page.",
        "myprivateinfoprotected": "You do not have permission to edit your private information.",
        "mypreferencesprotected": "You do not have permission to edit your preferences.",
        "savechanges": "Save changes",
        "publishpage": "Publish page",
        "publishchanges": "Publish changes",
+       "savearticle-start": "Save page…",
+       "savechanges-start": "Save changes…",
+       "publishpage-start": "Publish page…",
+       "publishchanges-start": "Publish changes…",
        "preview": "Preview",
        "showpreview": "Show preview",
        "showdiff": "Show changes",
        "blocked-notice-logextract": "This user is currently blocked.\nThe latest block log entry is provided below for reference:",
        "clearyourcache": "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.\n* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)\n* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)\n* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Go to <em>Menu → Settings</em> (<em>Opera → Preferences</em> on a Mac) and then to <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
+       "userjsonyoucanpreview": "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new JSON before saving.",
        "userjsyoucanpreview": "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
        "usercsspreview": "<strong>Remember that you are only previewing your user CSS.\nIt has not yet been saved!</strong>",
+       "userjsonpreview": "<strong>Remember that you are only testing/previewing your user JSON config.\nIt has not yet been saved!</strong>",
        "userjspreview": "<strong>Remember that you are only testing/previewing your user JavaScript.\nIt has not yet been saved!</strong>",
        "sitecsspreview": "<strong>Remember that you are only previewing this CSS.\nIt has not yet been saved!</strong>",
+       "sitejsonpreview": "<strong>Remember that you are only previewing this JSON config.\nIt has not yet been saved!</strong>",
        "sitejspreview": "<strong>Remember that you are only previewing this JavaScript code.\nIt has not yet been saved!</strong>",
-       "userinvalidconfigtitle": "<strong>Warning:</strong> There is no skin \"$1\".\nCustom .css and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Warning:</strong> There is no skin \"$1\".\nCustom .css, .json, and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.",
        "updated": "(Updated)",
        "note": "<strong>Note:</strong>",
        "previewnote": "<strong>Remember that this is only a preview.</strong>\nYour changes have not yet been saved!",
        "default": "default",
        "prefs-files": "Files",
        "prefs-custom-css": "Custom CSS",
+       "prefs-custom-json": "Custom JSON",
        "prefs-custom-js": "Custom JavaScript",
-       "prefs-common-config": "Shared CSS/JavaScript for all skins:",
+       "prefs-common-config": "Shared CSS/JSON/JavaScript for all skins:",
        "prefs-reset-intro": "You can use this page to reset your preferences to the site defaults.\nThis cannot be undone.",
        "prefs-emailconfirm-label": "Email confirmation:",
        "youremail": "Email:",
        "right-editcontentmodel": "Edit the content model of a page",
        "right-editinterface": "Edit the user interface",
        "right-editusercss": "Edit other users' CSS files",
+       "right-edituserjson": "Edit other users' JSON files",
        "right-edituserjs": "Edit other users' JavaScript files",
        "right-editmyusercss": "Edit your own user CSS files",
+       "right-editmyuserjson": "Edit your own user JSON files",
        "right-editmyuserjs": "Edit your own user JavaScript files",
        "right-viewmywatchlist": "View your own watchlist",
        "right-editmywatchlist": "Edit your own watchlist. Note some actions will still add pages even without this right.",
        "grant-createaccount": "Create accounts",
        "grant-createeditmovepage": "Create, edit, and move pages",
        "grant-delete": "Delete pages, revisions, and log entries",
-       "grant-editinterface": "Edit the MediaWiki namespace and user CSS/JavaScript",
-       "grant-editmycssjs": "Edit your user CSS/JavaScript",
+       "grant-editinterface": "Edit the MediaWiki namespace and user CSS/JSON/JavaScript",
+       "grant-editmycssjs": "Edit your user CSS/JSON/JavaScript",
        "grant-editmyoptions": "Edit your user preferences",
        "grant-editmywatchlist": "Edit your watchlist",
        "grant-editpage": "Edit existing pages",
        "group-bot.css": "/* CSS placed here will affect bots only */",
        "group-sysop.css": "/* CSS placed here will affect sysops only */",
        "group-bureaucrat.css": "/* CSS placed here will affect bureaucrats only */",
+       "common.json": "/* Any JSON here will be loaded for all users on every page load. */",
        "common.js": "/* Any JavaScript here will be loaded for all users on every page load. */",
        "group-autoconfirmed.js": "/* Any JavaScript here will be loaded for autoconfirmed users only */",
        "group-user.js": "/* Any JavaScript here will be loaded for registered users only */",
        "unlinkaccounts-success": "The account was unlinked.",
        "authenticationdatachange-ignored": "The authentication data change was not handled. Maybe no provider was configured?",
        "userjsispublic": "Please note: JavaScript subpages should not contain confidential data as they are viewable by other users.",
+       "userjsonispublic": "Please note: JSON subpages should not contain confidential data as they are viewable by other users.",
        "usercssispublic": "Please note: CSS subpages should not contain confidential data as they are viewable by other users.",
        "restrictionsfield-badip": "Invalid IP address or range: $1",
        "restrictionsfield-label": "Allowed IP ranges:",
index 035abcb..ea80e97 100644 (file)
        "history-feed-empty": "La petita paĝo ne ekzistas.\nĜi verŝajne estis forigita de la vikio, aŭ alinomita.\nProvu [[Special:Search|serĉi en la vikio]] por rilataj novaj paĝoj.",
        "history-edit-tags": "Redakti etikedojn de elektitaj revizioj",
        "rev-deleted-comment": "(komento forigita)",
-       "rev-deleted-user": "(uzanto-nomo forigita)",
+       "rev-deleted-user": "(uzantonomo forigita)",
        "rev-deleted-event": "(protokolaj detaloj forigitaj)",
        "rev-deleted-user-contribs": "[salutnomo aŭ IP-adreso estis forigita - redakto estas kaŝita en kontribuoj]",
        "rev-deleted-text-permission": "Ĉi tiu revizio de la paĝo estis '''forigita'''.\nEble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
index 2a4f1d9..a55a0cd 100644 (file)
        "savechanges": "Guardar cambios",
        "publishpage": "Publicar la página",
        "publishchanges": "Publicar cambios",
+       "savearticle-start": "Guardar página…",
+       "savechanges-start": "Guardar cambios…",
+       "publishpage-start": "Publicar página…",
+       "publishchanges-start": "Publicar cambios…",
        "preview": "Previsualizar",
        "showpreview": "Mostrar previsualización",
        "showdiff": "Mostrar los cambios",
        "userpage-userdoesnotexist-view": "El usuario «$1» no está registrado.",
        "blocked-notice-logextract": "Este usuario se encuentra actualmente bloqueado.\nA continuación se muestra la última entrada del registro de bloqueos para más información:",
        "clearyourcache": "<strong>Nota:</strong> tras guardar, quizás necesites actualizar la caché de tu navegador para ver los cambios.\n* <strong>Firefox/Safari:</strong> Mantén presionada la tecla <em>Mayús</em> mientras pulsas el botón <em>Actualizar</em>, o presiona <em>Ctrl+F5</em> o <em>Ctrl+R</em> (<em>⌘+R</em> en Mac)\n* <strong>Google Chrome:</strong> presiona <em>Ctrl+Shift+R</em> (<em>⌘+Mayús+R</em> en Mac)\n* <strong>Internet Explorer:</strong> mantén presionada <em>Ctrl</em> mientras pulsas <em>Actualizar</em>, o presiona <em>Ctrl+F5</em>\n* <strong>Opera:</strong> dirígete a <em>Menú → Configuración</em> (<em>Opera → Preferencias</em> en Mac) y luego a <em>Privacidad y seguridad → Borrar datos de navegación → Imágenes y archivos en caché</em>.",
-       "usercssyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el nuevo CSS antes de guardarlo.",
-       "userjsyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el nuevo código JavaScript antes de guardarlo.",
+       "usercssyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el código CSS nuevo antes de guardarlo.",
+       "userjsonyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el código JSON nuevo antes de guardarlo.",
+       "userjsyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el código JavaScript nuevo antes de guardarlo.",
        "usercsspreview": "<strong>Recuerda que solo estás previsualizando tu CSS de usuario.\n¡Aún no se ha guardado!</strong>",
        "userjspreview": "<strong>¡Recuerda que solo estás previsualizando tu JavaScript de usuario.\n¡Aún no se ha guardado!</strong>",
        "sitecsspreview": "<strong>Recuerda que solo estás previsualizando este CSS.\n¡Aún no se ha guardado!</strong>",
        "default": "predeterminado",
        "prefs-files": "Archivos",
        "prefs-custom-css": "CSS personalizado",
+       "prefs-custom-json": "JSON personalizado",
        "prefs-custom-js": "JavaScript personalizado",
-       "prefs-common-config": "CSS/JavaScript compartido para todas las apariencias:",
+       "prefs-common-config": "CSS/JSON/JavaScript compartido para todas las apariencias:",
        "prefs-reset-intro": "Puedes usar esta página para restaurar los valores predeterminados de tus preferencias.\nNo podrás deshacer esta acción.",
        "prefs-emailconfirm-label": "Confirmación de correo electrónico:",
        "youremail": "Correo electrónico:",
        "right-editcontentmodel": "Editar el modelo de contenido de una página",
        "right-editinterface": "Editar la interfaz de usuario",
        "right-editusercss": "Editar las páginas de CSS de otros usuarios",
+       "right-edituserjson": "Editar archivos JSON de otros usuarios",
        "right-edituserjs": "Editar las páginas de JavaScript de otros usuarios",
        "right-editmyusercss": "Editar tus archivos CSS",
        "right-editmyuserjs": "Editar tus archivos JavaScript",
        "grant-createeditmovepage": "Crear, editar y trasladar páginas",
        "grant-delete": "Borrar páginas, revisiones y entradas del registro",
        "grant-editinterface": "Editar el espacio de nombres MediaWiki y el CSS/JavaScript de usuarios",
-       "grant-editmycssjs": "Editar tu CSS o JavaScript",
+       "grant-editmycssjs": "Editar tu CSS/JSON/JavaScript",
        "grant-editmyoptions": "Editar tus preferencias de usuario",
        "grant-editmywatchlist": "Editar tu lista de seguimiento",
        "grant-editpage": "Editar páginas existentes",
        "protectedarticle-comment": "{{GENDER:$2|Protegió}} «[[$1]]»",
        "modifiedarticleprotection-comment": "{{GENDER:$2|Cambió el nivel de protección}} de «[[$1]]»",
        "unprotectedarticle-comment": "{{GENDER:$2|Eliminó la protección}} de «[[$1]]»",
-       "protect-title": "Cambiando el nivel de protección de «$1»",
+       "protect-title": "Cambio del nivel de protección de «$1»",
        "protect-title-notallowed": "Ver el nivel de protección de «$1»",
        "prot_1movedto2": "[[$1]] se trasladó a [[$2]]",
        "protect-badnamespace-title": "Espacio de nombres no protegible",
        "fileduplicatesearch-info": "$1 × $2 píxeles<br />Tamaño: $3<br />Tipo MIME: $4",
        "fileduplicatesearch-result-1": "El archivo «$1» no tiene duplicados idénticos.",
        "fileduplicatesearch-result-n": "El archivo «$1» tiene {{PLURAL:$2|1 duplicado idéntico|$2 duplicados idénticos}}.",
-       "fileduplicatesearch-noresults": "Ningún archivo con el nombre «$1» encontrado.",
+       "fileduplicatesearch-noresults": "No se encontró ningún archivo denominado «$1».",
        "specialpages": "Páginas especiales",
        "specialpages-note-top": "Leyenda",
        "specialpages-note-restricted": "* Páginas especiales ordinarias.\n* <span class=\"mw-specialpagerestricted\">Páginas especiales restringidas.</span>",
        "unlinkaccounts": "Desvincular cuentas",
        "unlinkaccounts-success": "Se ha desvinculado la cuenta.",
        "authenticationdatachange-ignored": "El cambio den los datos de autentificacion no fue realizado. ¿Tal vez, no se configuró un proveedor?",
-       "userjsispublic": "Recuerda: las subpáginas JavaScript no deberían contener datos confidenciales, pues otros usuarios los pueden ver.",
-       "usercssispublic": "Recuerda: las subpáginas CSS no deberían contener datos confidenciales, pues otros usuarios los pueden ver.",
+       "userjsispublic": "Recuerda: las subpáginas JavaScript no deben contener datos confidenciales, pues otros usuarios los podrían ver.",
+       "userjsonispublic": "Recuerda: las subpáginas JSON no deben contener datos confidenciales, pues otros usuarios los podrían ver.",
+       "usercssispublic": "Recuerda: las subpáginas CSS no deben contener datos confidenciales, pues otros usuarios los podrían ver.",
        "restrictionsfield-badip": "Dirección o intervalo IP no válidos: $1",
        "restrictionsfield-label": "Intervalos de IP permitidos:",
        "restrictionsfield-help": "Una dirección IP o intervalo de CIDR por renglón. Para activarlo todo, utiliza <pre>0.0.0.0/0\n::/0</pre>",
index 6206b0b..c8c9109 100644 (file)
        "cascadeprotected": "See lehekülg on muutmise eest kaitstud, sest see on osa {{PLURAL:$1|järgmisest leheküljest|järgmistest lehekülgedest}}, mis on kaskaadkaitse all:\n$2",
        "namespaceprotected": "Sul pole õigust redigeerida lehekülgi nimeruumis '''$1'''.",
        "customcssprotected": "Sul pole õigust seda CSS-lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.",
+       "customjsonprotected": "Sul pole lubatud redigeerida seda JSON-lehekülge, sest see sisaldab teise kasutaja isiklikke eelistusi.",
        "customjsprotected": "Sul pole õigust seda JavaScripti lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.",
        "mycustomcssprotected": "Sul pole õigust redigeerida seda CSS-lehekülge.",
+       "mycustomjsonprotected": "Sul pole lubatud seda JSON-lehekülge redigeerida.",
        "mycustomjsprotected": "Sul pole õigust redigeerida seda JavaScript-lehekülge.",
        "myprivateinfoprotected": "Sul pole lubatud oma eraandmeid redigeerida.",
        "mypreferencesprotected": "Sul pole lubatud oma eelistusi muuta.",
        "wrongpasswordempty": "Parool jäi sisestamata. Palun proovi uuesti.",
        "passwordtooshort": "Parool peab koosnema vähemalt {{PLURAL:$1|ühest|$1}} tähemärgist.",
        "passwordtoolong": "Parool ei saa olla pikem kui {{PLURAL:$1|üks märk|$1 märk}}.",
-       "passwordtoopopular": "Liigi levinud parooli ei saa kasutada. Palun vali haruldasem parool.",
+       "passwordtoopopular": "Liiga levinud paroole ei saa kasutada. Palun vali parool, mida on keerulisem ära arvata.",
        "password-name-match": "Parool peab kasutajanimest erinema.",
        "password-login-forbidden": "Selle kasutajanime ja parooli kasutamine on keelatud.",
        "mailmypassword": "Lähtesta parool",
        "savechanges": "Salvesta",
        "publishpage": "Avalda lehekülg",
        "publishchanges": "Avalda muudatused",
+       "savearticle-start": "Salvesta lehekülg…",
+       "savechanges-start": "Salvesta muudatused…",
+       "publishpage-start": "Avalda lehekülg…",
+       "publishchanges-start": "Avalda muudatused…",
        "preview": "Eelvaade",
        "showpreview": "Näita eelvaadet",
        "showdiff": "Näita muudatusi",
        "blocked-notice-logextract": "See kasutaja on praegu blokeeritud.\nAllpool on toodud viimane blokeerimislogi sissekanne:",
        "clearyourcache": "<strong>Märkus:</strong> Võimalik, et pärast salvestamist tuleb muudatuste nägemiseks brauseri puhver tühjendada.\n* <strong>Firefox / Safari:</strong> Hoia all <em>Shift</em>-klahvi ja klõpsa <em>Laadi uuesti</em> või vajuta kas <em>Ctrl-F5</em> või <em>Ctrl-R</em> (Macis <em>⌘-R</em>).\n* <strong>Google Chrome:</strong> Vajuta <em>Ctrl-Shift-R</em> (Macis <em>⌘-Shift-R</em>).\n* <strong>Internet Explorer:</strong> Hoia all <em>Ctrl</em>-klahvi ja klõpsa <em>Värskenda</em> või vajuta <em>Ctrl-F5</em>.\n* <strong>Opera:</strong> Mine asukohta <em>Menüü → Seaded</em> (Macis <em>Opera → Eelistused</em>) ja seejärel <em>Andmekaitse ja turvalisus → Tühjenda sirvimisandmed → Puhverdatud pildid ja failid</em>.",
        "usercssyoucanpreview": "'''Vihje:''' Enne salvestamist kasuta oma uue CSSi proovimiseks nuppu \"{{int:showpreview}}\".",
+       "userjsonyoucanpreview": "<strong>Nõuanne:</strong> Kasuta nuppu \"{{int:showpreview}}\", et uut JSON-i enne salvestamist katsetada.",
        "userjsyoucanpreview": "'''Vihje:''' Enne salvestamist kasuta oma uue JavaScripti proovimiseks nuppu \"{{int:showpreview}}\".",
        "usercsspreview": "'''Ära unusta, et seda versiooni sinu isiklikust stiililehest pole veel salvestatud!'''",
+       "userjsonpreview": "<strong>Pea meeles, see on eelvaade ja sa kõigest katsetad kasutaja JSON-häälestust.\nSeda pole veel salvestatud!</strong>",
        "userjspreview": "'''Ära unusta, et see versioon sinu isiklikust JavaScriptist on alles salvestamata!'''",
        "sitecsspreview": "'''Pea meeles, et see on vaid selle stiililehe eelvaade.'''\n'''Seda pole veel salvestatud!'''",
+       "sitejsonpreview": "<strong>Pea meeles, see on kõigest JSON-häälestuse eelvaade.\nSeda pole veel salvestatud!</strong>",
        "sitejspreview": "'''Pea meeles, et see on vaid selle JavaScripti-koodi eelvaade.'''\n'''Seda pole veel salvestatud!'''",
-       "userinvalidconfigtitle": "'''Hoiatus:''' Kujundust nimega \"$1\" ei ole.\nÄra unusta, et kasutaja isiklikud .css- ja .js-lehed kasutavad väiketähega algavaid nimesid, näiteks  {{ns:user}}:Juhan Julm/vector.css ja mitte {{ns:user}}:Juhan Julm/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Hoiatus:</strong> Kujundust nimega \"$1\" ei ole.\nKohandatud .css-, .json- ja .js-lehtede pealkirjad algavad väikese tähega; näiteks  {{ns:user}}:Juhan Julm/vector.css, mitte {{ns:user}}:Juhan Julm/Vector.css.",
        "updated": "(Värskendatud)",
        "note": "'''Meeldetuletus:'''",
        "previewnote": "'''Ära unusta, et see on kõigest eelvaade!'''\nSinu muudatused pole veel salvestatud!",
        "expansion-depth-exceeded-category": "Ületatud hõrendussügavusega leheküljed",
        "expansion-depth-exceeded-category-desc": "Lehekülg ületab hõrendussügavuse ülemmäära.",
        "expansion-depth-exceeded-warning": "Lehekülg ületas hõrendussügavuse.",
-       "parser-unstrip-loop-warning": "''Unstrip''-funktsiooni silmus tuvastatud",
-       "unstrip-depth-warning": "''Unstrip''-funktsioonis rekursiooni piirmäär ületatud ($1)",
+       "parser-unstrip-loop-warning": "Tuvastatud funktsiooni \"unstrip\" silmus",
+       "unstrip-depth-warning": "Ületatud funktsiooni \"unstrip\" sügavuse piirmäär ($1)",
+       "unstrip-depth-category": "Leheküljed, kus funktsiooni \"unstrip\" sügavuse limiit on ületatud",
+       "unstrip-size-warning": "Funktsiooni \"unstrip\" suuruse ülemmäär ületatud ($1)",
+       "unstrip-size-category": "Leheküljed, kus funktsiooni \"unstrip\" suuruse ülemmäär on ületatud",
        "converter-manual-rule-error": "Tõrge keelevariandi käsivahetusreeglis",
        "undo-success": "Selle redaktsiooni käigus tehtud muudatusi saab eemaldada. Palun kontrolli allolevat võrdlust veendumaks, et tahad need muudatused tõepoolest eemaldada. Seejärel saad lehekülje salvestada.",
        "undo-failure": "Muudatust ei saa vahapeal tehtud redigeerimiste tõttu tühistada.",
        "stub-threshold-disabled": "Välja lülitatud",
        "recentchangesdays": "Mitu päeva näidata viimastes muudatustes:",
        "recentchangesdays-max": "Ülemmäär $1 {{PLURAL:$1|päev|päeva}}",
-       "recentchangescount": "Mitut redaktsiooni vaikimisi näidata:",
-       "prefs-help-recentchangescount": "See käib viimaste muudatuste, lehekülgede ajalugude ja logide kohta.",
+       "recentchangescount": "Mitut muudatust viimaste muudatuste loendis, lehekülgede ajalugudes ja logides vaikimisi näidata:",
+       "prefs-help-recentchangescount": "Suurim võimalik väärtus: 1000",
        "prefs-help-watchlist-token2": "See on sinu jälgimisloendi veebivoo salavõti.\nIgaüks, kes seda teab, saab lugeda sinu jälgimisloendit. Seega ära jaga seda.\n[[Special:ResetTokens|Klõpsa siia, kui sul on vaja see lähtestada]].",
        "savedprefs": "Sinu eelistused on salvestatud.",
        "savedrights": "Kasutaja $1 rühmad on salvestatud.",
        "default": "vaikeväärtus",
        "prefs-files": "Failid",
        "prefs-custom-css": "kohandatud CSS",
+       "prefs-custom-json": "kohandatud JSON",
        "prefs-custom-js": "kohandatud JavaScript",
-       "prefs-common-config": "Kõigi kujunduste ühine CSS/JavaScript:",
+       "prefs-common-config": "Kõigi kujunduste ühine CSS/JSON/JavaScript:",
        "prefs-reset-intro": "Sellel leheküljel saad oma eelistused lähtestada võrgukoha vaike-eelistusteks.\nToimingut ei saa hiljem tühistada.",
        "prefs-emailconfirm-label": "E-posti kinnitus:",
        "youremail": "E-posti aadress:",
        "right-editcontentmodel": "Muuta lehekülje sisumudelit",
        "right-editinterface": "Muuta kasutajaliidest",
        "right-editusercss": "Redigeerida teiste kasutajate CSS-faile",
+       "right-edituserjson": "Redigeerida teiste kasutajate JSON-faile",
        "right-edituserjs": "Redigeerida teiste kasutajate JS-faile",
        "right-editmyusercss": "Redigeerida oma CSS-kasutajafaile",
+       "right-editmyuserjson": "Redigeerida oma JSON-kasutajafaile",
        "right-editmyuserjs": "Redigeerida oma JavaScript-kasutajafaile",
        "right-viewmywatchlist": "Vaadata oma jälgimisloendit",
        "right-editmywatchlist": "Redigeerida oma jälgimisloendit. Pane tähele, et mõne toiminguga lisatakse lehekülgi siiski ka ilma selle õiguseta.",
        "grant-createaccount": "Kontode loomine",
        "grant-createeditmovepage": "Lehekülgede alustamine, muutmine ja teisaldamine",
        "grant-delete": "Lehekülgede, redaktsioonide ja logisissekannete kustutamine",
-       "grant-editinterface": "MediaWiki nimeruumi ning kasutaja CSSi ja JavaScripti redigeerimine",
-       "grant-editmycssjs": "Oma CSSi või JavaScripti muutmine",
+       "grant-editinterface": "MediaWiki nimeruumi ning kasutaja CSSi, JSONi ja JavaScripti redigeerimine",
+       "grant-editmycssjs": "Oma CSSi, JSONi või JavaScripti muutmine",
        "grant-editmyoptions": "Enda eelistuste muutmine",
        "grant-editmywatchlist": "Oma jälgimisloendi muutmine",
        "grant-editpage": "Olemasolevate lehekülgede redigeerimine",
        "group-bot.css": "/* Siin asuv kaskaadilaadistik puudutab ainult roboteid. */",
        "group-sysop.css": "/* Siin asuv kaskaadilaadistik puudutab ainult administraatoreid. */",
        "group-bureaucrat.css": "/* Siin asuv kaskaadilaadistik puudutab ainult bürokraate. */",
+       "common.json": "/* Siin asuv JSON laaditakse igale kasutajale iga lehekülje laadimisel. */",
        "common.js": "/* Siinne JavaScript laaditakse igale kasutajatele igal laaditud leheküljel. */",
        "group-autoconfirmed.js": "/* Siin asuv JavaScript laaditakse ainult automaatselt kinnitatud kasutajate jaoks. */",
        "group-user.js": "/* Siin asuv JavaScript laaditakse ainult registreeritud kasutajate jaoks. */",
        "tag-filter": "[[Special:Tags|Märgisefilter]]:",
        "tag-filter-submit": "Filtri",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Märgis|Märgised}}]]: $2)",
-       "tag-mw-contentmodelchange": "sisumudeli muudatus",
+       "tag-mw-contentmodelchange": "Sisumudeli muudatus",
        "tag-mw-contentmodelchange-description": "Lehekülje [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel sisumudelit muutvad] redaktsioonid",
        "tag-mw-new-redirect": "Uus ümbersuunamine",
        "tag-mw-new-redirect-description": "Muudatused, millega luuakse uus ümbersuunamislehekülg või muudetakse lehekülg ümbersuunamiseks",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bait|baiti}}",
        "limitreport-expansiondepth": "Suurim hõrendussügavus",
        "limitreport-expensivefunctioncount": "Kulukate parserifunktsioonide arv",
+       "limitreport-unstrip-depth": "Funktsiooni \"unstrip\" rekursioonisügavus",
+       "limitreport-unstrip-size": "Funktsiooni \"unstrip\" hõrendusjärgne suurus",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|bait|baiti}}",
        "expandtemplates": "Mallide hõrendamine",
        "expand_templates_intro": "See erilehekülg hõrendab siia sisestatud vikitekstis kõik mallid rekursiivselt.\nSamuti hõrendab see parserifunktsioonid nagu\n<code><nowiki>{{</nowiki>#language:…}}</code> ja muutujad nagu\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nÕigupoolest hõrendab see kahekordsete looksulgude vahel pea kõike.",
        "expand_templates_title": "Sisu pealkiri, näiteks {{FULLPAGENAME}} jaoks:",
        "unlinkaccounts-success": "Kontode linkimine on tühistatud.",
        "authenticationdatachange-ignored": "Autentimisandmete muutmine jäi rahuldamata. Võimalik, et ühtegi pakkujat polnud häälestatud.",
        "userjsispublic": "Pea silmas, et JavaScripti alamleheküljed ei tohiks sisaldada konfidentsiaalseid andmeid, kuna neid näevad teised kasutajad.",
+       "userjsonispublic": "Palun pane tähele: JSON-alamleheküljel ei peaks olema konfidentsiaalseid andmeid, kuna teised kasutajad näevad seda.",
        "usercssispublic": "Palun pane tähele: CSS-alamleheküljel ei peaks olema konfidentsiaalseid andmeid, kuna teised kasutajad näevad seda.",
        "restrictionsfield-badip": "Vigane IP-aadress või -aadressivahemik: $1",
        "restrictionsfield-label": "Lubatud IP-aadressivahemikud:",
index 6c26d19..90c620b 100644 (file)
@@ -30,7 +30,8 @@
                        "Vriullop",
                        "Osoitz",
                        "Mikel Ibaiba",
-                       "MarcoAurelio"
+                       "MarcoAurelio",
+                       "Iñaki LL"
                ]
        },
        "tog-underline": "Azpimarratu loturak:",
@@ -40,7 +41,7 @@
        "tog-hidecategorization": "Ezkutatu orrien kategorizazioa",
        "tog-extendwatchlist": "Jarraipen-zerrenda zabaldu aldaketa guztiak ikusteko, ez bakarrik azken aldaketak",
        "tog-usenewrc": "Azken aldaketetan eta jarraipen-zerrendan aldaketak orrialdearen arabera taldekatu",
-       "tog-numberheadings": "Zenbakitu automatikoki goiburuak",
+       "tog-numberheadings": "Zenbakitu automatikoki atalburuak",
        "tog-showtoolbar": "Aldaketen tresna-barra erakutsi",
        "tog-editondblclick": "Klik bikoitzaren bitartez orrialdeak aldatu",
        "tog-editsectiononrightclick": "Atalen izenburuetan eskuin klik eginez aldatzea gaitu",
        "fileexists-duplicate-version": "Igoera oraingo bertsio honen bikoizketa zehatza da {{PLURAL:$2|bertsio zaharrago bat|bertsio zaharragoak}} of <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Fitxategi hau beste fitxategi {{PLURAL:$1|honen|hauen}} kopia bat da:",
        "file-deleted-duplicate": "Fitxategi honen ([[:$1]]) fitxategi berbera aldez aurretik ezabatua izan da. Fitxategi horren ezabaketa-erregistroa begiratu beharko zenuke berriz igo baino lehen.",
-       "file-deleted-duplicate-notitle": "Fitxategi honetarako fitxategi berdin bat aurretik ezabatu da eta titulua kendu egin da. Ordezkatutako fitxategiaren datuak ikusi ahal izateko ezabatutakoa ikusteko ahalmena duen norbaiti galdetu beharko zenioke berriro kargatu baino lehen.",
+       "file-deleted-duplicate-notitle": "Fitxategi honetarako fitxategi berdin bat aurretik ezabatu da eta izenburua kendu egin da. Ordezkatutako fitxategiaren datuak ikusi ahal izateko ezabatutakoa ikusteko ahalmena duen norbaiti galdetu beharko zenioke berriro kargatu baino lehen.",
        "uploadwarning": "Igotzeko oharra",
        "uploadwarning-text": "Aldatu beheko fitxategiaren deskribapena, mesedez, eta saiatu berriz.",
        "uploadwarning-text-nostash": "Fitxategia berriz kargatu, aldatu beheko azalpena eta saiatu berriro.",
index 5120888..86fbdf9 100644 (file)
        "wrongpasswordempty": "گذرواژه‌ای که وارد کرده‌اید، خالی است.\nلطفاً دوباره تلاش کنید.",
        "passwordtooshort": "گذرواژه باید دست‌کم {{PLURAL:$1|۱ حرف|$1 حرف}} داشته باشد.",
        "passwordtoolong": "گذرواژه نمی تواند حروفش بیشتر از {{PLURAL:$1|۱ حرف|$1 حرف}}  باشد.",
-       "passwordtoopopular": "گذرÙ\88اÚ\98Ù\87â\80\8cÙ\87اÛ\8c Ù\85تداÙ\88Ù\84 Ø±Ø§ Ù\86Ù\85Û\8câ\80\8cتÙ\88اÙ\86Û\8cد Ø§Ø³ØªÙ\81ادÙ\87 Ú©Ù\86Û\8cد. Ù\84Ø·Ù\81اÙ\8b Ú¯Ø°Ø±Ù\88اÚ\98Ù\87â\80\8cاÛ\8c Ø§Ù\86تخاب Ú©Ù\86Û\8cد Ú©Ù\87 Ø¨Û\8cشتر Ù\85Ù\86حصر Ø¨Ù\87 Ù\81رد باشد.",
+       "passwordtoopopular": "گذرÙ\88اÚ\98Ù\87â\80\8cÙ\87اÛ\8c Ù\85تداÙ\88Ù\84 Ø±Ø§ Ù\86Ù\85Û\8câ\80\8cتÙ\88اÙ\86Û\8cد Ø§Ø³ØªÙ\81ادÙ\87 Ú©Ù\86Û\8cد. Ù\84Ø·Ù\81اÙ\8b Ú¯Ø°Ø±Ù\88اÚ\98Ù\87â\80\8cاÛ\8c Ø§Ù\86تخاب Ú©Ù\86Û\8cد Ú©Ù\87 Ø­Ø¯Ø³â\80\8cزدÙ\86 Ø¢Ù\86 Ø³Ø®Øª باشد.",
        "password-name-match": "گذرواژهٔ شما باید با نام کاربری شما تفاوت داشته باشد.",
        "password-login-forbidden": "استفاده از این نام کاربری و گذرواژه ممنوع است.",
        "mailmypassword": "بازنشانی گذرواژه",
        "savechanges": "ذخیره کردن تغییرات",
        "publishpage": "انتشار صفحه",
        "publishchanges": "انتشار تغییرات",
+       "savearticle-start": "ذخیرهٔ صفحه...",
+       "savechanges-start": "ذخیرهٔ تغییرات...",
+       "publishpage-start": "انتشار صفحه...",
+       "publishchanges-start": "انتشار تغییرات...",
        "preview": "پیش‌نمایش",
        "showpreview": "پیش‌نمایش",
        "showdiff": "نمایش تغییرات",
        "default": "پیش‌فرض",
        "prefs-files": "پرونده‌ها",
        "prefs-custom-css": "سی‌اس‌اس شخصی",
+       "prefs-custom-json": "JSON شخصی",
        "prefs-custom-js": "جاوااسکریپت شخصی",
-       "prefs-common-config": "سی‌اس‌اس/جاوااسکریپت مشترک برای تمام پوسته‌ها:",
+       "prefs-common-config": "سی‌اس‌اس/جاوااسکریپت/JSON مشترک برای تمام پوسته‌ها:",
        "prefs-reset-intro": "شما می‌توانید از این صفحه برای بازگرداندن تنظیمات خود به پیش‌فرض تارنما استفاده کنید.\nاین کار بازگشت‌ناپذیر است.",
        "prefs-emailconfirm-label": "تأیید ایمیل:",
        "youremail": "ایمیل:",
        "grant-createaccount": "ایجاد حساب‌های کاربری",
        "grant-createeditmovepage": "ایجاد، ویرایش و انتقال صفحات",
        "grant-delete": "حذف صفحات، نسخه‌های ویرایش و سیاهه ورودی",
-       "grant-editinterface": "ویرایش CSS کاربر/جاوااسکریپت  و فضای نام مدیاویکی",
-       "grant-editmycssjs": "ویرایش  CSS /جاوااسکریپت  کاربری",
+       "grant-editinterface": "ویرایش CSS کاربر/جاوااسکریپت/JSON  و فضای نام مدیاویکی",
+       "grant-editmycssjs": "ویرایش  CSS /جاوااسکریپت/JSON  کاربری",
        "grant-editmyoptions": "اولویت‌های کاربری را ویرایش کنید",
        "grant-editmywatchlist": "ویرایش فهرست پی‌گیری‌هایتان",
        "grant-editpage": "ویرایش صفحات موجود",
        "mediastatistics-header-bitmap": "تصاویر بیت‌مپ",
        "mediastatistics-header-drawing": "طراحی‌ها (تصاویر برداری)",
        "mediastatistics-header-audio": "صدا",
-       "mediastatistics-header-video": "ویدیو‌ها",
+       "mediastatistics-header-video": "ویدئوها",
        "mediastatistics-header-multimedia": "رسانه‌های غنی",
        "mediastatistics-header-office": "دفتر",
        "mediastatistics-header-text": "متنی",
index 1095b2f..4245bb5 100644 (file)
        "cascadeprotected": "Cette page est protégée contre les modifications car elle est transcluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée :\n$2",
        "namespaceprotected": "Vous n’avez pas la permission de modifier les pages de l’espace de noms « <strong>$1</strong> ».",
        "customcssprotected": "Vous n’avez pas la permission de modifier cette feuille de style CSS, car elle contient les paramètres personnels d’un autre utilisateur.",
+       "customjsonprotected": "Vous n’avez pas le droit de modifier cette page JSON parce qu’elle contient les paramètres personnels d’un autre utilisateur.",
        "customjsprotected": "Vous n’avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d’un autre utilisateur.",
        "mycustomcssprotected": "Vous n’avez pas le droit de modifier cette page CSS.",
+       "mycustomjsonprotected": "Vous n’avez pas le droit de modifier cette page JSON.",
        "mycustomjsprotected": "Vous n’avez pas le droit de modifier cette page JavaScript.",
        "myprivateinfoprotected": "Vous n’avez pas le droit de modifier vos informations personnelles.",
        "mypreferencesprotected": "Vous n’avez pas le droit de modifier vos préférences.",
        "savechanges": "Enregistrer les modifications",
        "publishpage": "Publier la page",
        "publishchanges": "Publier les modifications",
+       "savearticle-start": "Enregistrer la page…",
+       "savechanges-start": "Enregistrer les modifications…",
+       "publishpage-start": "Publier la page…",
+       "publishchanges-start": "Publier les modifications…",
        "preview": "Prévisualisation",
        "showpreview": "Prévisualiser",
        "showdiff": "Voir les modifications",
        "blocked-notice-logextract": "Cet utilisateur est actuellement bloqué.\nLa dernière entrée du journal des blocages est affichée ci-dessous pour référence :",
        "clearyourcache": "<strong>Note :</strong> après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.\n* <strong>Firefox / Safari :</strong> maintenez la touche <em>Maj</em> (<em>Shift</em>) en cliquant sur le bouton <em>Actualiser</em> ou pressez <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> sur un Mac) \n* <strong>Google Chrome :</strong> appuyez sur <em>Ctrl-Maj-R</em> (<em>⌘-Shift-R</em> sur un Mac) \n* <strong>Internet Explorer :</strong> maintenez la touche <em>Ctrl</em> en cliquant sur le bouton <em>Actualiser</em> ou pressez <em>Ctrl-F5</em> \n* <strong>Opera :</strong> allez dans <em>Menu → Settings</em> (<em>Opera → Préférences</em> sur un Mac) et ensuite à <em>Confidentialité & sécurité → Effacer les données d’exploration → Images et fichiers en cache</em>.",
        "usercssyoucanpreview": "<strong>Astuce :</strong> utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille CSS avant de l’enregistrer.",
+       "userjsonyoucanpreview": "<strong>Conseil :</strong> Utiliser le bouton « {{int:showpreview}} » pour tester votre nouveau JSON avant enregistrement.",
        "userjsyoucanpreview": "<strong>Astuce :</strong> utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille JavaScript avant de l’enregistrer.",
        "usercsspreview": "<strong>Rappelez-vous que vous ne faites que prévisualiser votre propre feuille CSS. \nElle n’a pas encore été enregistrée !</strong>",
+       "userjsonpreview": "<strong>Rappelez-vous que vous êtes seulement en train de tester/faire un aperçu de votre configuration utilisateur JSON.\nElle n’a pas encore été enregistrée !</strong>",
        "userjspreview": "<strong>Rappelez-vous que vous ne faites que visualiser ou tester votre code JavaScript.\nIl n’a pas encore été enregistré !</strong>",
        "sitecsspreview": "<strong>Rappelez-vous que vous ne faites que prévisualiser cette feuille de style. \nElle n’a pas encore été enregistrée !</strong>",
+       "sitejsonpreview": "<strong>Souvenez-vous que vous ne faites que regarder un aperçu de cette configuration JSON.\nElle n’a pas encore été enregistrée !</strong>",
        "sitejspreview": "<strong>Rappelez-vous que vous ne faites que prévisualiser ce code JavaScript. \nIl n’a pas encore été enregistré !</strong>",
-       "userinvalidconfigtitle": "<strong>Attention :</strong> il n’existe pas d’habillage « $1 ». \nLes pages personnelles avec extensions .css et .js utilisent des titres en minuscules, par exemple {{ns:user}}:Foo/vector.css et non {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Attention :</strong> il n’existe pas d’habillage « $1 ». \nLes pages personnelles avec extensions .css, .json et .js utilisent des titres en minuscules, par exemple {{ns:user}}:Foo/vector.css et non {{ns:user}}:Foo/Vector.css.",
        "updated": "(Mis à jour)",
        "note": "<strong>Note :</strong>",
        "previewnote": "<strong>Rappelez-vous que ce n’est qu’une prévisualisation.</strong>\nVos modifications n’ont pas encore été enregistrées !",
        "default": "défaut",
        "prefs-files": "Fichiers",
        "prefs-custom-css": "CSS personnalisé",
+       "prefs-custom-json": "JSON personnalisé",
        "prefs-custom-js": "JavaScript personnalisé",
-       "prefs-common-config": "CSS et JavaScript communs à tous les habillages :",
+       "prefs-common-config": "CSS/JSON/JavaScript communs à tous les habillages :",
        "prefs-reset-intro": "Vous pouvez utiliser cette page pour restaurer vos préférences aux valeurs par défaut du site. Ceci ne peut pas être défait.",
        "prefs-emailconfirm-label": "Confirmation du courriel :",
        "youremail": "Courriel :",
        "right-editcontentmodel": "Modifier le modèle de contenu d’une page",
        "right-editinterface": "Modifier l'interface utilisateur",
        "right-editusercss": "Modifier les fichiers CSS d'autres utilisateurs",
+       "right-edituserjson": "Modifier les fichiers JSON d’un autre utilisateur",
        "right-edituserjs": "Modifier les fichiers JavaScript d'autres utilisateurs",
        "right-editmyusercss": "Modifier vos propres fichiers CSS utilisateur",
+       "right-editmyuserjson": "Modifier vos propres fichiers utilisateur JSON",
        "right-editmyuserjs": "Modifier vos propres fichiers JavaScript utilisateur",
        "right-viewmywatchlist": "Afficher votre propre liste de suivi",
        "right-editmywatchlist": "Modifier votre propre liste de suivi. Remarquez que certaines actions ajouteront encore des pages sans ce droit.",
        "grant-createaccount": "Créer des comptes",
        "grant-createeditmovepage": "Créer, modifier et déplacer des pages",
        "grant-delete": "Supprimer les pages, les révisions et les entrées du journal",
-       "grant-editinterface": "Modifier l’espace de noms MediaWiki et le CSS/JavaScript utilisateur",
-       "grant-editmycssjs": "Modifier votre CSS/JavaScript utilisateur",
+       "grant-editinterface": "Modifier l’espace de noms MediaWiki et le CSS/JSON/JavaScript utilisateur",
+       "grant-editmycssjs": "Modifier votre CSS/JSON/JavaScript utilisateur",
        "grant-editmyoptions": "Modifier vos préférences utilisateur",
        "grant-editmywatchlist": "Modifier votre liste de suivi",
        "grant-editpage": "Modifier des pages existantes",
        "group-bot.css": "/* Le CSS placé ici affectera les robots seulement. */",
        "group-sysop.css": "/* Le CSS inclus ici n’affectera que les administrateurs */",
        "group-bureaucrat.css": "/* Le CSS inclus ici n’affectera que les bureaucrates */",
+       "common.json": "/* Tout JSON ici sera chargé pour tous les utilisateurs à chaque chargement de page. */",
        "common.js": "/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */",
        "group-autoconfirmed.js": "/* Le JavaScript inclus ici n’affectera que les utilisateurs autoconfirmés */",
        "group-user.js": "/* Le JavaScript placé ici ne sera chargé que pour les utilisateurs enregistrés. */",
        "unlinkaccounts-success": "Le compte a été dissocié.",
        "authenticationdatachange-ignored": "Les modifications de données d’authentification n’ont pas été gérées. Peut-être aucun fournisseur n’a-t-il été configuré ?",
        "userjsispublic": "Veuillez noter : les sous-pages JavaScript ne doivent pas contenir de données confidentielles parce qu’elles sont visibles des autres utilisateurs.",
+       "userjsonispublic": "Notez bien : Les sous-pages JSON ne doivent pas contenir de données confidentielles car elles sont visibles par les autres utilisateurs.",
        "usercssispublic": "Veuillez noter : les sous-pages CSS ne doivent pas contenir de données confidentielles parce qu’elles sont visibles des autres utilisateurs.",
        "restrictionsfield-badip": "Adresse IP ou plage non valide : $1",
        "restrictionsfield-label": "Plages IP autorisées :",
index 5688e49..ed2802d 100644 (file)
@@ -4,9 +4,60 @@
                        "LeGuyanaisPure"
                ]
        },
+       "tog-underline": "Soulignman di lyen :",
+       "tog-hideminor": "Maské modifikasyon minò andan modifikasyon résant",
+       "tog-hidepatrolled": "Maské modifikasyon ki rouli andan modifikasyon résant",
+       "tog-newpageshidepatrolled": "Maské paj ki rouli andan lis dé nouvèl paj",
+       "tog-hidecategorization": "Maské katégorizasyon dé paj",
+       "tog-extendwatchlist": "Étann lis di swivi pou afiché tout modifikasyon é pa inikman pli résant",
+       "tog-usenewrc": "Groupé chanjman-yan pa paj andan modifikasyon-yan résant ké lis di swivi-a",
+       "tog-numberheadings": "Niméroté otomatikman tit di sèksyon",
+       "tog-showtoolbar": "Afiché bar di zouti di édisyon",
+       "tog-editondblclick": "Modifyé paj-ya ké roun doub-klik",
+       "tog-editsectiononrightclick": "Aktivé modifikasyon-an dé sèksyon pa roun klik drèt asou tit di sèksyon",
+       "tog-watchcreations": "Ajouté à mo lis di swivi paj-ya ki mo kréyé é fiché-ya ki mo ka enpòrté",
+       "tog-watchdefault": "Ajouté à mo lis di swivi paj-ya ké fiché-ya ki mo ka modifyé",
+       "tog-watchmoves": "Ajouté paj-ya ké fiché-ya ki mo ka déplasé annan mo lis di swivi",
+       "tog-watchdeletion": "Ajouté à mo lis di swivi paj-ya ké fiché-ya ki mo ka souprimé",
+       "tog-watchuploads": "Ajouté nouvèl fiché ki mo ka enpòrté à mo lis di swivi",
+       "tog-watchrollback": "Ajouté à mo lis di swivi paj-ya asou lakèl mo éfèktchwé roun révokasyon",
+       "tog-minordefault": "Marké tout mo modifikasyon kou minò pa défo",
+       "tog-previewontop": "Afiché prévizwalizasyon-an laro di zonn di modifikasyon",
+       "tog-previewonfirst": "Afiché prévizwalizasyon-an lò di pronmyé modifikasyon",
+       "tog-enotifwatchlistpages": "Avèrti mo pa kouryé lò roun paj ou roun fiché di mo lis di swivi sa modifyé",
+       "tog-enotifusertalkpages": "Avèrti mo pa kouryé lò mo paj di diskisyon sa modifyé",
+       "tog-enotifminoredits": "Avèrti mo pa kouryé égalman lò dé modifikasyon minò dé paj ou dé fiché",
+       "tog-enotifrevealaddr": "Afiché mo adrès élèktronik andan kouryé di notifikasyon",
+       "tog-shownumberswatching": "Afiché nonm-an di itilizatò an kour",
+       "tog-oldsig": "Zòt signatir atchwèl :",
+       "tog-fancysig": "Trété signatir-a kou di wikitèks (san lyen otomatik)",
+       "tog-uselivepreview": "Afiché apèrsou san roucharjé paj-a",
+       "tog-forceeditsummary": "Avèrti mo lò mo pa spésifyé di rézimé di modifikasyon",
+       "tog-watchlisthideown": "Maské mo pròp modifikasyon annan lis di swivi",
+       "tog-watchlisthidebots": "Maské modifikasyon-yan ki fè pa dé robo annan lis di swivi",
+       "tog-watchlisthideminor": "Maské modifikasyon-yan minò annan lis di swivi",
+       "tog-watchlisthideliu": "Maské modifikasyon-yan ki fè pa dé itilizatò annan lis di swivi",
+       "tog-watchlistreloadautomatically": "Roucharjé otomatikman lis di swivi-a lò lòpsyon di filtraj sa modifyé (JavaScript réki)",
+       "tog-watchlistunwatchlinks": "Ajouté dé lyen dirèk pou swiv ou arété di swiv antré-ya di lis di swivi (JavaScript sa nésésèr pou itilizé fonksyonalité-a)",
+       "tog-watchlisthideanons": "Maské modifikasyon-yan di itilizatò anonim annan lis di swivi",
+       "tog-watchlisthidepatrolled": "Maské modifikasyon-yan ki rouli annan lis di swivi",
+       "tog-watchlisthidecategorization": "Maské katégorizasyon dé paj",
+       "tog-ccmeonemails": "• Voyé mo roun kopi dé kouryé ki mo ka voyé pou ròt itilizatò",
+       "tog-diffonly": "Pa afiché kontni di paj-ya anba diff",
+       "tog-showhiddencats": "Afiché katégori-ya ki kaché",
+       "tog-norollbackdiff": "Pa afiché diff aprè révoké",
+       "tog-useeditwarning": "Avèrti mo lò mo ka kité roun paj an kour di modifikasyon san sovgardé",
+       "tog-prefershttps": "Toujou itilizé roun konèksyon sékirizé lò mo konèkté",
+       "underline-always": "Toujou",
+       "underline-never": "Janmè",
+       "underline-default": "Valò pa défo di tenm ou di navigatò",
+       "editfont-style": "Stil di polis di zonn di modifikasyon",
+       "editfont-monospace": "Polis ké chas fiks",
+       "editfont-sansserif": "Polis sans-serif",
+       "editfont-serif": "Polis serif",
        "sunday": "Dimanch",
        "monday": "Lendi",
-       "tuesday": "Mardi",
+       "tuesday": "mardi",
        "wednesday": "Mèrkrédi",
        "thursday": "Jédi",
        "friday": "Vandrédi",
        "thu": "Jé.",
        "fri": "Van.",
        "sat": "Sanm.",
-       "january": "Janvyé",
-       "february": "Févriyé",
-       "march": "Mars",
-       "april": "Avril",
-       "may_long": "Mè",
-       "june": "Jen",
-       "july": "Jwiyé",
-       "august": "Out",
-       "september": "Sèptanm",
-       "october": "Ã\92ktòb",
-       "november": "Novanm",
-       "december": "Désanm",
-       "january-gen": "Janvyé",
-       "february-gen": "Févriyé",
-       "march-gen": "Mars",
-       "april-gen": "Avril",
-       "may-gen": "Mè",
-       "june-gen": "Jen",
-       "july-gen": "Jwiyé",
-       "august-gen": "Out",
-       "september-gen": "Sèptanm",
-       "october-gen": "Ã\92ktòb",
-       "november-gen": "Novanm",
-       "december-gen": "Désanm",
-       "jan": "Jan.",
+       "january": "janvyé",
+       "february": "févriyé",
+       "march": "mars",
+       "april": "avril",
+       "may_long": "mè",
+       "june": "jen",
+       "july": "jwiyé",
+       "august": "out",
+       "september": "sèptanm",
+       "october": "òktòb",
+       "november": "novanm",
+       "december": "désanm",
+       "january-gen": "janvyé",
+       "february-gen": "févriyé",
+       "march-gen": "mars",
+       "april-gen": "avril",
+       "may-gen": "mè",
+       "june-gen": "jen",
+       "july-gen": "jwiyé",
+       "august-gen": "out",
+       "september-gen": "sèptanm",
+       "october-gen": "òktòb",
+       "november-gen": "novanm",
+       "december-gen": "désanm",
+       "jan": "janv.",
        "feb": "Fév.",
-       "mar": "Mar.",
-       "apr": "Avr.",
-       "may": "Mè",
-       "jun": "Jen.",
-       "jul": "Jwi.",
-       "aug": "Out",
-       "sep": "Sèp.",
-       "oct": "Òkt.",
-       "nov": "Nov.",
-       "dec": "Dés.",
+       "mar": "mars",
+       "apr": "avr.",
+       "may": "mè",
+       "jun": "jen.",
+       "jul": "jwi.",
+       "aug": "out",
+       "sep": "sèp.",
+       "oct": "òkt.",
+       "nov": "nov.",
+       "dec": "dés.",
+       "january-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} janvyé",
+       "february-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} févriyé",
+       "march-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mars",
+       "april-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} avril",
+       "may-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mè",
+       "june-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} jen",
+       "july-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} jwiyé",
+       "august-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} out",
+       "september-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} sèptanm",
+       "october-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} òktòb",
+       "november-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} novanm",
+       "december-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} désanm",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Katégori}}",
        "category_header": "Paj andan katégori-a « $1 »",
        "subcategories": "Soukatégori",
        "category-media-header": "Médya andan katégori-a « $1 »",
        "category-empty": "<em>Sa katégori pa ka kontni atchwèlman pyès paj ni fiché miltimédya.</em>",
        "hidden-categories": "{{PLURAL:$1|Katégori kaché}}",
+       "hidden-category-category": "Katégori kaché",
        "category-subcat-count": "Sa katégori {{PLURAL:$2|0=pa ka konprann pyès soukatégori|1=ka konprann sèlman soukatégori ki anba|ka konprann $2 soukatégori, don {{PLURAL:$1|0=pyès|1=sala|$1}} ki anba}}.",
+       "category-subcat-count-limited": "Sa katégori ka konprann {{PLURAL:$1|soukatégori-a|soukatégori-ya}} anba.",
        "category-article-count": "Sa katégori {{PLURAL:$2|0=pa ka konprann pyès paj|1=ka konprann sèlman paj ki anba|ka konprann $2 paj, don {{PLURAL:$1|0=pyès|1=sala|$1}} ki anba}}.",
+       "category-article-count-limited": "{{PLURAL:$1|0=Pyès paj ka figiré|1=Paj-a swivant ka figiré|$1 Paj-ya swivant ka figiré}} andan katégori prézant.",
        "category-file-count": "Sa katégori {{PLURAL:$2|0=pa ka konprann pyès katégori|1=ka konprann fiché swivan|ka konprann $2 fiché, don {{PLURAL:$1|0=pyès|1=sala|$1}} ki anba}}.",
+       "category-file-count-limited": "{{PLURAL:$1|0=Pyès fiché pa ka figiré|1=Fiché-a swivan ka figiré|$1 Fiché-ya swivan ka figiré}} andan katégori prézant.",
        "listingcontinuesabbrev": "(swit)",
+       "index-category": "Paj endèksé",
        "noindex-category": "Paj ki pa endèksé",
        "broken-file-category": "Paj ké dé lyen di fiché brizé",
        "about": "À propo",
+       "article": "Paj di kontni",
        "newwindow": "(Ka ouvri so kò andan roun nouvèl finèt)",
        "cancel": "Anilé",
+       "moredotdotdot": "Plis...",
+       "morenotlisted": "Sa lis pé sa enkonplèt",
+       "mypage": "Paj",
        "mytalk": "Diskisyon",
+       "anontalk": "Diskisyon",
        "navigation": "Navigasyon",
        "and": "&#32;é",
+       "faq": "FAQ",
+       "actions": "Aksyon",
        "namespaces": "Lèspas di non",
        "variants": "Varyant",
-       "navigation-heading": "Menu di navigasyon",
+       "navigation-heading": "Ménou di navigasyon",
+       "errorpagetitle": "Érò",
        "returnto": "Rouvini kot paj-a $1.",
        "tagline": "Di {{SITENAME}}",
        "help": "Èd",
        "search": "Sasé",
+       "search-ignored-headings": " #<!-- pa modifyé sa lign --><pre>\n# Tit dé sèksyon ki sa ignoré pa sasé-a.\n# Chanjman éfèktchwé isi ka pran éfè lò ki paj-a ké tit-a sa endèksé.\n# Zòt pé fòrsé réyendèksasyon di paj-a an éfèktchwan oun modifikasyon vid.\n# Sentaks-a sa swivant :\n#   * Tousa ki ka swiv roun « # » jouk finisman di lign-a sa roun koumantèr.\n#   * Tout lign ki pa-vid sa tit ègzak à ignoré, kas konprann osi.\nRéférans\nLyen èkstèrn\nWè osi\n #</pre><!-- pa modifyé sa lign -->",
        "searchbutton": "Sasé",
+       "go": "Konsilté",
        "searcharticle": "Kontinwé",
        "history": "Istorik di paj-a",
        "history_short": "Istorik",
+       "history_small": "istorik",
+       "updatedmarker": "modifyé dipi mo dannyé vizit",
        "printableversion": "Vèrsyon enprimab",
        "permalink": "Lyen pèrmanan",
+       "print": "Enprimé",
        "view": "Lir",
        "view-foreign": "Wè asou $1",
        "edit": "Modifyé",
+       "edit-local": "Modifyé dèskripsyon lokal",
        "create": "Kréyé",
        "create-local": "Ajouté roun dèskripsyon lokal",
        "delete": "Souprimé",
+       "undelete_short": "Rèstoré {{PLURAL:$1|roun modifikasyon|$1 modifikasyon}}",
+       "viewdeleted_short": "Wè {{PLURAL:$1|roun modifikasyon souprimé|$1 modifikasyon souprimé}}",
+       "protect": "Protéjé",
+       "protect_change": "modifyé",
+       "unprotect": "Chanjé protèksyon-an",
        "newpage": "Nouvèl paj",
        "talkpagelinktext": "diskisyon",
+       "specialpage": "Paj spésyal",
        "personaltools": "Zouti pèrsonèl",
        "talk": "Diskisyon",
        "views": "Afichaj",
        "toolbox": "Zouti",
+       "tool-link-userrights": "Modifyé group-ya di itiliz{{GENDER:$1|ò|ris}}-a",
+       "tool-link-userrights-readonly": "Wè group-ya di itilizat{{GENDER:$1|ò|ris}}",
+       "tool-link-emailuser": "Voyé roun kouryé pou {{GENDER:$1|sa itilizatò|sa itilizatris}}",
+       "imagepage": "Wè paj-a di fiché",
+       "mediawikipage": "Wè paj di mésaj",
+       "templatepage": "Wè paj di modèl",
+       "viewhelppage": "Wè paj di lèd",
+       "categorypage": "Wè paj di katégori",
+       "viewtalkpage": "Wè paj di diskisyon",
        "otherlanguages": "Annan rounòt langaj",
        "redirectedfrom": "(Roudirijé dipi $1)",
        "redirectpagesub": "Paj di roudirèksyon",
        "redirectto": "Roudirijé vèr :",
-       "lastmodifiedat": "Dannyé modifikasyon di sa paj té fè asou $1 à $2.",
+       "lastmodifiedat": "Dannyé modifikasyon di sa paj té fè $1 à $2.",
+       "viewcount": "Sa paj {{PLURAL:$1|0=pa té janmè konsilté|1=té konsilté roun sèl fwè|té konsilté $1 fwè}}.",
+       "protectedpage": "Paj protéjé",
        "jumpto": "Alé à",
        "jumptonavigation": "navigasyon",
        "jumptosearch": "sasé",
+       "view-pool-error": "Dézolé, sèrvò-ya sa sircharjé pou moman-an.\nTròp itilizatò ka sasé konsilté sa paj.\nSouplé, atann enpé anvan di éséyé òkò d’aksédé à sala.\n\n$1",
+       "generic-pool-error": "Dézolé, sèrvò-ya sa sircharjé pou moman-an.\nTròp itilizatò ka sasé konsilté sa rousours.\nSouplé, atann enpé anvan di tanté òkò d'aksédé à sala.",
+       "pool-timeout": "Délè di atant di vérou dépasé",
+       "pool-queuefull": "Fil dé processus sa plen",
+       "pool-errorunknown": "Éròr enkonèt",
+       "pool-servererror": "Sèrvis di rézèrvasyon pa disponib ($1).",
+       "poolcounter-usage-error": "Éròr di itilizasyon : $1",
        "aboutsite": "À propo di {{SITENAME}}",
        "aboutpage": "Project:À propo di",
        "copyright": "Kontni-a sa disponib anba lisans $1 sof mansyon kontrèr.",
        "disclaimers": "Panga",
        "disclaimerpage": "Project:Panga jénéral",
        "edithelp": "Èd pou modifikasyon",
+       "helppage-top-gethelp": "Èd",
        "mainpage": "Paj Prensipal",
        "mainpage-description": "Paj prensipal",
+       "policy-url": "Project:Larèl",
        "portal": "Pòrtay konminotèr",
        "portal-url": "Project:Pòrtay konminotèr",
        "privacy": "Politik di konfidansyalité",
        "privacypage": "Project:Politik di konfidansyalité",
+       "badaccess": "Éròr di pèrmisyon",
+       "badaccess-group0": "Zòt pa gen drwè sifizan pou réyalizé laksyon doumandé.",
+       "badaccess-groups": "Aksyon-an ki zòt ka éséyé di réyalizé sa pèrmi yenk pou itilizatò-ya {{PLURAL:$2|di group|di roun dé group}} : $1.",
+       "versionrequired": "Vèrsyon $1 di MediaWiki nésésèr",
+       "versionrequiredtext": "Vèrsyon $1 di MediaWiki sa nésésèr pou itilizé sa paj.\nKonsilté [[Special:Version|paj di vèrsyon-yan]].",
+       "ok": "Validé",
        "retrievedfrom": "Rékipéré di « $1 »",
        "youhavenewmessages": "{{PLURAL:$3|Zòt gen}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|Zòt gen}} $1 {{PLURAL:$3|di rounòt itilizatò|di $3 ròt itilizatò}} ($2).",
+       "youhavenewmessagesmanyusers": "Zòt gen $1 di nonbré itilizatò ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|oun nouvèl mésaj|dé nouvèl mésaj}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|dannyé modifikasyon}}",
+       "youhavenewmessagesmulti": "Zòt gen dé nouvèl mésaj asou $1.",
        "editsection": "Modifyé",
        "editold": "modifyé",
        "viewsourceold": "wè sours-a",
        "viewsourcelink": "wè sours-a",
        "editsectionhint": "Modifyé sèksyon-an : $1",
        "toc": "Somèr",
+       "showtoc": "afiché",
+       "hidetoc": "maské",
+       "collapsible-collapse": "Roupliyé",
+       "collapsible-expand": "Dévlopé",
+       "confirmable-confirm": "Ès zòt sir{{GENDER:$1||}} ?",
+       "confirmable-yes": "Wi",
+       "confirmable-no": "Awa",
+       "thisisdeleted": "Ès zòt ka déziré afiché ou rèstoré $1 ?",
+       "viewdeleted": "Wè $1 ?",
+       "restorelink": "Wè {{PLURAL:$1|roun modifikasyon éfasé|$1 modifikasyon éfasé}}",
+       "feedlinks": "Flux :",
+       "feed-invalid": "Tip di flux d'abonnman pa valid.",
+       "feed-unavailable": "Flux-ya di sendikasyon pa disponib",
+       "site-rss-feed": "Flux RSS di $1",
        "site-atom-feed": "Flux Atom di $1",
+       "page-rss-feed": "Flux RSS di « $1 »",
        "page-atom-feed": "Flux Atom di « $1 »",
        "red-link-title": "$1 (paj pa ka ègzisté)",
+       "sort-descending": "Tri dékrwasan",
+       "sort-ascending": "Tri krwasan",
        "nstab-main": "Paj",
        "nstab-user": "Paj di {{GENDER:{{ROOTPAGENAME}}|itilizatò|itilizatris}}",
+       "nstab-media": "Médja",
        "nstab-special": "Paj spésyal",
        "nstab-project": "À propo",
        "nstab-image": "Fiché",
        "nstab-mediawiki": "Mésaj",
        "nstab-template": "Modèl",
+       "nstab-help": "Èd",
        "nstab-category": "Katégori",
        "mainpage-nstab": "Paj prensipal",
+       "nosuchaction": "Aksyon enkonèt",
+       "nosuchactiontext": "Aksyon-an spésifyé andan URL-a sa envalid.\nZòt pitèt mal antré URL-a ou swivi roun lyen éroné.\nLi pé égalman endiké oun anomali andan logisyèl itilizé pa {{SITENAME}}.",
        "nosuchspecialpage": "Paj spésyal inègzistant",
        "nospecialpagetext": "<strong>Zòt doumandé oun paj spésyal ki pa ka ègzisté.</strong>\n\nOun lis dé paj spésyal valid ka trouvé so kò asou [[Special:SpecialPages|{{int:specialpages}}]].",
+       "error": "Érò",
+       "databaseerror": "Érò di baz di doné",
+       "databaseerror-text": "Oun érò di rékèt di baz di doné aparèt.\nSala pé provini di roun anomali annan lojisyèl-a.",
+       "databaseerror-textcl": "Oun érò di rékèt di baz di doné aparèt.",
+       "databaseerror-query": "Rékèt : $1",
+       "databaseerror-function": "Fonksyon : $1",
+       "databaseerror-error": "Érò : $1",
+       "transaction-duration-limit-exceeded": "Pou évité roun tròp fò ogmantasyon di délè di réplikasyon, sa tranzaksyon té anilé piskétan douré di ékritir ($1) dépasé limit-a di $2 ségonn. Si zòt ka sasé modifyé oun gran nonm di éléman similtanéman, éséyé plito di éfèktchwé opérasyon-an an plizyò étap pli piti.",
+       "laggedslavemode": "Panga, sa paj pa pé kontni tout dannyé modifikasyon éfèktchwé",
+       "readonly": "Baz di doné vérouyé",
+       "enterlockreason": "Endiké rézon-an di vérouyaj ensi ki roun èstimasyon di so douré",
+       "readonlytext": "Ajou ké mizajou di baz di doné sa atchwèlman bloké, probabman pou pèrmèt mentnans di baz-a, aprè sa, tout bagaj ké rantré andan lòrd.\n\nAdministratò sistèm ki vérouyé baz di doné té fourni èksplikasyon swivant :<br /> $1",
+       "missing-article": "Baz-a di doné pa trouvé tèks-a di roun paj ki li té divèt trouvé, entitilé « $1 » $2.\n\nJénéralman, sala ka sirviv an swivan roun lyen vèr roun diff périmé ou vèr listorik di roun paj souprimé.\n\nSi a pa sa ki la, zòt pitèt trouvé roun anomali annan program-an.\nSouplé, signalé li à roun [[Special:ListUsers/sysop|administratò]] é pa bliyé di endiké li URL-a di paj-a.",
+       "missingarticle-rev": "(niméro di vèrsyon : $1)",
+       "missingarticle-diff": "(diff : $1, $2)",
+       "readonly_lag": "Baz-a di doné té otomatikman vérouyé pannan ki sèrvò-ya ségondèr ka réyaligné yé kò asou sèrvò prensipal",
+       "nonwrite-api-promise-error": "Ankèt-a HTTP « <code>Promise-Non-Write-API-Action:</code> » té voyé mè rékèt-a té fè à oun modjoul di ékritir di API-a.",
+       "internalerror": "Érò entèrn",
+       "internalerror_info": "Érò entèrn : $1",
+       "internalerror-fatal-exception": "Érò fatal di tip « $1 »",
+       "filecopyerror": "Enposib di kopyé fiché-a « $1 » vèr « $2 ».",
+       "filerenameerror": "Enposib di rounonmen fiché-a « $1 » an « $2 ».",
+       "filedeleteerror": "Enposib di souprimé fiché-a « $1 ».",
+       "directorycreateerror": "Enposib di kréyé répèrtwar-a « $1 ».",
+       "directoryreadonlyerror": "Répèrtwar-a « $1 » sa an lèktir sèl.",
+       "directorynotreadableerror": "Répèrtwar-a « $1 » pa lizib.",
+       "filenotfound": "Enposib di trouvé fiché-a « $1 ».",
+       "unexpected": "Valò ki pa nòrmal : « $1 » = « $2 ».",
+       "formerror": "Érò : enposib di soumèt fòrmilèr-a.",
+       "badarticleerror": "Sa aksyon pa pé sa éfèktchwé asou sa paj.",
+       "no-null-revision": "Enposib di kréyé roun nouvèl révizyon vid pou paj-a « $1 »",
        "badtitle": "Movè tit",
        "badtitletext": "Tit di paj doumandé pa valid, vid, ou mal formé si a roun tit entèr-lanng ou entèr-projè.\nI ka kontni pitèt oun ou plizyò karaktèr ki pa pé sa itilizé andan tit-ya.",
        "viewsource": "Wè tèks sours",
        "tooltip-ca-move": "Rounonmen sa paj",
        "tooltip-ca-watch": "Ajouté sa paj annan zòt lis di swivi",
        "tooltip-ca-unwatch": "Routiré sa paj di zòt lis di swivi",
-       "tooltip-search": "Sasé andan {{SITENAME}}",
+       "tooltip-search": "Sasé annan {{SITENAME}}",
        "tooltip-search-go": "Aksédé à roun paj di menm non si li ka ègzisté",
        "tooltip-search-fulltext": "Sasé paj-ya ka konpòrté sa tèks.",
        "tooltip-p-logo": "Vizité paj prensipal-a",
        "logentry-newusers-autocreate": "Kont $1 {{GENDER:$2|té kréyé}} otomatikman",
        "logentry-upload-upload": "$1 {{GENDER:$2|té télévèrsé}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|télévèrsé}} oun nouvèl vèrsyon di $3",
-       "searchsuggest-search": "Sasé andan {{SITENAME}}",
+       "searchsuggest-search": "Sasé annan {{SITENAME}}",
        "duration-days": "$1 jou{{PLURAL:$1|}}",
        "randomrootpage": "Paj rakaba aléyatwar"
 }
index 48caaa1..984f5c4 100644 (file)
        "tog-prefershttps": "תמיד להשתמש בתקשורת מאובטחת לאחר הכניסה לחשבון",
        "underline-always": "תמיד",
        "underline-never": "לעולם לא",
-       "underline-default": "ברירת המחדל של העיצוב או הדפדפן",
+       "underline-default": "×\91ר×\99רת ×\94×\9e×\97×\93×\9c ×©×\9c ×\94×¢×\99צ×\95×\91 ×\90×\95 ×©×\9c ×\94×\93פ×\93פ×\9f",
        "editfont-style": "הגופן בתיבת העריכה:",
        "editfont-monospace": "גופן ברוחב קבוע (monospace)",
-       "editfont-sansserif": "×\92×\95פ×\9f ×\9c×\90 ×\9e×¢×\95צ×\91 (sans-serif)",
-       "editfont-serif": "×\92×\95פ×\9f ×\9e×¢×\95צ×\91 (serif)",
+       "editfont-sansserif": "×\92×\95פ×\9f ×\9c×\9c×\90 ×ª×\92×\99×\9d",
+       "editfont-serif": "×\92×\95פ×\9f ×¢×\9d ×ª×\92×\99×\9d",
        "sunday": "ראשון",
        "monday": "שני",
        "tuesday": "שלישי",
        "redirectedfrom": "(הופנה מהדף $1)",
        "redirectpagesub": "דף הפניה",
        "redirectto": "הפניה ל:",
-       "lastmodifiedat": "דף זה נערך לאחרונה ב־$1, בשעה $2.",
+       "lastmodifiedat": "דף זה נערך לאחרונה ב־$2, $1.",
        "viewcount": "דף זה נצפה {{PLURAL:$1|פעם אחת|פעמיים|$1 פעמים}}.",
        "protectedpage": "דף מוגן",
        "jumpto": "קפיצה אל:",
        "generic-pool-error": "מצטערים, השרתים עמוסים כרגע.\nיותר מדי משתמשים מנסים לצפות במשאב הזה.\nנא להמתין זמן מה ולאחר מכן לנסות שוב.",
        "pool-timeout": "זמן ההמתנה לסיום הנעילה עבר",
        "pool-queuefull": "התור מלא",
-       "pool-errorunknown": "שגיאה בלתי ידועה",
+       "pool-errorunknown": "שגיאה בלתי־ידועה",
        "pool-servererror": "שירות המנייה אינו זמין ($1).",
        "poolcounter-usage-error": "שגיאת שימוש: $1",
        "aboutsite": "אודות {{SITENAME}}",
        "delete-hook-aborted": "המחיקה הופסקה על־ידי מבנה Hook.\nלא ניתן הסבר.",
        "no-null-revision": "לא ניתן היה ליצור גרסת־דמה בדף \"$1\"",
        "badtitle": "כותרת שגויה",
-       "badtitletext": "כותרת הדף המבוקש הייתה בלתי תקינה, ריקה, או קישור שגוי לשפה אחרת או למיזם אחר.\nייתכן שהיא מכילה תו אחד או יותר שאינו יכול לשמש בכותרות.",
+       "badtitletext": "כותרת הדף המבוקש הייתה בלתי־תקינה, ריקה, או קישור שגוי לשפה אחרת או למיזם אחר.\nייתכן שהיא מכילה תו אחד או יותר שאינו יכול לשמש בכותרות.",
        "title-invalid-empty": "כותרת הדף המבוקש ריקה או מכילה רק שם של מרחב שם.",
        "title-invalid-utf8": "כותרת הדף המבוקש מכילה רצף UTF-8 בלתי תקין.",
        "title-invalid-interwiki": "כותרת הדף המבוקש מכילה קישור בינוויקי, שלא ניתן להשתמש בו בכותרות.",
        "title-invalid-talk-namespace": "כותרת הדף המבוקש מפנה לדף שיחה שאינו יכול להתקיים.",
-       "title-invalid-characters": "כותרת הדף המבוקש מכילה תווים בלתי תקינים: \"$1\".",
+       "title-invalid-characters": "כותרת הדף המבוקש מכילה תווים בלתי־תקינים: \"$1\".",
        "title-invalid-relative": "בכותרת יש נתיב יחסי. כותרות דפים יחסיות (./, ../) אינן תקינות, כיוון שלעתים קרובות לא ניתן יהיה לגשת אליהן אם הן יטופלו בידי הדפדפן של המשתמש.",
        "title-invalid-magic-tilde": "כותרת הדף המבוקש מכילה רצף טילדות מיוחד שאינו תקין (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "כותרת הדף המבוקש ארוכה מדי. היא צריכה להיות לכל היותר באורך של {{PLURAL:$1|בית אחד|$1 בתים}} בקידוד UTF-8.",
-       "title-invalid-leading-colon": "כותרת הדף המבוקש מכילה תו נקודתיים בלתי תקין בתחילתה.",
+       "title-invalid-leading-colon": "כותרת הדף המבוקש מכילה תו נקודתיים בלתי־תקין בתחילתה.",
        "perfcached": "המידע הבא הוא עותק שמור בזיכרון המטמון, ועשוי שלא להיות מעודכן. לכל היותר {{PLURAL:$1|תוצאה אחת נשמרת|$1 תוצאות נשמרות}} בזיכרון המטמון.",
        "perfcachedts": "המידע הבא הוא עותק שמור בזיכרון המטמון, שעודכן לאחרונה ב־$1. לכל היותר {{PLURAL:$4|תוצאה אחת נשמרת|$4 תוצאות נשמרות}} בזיכרון המטמון.",
-       "querypage-no-updates": "×\94×¢×\93×\9b×\95× ×\99×\9d ×\9c×\93×£ ×\96×\94 ×\9bר×\92×¢ ×\9e×\95פסק×\99×\9d, ×\95המידע לא יעודכן באופן שוטף.",
+       "querypage-no-updates": "×\94×¢×\93×\9b×\95× ×\99×\9d ×\9c×\93×£ ×\94×\96×\94 ×\9e×\95פסק×\99×\9d ×\9bר×\92×¢.\nהמידע לא יעודכן באופן שוטף.",
        "viewsource": "הצגת מקור",
        "viewsource-title": "הצגת המקור של הדף \"$1\"",
        "actionthrottled": "הפעולה הוגבלה",
        "protectedinterface": "דף זה הוא אחד הדפים המספקים הודעות מערכת לתוכנה שמפעילה את {{SITENAME}}, והוא מוגן כדי למנוע השחתות.\nכדי להוסיף או לשנות תרגומים של הודעות מערכת עבור כל אתרי הוויקי, יש להשתמש ב־[https://translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "editinginterface": "<strong>אזהרה:</strong> דף זה הוא אחד הדפים המספקים הודעות מערכת לתוכנה שמפעילה את {{SITENAME}}.\nשינויים בדף הזה ישפיעו על ממשק המשתמש של משתמשים אחרים באתר.",
        "translateinterface": "כדי להוסיף או לשנות תרגומים של הודעות מערכת עבור כל אתרי הוויקי, יש להשתמש ב־[https://translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
-       "cascadeprotected": "דף זה מוגן מעריכה כי הוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:\n$2",
-       "namespaceprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך דפים במרחב השם <strong>$1</strong>.",
-       "customcssprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את דף ה־CSS הזה, משום שהוא מכיל הגדרות אישיות של משתמש אחר.",
-       "customjsprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את דף ה־JavaScript הזה, משום שהוא מכיל הגדרות אישיות של משתמש אחר.",
-       "mycustomcssprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את דף ה־CSS הזה.",
-       "mycustomjsprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את דף ה־JavaScript הזה.",
-       "myprivateinfoprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את המידע הפרטי {{GENDER:|שלך|שלך|שלכם}}.",
-       "mypreferencesprotected": "אין {{GENDER:|לך|לך|לכם}} הרשאה לערוך את ההעדפות {{GENDER:|שלך|שלך|שלכם}}.",
+       "cascadeprotected": "דף זה מוגן מפני עריכה כי הוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:\n$2",
+       "namespaceprotected": "אין לך הרשאה לערוך דפים במרחב השם <strong>$1</strong>.",
+       "customcssprotected": "אין לך הרשאה לערוך את דף ה־CSS הזה, משום שהוא מכיל הגדרות אישיות של משתמש אחר.",
+       "customjsonprotected": "אין לך הרשאה לערוך את דף ה־JSON הזה, משום שהוא מכיל הגדרות אישיות של משתמש אחר.",
+       "customjsprotected": "אין לך הרשאה לערוך את דף ה־JavaScript הזה, משום שהוא מכיל הגדרות אישיות של משתמש אחר.",
+       "mycustomcssprotected": "אין לך הרשאה לערוך את דף ה־CSS הזה.",
+       "mycustomjsonprotected": "אין לך הרשאה לערוך את דף ה־JSON הזה.",
+       "mycustomjsprotected": "אין לך הרשאה לערוך את דף ה־JavaScript הזה.",
+       "myprivateinfoprotected": "אין לך הרשאה לערוך את המידע הפרטי שלך.",
+       "mypreferencesprotected": "אין לך הרשאה לערוך את ההעדפות שלך.",
        "ns-specialprotected": "לא ניתן לערוך דפים מיוחדים.",
        "titleprotected": "[[User:$1|$1]] {{GENDER:$1|הפעיל|הפעילה}} על הדף הזה הגנה מפני יצירה.\nהסיבה שניתנה להגנה היא: <em>$2</em>.",
-       "filereadonlyerror": "לא ניתן לשנות את הקובץ \"$1\" כיוון שמאגר הקבצים \"$2\" במצב קריאה בלבד.\n\nמנהל המערכת שנעל את המאגר סיפק את ההסבר הבא: \"'''$3'''\".",
-       "invalidtitle-knownnamespace": "×\9b×\95תרת ×\91×\9cת×\99־תק×\99× ×\94 ×¢×\9d ×\9eר×\97×\91 ×\94ש×\9d \"$2\" ×\95ש×\9d דף \"$3\"",
-       "invalidtitle-unknownnamespace": "×\9b×\95תרת ×\91×\9cת×\99־תק×\99× ×\94 ×¢×\9d ×\9eר×\97×\91 ×©×\9d ×\91×\9cת×\99Ö¾×\99×\93×\95×¢ ×\9eספר $1 ×\95ש×\9d דף \"$2\"",
+       "filereadonlyerror": "לא ניתן לשנות את הקובץ \"$1\" כיוון שמאגר הקבצים \"$2\" במצב קריאה בלבד.\n\nמנהל המערכת שנעל את המאגר סיפק את ההסבר הבא: \"$3\".",
+       "invalidtitle-knownnamespace": "×\9b×\95תרת ×\91×\9cת×\99־תק×\99× ×\94 ×¢×\9d ×\9eר×\97×\91 ×\94ש×\9d \"$2\" ×\95×¢×\9d ×©×\9d ×\94דף \"$3\"",
+       "invalidtitle-unknownnamespace": "×\9b×\95תרת ×\91×\9cת×\99־תק×\99× ×\94 ×¢×\9d ×\9eר×\97×\91 ×©×\9d ×\91×\9cת×\99Ö¾×\99×\93×\95×¢ ×\9eספר $1 ×\95×¢×\9d ×©×\9d ×\94דף \"$2\"",
        "exception-nologin": "לא בחשבון",
        "exception-nologin-text": "נדרשת כניסה לחשבון כדי לראות את הדף הזה או לבצע את הפעולה הזאת.",
        "exception-nologin-text-manual": "נדרשת $1 כדי לראות את הדף הזה או לבצע את הפעולה הזאת.",
-       "virus-badscanner": "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
+       "virus-badscanner": "הגדרות שגויות: סורק הווירוסים אינו ידוע: <em>$1</em>",
        "virus-scanfailed": "הסריקה נכשלה (קוד: $1)",
        "virus-unknownscanner": "אנטי־וירוס בלתי ידוע:",
        "logouttext": "<strong>יצאתם מהחשבון.</strong>\n\nשימו לב שייתכן שדפים מסוימים ימשיכו להיות מוצגים כאילו אתם עדיין מחוברים לחשבון, עד שתנקו את המטמון של הדפדפן שלכם.",
        "cannotlogoutnow-title": "לא ניתן לצאת מהחשבון עכשיו",
-       "cannotlogoutnow-text": "היציאה אינה אפשרית בעת שימוש ב{{GRAMMAR:תחילית|$1}}.",
+       "cannotlogoutnow-text": "×\94×\99צ×\99×\90×\94 ×\9e×\94×\97ש×\91×\95×\9f ×\90×\99× ×\94 ×\90פשר×\99ת ×\91עת ×©×\99×\9e×\95ש ×\91{{GRAMMAR:ת×\97×\99×\9c×\99ת|$1}}.",
        "welcomeuser": "ברוך בואך, $1!",
-       "welcomecreation-msg": "חשבונך נוצר.\nבאפשרותך להתאים את [[Special:Preferences|ההעדפות]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.",
+       "welcomecreation-msg": "חשבונך נוצר.\nבאפשרותך להתאים את ה[[Special:Preferences|העדפות]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.",
        "yourname": "שם משתמש:",
        "userlogin-yourname": "שם משתמש",
        "userlogin-yourname-ph": "יש להקליד את שם המשתמש",
        "userlogin-signwithsecure": "שימוש בחיבור מאובטח",
        "cannotlogin-title": "לא ניתן להיכנס לחשבון",
        "cannotlogin-text": "הכניסה לחשבון אינה אפשרית.",
-       "cannotloginnow-title": "לא ניתן להיכנס עכשיו",
-       "cannotloginnow-text": "הכניסה אינה אפשרית בעת שימוש ב{{GRAMMAR:תחילית|$1}}.",
+       "cannotloginnow-title": "×\9c×\90 × ×\99ת×\9f ×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×¢×\9bש×\99×\95",
+       "cannotloginnow-text": "×\94×\9b× ×\99ס×\94 ×\9c×\97ש×\91×\95×\9f ×\90×\99× ×\94 ×\90פשר×\99ת ×\91עת ×©×\99×\9e×\95ש ×\91{{GRAMMAR:ת×\97×\99×\9c×\99ת|$1}}.",
        "cannotcreateaccount-title": "לא ניתן ליצור חשבונות",
        "cannotcreateaccount-text": "יצירת חשבונות באופן ישיר אינה מותרת באתר זה.",
        "yourdomainname": "המתחם שלך:",
        "userlogin-resetpassword-link": "שכחת את הסיסמה?",
        "userlogin-helplink2": "עזרה בכניסה לחשבון",
        "userlogin-loggedin": "אתם כבר מחוברים לחשבון {{GENDER:$1|$1}}.\nהשתמשו בטופס שלהלן כדי להתחבר לחשבון אחר.",
-       "userlogin-reauth": "עליכם להיכנס לחשבון כדי לאמת שאתם באמת {{GENDER:$1|$1}}.",
+       "userlogin-reauth": "{{GENDER:$1|עליך|עלייך}} להיכנס לחשבון כדי לאמת {{GENDER:$1|שאתה|שאת}} באמת $1.",
        "userlogin-createanother": "יצירת חשבון אחר",
        "createacct-emailrequired": "כתובת דוא\"ל",
        "createacct-emailoptional": "כתובת דוא\"ל (לא חובה)",
        "createacct-email-ph": "יש להקליד את כתובת הדוא\"ל שלך",
        "createacct-another-email-ph": "יש להקליד כתובת דוא\"ל",
        "createaccountmail": "שימוש בסיסמה זמנית אקראית ושליחתה לכתובת הדוא\"ל שצוינה",
-       "createaccountmail-help": "×\99×\9b×\95×\9c ×\9cש×\9eש ×\9c×\99צ×\99רת ×\97ש×\91×\95×\9f ×\9c×\90×\93×\9d ×\90×\97ר ×\91×\9c×\99 ×\9c×\91רר ×\9e×\94 ×\94ססמה.",
+       "createaccountmail-help": "×\99×\9b×\95×\9c ×\9cש×\9eש ×\9c×\99צ×\99רת ×\97ש×\91×\95×\9f ×¢×\91×\95ר ×\90×\93×\9d ×\90×\97ר ×\91×\9c×\99 ×\9c×\9c×\9e×\95×\93 ×\90ת ×\94ס×\99סמה.",
        "createacct-realname": "שם אמיתי (לא חובה)",
        "createacct-reason": "סיבה",
        "createacct-reason-ph": "סיבה ליצירת חשבון נוסף",
        "createacct-benefit-body1": "{{PLURAL:$1|עריכה|עריכות}}",
        "createacct-benefit-body2": "{{PLURAL:$1|דף|דפים}}",
        "createacct-benefit-body3": "{{PLURAL:$1|תורם|תורמים}} לאחרונה",
-       "badretype": "×\94ס×\99ס×\9e×\90×\95ת ×©×\94×\96נת ×\90×\99× ×\9f ×\9eת×\90×\99מות.",
+       "badretype": "×\94ס×\99ס×\9e×\90×\95ת ×©×\94×\96נת ×\90×\99× ×\9f ×ª×\95×\90מות.",
        "usernameinprogress": "יצירת חשבון עבור שם המשתמש הזה כבר התחילה.\nנא להמתין.",
        "userexists": "שם המשתמש שבחרת כבר נמצא בשימוש.\nנא לבחור שם אחר.",
        "loginerror": "שגיאה בכניסה לחשבון",
        "createacct-loginerror": "החשבון נוצר בהצלחה, אבל לא ניתן היה להיכנס אליו באופן אוטומטי. נא [[Special:UserLogin|להיכנס באופן ידני]].",
        "noname": "לא הזנת שם משתמש תקין.",
        "loginsuccesstitle": "נכנסת לחשבון",
-       "loginsuccess": "'''נכנסת ל{{grammar:תחילית|{{SITENAME}}}} בשם \"$1\".'''",
-       "nosuchuser": "אין משתמש בשם \"$1\".\nשימו לב ששמות משתמשים הם תלויי־רישיות.\nאנא בִדקו את האיות של שם המשתמש, או [[Special:CreateAccount|צרו חשבון חדש]].",
+       "loginsuccess": "<strong>נכנסת ל{{GRAMMAR:תחילית|{{SITENAME}}}} בשם \"$1\".</strong>",
+       "nosuchuser": "אין משתמש בשם \"$1\".\nשימו לב ששמות משתמשים הם תלויי־רישיות.\nאנא בדקו את האיות של שם המשתמש, או [[Special:CreateAccount|צרו חשבון חדש]].",
        "nosuchusershort": "אין משתמש בשם \"$1\".\nנא לוודא שהאיות נכון.",
        "nouserspecified": "יש לציין שם משתמש.",
-       "login-userblocked": "×\9eשת×\9eש ×\96×\94 ×\97ס×\95×\9d. ×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d להיכנס לחשבון.",
+       "login-userblocked": "×\9eשת×\9eש ×\96×\94 ×\97ס×\95×\9d. ×\90×\99×\9f ×\90פשר×\95ת להיכנס לחשבון.",
        "wrongpassword": "שם המשתמש או הסיסמה שהזנת שגויים.\nנא לנסות שוב.",
        "wrongpasswordempty": "הסיסמה שהזנת ריקה.\nנא לנסות שוב.",
        "passwordtooshort": "סיסמאות חייבות להיות באורך {{PLURAL:$1|תו אחד|$1 תווים}} לפחות.",
        "password-login-forbidden": "השימוש בשם המשתמש והסיסמה האלה נאסר.",
        "mailmypassword": "איפוס סיסמה",
        "passwordremindertitle": "סיסמה זמנית חדשה מ{{grammar:תחילית|{{SITENAME}}}}",
-       "passwordremindertext": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש סיסמה\nחדשה לכניסה לחשבון ב{{GRAMMAR:תחילית|{{SITENAME}}}} ($4). נוצרה סיסמה זמנית למשתמש \"$2\",\nוסיסמה זו היא \"$3\". אם זו הייתה כוונתכם, תוכלו כעת להיכנס לחשבון ולבחור סיסמה חדשה.\nהסיסמה הזמנית שלכם תפקע תוך {{PLURAL:$5|יום אחד|יומיים|$5 ימים}}.\n\nעליכם להיכנס לאתר ולשנות את סיסמתכם בהקדם האפשרי. אם מישהו אחר ביקש סיסמה חדשה זו או אם נזכרתם בסיסמתכם\nואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמתכם הישנה.",
+       "passwordremindertext": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש סיסמה\nחדשה לכניסה לחשבון ב{{GRAMMAR:תחילית|{{SITENAME}}}}&rlm; ($4). נוצרה סיסמה זמנית למשתמש \"$2\",\nוסיסמה זו היא \"$3\". אם זו הייתה כוונתכם, עליכם להיכנס עכשיו לחשבון ולבחור סיסמה חדשה.\nהסיסמה הזמנית שלכם תפקע תוך {{PLURAL:$5|יום אחד|יומיים|$5 ימים}}.\n\nאם מישהו אחר ביקש סיסמה חדשה זו, או אם נזכרתם בסיסמתכם\nואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו\nולהמשיך להשתמש בסיסמתכם הישנה.",
        "noemail": "לא רשומה כתובת דואר אלקטרוני עבור ה{{GENDER:$1|משתמש|משתמשת}} \"$1\".",
        "noemailcreate": "יש לספק כתובת דואר אלקטרוני תקינה.",
        "passwordsent": "סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור \"$1\".\nאנא היכנסו חזרה לאתר אחרי שתקבלו אותה.",
        "blocked-mailpassword": "כתובת ה־IP שלך נחסמה מעריכה. כדי למנוע ניצול לרעה, אינך מורשה להשתמש באפשרות שחזור הסיסמה.",
-       "eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה עליכם לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לכם.",
+       "eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה {{GENDER:|עליך|עלייך}} לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לך.",
        "throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
-       "mailerror": "שגיאה בשליחת דואר: $1",
+       "mailerror": "שגיאה בשליחת דוא\"ל: $1",
        "acct_creation_throttle_hit": "מבקרים באתר זה דרך כתובת ה־IP שלך כבר יצרו {{PLURAL:$1|חשבון אחד|$1 חשבונות}} במהלך $2. זהו המקסימום המותר בתקופה זו.\nלפיכך, כרגע לא ניתן ליצור חשבונות נוספים מכתובת ה־IP הזו.",
-       "emailauthenticated": "כתובת הדוא\"ל שלך אומתה ב־$2 בשעה $3.",
-       "emailnotauthenticated": "×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9b×\9d ×¢×\93×\99×\99×\9f ×\9c×\90 ×\90×\95×\9eת×\94.\n×\9c×\90 ×\99×\99ש×\9c×\97 ×\90×\9c×\99×\9b×\9d דוא\"ל עבור אף אחת מהתכונות הבאות.",
+       "emailauthenticated": "כתובת הדוא\"ל שלך אומתה ב־$3, $2.",
+       "emailnotauthenticated": "×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×¢×\93×\99×\99×\9f ×\9c×\90 ×\90×\95×\9eת×\94.\n×\9c×\90 ×\99×\99ש×\9c×\97 {{GENDER:|×\90×\9c×\99×\9a\90×\9c×\99×\99×\9a}} דוא\"ל עבור אף אחת מהתכונות הבאות.",
        "noemailprefs": "יש לציין כתובת דוא\"ל בהעדפות שלך כדי שתכונות אלה יעבדו.",
        "emailconfirmlink": "אישור כתובת הדוא\"ל שלך",
        "invalidemailaddress": "כתובת הדוא\"ל אינה מתקבלת כיוון שנראה שהיא בפורמט לא חוקי.\nיש להקליד כתובת תקינה או להשאיר את השדה ריק.",
-       "cannotchangeemail": "×\9c×\90 × ×\99ת×\9f ×\9cשנ×\95ת ×\90ת ×\9bת×\95×\91×\95ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\97ש×\91×\95× ×\95ת ×\91×\90תר ×\95×\99ק×\99 זה.",
+       "cannotchangeemail": "×\9c×\90 × ×\99ת×\9f ×\9cשנ×\95ת ×\90ת ×\9bת×\95×\91×\95ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\97ש×\91×\95× ×\95ת ×\91×\90תר ×\94×\95×\95×\99ק×\99 ×\94זה.",
        "emaildisabled": "אתר זה לא יכול לשלוח דואר אלקטרוני.",
        "accountcreated": "החשבון נוצר",
        "accountcreatedtext": "חשבון המשתמש [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|שיחה]]) נוצר.",
        "createaccount-title": "יצירת חשבון ב{{grammar:תחילית|{{SITENAME}}}}",
-       "createaccount-text": "×\9e×\99ש×\94×\95 ×\99צר ×\97ש×\91×\95×\9f ×\91ש×\9d $2 ×\91{{grammar:ת×\97×\99×\9c×\99ת|{{SITENAME}}}} ($4), ×\95×\94ס×\99ס×\9e×\94 ×\94×\96×\9e× ×\99ת ×©×\9c ×\94×\97ש×\91×\95×\9f ×\94×\99×\90 \"$3\". ×¢×\9c×\99×\9b×\9d ×\9c×\94×\99×\9bנס ×\95×\9cשנ×\95ת ×¢×\9bש×\99×\95 ×\90ת ×\94ס×\99ס×\9e×\94.\n\n×\91×\90פשר×\95ת×\9b×\9d להתעלם מהודעה זו, אם החשבון נוצר בטעות.",
-       "login-throttled": "ביצעתם לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.\nאנא המתינו $1 לפני שתנסו שוב.",
-       "login-abort-generic": "כניסתך לחשבון לא הצליחה - היא הופסקה",
-       "login-migrated-generic": "×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a ×\94×\95×¢×\91ר, ×\95ש×\9d ×\94×\9eשת×\9eש ×©×\9c×\9a ×\9b×\91ר ×\9c×\90 ×§×\99×\99×\9d ×\91×\90תר ×\95×\99ק×\99 זה.",
+       "createaccount-text": "×\9e×\99ש×\94×\95 ×\99צר ×¢×\91×\95ר×\9a ×\97ש×\91×\95×\9f ×\91ש×\9d \"$2\" ×\91×\90תר {{SITENAME}}&rlm; ($4), ×\95×\94ס×\99ס×\9e×\94 ×\94×\96×\9e× ×\99ת ×©×\9c ×\94×\97ש×\91×\95×\9f ×\94×\99×\90 \"$3\".\n× ×\90 ×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×¢×\9bש×\99×\95 ×\95×\9cשנ×\95ת ×\90ת ×\94ס×\99ס×\9e×\94.\n\n×\91×\90פשר×\95ת×\9a להתעלם מהודעה זו, אם החשבון נוצר בטעות.",
+       "login-throttled": "ביצעת לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.\nנא להמתין $1 ולאחר מכן לנסות שוב.",
+       "login-abort-generic": "כניסתך לחשבון לא הצליחה  היא הופסקה",
+       "login-migrated-generic": "×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a ×\94×\95×¢×\91ר, ×\95ש×\9d ×\94×\9eשת×\9eש ×©×\9c×\9a ×\9b×\91ר ×\9c×\90 ×§×\99×\99×\9d ×\91×\90תר ×\94×\95×\95×\99ק×\99 ×\94זה.",
        "loginlanguagelabel": "שפה: $1",
-       "suspicious-userlogout": "בקשתך לצאת מהחשבון נדחתה כיוון שנראה שהיא נשלחה על־ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.",
+       "suspicious-userlogout": "×\91קשת×\9a ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9cÖ¾×\99×\93×\99 ×\93פ×\93פ×\9f ×©×\91×\95ר ×\90×\95 ×¢×\9cÖ¾×\99×\93×\99 ×©×¨×ª ×¤×¨×\95קס×\99 ×¢×\9d ×\96×\99×\9bר×\95×\9f ×\9e×\98×\9e×\95×\9f.",
        "createacct-another-realname-tip": "לא חובה למלא את השם האמיתי.\nאם סופק, הוא עשוי לשמש כדי לייחס לך את עבודתך.",
        "pt-login": "כניסה לחשבון",
        "pt-login-button": "כניסה לחשבון",
        "user-mail-no-addy": "ניסיון לשלוח דוא\"ל ללא כתובת דוא\"ל.",
        "user-mail-no-body": "ניסיון לשלוח דוא\"ל עם תוכן ריק או קצר מאוד.",
        "changepassword": "שינוי סיסמה",
-       "resetpass_announce": "כדי לסיים את הכניסה, עליכם להגדיר סיסמה חדשה.",
-       "resetpass_text": "<!-- ×\94×\95ס×\99פ×\95 טקסט כאן -->",
+       "resetpass_announce": "כדי לסיים את הכניסה לחשבון, יש להגדיר סיסמה חדשה.",
+       "resetpass_text": "<!-- ×\99ש ×\9c×\94×\95ס×\99×£ טקסט כאן -->",
        "resetpass_header": "שינוי סיסמת החשבון",
        "oldpassword": "סיסמה ישנה:",
        "newpassword": "סיסמה חדשה:",
        "retypenew": "חזרה על הסיסמה החדשה:",
        "resetpass_submit": "הגדרת הסיסמה וכניסה לחשבון",
        "changepassword-success": "סיסמתך שונתה!",
-       "changepassword-throttled": "ביצעתם לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.\nאנא המתינו $1 לפני שתנסו שוב.",
-       "botpasswords": "ססמאות בוט",
-       "botpasswords-summary": "<em>סס×\9e×\90×\95ת ×\91×\95×\98</em> ×\9e×\90פשר×\95ת ×\9b× ×\99ס×\94 ×\9c×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\91×\90×\9eצע×\95ת API, ×\9c×\9c×\90 ×©×\99×\9e×\95ש ×\91נת×\95× ×\99 ×\94×\94×\96×\93×\94×\95ת ×\94ר×\90ש×\99×\99×\9d ×©×\9c ×\94×\97ש×\91×\95×\9f. × ×\99ת×\9f ×\9c×\94×\92×\91×\99×\9c ×\90ת ×\94רש×\90×\95ת ×\94×\9eשת×\9eש ×\94×\96×\9e×\99× ×\95ת ×\9b×\90שר × ×\9bנס×\99×\9d ×¢×\9d ×¡×¡×\9eת ×\91×\95×\98.",
-       "botpasswords-disabled": "אפשרות השימוש בססמאות בוט מבוטלת.",
-       "botpasswords-no-central-id": "כדי להשתמש בססמאות בוט, יש להיכנס עם חשבון משתמש מאוחד.",
-       "botpasswords-existing": "ססמאות בוט קיימות",
-       "botpasswords-createnew": "יצירת ססמת בוט חדשה",
-       "botpasswords-editexisting": "עריכת ססמת בוט קיימת",
+       "changepassword-throttled": "ביצעת לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.\nנא להמתין $1 ולאחר מכן לנסות שוב.",
+       "botpasswords": "ס×\99ס×\9e×\90×\95ת ×\91×\95×\98",
+       "botpasswords-summary": "<em>ס×\99ס×\9e×\90×\95ת ×\91×\95×\98</em> ×\9e×\90פשר×\95ת ×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\91×\90×\9eצע×\95ת API, ×\9c×\9c×\90 ×©×\99×\9e×\95ש ×\91נת×\95× ×\99 ×\94×\94×\96×\93×\94×\95ת ×\94ר×\90ש×\99×\99×\9d ×©×\9c ×\94×\97ש×\91×\95×\9f. × ×\99ת×\9f ×\9c×\94×\92×\91×\99×\9c ×\90ת ×\94רש×\90×\95ת ×\94×\9eשת×\9eש ×\94×\96×\9e×\99× ×\95ת ×\9b×\90שר × ×\9bנס×\99×\9d ×¢×\9d ×¡×\99ס×\9eת ×\91×\95×\98.\n\n×\90×\9d {{GENDER:|×\90×\99× ×\9a ×\99×\95×\93×¢|×\90×\99× ×\9a ×\99×\95×\93עת|×\90×\99× ×\9b×\9d ×\99×\95×\93×¢×\99×\9d}} ×\9e×\94×\99 ×\94×\9e×\98ר×\94 ×©×\9c ×\9b×\9c×\99 ×\96×\94, ×¨×¦×\95×\99 ×\9c×\94×\99×\9e× ×¢ ×\9eש×\99×\9e×\95ש ×\91×\95. ×\9c×¢×\95×\9c×\9d ×\90×\9c {{GENDER:|ת×\99ת×\9f|ת×\99תנ×\99|ת×\99תנ×\95}} ×\9c×\9e×\99ש×\94×\95 ×\90×\97ר ×\90×£ ×\90×\97ת ×\9eס×\99ס×\9e×\90×\95ת ×\94×\91×\95×\98 {{GENDER:|ש×\9c×\9a|ש×\9c×\9a|ש×\9c×\9b×\9d}} ×\95×\90×\9c {{GENDER:|ת×\99×\99צר|ת×\99×\99צר×\99|ת×\99×\99צר×\95}} ×¡×\99ס×\9e×\90×\95ת ×\91×\95×\98 ×¢×\91×\95ר ×\90×\97ר×\99×\9d.",
+       "botpasswords-disabled": "×\90פשר×\95ת ×\94ש×\99×\9e×\95ש ×\91ס×\99ס×\9e×\90×\95ת ×\91×\95×\98 ×\9e×\91×\95×\98×\9cת.",
+       "botpasswords-no-central-id": "×\9b×\93×\99 ×\9c×\94שת×\9eש ×\91ס×\99ס×\9e×\90×\95ת ×\91×\95×\98, ×\99ש ×\9c×\94×\99×\9bנס ×¢×\9d ×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\9e×\90×\95×\97×\93.",
+       "botpasswords-existing": "ס×\99ס×\9e×\90×\95ת ×\91×\95×\98 ×§×\99×\99×\9e×\95ת",
+       "botpasswords-createnew": "×\99צ×\99רת ×¡×\99ס×\9eת ×\91×\95×\98 ×\97×\93ש×\94",
+       "botpasswords-editexisting": "ער×\99×\9bת ×¡×\99ס×\9eת ×\91×\95×\98 ×§×\99×\99×\9eת",
        "botpasswords-label-appid": "שם הבוט:",
        "botpasswords-label-create": "יצירה",
        "botpasswords-label-update": "עדכון",
        "botpasswords-label-cancel": "ביטול",
        "botpasswords-label-delete": "מחיקה",
-       "botpasswords-label-resetpassword": "×\90×\99פ×\95ס ×¡סמה",
-       "botpasswords-label-grants": "זיכיונות מתאימים",
+       "botpasswords-label-resetpassword": "×\90×\99פ×\95ס ×\94ס×\99סמה",
+       "botpasswords-label-grants": "זיכיונות מתאימים:",
        "botpasswords-help-grants": "זיכיונות נותנים גישה להרשאות שכבר מוחזקות בידי חשבון המשתמש שלך. הפעלת זיכיון בדף זה אינה נותנת גישה להרשאות אחרות שאינן מוחזקות בידי חשבון המשתמש שלך. מידע נוסף מופיע ב[[Special:ListGrants|טבלת הזיכיונות]].",
        "botpasswords-label-grants-column": "ניתן זיכיון",
        "botpasswords-bad-appid": "שם הבוט \"$1\" אינו תקין.",
        "botpasswords-insert-failed": "הוספת שם הבוט \"$1\" נכשלה. האם הוא כבר נוסף?",
        "botpasswords-update-failed": "לא היה אפשר לעדכן את שם הבוט \"$1\". האם הוא נמחק?",
-       "botpasswords-created-title": "ססמת הבוט נוצרה",
-       "botpasswords-created-body": "ססמת הבוט עבור בוט בשם \"$1\" של {{GENDER:$2|המשתמש|המשתמשת}} \"$2\" נוצרה.",
-       "botpasswords-updated-title": "ססמת הבוט עודכנה",
-       "botpasswords-updated-body": "ססמת הבוט עבור בוט בשם \"$1\" של {{GENDER:$2|המשתמש|המשתמשת}} \"$2\" עודכנה.",
-       "botpasswords-deleted-title": "ססמת הבוט נמחקה",
-       "botpasswords-deleted-body": "ססמת הבוט עבור בוט בשם \"$1\" של {{GENDER:$2|המשתמש|המשתמשת}} \"$2\" נמחקה.",
+       "botpasswords-created-title": "ס×\99ס×\9eת ×\94×\91×\95×\98 × ×\95צר×\94",
+       "botpasswords-created-body": "ס×\99ס×\9eת ×\94×\91×\95×\98 ×¢×\91×\95ר ×\91×\95×\98 ×\91ש×\9d \"$1\" ×©×\9c {{GENDER:$2|×\94×\9eשת×\9eש|×\94×\9eשת×\9eשת}} \"$2\" × ×\95צר×\94.",
+       "botpasswords-updated-title": "ס×\99ס×\9eת ×\94×\91×\95×\98 ×¢×\95×\93×\9b× ×\94",
+       "botpasswords-updated-body": "ס×\99ס×\9eת ×\94×\91×\95×\98 ×¢×\91×\95ר ×\91×\95×\98 ×\91ש×\9d \"$1\" ×©×\9c {{GENDER:$2|×\94×\9eשת×\9eש|×\94×\9eשת×\9eשת}} \"$2\" ×¢×\95×\93×\9b× ×\94.",
+       "botpasswords-deleted-title": "ס×\99ס×\9eת ×\94×\91×\95×\98 × ×\9e×\97ק×\94",
+       "botpasswords-deleted-body": "ס×\99ס×\9eת ×\94×\91×\95×\98 ×¢×\91×\95ר ×\91×\95×\98 ×\91ש×\9d \"$1\" ×©×\9c {{GENDER:$2|×\94×\9eשת×\9eש|×\94×\9eשת×\9eשת}} \"$2\" × ×\9e×\97ק×\94.",
        "botpasswords-newpassword": "הסיסמה החדשה לכניסה לחשבון <strong>$1</strong> היא <strong>$2</strong>. <em>נא לשמור מידע זה לצורך עיון עתידי.</em> <br> (עבור בוטים ישנים שדורשים ששם המשתמש בכניסה לחשבון יהיה זהה לשם המשתמש שאיתו הם יפעלו, ניתן להשתמש גם בשם המשתמש <strong>$3</strong> עם הסיסמה <strong>$4</strong>.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider אינו זמין.",
-       "botpasswords-restriction-failed": "כניסה זו נמנעה בשל הגבלות על ססמאות בוט.",
-       "botpasswords-invalid-name": "שם המשתמש שניתן אינו מכיל את תו הפרדת ססמאות הבוט (\"$1\").",
-       "botpasswords-not-exist": "למשתמש \"$1\" אין ססמת בוט בשם \"$2\".",
+       "botpasswords-restriction-failed": "×\9b× ×\99ס×\94 ×\96×\95 × ×\9e× ×¢×\94 ×\91ש×\9c ×\94×\92×\91×\9c×\95ת ×¢×\9c ×¡×\99ס×\9e×\90×\95ת ×\91×\95×\98.",
+       "botpasswords-invalid-name": "ש×\9d ×\94×\9eשת×\9eש ×©× ×\99ת×\9f ×\90×\99× ×\95 ×\9e×\9b×\99×\9c ×\90ת ×ª×\95 ×\94פר×\93ת ×¡×\99ס×\9e×\90×\95ת ×\94×\91×\95×\98 (\"$1\").",
+       "botpasswords-not-exist": "{{GENDER:$1|למשתמש|למשתמשת}} \"$1\" אין סיסמת בוט בשם \"$2\".",
        "resetpass_forbidden": "לא ניתן לשנות סיסמאות.",
        "resetpass_forbidden-reason": "לא ניתן לשנות את הסיסמאות: $1",
        "resetpass-no-info": "נדרשת כניסה לחשבון כדי לגשת לדף זה באופן ישיר.",
        "resetpass-submit-loggedin": "שינוי סיסמה",
        "resetpass-submit-cancel": "ביטול",
        "resetpass-wrong-oldpass": "הסיסמה הזמנית או הנוכחית אינה תקינה.\nייתכן שכבר שינית את סיסמתך או שכבר ביקשת סיסמה זמנית חדשה.",
-       "resetpass-recycled": "×\90× ×\90 ×\90פס×\95 ×\90ת ×\94ס×\99ס×\9e×\94 ×\9cס×\99ס×\9e×\94 ×©×\95× ×\94 ×\9eס×\99ס×\9eת×\9b×\9d הנוכחית.",
-       "resetpass-temp-emailed": "נכנסתם באמצעות סיסמה זמנית שנשלחה אליכם בדוא\"ל.\nכדי לסיים את הכניסה, עליכם להגדיר כאן סיסמה חדשה:",
+       "resetpass-recycled": "×\99ש ×\9c×\90פס ×\90ת ×\94ס×\99ס×\9e×\94 ×\9cס×\99ס×\9e×\94 ×\94ש×\95× ×\94 ×\9eס×\99×\9eסת×\9a הנוכחית.",
+       "resetpass-temp-emailed": "נכנסת באמצעות סיסמה זמנית שנשלחה {{GENDER:|אליך|אלייך}} בדוא\"ל.\nכדי לסיים את הכניסה, יש להגדיר כאן סיסמה חדשה:",
        "resetpass-temp-password": "סיסמה זמנית:",
        "resetpass-abort-generic": "שינוי הסיסמה בוטל על־ידי הרחבה.",
-       "resetpass-expired": "ס×\99ס×\9eת×\9b×\9d ×¤×§×¢×\94. ×\90× ×\90 ×\94×\92×\93×\99ר×\95 סיסמה חדשה כדי להיכנס.",
+       "resetpass-expired": "ס×\99ס×\9eת×\9a ×¤×§×¢×\94. × ×\90 ×\9c×\94×\92×\93×\99ר סיסמה חדשה כדי להיכנס.",
        "resetpass-expired-soft": "הסיסמה שלך פקעה, וצריך לאפס אותה. יש לבחור סיסמה חדשה כעת, או ללחוץ על \"{{int:authprovider-resetpass-skip-label}}\" כדי לאפס אותה מאוחר יותר.",
        "resetpass-validity-soft": "הסיסמה שלך אינה תקינה: $1\n\nיש לבחור סיסמה חדשה כעת או ללחוץ על \"{{int:authprovider-resetpass-skip-label}}\" כדי לאפס את הסיסמה מאוחר יותר.",
        "passwordreset": "איפוס סיסמה",
-       "passwordreset-text-one": "×\9e×\9c×\90×\95 טופס זה כדי לקבל סיסמה זמנית בדוא\"ל.",
-       "passwordreset-text-many": "{{PLURAL:$1||×\9e×\9c×\90×\95 אחד מהשדות הבאים כדי לקבל סיסמה זמנית בדוא\"ל.}}",
+       "passwordreset-text-one": "× ×\90 ×\9c×\9e×\9c×\90 טופס זה כדי לקבל סיסמה זמנית בדוא\"ל.",
+       "passwordreset-text-many": "{{PLURAL:$1||×\99ש ×\9c×\9e×\9c×\90 אחד מהשדות הבאים כדי לקבל סיסמה זמנית בדוא\"ל.}}",
        "passwordreset-disabled": "איפוסי סיסמה בוטלו באתר ויקי זה.",
        "passwordreset-emaildisabled": "שירותי הדוא\"ל בוטלו באתר ויקי זה.",
        "passwordreset-username": "שם משתמש:",
        "passwordreset-domain": "תחום:",
        "passwordreset-email": "כתובת דוא\"ל:",
        "passwordreset-emailtitle": "פרטי חשבון ב{{grammar:תחילית|{{SITENAME}}}}",
-       "passwordreset-emailtext-ip": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש איפוס של\nהסיסמה שלכם ב{{grammar:תחילית|{{SITENAME}}}} ($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}}\nלכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
-       "passwordreset-emailtext-user": "{{GENDER:$1|המשתמש|המשתמשת}} $1 ב{{GRAMMAR:תחילית|{{SITENAME}}}} {{GENDER:$1|ביקש|ביקשה}} איפוס של הסיסמה שלכם ב{{GRAMMAR:תחילית|{{SITENAME}}}}\n($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}} לכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
+       "passwordreset-emailtext-ip": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש איפוס של\nהסיסמה שלכם ב{{grammar:תחילית|{{SITENAME}}}}&rlm; ($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}}\nלכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או אם נזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
+       "passwordreset-emailtext-user": "המשתמש $1 ב{{GRAMMAR:תחילית|{{SITENAME}}}} ביקש איפוס של הסיסמה שלכם ב{{GRAMMAR:תחילית|{{SITENAME}}}}&rlm;\n($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}} לכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או אם נזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
        "passwordreset-emailelement": "שם משתמש:\n$1\n\nסיסמה זמנית:\n$2",
        "passwordreset-emailsentemail": "אם כתובת הדואר האלקטרוני הזאת משויכת לחשבון שלך, אז יישלח דואר אלקטרוני לאיפוס הסיסמה.",
        "passwordreset-emailsentusername": "אם יש כתובת דואר אלקטרוני שמשויכת לשם המשתמש הזה, אז יישלח דואר אלקטרוני לאיפוס הסיסמה.",
        "changeemail-no-info": "נדרשת כניסה לחשבון כדי לגשת לדף זה ישירות.",
        "changeemail-oldemail": "כתובת דוא\"ל נוכחית:",
        "changeemail-newemail": "כתובת דוא\"ל חדשה:",
-       "changeemail-newemail-help": "×¢×\9c×\99×\9b×\9d ×\9c×\94ש×\90×\99ר ×©×\93×\94 ×\96×\94 ×¨×\99ק ×\90×\9d ×\91רצ×\95× ×\9b×\9d ×\9c×\94ס×\99ר ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90ר ×\94×\90×\9cק×\98ר×\95× ×\99 ×©×\9c×\9b×\9d. ×\90×\9d ×ª×¡×\99ר×\95 ×\90×\95ת×\94, ×\9c×\90 ×ª×\95×\9b×\9c×\95 ×\9c×\90פס ×¡×\99ס×\9e×\94 ×©×©×\9b×\97ת×\9d ×\95×\9c×\90 ×ª×\95×\9b×\9c×\95 לקבל הודעות דואר אלקטרוני מאתר הוויקי הזה.",
+       "changeemail-newemail-help": "×\91×\90פשר×\95ת×\9a ×\9c×\94ש×\90×\99ר ×©×\93×\94 ×\96×\94 ×¨×\99ק ×\90×\9d ×\91רצ×\95× ×\9a ×\9c×\94ס×\99ר ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90ר ×\94×\90×\9cק×\98ר×\95× ×\99 ×©×\9c×\9a. ×\90×\9d ×\94×\99×\90 ×ª×\95סר, ×\9c×\90 ×\99×\94×\99×\94 ×\91×\90פשר×\95ת×\9a ×\9c×\90פס ×¡×\99ס×\9e×\94 ×©×©×\9b×\97ת ×\95×\9c×\90 {{GENDER:|ת×\95×\9b×\9c|ת×\95×\9b×\9c×\99}} לקבל הודעות דואר אלקטרוני מאתר הוויקי הזה.",
        "changeemail-none": "(אין)",
        "changeemail-password": "סיסמה ב{{grammar:תחילית|{{SITENAME}}}}:",
        "changeemail-submit": "שינוי כתובת הדוא\"ל",
        "savechanges": "שמירת השינויים",
        "publishpage": "פרסום הדף",
        "publishchanges": "פרסום השינויים",
+       "savearticle-start": "שמירת הדף…",
+       "savechanges-start": "שמירת השינויים…",
+       "publishpage-start": "פרסום הדף…",
+       "publishchanges-start": "פרסום השינויים…",
        "preview": "תצוגה מקדימה",
        "showpreview": "תצוגה מקדימה",
        "showdiff": "הצגת שינויים",
        "systemblockedtext": "שם המשתמש או כתובת ה־IP שלך נחסמו באופן אוטומטי על־ידי תוכנת מדיה־ויקי.\nהסיבה שניתנה לחסימה היא:\n\n:<em>$2</em>\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nכתובת ה־IP הנוכחית שלך היא $3.\nיש לציין את כל הפרטים הללו בכל פנייה לבירור החסימה.",
        "blockednoreason": "לא ניתנה סיבה",
        "whitelistedittext": "נדרשת $1 כדי לערוך דפים.",
-       "confirmedittext": "×¢×\9c×\99×\9b×\9d ×\9c×\90×\9eת ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9b×\9d ×\9cפנ×\99 ×©×ª×\95×\9b×\9c×\95 ×\9cער×\95×\9a ×\93פ×\99×\9d. ×\90× ×\90 ×\94×\92×\93×\99ר×\95 ×\95×\90×\9eת×\95 ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9b×\9d ×\91×\90×\9eצע×\95ת [[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9b×\9d.",
+       "confirmedittext": "×\99ש ×\9c×\90×\9eת ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×\9cפנ×\99 ×¢×¨×\99×\9bת ×\93פ×\99×\9d.\n× ×\90 ×\9c×\94×\92×\93×\99ר ×\95×\9c×\90×\9eת ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×\91×\90×\9eצע×\95ת [[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9a.",
        "nosuchsectiontitle": "הפסקה לא נמצאה",
        "nosuchsectiontext": "ניסית לערוך פסקה שאינה קיימת.\nייתכן שהיא הועברה או נמחקה בעת שצפית בדף.",
        "loginreqtitle": "נדרשת כניסה לחשבון",
        "blocked-notice-logextract": "{{GENDER:$1|המשתמש הזה חסום|המשתמשת הזו חסומה}} כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
        "clearyourcache": "<strong>הערה:</strong> לאחר השמירה, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.\n* <strong>פיירפוקס / ספארי:</strong> להחזיק את המקש <em>Shift</em> בעת לחיצה על <strong>טעינה מחדש</strong> (Reload), או ללחוץ על צירוף המקשים <em>Ctrl-F5</em> או <em>Ctrl-R</em> (במחשב מק: <em dir=\"ltr\">⌘-R</em>).\n* <strong>גוגל כרום:</strong> ללחוץ על צירוף המקשים <em>Ctrl-Shift-R</em> (במחשב מק: <em dir=\"ltr\">⌘-Shift-R</em>).\n* <strong>אינטרנט אקספלורר:</strong> להחזיק את המקש <em>Ctrl</em> בעת לחיצה על <strong>רענן</strong> (Refresh), או ללחוץ על צירוף המקשים <em>Ctrl-F5</em>.\n* <strong>אופרה:</strong> לפתוח <em>תפריט ← הגדרות</em> (במחשב מק: <em>Opera ← העדפות</em>) ואז ללחוץ על <em>פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files</em>.",
        "usercssyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את גיליון ה־CSS החדש שלכם לפני השמירה.",
+       "userjsonyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את דף ה־JSON החדש שלכם לפני השמירה.",
        "userjsyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את סקריפט ה־JavaScript החדש שלכם לפני השמירה.",
        "usercsspreview": "<strong>זִכרו שזו רק תצוגה מקדימה של גיליון ה־CSS שלכם.\nהוא עדיין לא נשמר!</strong>",
+       "userjsonpreview": "<strong>זִכרו שזו רק בדיקה/תצוגה מקדימה של הגדרות ה־JSON שלכם.\nהן עדיין לא נשמרו!</strong>",
        "userjspreview": "<strong>זִכרו שזו רק בדיקה/תצוגה מקדימה של סקריפט ה־JavaScript שלכם.\nהוא עדיין לא נשמר!</strong>",
-       "sitecsspreview": "'''זכרו שזו רק תצוגה מקדימה של גיליון ה־CSS הזה.'''\n'''הוא טרם נשמר!'''",
-       "sitejspreview": "'''זכרו שזו רק תצוגה מקדימה של קוד ה־JavaScript הזה.'''\n'''הוא טרם נשמר!'''",
-       "userinvalidconfigtitle": "'''אזהרה:''' העיצוב \"$1\" אינו קיים.\nדפי .css ו־.js מותאמים אישית משתמשים בכותרת עם אותיות קטנות – למשל, {{ns:user}}:דוגמה/vector.css ולא {{ns:user}}:דוגמה/Vector.css.",
+       "sitecsspreview": "<strong>זִכרו שזו רק תצוגה מקדימה של גיליון ה־CSS הזה.\nהוא עדיין לא נשמר!</strong>",
+       "sitejsonpreview": "<strong>זִכרו שזו רק תצוגה מקדימה של הגדרות ה־JSON האלה.\nהן עדיין לא נשמרו!</strong>",
+       "sitejspreview": "<strong>זִכרו שזו רק תצוגה מקדימה של סקריפט ה־JavaScript הזה.\nהוא עדיין לא נשמר!</strong>",
+       "userinvalidconfigtitle": "<strong>אזהרה:</strong> העיצוב \"$1\" אינו קיים.\nדפי .css, דפי .json, ודפי .js מותאמים אישית משתמשים בכותרת עם אותיות קטנות – למשל, {{ns:user}}:דוגמה/vector.css ולא {{ns:user}}:דוגמה/Vector.css.",
        "updated": "(מעודכן)",
        "note": "'''הערה:'''",
        "previewnote": "<strong>{{GENDER:|זכור|זִכרי|זִכרו}} שזו רק תצוגה מקדימה.</strong>\nהשינויים {{GENDER:|שלך|שלך|שלכם}} עדיין לא נשמרו!",
        "sectioneditnotsupported-title": "עריכת פסקאות אינה נתמכת",
        "sectioneditnotsupported-text": "עריכת פסקאות אינה נתמכת בדף זה.",
        "permissionserrors": "שגיאת הרשאה",
-       "permissionserrorstext": "אין ב{{GENDER:|אפשרותך|אפשרותך|אפשרותכם}} לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:",
-       "permissionserrorstext-withaction": "אין ב{{GENDER:|אפשרותך|אפשרותך|אפשרותכם}} $2, מה{{PLURAL:$1|סיבה הבאה|סיבות הבאות}}:",
+       "permissionserrorstext": "אין באפשרותך לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:",
+       "permissionserrorstext-withaction": "אין באפשרותך $2, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:",
        "contentmodelediterror": "לא ניתן לערוך את הגרסה הזאת כי מודל התוכן שלה הוא <code>$1</code>, השונה ממודל התוכן הנוכחי של הדף, <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''\n\nכדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.\nיומני המחיקות וההעברות של הדף מוצגים להלן:",
        "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות, ההגנות וההעברות של הדף מוצגים להלן לעיון.",
        "default": "ברירת המחדל",
        "prefs-files": "קבצים",
        "prefs-custom-css": "קובץ CSS מותאם אישית",
+       "prefs-custom-json": "קובץ JSON מותאם אישית",
        "prefs-custom-js": "קובץ JavaScript מותאם אישית",
-       "prefs-common-config": "קובצי CSS/JavaScript משותפים לכל העיצובים:",
+       "prefs-common-config": "קובצי CSS/JSON/JavaScript משותפים לכל העיצובים:",
        "prefs-reset-intro": "באפשרותך להשתמש באפשרות זו כדי להחזיר את ההעדפות שלך להגדרות ברירת המחדל של האתר.\nלא ניתן לבטל פעולה זו.",
        "prefs-emailconfirm-label": "אימות כתובת דוא\"ל:",
        "youremail": "דואר אלקטרוני:",
        "right-editcontentmodel": "שינוי מודל התוכן של דפים",
        "right-editinterface": "עריכת ממשק המשתמש",
        "right-editusercss": "עריכת קובצי CSS של משתמשים אחרים",
+       "right-edituserjson": "עריכת קובצי JSON של משתמשים אחרים",
        "right-edituserjs": "עריכת קובצי JavaScript של משתמשים אחרים",
        "right-editmyusercss": "עריכת קובצי CSS של המשתמש עצמו",
+       "right-editmyuserjson": "עריכת קובצי JSON של המשתמש עצמו",
        "right-editmyuserjs": "עריכת קובצי JavaScript של המשתמש עצמו",
        "right-viewmywatchlist": "צפייה ברשימת המעקב של המשתמש עצמו",
        "right-editmywatchlist": "עריכת רשימת המעקב של המשתמש עצמו. מספר פעולות יוסיפו דפים גם ללא הרשאה זו.",
        "grant-createaccount": "יצירת חשבונות",
        "grant-createeditmovepage": "יצירה, עריכה והעברה של דפים",
        "grant-delete": "מחיקת דפים, גרסאות ורשומות יומן",
-       "grant-editinterface": "עריכת מרחב השם מדיה ויקי ו־CSS/JavaScript של משתמשים",
-       "grant-editmycssjs": "עריכת CSS/JavaScript שלך",
+       "grant-editinterface": "עריכת מרחב השם מדיה ויקי ו־CSS/JSON/JavaScript של משתמשים",
+       "grant-editmycssjs": "עריכת CSS/JSON/JavaScript שלך",
        "grant-editmyoptions": "עריכת העדפות המשתמש שלך",
        "grant-editmywatchlist": "עריכת רשימת המעקב שלך",
        "grant-editpage": "עריכת דפים קיימים",
        "filerevert-success": "הקובץ <strong>[[Media:$1|$1]]</strong> שוחזר ל[$4 גרסה מ־$3, $2].",
        "filerevert-badversion": "אין גרסה מקומית קודמת של הקובץ שהועלתה בתאריך המבוקש.",
        "filerevert-identical": "הגרסה הנוכחית של הקובץ כבר זהה לגרסה שנבחרה.",
-       "filedelete": "מחיקת $1",
+       "filedelete": "מחיקת הקובץ \"$1\"",
        "filedelete-legend": "מחיקת קובץ",
        "filedelete-intro": "אתם עומדים למחוק את הקובץ <strong>[[Media:$1|$1]]</strong> יחד עם כל היסטוריית הגרסאות שלו.",
        "filedelete-intro-old": "אתם מוחקים את הגרסה של '''[[Media:$1|$1]]''' מ־[$4 $3, $2].",
        "listusers-creationsort": "מיון לפי תאריך היצירה של החשבון",
        "listusers-desc": "מיון בסדר יורד",
        "usereditcount": "{{PLURAL:$1|עריכה אחת|$1 עריכות}}",
-       "usercreated": "{{GENDER:$3|נוצר|נוצרה}} ב־$2, $1",
+       "usercreated": "{{GENDER:$3|נוצר}} ב־$2, $1",
        "newpages": "דפים חדשים",
        "newpages-submit": "הצגה",
        "newpages-username": "שם משתמש:",
        "log": "יומנים",
        "logeventslist-submit": "הצגה",
        "all-logs-page": "כל היומנים הציבוריים",
-       "alllogstext": "זוהי תצוגה משולבת של כל סוגי היומנים הזמינים ב{{grammar:תחילית|{{SITENAME}}}}.\nניתן לצמצם את התצוגה על־ידי בחירת סוג היומן, שם המשתמש (תלוי רישיות) או הדף המושפע (גם כן תלוי רישיות).",
+       "alllogstext": "זוהי תצוגה משולבת של כל סוגי היומנים הזמינים ב{{grammar:תחילית|{{SITENAME}}}}.\nניתן לצמצם את התצוגה על־ידי בחירת סוג היומן, שם המשתמש (תלוי־רישיות) או הדף המושפע (גם כן תלוי־רישיות).",
        "logempty": "אין פריטים תואמים ביומן.",
        "log-title-wildcard": "חיפוש כותרות המתחילות באותיות אלה",
        "showhideselectedlogentries": "שינוי מצב התצוגה של פעולות היומן שנבחרו",
        "ipblocklist-localblock": "חסימה מקומית",
        "ipblocklist-otherblocks": "{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}",
        "infiniteblock": "ללא הגבלת זמן",
-       "expiringblock": "החסימה פוקעת ב־$1 בשעה $2",
+       "expiringblock": "החסימה פוקעת ב־$2, $1",
        "anononlyblock": "משתמשים אנונימיים בלבד",
        "noautoblockblock": "חסימה אוטומטית מבוטלת",
        "createaccountblock": "יצירת חשבונות נחסמה",
        "ipb_expiry_invalid": "זמן פקיעת החסימה אינו תקין.",
        "ipb_expiry_old": "זמן התפוגה כבר עבר.",
        "ipb_expiry_temp": "חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.",
-       "ipb_hide_invalid": "לא ניתן להעלים את החשבון הזה; {{PLURAL:$1|בוצעה ממנו יותר מעריכה אחת|בוצעו ממנו יותר מ‏‏֫־$1 עריכות}}.",
+       "ipb_hide_invalid": "לא ניתן להעלים את החשבון הזה; {{PLURAL:$1|בוצעה ממנו יותר מעריכה אחת|בוצעו ממנו יותר מ־$1 עריכות}}.",
        "ipb_already_blocked": "המשתמש \"$1\" כבר נחסם.",
        "ipb-needreblock": "$1 כבר {{GENDER:$1|חסום|חסומה}}. האם ברצונך לשנות את הגדרות החסימה?",
        "ipb-otherblocks-header": "{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}",
        "group-bot.css": "/* הסגנונות הנכתבים כאן ישפיעו על בוטים בלבד */",
        "group-sysop.css": "/* הסגנונות הנכתבים כאן ישפיעו על מפעילי מערכת בלבד */",
        "group-bureaucrat.css": "/* הסגנונות הנכתבים כאן ישפיעו על ביורוקרטים בלבד */",
+       "common.json": "/* כל ה־JSON שנכתב כאן ייטען עבור כל המשתמשים בכל טעינת עמוד. */",
        "common.js": "/* כל הסקריפטים שנכתבים כאן ייטענו עבור כל המשתמשים בכל טעינת עמוד. */",
        "group-autoconfirmed.js": "/* כל הסקריפטים הנכתבים כאן ייטענו עבור משתמשים ותיקים בלבד */",
        "group-user.js": "/* כל הסקריפטים הנכתבים כאן ייטענו עבור משתמשים רשומים בלבד */",
        "unlinkaccounts-success": "קישור החשבון בוטל.",
        "authenticationdatachange-ignored": "השינוי בנתוני האימות לא הצליח. ייתכן שלא הוגדר ספק.",
        "userjsispublic": "שימו לב: משתמשים אחרים יכולים לצפות בדפי ה־JavaScript שלכם, ולכן אין לכלול בהם מידע סודי.",
+       "userjsonispublic": "שימו לב: משתמשים אחרים יכולים לצפות בדפי ה־JSON שלכם, ולכן אין לכלול בהם מידע סודי.",
        "usercssispublic": "שימו לב: משתמשים אחרים יכולים לצפות בדפי ה־CSS שלכם, ולכן אין לכלול בהם מידע סודי.",
        "restrictionsfield-badip": "כתובת או טווח כתובות IP בלתי תקין: $1",
        "restrictionsfield-label": "טווחי כתובות IP מותרים:",
        "rawhtml-notallowed": "לא ניתן להשתמש בתגיות &lt;html&gt; מחוץ לדפים רגילים.",
        "gotointerwiki": "עזיבת {{SITENAME}}",
        "gotointerwiki-invalid": "הכותרת שצוינה אינה תקינה.",
-       "gotointerwiki-external": "{{GENDER:|×\90ת×\94 ×¢×\95×\9e×\93\90ת ×¢×\95×\9e×\93ת|×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d}} ×\9c×¢×\96×\95×\91 ×\90ת {{SITENAME}} ×\9b×\93×\99 ×\9c×\91קר ×\91×\90תר ×\94נפר×\93 \"[[$2]]\".\n\n'''[$1 ×\9c×\94×\9eשך לכתובת $1]'''",
+       "gotointerwiki-external": "{{GENDER:|×\90ת×\94 ×¢×\95×\9e×\93\90ת ×¢×\95×\9e×\93ת|×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d}} ×\9c×¢×\96×\95×\91 ×\90ת {{SITENAME}} ×\9b×\93×\99 ×\9c×\91קר ×\91×\90תר ×\94×\97×\99צ×\95× ×\99 \"[[$2]]\".\n\n'''[$1 ×\9c×\94×\9eש×\99ך לכתובת $1]'''",
        "undelete-cantedit": "אין באפשרותך לשחזר דף זה, כי אין באפשרותך לערוך אותו.",
        "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו.",
        "pagedata-title": "מידע על הדף",
index 5026b7c..6257060 100644 (file)
        "cascadeprotected": "यह पृष्ठ सुरक्षित हैं, क्योंकि यह निम्नलिखित {{PLURAL:$1|पृष्ठ|पृष्ठों}} की सुरक्षा-सीढ़ी में समाविष्ट है:\n$2",
        "namespaceprotected": "आपको '''$1''' नामस्थान में समाविष्ट पृष्ठों को बदलने की अनुमति नहीं है।",
        "customcssprotected": "आपको इस CSS पृष्ठ को संपादित करने की अनुमति नहीं है, क्योंकि इसमें अन्य सदस्य की व्यक्तिगत सेटिंग्स शामिल हैं।",
+       "customjsonprotected": "आपको इस JSON पृष्ठ को संपादित करने की अनुमति नहीं है, क्योंकि इसमें अन्य सदस्य की व्यक्तिगत सेटिंग्स शामिल हैं।",
        "customjsprotected": "आपको इस जावास्क्रिप्ट पृष्ठ को संपादित करने की अनुमति नहीं है, क्योंकि इसमें अन्य सदस्य की व्यक्तिगत सेटिंग्स शामिल हैं।",
        "mycustomcssprotected": "आपके पास इस CSS पृष्ठ को सम्पादित करने का अधिकार नहीं है।",
+       "mycustomjsonprotected": "आपके पास इस JSON पृष्ठ को सम्पादित करने का अधिकार नहीं है।",
        "mycustomjsprotected": "आपके पास इस जावास्क्रिप्ट पृष्ठ को सम्पादित करने का अधिकार नहीं है।",
        "myprivateinfoprotected": "आपके पास अपनी व्यक्तिगत जानकारी बदलने की अनुमति नहीं है।",
        "mypreferencesprotected": "आपके पास अपनी वरीयताएँ बदलने की अनुमति नहीं है।",
        "wrongpasswordempty": "कूटशब्द खाली है।\nपुनः यत्न करें।",
        "passwordtooshort": "आपका कूटशब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षरों}} का होना चाहिये।",
        "passwordtoolong": "पासवर्ड {{PLURAL:$1|1 वर्ण|$1 वर्णों}} से ज़्यादा लम्बे नही हो सकते।",
-       "passwordtoopopular": "à¤\86म à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤\86प à¤¨à¤¹à¥\80à¤\82 à¤\9aà¥\81न à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82। à¤\95à¥\83पया à¤\85नà¥\8bà¤\96ा पासवर्ड चुनें।",
+       "passwordtoopopular": "à¤\86प à¤\86म à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤¨à¤¹à¥\80à¤\82 à¤\9aà¥\81न à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82। à¤\95à¥\83पया à¤\95ठिन पासवर्ड चुनें।",
        "password-name-match": "आपका कूटशब्द आपके सदस्यनाम से भिन्न होना चाहिए।",
        "password-login-forbidden": "इस सदस्यनाम और कूटशब्द का उपयोग वर्जित है।",
        "mailmypassword": "कूटशब्द पुनःस्थापित करें",
        "savechanges": "बदलाव सहेजें",
        "publishpage": "पृष्ठ प्रकाशित करें",
        "publishchanges": "परिवर्तन प्रकाशित करें",
+       "savearticle-start": "पृष्ठ सहेजें...",
+       "savechanges-start": "बदलाव सहेजें...",
+       "publishpage-start": "पृष्ठ प्रकाशित करें...",
+       "publishchanges-start": "परिवर्तन प्रकाशित करें...",
        "preview": "झलक",
        "showpreview": "झलक दिखाएँ",
        "showdiff": "बदलाव दिखाएँ",
        "blocked-notice-logextract": "यह सदस्य फ़िलहाल अवरोधित है।\nसदंर्भ के लिए ताज़ातरीन अवरोध लॉग प्रविष्टि नीचे दी है:",
        "clearyourcache": "'''ध्यान दें:'''  संजोने के बाद बदलाव देखने के लिए आपको अपने ब्राउज़र की कैश खाली करनी पड़ सकती है।\n* '''फ़ायरफ़ॉक्स / सफ़ारी:''' ''Reload'' (रीलोड) दबाते समय ''Shift'' (शिफ़्ट) दबा के रखें, या फिर ''Ctrl-F5'' (कंट्रोल-F5) या ''Ctrl-R'' (कंट्रोल-R) दबाएँ (मैक पर ''⌘-R'')\n* '''गूगल क्रोम:''' ''Ctrl-Shift-R'' (कंट्रोल-शिफ़्ट-R) दबाएँ (मैक पर ''⌘-Shift-R'')\n* '''इन्टर्नेट एक्सप्लोरर:''' ''Ctrl'' (कंट्रोल) दबाकर ''Refresh'' (रिफ़्रेश) करें या ''Ctrl-F5'' (कंट्रोल-F5) दबाएँ\n* '''ऑपेरा:''' ''Tools → Preferences'' (उपकरण → वरीयताएँ) में कैश साफ़ करें",
        "usercssyoucanpreview": "'''टिप''': संजोने से पहले अपनी नई सी॰एस॰एस को जाँचने के लिये \"{{int:showpreview}}\" बटन का प्रयोग करें।",
+       "userjsonyoucanpreview": "<strong>टिप:</strong> संजोने से पहले अपनी नई JSON को जाँचने के लिये \"{{int:showpreview}}\" बटन का प्रयोग करें।",
        "userjsyoucanpreview": "'''टिप''': संजोने से पहले अपनी नई जावास्क्रिप्ट को जाँचने के लिये \"{{int:showpreview}}\" बटन का प्रयोग करें।",
        "usercsspreview": "'''ध्यान दें कि आप अपनी सी॰एस॰एस की झलक देख रहे हैं।'''\n'''यह अभी तक संजोई नहीं गई है!'''",
        "userjspreview": "'''ध्यान दें कि आप अपनी जावास्क्रिप्ट की झलक देख रहे हैं।'''\n'''यह अभी तक संजोई नहीं गई है!'''",
        "postedit-confirmation-created": "पृष्ठ निर्मित किया गया है।",
        "postedit-confirmation-restored": "पृष्ठ पुरानी स्थिति पर लाया गया है।",
        "postedit-confirmation-saved": "आपका सम्पादन सहेजा गया है।",
+       "postedit-confirmation-published": "आपका संशोधन प्रकाशित कर दिया गया था।",
        "edit-already-exists": "नया पृष्ठ बनाया नहीं जा सका।\nयह पहले से मौजूद है।",
        "defaultmessagetext": "संदेश का डिफ़ॉल्ट पाठ",
        "content-failed-to-parse": "$1 के लिए $2 सामग्री को पार्स करने में विफल, त्रुटि: $3",
        "expansion-depth-exceeded-warning": "पृष्ठ में विस्तार गहराई पार की गई है",
        "parser-unstrip-loop-warning": "Unstrip लूप पाया गया",
        "unstrip-depth-warning": "Unstrip पुनरावर्तन सीमा पार की गई ($1)",
+       "unstrip-depth-category": "पृष्ठ जिन पर गहराई की सीमा को पार किया गया है",
+       "unstrip-size-warning": "बिना सीमा के आकार की सीमा पार हो गई ($1)",
        "converter-manual-rule-error": "मैन्यूअल भाषा परिवर्तन नियम में त्रुटि",
        "undo-success": "यह संपादन पूर्ववत किया जा सकता है।\nऐसा करने के लिये कृपया निम्नलिखित पाठ को ध्यान से देखकर बदलाव संजोयें।",
        "undo-failure": "इस बीच अन्य बदलाव होने के कारण यह संपादन पूर्ववत करना संभव नहीं है।",
index a4e22ce..a50d51e 100644 (file)
        "cascadeprotected": "Ez a lap szerkesztés elleni védelemmel lett ellátva, mert be van illesztve a következő {{PLURAL:$1|lapon|lapokon}}, ahol be van kapcsolva a „kaszkádolt” védelem:\n$2",
        "namespaceprotected": "Nincs jogosultságod a(z) '''$1''' névtérben található lapok szerkesztésére.",
        "customcssprotected": "Nem szerkesztheted ezt a CSS-lapot, mert egy másik felhasználó személyes beállításait tartalmazza.",
+       "customjsonprotected": "Nem szerkesztheted ezt a JSON-lapot, mert egy másik felhasználó személyes beállításait tartalmazza.",
        "customjsprotected": "Nem szerkesztheted ezt a JavaScript-lapot, mert egy másik felhasználó személyes beállításait tartalmazza.",
        "mycustomcssprotected": "Nincs jogod szerkeszteni ezt a CSS-lapot.",
+       "mycustomjsonprotected": "Nincs jogod szerkeszteni ezt a JSON-lapot.",
        "mycustomjsprotected": "Nincs jogod szerkeszteni ezt a JavaScript-lapot.",
        "myprivateinfoprotected": "Nincs jogod módosítani a privát adataidat.",
        "mypreferencesprotected": "Nincs jogod módosítani a beállításaidat.",
        "wrongpasswordempty": "Nem adtál meg jelszót. Próbáld meg újra.",
        "passwordtooshort": "A jelszónak legalább $1 karakterből kell állnia.",
        "passwordtoolong": "A jelszó nem lehet hosszabb $1 karakternél.",
-       "passwordtoopopular": "A gyakori jelszavak nem használhatók. Válassz egy egyedibb jelszót.",
+       "passwordtoopopular": "A gyakran használt jelszavak nem használhatók. Válassz olyan jelszót, amit nehezebb kitalálni.",
        "password-name-match": "A jelszavadnak különböznie kell a szerkesztőnevedtől.",
        "password-login-forbidden": "Ezen felhasználónév és jelszó használata tiltott.",
        "mailmypassword": "Jelszó alaphelyzetbe állítása",
        "savechanges": "Módosítások mentése",
        "publishpage": "Lap közzététele",
        "publishchanges": "Változtatások közzététele",
+       "savearticle-start": "Lap mentése...",
+       "savechanges-start": "Változtatások mentése...",
+       "publishpage-start": "Lap közzététele...",
+       "publishchanges-start": "Változtatások közzététele...",
        "preview": "Előnézet",
        "showpreview": "Előnézet megtekintése",
        "showdiff": "Változtatások megtekintése",
        "blocked-notice-logextract": "A felhasználó jelenleg blokkolva van.\nA blokkolási napló legutóbbi ide vonatkozó bejegyzése a következő:",
        "clearyourcache": "<strong>Megjegyzés:</strong> mentés után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.\n* <strong>Firefox / Safari:</strong> tartsd lenyomva a <em>Shift</em> gombot és kattints a <em>Frissítés</em> gombra a címsorban, vagy használd a <em>Ctrl–F5</em> vagy <em>Ctrl–R</em> (Macen <em>⌘–R</em>) billentyűkombinációt\n* <strong>Google Chrome:</strong> használd a <em>Ctrl–Shift–R</em> (Macen <em>⌘–Shift–R</em>) billentyűkombinációt\n* <strong>Internet Explorer:</strong> tartsd nyomva a <em>Ctrl</em>-t, és kattints a <em>Frissítés</em> gombra, vagy nyomj <em>Ctrl–F5</em>-öt\n* <strong>Opera:</strong> Nyisd meg a Beállításokat a <em>Menü</em>ből (Macen <em>Opera</em> menüből), majd válaszd az <em>Adatvédelem és biztonság → Böngészési adatok törlése → Gyorsítótáras képek és fájlok</em> opciót.",
        "usercssyoucanpreview": "'''Tipp:''' mentés előtt használd az „{{int:showpreview}}” gombot az új CSS-ed teszteléséhez.",
+       "userjsonyoucanpreview": "<strong>Tipp:</strong> mentés előtt használd az „{{int:showpreview}}” gombot az új JSON-od teszteléséhez.",
        "userjsyoucanpreview": "'''Tipp:''' mentés előtt használd az „{{int:showpreview}}” gombot az új JavaScipted teszteléséhez.",
        "usercsspreview": "'''Ne felejtsd el, hogy ez csak a felhasználói CSS-ed előnézete és még nincs elmentve!'''",
        "userjspreview": "'''Ne felejtsd el, hogy még csak teszteled a felhasználói JavaScriptedet, és még nincs elmentve!'''",
        "prefs-files": "Fájlok",
        "prefs-custom-css": "saját CSS",
        "prefs-custom-js": "saját JS",
-       "prefs-common-config": "Közös CSS/JS az összes felület számára:",
+       "prefs-common-config": "Közös CSS/JSON/JS az összes felület számára:",
        "prefs-reset-intro": "Ezen a lapon állíthatod vissza a beállításaidat az oldal alapértelmezett értékeire.\nA műveletet nem lehet visszavonni.",
        "prefs-emailconfirm-label": "E-mail-cím megerősítése:",
        "youremail": "Az e-mail címed:",
        "right-editcontentmodel": "A lap tartalom modelljének szerkesztése",
        "right-editinterface": "felhasználói felület szerkesztése",
        "right-editusercss": "más felhasználók CSS fájljainak szerkesztése",
+       "right-edituserjson": "Más felhasználók JSON fájljainak szerkesztése",
        "right-edituserjs": "más felhasználók JS fájljainak szerkesztése",
        "right-editmyusercss": "Saját szerkesztői CSS-fájlok szerkesztése",
+       "right-editmyuserjson": "Saját szerkesztői JSON-fájlok szerkesztése",
        "right-editmyuserjs": "saját szerkesztői JavaScript-fájlok szerkesztése",
        "right-viewmywatchlist": "saját figyelőlista megtekintése",
        "right-editmywatchlist": "saját figyelőlista szerkesztése; bizonyos műveletek képesek lapok figyelőlistához adására ezen jog nélkül is",
        "grant-createaccount": "fiókok létrehozása",
        "grant-createeditmovepage": "lapok létrehozása, szerkesztése és átnevezése",
        "grant-delete": "lapok, lapváltozatok és naplóbejegyzések törlése",
-       "grant-editinterface": "MediaWiki-névtér és felhasználói CSS/JavaScript szerkesztése",
-       "grant-editmycssjs": "Felhasználói CSS-ed/JavaScripted szerkesztése",
+       "grant-editinterface": "MediaWiki-névtér és felhasználói CSS/JSON/JavaScript szerkesztése",
+       "grant-editmycssjs": "Felhasználói CSS-ed/JSON-od/JavaScripted szerkesztése",
        "grant-editmyoptions": "felhasználói beállításaid módosítása",
        "grant-editmywatchlist": "figyelőlista szerkesztése",
        "grant-editpage": "létező lapok szerkesztése",
        "enotif_lastvisited": "Az utolsó látogatásod óta történt változtatásokért lásd: $1",
        "enotif_lastdiff": "Ezen változtatás megtekintéséhez lásd: $1",
        "enotif_anon_editor": "$1 névtelen felhasználó",
-       "enotif_body": "Kedves $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nA szerkesztési összefoglaló a következő volt: $PAGESUMMARY $PAGEMINOREDIT\n\nA szerkesztő elérhetősége:\ne-mail küldése: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAmíg nem keresed fel az oldalt bejelentkezve, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.\n\nBaráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere\n\n--\nAz e-mail értesítéseid módosításához keresd fel a \n{{canonicalurl:{{#special:Preferences}}}} címet\n\nA figyelőlistád módosításához keresd fel a\n{{canonicalurl:{{#special:EditWatchlist}}}} címet\n\nA lap figyelőlistádról való törléséhez keresd fel a\n$UNWATCHURL címet\n\nVisszajelzés és további segítség:\n$HELPPAGE",
+       "enotif_body": "Kedves $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nA szerkesztési összefoglaló a következő volt: $PAGESUMMARY $PAGEMINOREDIT\n\nA szerkesztő elérhetősége:\ne-mail küldése: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAmíg nem keresed fel az oldalt bejelentkezve, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.\n\nBaráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere\n\n--\nAz e-mail-értesítéseid módosításához keresd fel a \n{{canonicalurl:{{#special:Preferences}}}} címet\n\nA figyelőlistád módosításához keresd fel a\n{{canonicalurl:{{#special:EditWatchlist}}}} címet\n\nA lap figyelőlistádról való törléséhez keresd fel a\n$UNWATCHURL címet\n\nVisszajelzés és további segítség:\n$HELPPAGE",
        "enotif_minoredit": "Ez egy apró szerkesztés",
        "created": "létrehozta",
        "changed": "megváltoztatta",
index 6a20a28..53be78f 100644 (file)
        "permissionserrorstext": "Ձեզ չի թույլատրվում դա անել հետևյալ {{PLURAL:$1|պատճառով|պատճառներով}}.",
        "permissionserrorstext-withaction": "Ձեզ չի թույլատրվում $2 հետևյալ {{PLURAL:$1|պատճառով|պատճառներով}}.",
        "recreate-moveddeleted-warn": "'''Զգուշացում. դուք փորձում եք վերստեղծել մի էջ, որը ջնջվել է նախկինում։'''\n\nԽնդրում ենք վերանայել ձեր խմբագրման նպատակահարմարությունը։ Հարմարության համար ստորև բերված են այս էջի ջնջման և տեղափոխման տեղեկամատյանները։",
-       "moveddeleted-notice": "Այս էջը հեռացված է։\nԷջի մասին գրառումները տեղափոխման և ջնջման տեղեկամատյանից բերված են ստորև տեղեկության համար։",
+       "moveddeleted-notice": "Այս էջը հեռացված է։\nԷջի մասին գրառումները տեղափոխման, պաշտպանման և ջնջման տեղեկամատյանից բերված են ստորև տեղեկության համար։",
        "log-fulllog": "Դիտել ամբողջական տեղեկամատյանը",
        "edit-conflict": "Խմբագրման ընհարում։",
        "edit-no-change": "Ձեր խմբագրումը անտեսվել է, քանի որ ոչ մի փոփոխություն չի կատարվել տեքստի մեջ։",
        "pagelang-nonexistent-page": "$1 էջը գոյություն չունի",
        "special-characters-group-latin": "Լատիներեն",
        "special-characters-group-latinextended": "Լատիներեն ընդլայնված",
-       "special-characters-group-ipa": "IPA",
+       "special-characters-group-ipa": "ՄՀԱ (IPA)",
        "special-characters-group-symbols": "Սիմվոլներ",
        "special-characters-group-greek": "Հունարեն",
+       "special-characters-group-greekextended": "Հունարեն ընդլայնված",
        "special-characters-group-cyrillic": "Կիրիլիցա",
        "special-characters-group-arabic": "Արաբերեն",
        "special-characters-group-arabicextended": "Արաբերեն ընդլայնված",
        "special-characters-group-thai": "Թայերեն",
        "special-characters-group-lao": "Լաոերեն",
        "special-characters-group-khmer": "Կխմեր",
+       "special-characters-group-canadianaboriginal": "Կանադական վանկագիր",
        "special-characters-title-endash": "ո գծիկ (en dash)",
        "special-characters-title-emdash": "ա գծիկ (em dash)",
        "special-characters-title-minus": "հանածի նշան",
index dba9532..6b0bce9 100644 (file)
        "welcomeuser": "Esez bonvenanta, $1!",
        "welcomecreation-msg": "Vua konto kreesis.\n\nVu povas modifikar vua [[Special:Preferences|preferaji en la {{SITENAME}}]] se vu deziras.",
        "yourname": "Vua uzantonomo:",
-       "userlogin-yourname": "Uzantonomo",
+       "userlogin-yourname": "Nomo dil uzero",
        "userlogin-yourname-ph": "Enirez vua uzantonomo",
        "createacct-another-username-ph": "Enirez la uzantonomo",
        "yourpassword": "Pasovorto:",
        "noemail": "Ne esas e-adreso konservita por la uzero \"$1\".",
        "noemailcreate": "Tu mustas informar valida e-posto",
        "passwordsent": "Nova pasovorto sendesis a la e-adreso registragita por \"$1\".\nVoluntez enirar altrafoye pos recevar ol.",
-       "blocked-mailpassword": "Vua adreso di IP blokuzesis por redaktado. Por preventar misuzo, ne permisesas rekuperar pasovorti de ca adreso di IP.",
+       "blocked-mailpassword": "Vua IP-adreso blokusesis por redaktado. Por preventar misuzo, ne permisesas rekuperar pasovorti de ca IP-adreso.",
        "eauthentsent": "E-posto por konfirmar l'informi sendesis a la e-posto indikita da vu.\nAnte ke altra e-posto sendesos a vua konto, vu mustos sequar l'instrukti mencionata en la e-posto, por konfirmar ke la konto fakte esas vua.",
        "throttled-mailpassword": "A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.\nTo prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.",
        "mailerror": "Eroro sendante posto: $1",
        "usereditcount": "$1 {{PLURAL:$1|redakto|redakti}}",
        "usercreated": "{{GENDER:$3|Kreita}} ye $1 $2",
        "newpages": "Nova pagini",
-       "newpages-username": "Uzantonomo:",
+       "newpages-username": "Nomo dil uzero:",
        "ancientpages": "Maxim anciena artikli",
        "move": "Movar",
        "movethispage": "Rinomizar ica pagino",
        "alllogstext": "Kombinata montro di omna 'log'-i di {{SITENAME}} disponebla.\nVu povas stretigar la vidado per la selekto di la tipo di protoloko (log type), l'uzantonomo (case-sensitive), o la pagino afektita (also case-sensitive).",
        "logempty": "Nula kombinuri trovesis en la protokolo.",
        "showhideselectedlogentries": "Modifikar la videbleso di la selektita eniri di 'log'",
+       "checkbox-select": "Selektez: $1",
+       "checkbox-all": "Omna",
+       "checkbox-none": "Nula",
+       "checkbox-invert": "Inversigar",
        "allpages": "Omna pagini",
        "nextpage": "Sequanta pagino ($1)",
        "prevpage": "Antea pagino ($1)",
        "listusersfrom": "Montrez uzeri komencante de:",
        "listusers-submit": "Montrez",
        "activeusers": "Listo pri aktiva uzeri",
+       "activeusers-intro": "Yen listo pri uzeri qui laboris en la Wiki dum la lasta $1 {{PLURAL:$1|dio|dii}}.",
        "activeusers-from": "Montrez uzeri komencante de:",
        "activeusers-noresult": "Nula uzero trovesis.",
        "listgrouprights-group": "Grupo",
        "delete-confirm": "Efacar \"$1\"",
        "delete-legend": "Efacar",
        "historywarning": "<strong>Averto:</strong> La pagino quan vu efaceskas havas historio kun $1 {{PLURAL:$1|revizo|revizi}}:",
+       "historyaction-submit": "Montrez",
        "confirmdeletetext": "Vu selektis efacar ica pagino komplete, inkluzite omna modifiki en ol e la kronologio di la modifiki.\n\nVoluntez konfirmar ke vu fakte deziras facar to, ke vu komprenas omna konsequi dil efaco, e ke vu efacos ol segun [[{{MediaWiki:Policy-url}}|la normi pri l'efaco di artikli]].",
        "actioncomplete": "Ago kompletigita",
        "deletedtext": "\"$1\" efacesis.\nVidez $2 por obtenar registro di recenta efaci.",
        "rollback": "Retrorulez redakti",
        "rollbacklink": "retrorulez",
        "rollbacklinkcount": "nuligar $1 {{PLURAL:$1|modifiko|modifiki}}",
+       "rollbacklinkcount-morethan": "nuligar nemediate plua kam $1 {{PLURAL:$1|redakto|redakti}}",
        "rollbackfailed": "Retrorular ne sucesis",
        "cantrollback": "Ne esas posibla retrorular. La lasta kontributanto esas la nura autoro di ica pagino.",
        "alreadyrolled": "Vu ne povas retrorular la lasta chanjo di [[:$1]] da [[User:$2|$2]] ([[User talk:$2|Diskutez]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nulu pluse ja redaktis o retrorulis ica pagino.\n\nLa lasta chanjo a la pagino esis da [[User:$3|$3]] ([[User talk:$3|Diskutez]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "uctop": "(aktuala)",
        "month": "De monato (e plu frue):",
        "year": "De yaro (e plu frue):",
-       "sp-contributions-newbies": "Montrez nur kontributadi di nova konti",
+       "sp-contributions-newbies": "Montrez nur kontributadi di la nova uzeri",
        "sp-contributions-newbies-sub": "Di nova konti",
        "sp-contributions-blocklog": "blokusar-registraro",
        "sp-contributions-deleted": "efacita {{GENDER:$1|uzero}}-kontributadi",
        "whatlinkshere-filters": "Filtrili",
        "block": "Blokusar uzero",
        "blockip": "Blokusado di IP-adresi",
+       "blockiptext": "Uzez la formulario adinfre por blokusar aceso de specifika adreso IP o de specifika uzeronomo.\nTo mustos facesor NUR POR PREVENTAR VANDALISMO, segun la [[{{MediaWiki:Policy-url}}|politiko de ica Wiki]].\nInformez adinfre la specifika motivi (example, mencionez specifika pagini qui subisis vandalismo dal IP/uzero).\nVu povas blokuzar serio di adresi IP per l'uzo dil sintaxo [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; la maxim longa serio permisata esas /$1 por IPv4 e /$2 por IPv6.",
        "ipaddressorusername": "IP-adreso od uzantonomo:",
        "ipbexpiry": "Expiro:",
        "ipbreason": "Motivo:",
        "ipbother": "Altra tempo:",
        "ipboptions": "2 horo:2 hours,1 dio:1 day,3 dii:3 days,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite",
        "ipbwatchuser": "Vigilar la pagino di prizentado e la pagino di diskuto de ica uzero",
-       "ipb-disableusertalk": "Impedar l'uzero redaktar en lua propra diskutopagino dum la blokuzo",
+       "ipb-disableusertalk": "Impedar l'uzero redaktar en lua propra diskutopagino dum la blokuso",
        "badipaddress": "IP-adreso ne esas valida",
        "blockipsuccesssub": "Blokusado sucesis",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] blokusesis.<br />\nVidez [[Special:BlockList|IP-blokuslisto]] por revizor blokusadi.",
        "ipusubmit": "Desblokusar",
        "ipblocklist": "Blokusita uzanti",
        "ipblocklist-submit": "Serchar",
+       "ipblocklist-otherblocks": "Altra {{PLURAL:$1|blokuso|blokusi}}",
        "infiniteblock": "nefinita",
        "blocklink": "blokusar",
        "unblocklink": "desblokusar",
        "block-log-flags-nocreate": "ne povas krear konto",
        "block-log-flags-noemail": "e-posto blokuzita",
        "ipb_expiry_invalid": "Nevalida expiro-tempo.",
+       "ipb-otherblocks-header": "Altra {{PLURAL:$1|blokuso|blokusi}}",
        "ip_range_invalid": "Nevalida IP-rango.",
        "proxyblocker": "Blokuso di 'Proxy'",
        "lockdb": "Blokusar datumaro",
        "pageinfo-toolboxlink": "Informo di ca pagino",
        "pageinfo-contentpage": "Konsiderita kontenajo-pagino",
        "pageinfo-contentpage-yes": "Yes",
+       "markaspatrolledtext": "Patroliar ica pagino",
        "patrol-log-page": "Protokolo pri patroliado",
        "previousdiff": "← Plu anciena versiono",
        "nextdiff": "Plu recenta versiono →",
        "newimages-legend": "Filtrilo",
        "ilsubmit": "Serchar",
        "bydate": "per dato",
+       "days": "{{PLURAL:$1|$1 dio|$1 dii}}",
+       "weeks": "{{PLURAL:$1|$1 semano|$1 semani}}",
        "months": "{{PLURAL:$1|$1 monato|$1 monati}}",
        "years": "{{PLURAL:$1|$1 yaro|$1 yari}}",
        "metadata": "Metadonaji",
        "table_pager_prev": "Antea pagino",
        "table_pager_first": "Unesma pagino",
        "table_pager_last": "Lasta pagino",
+       "table_pager_limit": "Montrez $1 artiklo per pagino",
        "table_pager_limit_submit": "Irar",
        "table_pager_empty": "Nula rezultajo",
        "autosumm-blank": "Pagino vakuigesis",
        "logentry-delete-restore": "$1 {{GENDER:$2|restauris}} la pagino $3 ($4)",
        "logentry-delete-revision": "$1 {{GENDER:$2|modifikis}} videbleso di {{PLURAL:$5|la revizo|$5 revizi}} di la pagino $3: $4",
        "revdelete-content-hid": "celita kontenajo",
-       "logentry-block-block": "$1 {{GENDER:$2|blokuzis}} {{GENDER:$4|$3}} dum $5 $6",
+       "logentry-block-block": "$1 {{GENDER:$2|blokusis}} {{GENDER:$4|$3}} dum $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|movis}} la pagino $3 a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|movis}} la pagino $3 a $4 sen lasar ridirektilo",
        "logentry-move-move_redir": "$1 {{GENDER:$2|movis}} la pagino $3 a $4 sen lasar ridirekto",
        "expand_templates_output": "Rezulto",
        "expand_templates_ok": "O.K.",
        "expand_templates_preview": "Previdar",
+       "pagelang-language": "Linguo",
        "special-characters-group-latin": "Latina",
        "special-characters-group-latinextended": "Latina extensita",
        "special-characters-group-symbols": "Simboli",
index 59aa484..fa6beaf 100644 (file)
        "cascadeprotected": "Su questa pagina non è possibile effettuare modifiche perché è inclusa {{PLURAL:$1|nella pagina indicata di seguito, che è stata protetta|nelle pagine indicate di seguito, che sono state protette}} selezionando la protezione \"ricorsiva\":\n$2",
        "namespaceprotected": "Non si dispone dei permessi necessari per modificare le pagine del namespace '''$1'''.",
        "customcssprotected": "Non si dispone dei permessi necessari alla modifica di questa pagina CSS, in quanto contiene le impostazioni personali di un altro utente.",
+       "customjsonprotected": "Non si dispone dei permessi necessari alla modifica di questa pagina JSON, in quanto contiene le impostazioni personali di un altro utente.",
        "customjsprotected": "Non si dispone dei permessi necessari alla modifica di questa pagina JavaScript, in quanto contiene le impostazioni personali di un altro utente.",
        "mycustomcssprotected": "Non si dispone dei permessi necessari per modificare questa pagina CSS.",
+       "mycustomjsonprotected": "Non si dispone dei permessi necessari per modificare questa pagina JSON.",
        "mycustomjsprotected": "Non si dispone dei permessi necessari per modificare questa pagina JavaScript.",
        "myprivateinfoprotected": "Non si dispone dei permessi necessari per modificare i propri dati personali.",
        "mypreferencesprotected": "Non si dispone dei permessi necessari per modificare le proprie preferenze.",
        "savechanges": "Salva le modifiche",
        "publishpage": "Pubblica la pagina",
        "publishchanges": "Pubblica le modifiche",
+       "savearticle-start": "Salva pagina…",
+       "savechanges-start": "Salva modifiche…",
+       "publishpage-start": "Pubblica pagina…",
+       "publishchanges-start": "Pubblica modifiche…",
        "preview": "Anteprima",
        "showpreview": "Visualizza anteprima",
        "showdiff": "Mostra modifiche",
        "usercssyoucanpreview": "'''Suggerimento:''' usa il pulsante 'Visualizza anteprima' per provare il tuo nuovo CSS prima di salvarlo.",
        "userjsyoucanpreview": "'''Suggerimento:''' usa il pulsante 'Visualizza anteprima' per provare il tuo nuovo JavaScript prima di salvarlo.",
        "usercsspreview": "'''Questa è solo un'anteprima del proprio CSS personale. Le modifiche non sono ancora state salvate!'''",
+       "userjsonpreview": "<strong>Questa è solo un'anteprima per provare il proprio JSON personale; le modifiche non sono ancora state salvate!</strong>",
        "userjspreview": "'''Questa è solo un'anteprima per provare il proprio JavaScript personale; le modifiche non sono ancora state salvate!'''",
        "sitecsspreview": "Questa è solo un'anteprima del CSS. Le modifiche non sono ancora state salvate!'''",
+       "sitejsonpreview": "<strong>Questa è solo un'anteprima del JSON. Le modifiche non sono ancora state salvate!</strong>",
        "sitejspreview": "Questa è solo un'anteprima per provare il JavaScript; le modifiche non sono ancora state salvate!'''",
-       "userinvalidconfigtitle": "<strong>Attenzione:</strong> non esiste alcun tema con nome \"$1\". Si noti che le pagine per i .css e .js personalizzati hanno l'iniziale del titolo minuscola, ad esempio {{ns:user}}:Esempio/vector.css e non {{ns:user}}:Esempio/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Attenzione:</strong> non esiste alcun tema con nome \"$1\". Si noti che le pagine per i .css, .json e .js personalizzati hanno l'iniziale del titolo minuscola, ad esempio {{ns:user}}:Esempio/vector.css e non {{ns:user}}:Esempio/Vector.css.",
        "updated": "(Aggiornato)",
        "note": "'''Nota:'''",
        "previewnote": "'''Ricorda che questa è solo un'anteprima.'''\nLe tue modifiche NON sono ancora state salvate!",
        "prefs-files": "File",
        "prefs-custom-css": "CSS personalizzato",
        "prefs-custom-js": "JavaScript personalizzato",
-       "prefs-common-config": "CSS/JavaScript condiviso per tutti i temi:",
+       "prefs-common-config": "CSS/JSON/JavaScript condiviso per tutti i temi:",
        "prefs-reset-intro": "È possibile usare questa pagina per reimpostare le proprie preferenze a quelle predefinite del sito.\nL'operazione non può essere annullata.",
        "prefs-emailconfirm-label": "Conferma dell'email:",
        "youremail": "Indirizzo email:",
        "right-editusercss": "Modifica i file CSS di altri utenti",
        "right-edituserjs": "Modifica i file JS di altri utenti",
        "right-editmyusercss": "Modifica il file CSS del proprio utente",
+       "right-editmyuserjson": "Modifica il file JSON del proprio utente",
        "right-editmyuserjs": "Modifica il file JavaScript del proprio utente",
        "right-viewmywatchlist": "Visualizza i propri osservati speciali",
        "right-editmywatchlist": "Modifica i propri osservati speciali. Da notare che alcune azioni potranno ancora aggiungere pagine anche senza questo diritto.",
        "grant-createaccount": "Crea un'utenza",
        "grant-createeditmovepage": "Crea, modifica e sposta le pagine",
        "grant-delete": "Cancella pagine, versioni, e voci di registro",
-       "grant-editinterface": "Modifica il namespace MediaWiki e i CSS/JavaScript degli utenti",
-       "grant-editmycssjs": "Modifica i CSS/JavaScript della tua utenza",
+       "grant-editinterface": "Modifica il namespace MediaWiki e i CSS/JSON/JavaScript degli utenti",
+       "grant-editmycssjs": "Modifica i CSS/JSON/JavaScript della tua utenza",
        "grant-editmyoptions": "Modifica le preferenze della tua utenza",
        "grant-editmywatchlist": "Modifica i tuoi osservati speciali",
        "grant-editpage": "Modifica pagine esistenti",
        "group-bot.css": "/ * Gli stili CSS inseriti qui si applicheranno solo ai bot * /",
        "group-sysop.css": "/ * Gli stili CSS inseriti qui si applicheranno solo agli amministratori/sysop * /",
        "group-bureaucrat.css": "/ * Gli stili CSS inseriti qui si applicheranno solo ai burocrati * /",
+       "common.json": "/* Il codice JSON inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */",
        "common.js": "/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */",
        "group-autoconfirmed.js": "/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti autoconvalidati * /",
        "group-user.js": "/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti registrati * /",
index e1810e6..774ddcc 100644 (file)
        "cascadeprotected": "このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}でトランスクルードのため読み込まれているので、編集できないように保護されています:\n$2",
        "namespaceprotected": "<strong>$1</strong>名前空間にあるページを編集する権限がありません。",
        "customcssprotected": "この CSS ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。",
+       "customjsonprotected": "この JSON ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。",
        "customjsprotected": "この JavaScript ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。",
        "mycustomcssprotected": "あなたにはこの CSS ページを編集する権限がありません。",
+       "mycustomjsonprotected": "あなたにはこの JSON ページを編集する権限がありません。",
        "mycustomjsprotected": "あなたにはこの JavaScript ページを編集する権限がありません。",
        "myprivateinfoprotected": "あなたには自身の非公開情報を編集する権限がありません。",
        "mypreferencesprotected": "あなたには自身の個人設定を編集する権限がありません。",
        "wrongpasswordempty": "パスワードを空欄にはできません。\nもう一度やり直してください。",
        "passwordtooshort": "パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。",
        "passwordtoolong": "パスワードは {{PLURAL:$1|$1 文字}}以下にしてください。",
-       "passwordtoopopular": "選択したパスワードはありきたりであるため使用することはできません。誰も思いつかないようなパスワードを選択してください。",
+       "passwordtoopopular": "選択したパスワードはありきたりであるため使用することはできません。簡単に思いつかないようなパスワードを選択してください。",
        "password-name-match": "パスワードは利用者名とは異なる必要があります。",
        "password-login-forbidden": "この利用者名とパスワードの使用は禁止されています。",
        "mailmypassword": "パスワードを再設定",
        "savechanges": "変更を保存",
        "publishpage": "ページを公開",
        "publishchanges": "変更を公開",
+       "savearticle-start": "ページを保存...",
+       "savechanges-start": "変更を保存...",
+       "publishpage-start": "ページを公開...",
+       "publishchanges-start": "変更を公開...",
        "preview": "プレビュー",
        "showpreview": "プレビューを表示",
        "showdiff": "差分を表示",
        "blocked-notice-logextract": "この利用者は現在ブロックされています。\n参考のために最新のブロック記録項目を以下に表示します:",
        "clearyourcache": "<strong>注意:</strong> 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。\n* <strong>Firefox / Safari:</strong> <em>Shift</em> を押しながら <em>再読み込み</em> をクリックするか、<em>Ctrl-F5</em> または <em>Ctrl-R</em> を押してください (Mac では <em>&#x2318;-R</em>)\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> を押してください (Mac では <em>&#x2318;-Shift-R</em>)\n* <strong>Internet Explorer:</strong> <em>Ctrl</em> を押しながら <em>最新の情報に更新</em> をクリックするか、<em>Ctrl-F5</em> を押してください\n* <strong>Opera:</strong> <em>メニュー → 設定</em> (Mac では <em>Opera → 環境設定</em>) に移動し、<em>プライバシーとセキュリティ → 閲覧データを消去 → キャッシュされた画像およびファイル</em> からキャッシュをクリアしてください。",
        "usercssyoucanpreview": "<strong>ヒント:</strong>「{{int:showpreview}}」ボタンを使うと、保存前に新しいCSSを試験できます。",
+       "userjsonyoucanpreview": "<strong>ヒント:</strong>「{{int:showpreview}}」ボタンを使うと、保存前に新しいJSONを試験できます。",
        "userjsyoucanpreview": "<strong>ヒント:</strong>「{{int:showpreview}}」ボタンを使うと、保存前に新しいJavaScriptを試験できます。",
        "usercsspreview": "<strong>利用者CSSをプレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
+       "userjsonpreview": "<strong>利用者JSONを試験/プレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
        "userjspreview": "<strong>利用者JavaScriptを試験/プレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
        "sitecsspreview": "<strong>ここでは、CSSをプレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
+       "sitejsonpreview": "<strong>ここでは、JSONをプレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
        "sitejspreview": "<strong>ここでは、JavaScriptをプレビューしているだけに過ぎません。</strong>\n<strong>まだ保存されていません!</strong>",
-       "userinvalidconfigtitle": "<strong>警告:</strong>「$1」という外装はありません。\nカスタム .css/.js ページではページ名を小文字にしてください。例: {{ns:user}}:Hoge/Vector.css ではなく {{ns:user}}:Hoge/vector.css",
+       "userinvalidconfigtitle": "<strong>警告:</strong>「$1」という外装はありません。\nカスタム .css/.json/.js ページではページ名を小文字にしてください。例: {{ns:user}}:Hoge/Vector.css ではなく {{ns:user}}:Hoge/vector.css",
        "updated": "(更新)",
        "note": "<strong>お知らせ:</strong>",
        "previewnote": "<strong>これはプレビューです。</strong>\n変更内容はまだ保存されていません!",
        "default": "既定",
        "prefs-files": "ファイル",
        "prefs-custom-css": "カスタムCSS",
+       "prefs-custom-json": "カスタムJSON",
        "prefs-custom-js": "カスタムJavaScript",
-       "prefs-common-config": "すべての外装に共通のCSSとJavaScript:",
+       "prefs-common-config": "すべての外装に共通のCSSとJSONとJavaScript:",
        "prefs-reset-intro": "このページを使用すると、自分の個人設定をこのサイトの初期設定に戻せます。\nこの操作は取り消せません。",
        "prefs-emailconfirm-label": "メールアドレスの確認:",
        "youremail": "メールアドレス:",
        "right-editcontentmodel": "ページのコンテンツモデルを編集",
        "right-editinterface": "ユーザーインターフェースを編集",
        "right-editusercss": "他の利用者のCSSファイルを編集",
+       "right-edituserjson": "他の利用者のJSONファイルを編集",
        "right-edituserjs": "他の利用者のJavaScriptファイルを編集",
        "right-editmyusercss": "自身のCSSファイルを編集",
+       "right-editmyuserjson": "自身のJSONファイルを編集",
        "right-editmyuserjs": "自身のJavaScriptファイルを編集",
        "right-viewmywatchlist": "ウォッチリストを閲覧",
        "right-editmywatchlist": "自身のウォッチリストを編集 (注: この権限がなくてもページを追加できる権限が他にもあります)",
        "grant-createaccount": "アカウントを作成",
        "grant-createeditmovepage": "ページを作成、編集、および移動",
        "grant-delete": "ページ、版、記録項目を削除",
-       "grant-editinterface": "MediaWiki 名前空間および利用者 CSS/JavaScript を編集",
-       "grant-editmycssjs": "あなた自身の利用者 CSS/JavaScript を編集",
+       "grant-editinterface": "MediaWiki 名前空間および利用者 CSS/JOSN/JavaScript を編集",
+       "grant-editmycssjs": "あなた自身の利用者 CSS/JSON/JavaScript を編集",
        "grant-editmyoptions": "あなたの個人設定を編集",
        "grant-editmywatchlist": "あなたのウォッチリストを編集",
        "grant-editpage": "既存のページを編集",
        "group-bot.css": "/* ここに記述したCSSはボットのみに影響します */",
        "group-sysop.css": "/* ここに記述したCSSは管理者のみに影響します */",
        "group-bureaucrat.css": "/* ここに記述したCSSはビューロクラットのみに影響します */",
+       "common.json": "/* ここにあるすべてのJSONは、すべてのページ読み込みですべての利用者に対して読み込まれます */",
        "common.js": "/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */",
        "group-autoconfirmed.js": "/* ここにあるすべてのJavaScriptは、自動承認された利用者のみに読み込まれます */",
        "group-user.js": "/* ここにあるすべてのJavaScriptは、登録利用者のみに読み込まれます */",
        "unlinkaccounts-success": "アカウントの関連付けが解除されました。",
        "authenticationdatachange-ignored": "認証データの変更は処理されませんでした。プロバイダーが設定されていない可能性があります。",
        "userjsispublic": "注意: JavaScript のサブページは第三者が閲覧可能なため、機微な情報を含めないでください。",
+       "userjsonispublic": "注意: JSON のサブページは第三者が閲覧可能なため、機微な情報を含めないでください。",
        "usercssispublic": "注意: CSS のサブページは第三者が閲覧可能なため、機微な情報を含めないでください。",
        "restrictionsfield-badip": "無効な IP アドレス、またはその範囲: $1",
        "restrictionsfield-label": "許可する IP の範囲:",
index 8824a78..47fd923 100644 (file)
@@ -72,7 +72,7 @@
                        "Nuevo Paso"
                ]
        },
-       "tog-underline": "링크에 밑줄:",
+       "tog-underline": "링크에 밑줄 긋기:",
        "tog-hideminor": "최근 바뀜에서 사소한 편집을 숨기기",
        "tog-hidepatrolled": "최근 바뀜에서 점검한 편집을 숨기기",
        "tog-newpageshidepatrolled": "새 문서 목록에서 검토한 문서를 숨기기",
@@ -97,7 +97,7 @@
        "tog-enotifminoredits": "문서나 파일의 사소한 편집도 이메일로 알림",
        "tog-enotifrevealaddr": "알림 메일에 내 이메일 주소를 밝히기",
        "tog-shownumberswatching": "주시하는 사용자 수 보이기",
-       "tog-oldsig": "당신의 기존 서명:",
+       "tog-oldsig": "기존 서명:",
        "tog-fancysig": "서명을 위키텍스트로 취급 (자동으로 링크를 걸지 않음)",
        "tog-uselivepreview": "페이지를 다시 불러오지 않고 미리 보기 표시",
        "tog-forceeditsummary": "편집 요약을 쓰지 않았을 때 내게 물어보기",
        "tog-useeditwarning": "바꾼 내용을 저장하지 않고 편집 페이지를 벗어날 때 내게 알리기",
        "tog-prefershttps": "로그인하는 동안 항상 보안 연결 사용",
        "underline-always": "항상",
-       "underline-never": "항상 지 않기",
+       "underline-never": "항상 지 않기",
        "underline-default": "스킨 또는 브라우저 기본값",
        "editfont-style": "편집 영역의 글꼴 형식:",
        "editfont-monospace": "고정폭 글꼴",
        "cascadeprotected": "이 문서는 다음 \"연쇄적\" 보호가 걸린 {{PLURAL:$1|문서|문서들}}에 포함되어 있어 함께 보호됩니다:\n$2",
        "namespaceprotected": "<strong>$1</strong> 이름공간의 문서를 편집할 권한이 없습니다.",
        "customcssprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 CSS 문서를 편집할 수 없습니다.",
+       "customjsonprotected": "다른 사용자의 개인 설정이 포함되어 있기 때문에 이 JSON 문서를 편집할 권한이 없습니다.",
        "customjsprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 자바스크립트 문서를 편집할 수 없습니다.",
        "mycustomcssprotected": "이 CSS 문서를 편집할 권한이 없습니다.",
+       "mycustomjsonprotected": "이 JSON 문서를 편집할 권한이 없습니다.",
        "mycustomjsprotected": "이 자바스크립트 문서를 편집할 권한이 없습니다.",
        "myprivateinfoprotected": "내 개인 정보를 편집할 권한이 없습니다.",
        "mypreferencesprotected": "내 환경 설정을 편집할 권한이 없습니다.",
        "savechanges": "변경사항 저장",
        "publishpage": "문서 게시",
        "publishchanges": "변경사항 게시",
+       "savearticle-start": "문서 저장...",
+       "savechanges-start": "변경사항 저장...",
+       "publishpage-start": "문서 게시...",
+       "publishchanges-start": "변경사항 게시...",
        "preview": "미리 보기",
        "showpreview": "미리 보기",
        "showdiff": "차이 보기",
        "prefs-watchlist": "주시문서 목록",
        "prefs-editwatchlist": "주시문서 목록 편집",
        "prefs-editwatchlist-label": "주시문서 목록의 항목을 편집합니다:",
-       "prefs-editwatchlist-edit": "주시문서의 제목을 보고 지우기",
+       "prefs-editwatchlist-edit": "주시문서 목록의 제목 보기 및 지우기",
        "prefs-editwatchlist-raw": "주시문서 목록 직접 편집하기",
-       "prefs-editwatchlist-clear": "주시문서 목록 우기",
+       "prefs-editwatchlist-clear": "주시문서 목록 우기",
        "prefs-watchlist-days": "주시문서 목록에서 볼 날짜 수:",
        "prefs-watchlist-days-max": "최대 $1{{PLURAL:$1|일}}",
        "prefs-watchlist-edits": "주시문서 목록에서 볼 최대 변경사항의 수:",
        "prefs-email": "이메일 옵션",
        "prefs-rendering": "보이기",
        "saveprefs": "저장",
-       "restoreprefs": "(모든 부분에서) 모두 기본 설정으로 되돌리기",
+       "restoreprefs": "모두 기본 설정으로 되돌리기(모든 부문)",
        "prefs-editing": "편집",
        "searchresultshead": "검색",
-       "stub-threshold": "링크를 토막글 형식으로 보여줄 문서 크기 ($1):",
-       "stub-threshold-sample-link": "ì\83\98í\94\8c",
+       "stub-threshold": "토막글 링크의 형식으로 보여줄 최소 수치($1):",
+       "stub-threshold-sample-link": "ì\98\88ì\8b\9c",
        "stub-threshold-disabled": "비활성화됨",
        "recentchangesdays": "최근 바뀜에 보여줄 날짜 수:",
        "recentchangesdays-max": "최대 $1{{PLURAL:$1|일}}",
        "timezoneregion-pacific": "태평양",
        "allowemail": "다른 사용자가 내게 이메일을 보낼 수 있게 허용",
        "email-allow-new-users-label": "처음 온 사용자들로부터 오는 이메일 허용",
-       "email-blacklist-label": "이 사용자들이 내게 이메일을 보내는 것을 금지합니다:",
+       "email-blacklist-label": "이 사용자가 내게 이메일을 보내지 못하게 합니다:",
        "prefs-searchoptions": "검색",
        "prefs-namespaces": "이름공간",
        "default": "기본값",
        "prefs-files": "파일",
        "prefs-custom-css": "사용자 CSS",
+       "prefs-custom-json": "사용자 지정 JSON",
        "prefs-custom-js": "사용자 자바스크립트",
-       "prefs-common-config": "모든 스킨에 공유된 CSS/자바스크립트:",
+       "prefs-common-config": "모든 스킨에 공유된 CSS/JSON/자바스크립트:",
        "prefs-reset-intro": "이 페이지를 사용해 사이트 기본값으로 환경 설정을 재설정할 수 있습니다.\n이는 되돌릴 수 없습니다.",
        "prefs-emailconfirm-label": "이메일 인증:",
        "youremail": "이메일:",
        "prefs-help-signature": "토론 문서에 글을 쓴 후에는 마지막에 서명을 해야 합니다.  “<nowiki>~~~~</nowiki>” 기호를 추가하면 서명과 글 작성 시각이 자동으로 입력됩니다.",
        "badsig": "서명이 잘못되었습니다.\nHTML 태그를 확인하세요.",
        "badsiglength": "서명이 너무 깁니다.\n서명은 $1 {{PLURAL:$1|글자}}보다 짧아야 합니다.",
-       "yourgender": "ì\96´ë\96¤ ì\84±ë³\84ë¡\9c í\91\9cì\8b\9cë\90\98ë\8a\94 ê²\83ì\9d\84 ì\84 í\98¸í\95©니까?",
-       "gender-unknown": "당신을 언급할 때, 소프트웨어는 가능한 한 성 중립적인 단어를 사용할 것입니다.",
-       "gender-male": "위키 문서를 편집하는 남자입니다",
-       "gender-female": "ì\9c\84í\82¤ ë¬¸ì\84\9c를 í\8e¸ì§\91í\95\98ë\8a\94 ì\97¬ì\9e\90ì\9e\85ë\8b\88ë\8b¤",
+       "yourgender": "ì\96´ë\8a\90 ì\84±ë³\84ë¡\9c ë¬\98ì\82¬í\95\98기를 ì\9b\90í\95\98ì\8b­니까?",
+       "gender-unknown": "언급할 때 소프트웨어는 가능한 항상 중성적인 단어를 사용합니다.",
+       "gender-male": "남성이 위키 문서를 편집합니다.",
+       "gender-female": "ì\97¬ì\84±ì\9d´ ì\9c\84í\82¤ ë¬¸ì\84\9c를 í\8e¸ì§\91í\95©ë\8b\88ë\8b¤.",
        "prefs-help-gender": "이 환경 설정은 선택 사항입니다.\n소프트웨어는 적절한 성별 문법을 사용하여 다른 사용자에게 당신을 언급하는 것을 해결하기 위해 사용됩니다.\n이 정보는 공개됩니다.",
        "email": "이메일",
        "prefs-help-realname": "실명은 선택 사항입니다.\n실명을 입력하면 당신의 기여에 대한 저작자 표시에 쓰이게 될 수 있습니다.",
        "right-editcontentmodel": "문서의 콘텐츠 모델을 편집",
        "right-editinterface": "사용자 인터페이스를 편집",
        "right-editusercss": "다른 사용자의 CSS 문서를 편집",
+       "right-edituserjson": "다른 사용자의 JSON 파일을 편집",
        "right-edituserjs": "다른 사용자의 자바스크립트 문서를 편집",
        "right-editmyusercss": "자신의 사용자 CSS 파일 편집하기",
+       "right-editmyuserjson": "자신의 사용자 JSON 파일 편집하기",
        "right-editmyuserjs": "자신의 사용자 자바스크립트 파일 편집하기",
        "right-viewmywatchlist": "자신의 주시문서 목록 보기",
        "right-editmywatchlist": "자신의 주시문서 목록을 편집합니다. 이 권한이 없어도 문서를 추가할 수 있는 권한이 이외에도 있음을 참고하세요.",
        "grant-createaccount": "계정 만들기",
        "grant-createeditmovepage": "문서 만들기, 편집 및 이동",
        "grant-delete": "문서, 판 및 기록 항목 삭제",
-       "grant-editinterface": "미디어위키 이름공간과 사용자 CSS/JS 편집",
-       "grant-editmycssjs": "자신의 사용자 CSS/자바스크립트 편집하기",
+       "grant-editinterface": "미디어위키 이름공간과 사용자 CSS/JSON/자바스크립트 편집",
+       "grant-editmycssjs": "자신의 사용자 CSS/JSON/자바스크립트 편집하기",
        "grant-editmyoptions": "사용자 환경 설정 편집하기",
        "grant-editmywatchlist": "내 주시문서 목록 편집하기",
        "grant-editpage": "기존 문서 편집하기",
        "log": "기록 목록",
        "logeventslist-submit": "보기",
        "all-logs-page": "모든 공개 기록",
-       "alllogstext": "{{SITENAME}}ì\9d\98 사용할 수 있는 모든 기록이 표시됩니다.\n기록 종류나 사용자 이름(대소문자 구별) 또는 영향을 받는 문서(대소문자 구별)를 선택하여 범위를 좁혀서 살펴볼 수 있습니다.",
+       "alllogstext": "{{SITENAME}}ì\97\90ì\84\9c 사용할 수 있는 모든 기록이 표시됩니다.\n기록 종류나 사용자 이름(대소문자 구별) 또는 영향을 받는 문서(대소문자 구별)를 선택하여 범위를 좁혀서 살펴볼 수 있습니다.",
        "logempty": "일치하는 항목이 없습니다.",
        "log-title-wildcard": "다음 글로 시작하는 제목 검색",
        "showhideselectedlogentries": "선택한 기록 항목 보이기/숨기기",
        "group-bot.css": "/* 이 CSS 설정은 봇에만 적용됩니다 */",
        "group-sysop.css": "/* 이 CSS 설정은 관리자에만 적용됩니다 */",
        "group-bureaucrat.css": "/* 이 CSS 설정은 사무관에만 적용됩니다 */",
+       "common.json": "/* 이 JSON 설정은 모든 문서, 모든 사용자에게 적용됩니다. */",
        "common.js": "/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */",
        "group-autoconfirmed.js": "/* 이 자바스크립트 설정은 자동 인증된 사용자에만 적용됩니다 */",
        "group-user.js": "/* 이 자바스크립트 설정은 등록된 사용자에만 적용됩니다 */",
index a07841e..ab446da 100644 (file)
        "anoneditwarning": "<strong>Hişyarî:</strong> Tu netêketî yî! Navnîşana IP'ya te wê di dîroka guherandina vê rûpelê de bê tomarkirin. Heke tu <strong>[$1 têkevî]</strong> an jî <strong>[$2 hesabekî çêbikî]</strong>, li gel sûdên te yên din guhertinên ku tu bikî jî wê ji nasnavê te re bê atfkirin.",
        "anonpreviewwarning": "''Tu ne têketî yî. Tomarkirin wê navnîşana IP'ya te di dîroka guhertinan de nîşan bide.''",
        "missingsummary": "<span style=\"color:#990000;\">'''Zanibe:'''</span> Te nivîsekî kurt ji bo guherandinê ra nenivîsand. Eger tu niha carekî din li Tomar xê, guherandinê te vê nivîsekî kurt yê were tomarkirin.",
-       "missingcommenttext": "Ji kerema xwe kurteya naverokê li jêr binivisîne.",
+       "missingcommenttext": "Ji kerema xwe kurteya naverokê binivîsîne.",
        "missingcommentheader": "<strong>Zanibe:</strong> Te sernav/mijarek nenivîsandîye. Heke tu niha carekî din li ser \"$1\" bitikînî, ev guherandina te bê sernav/mijar wê were tomarkirin.",
        "summary-preview": "Pêşdîtina kurtenivîsa guherandinê:",
        "subject-preview": "Pêşdîtina mijarê:",
        "history-feed-empty": "Rûpela xwestî tune ye. Belkî ew rûpel jê hatibe birîn an jî sernavê wê hatibe guherandin. [[Special:Search|Di wîkîyê de li rûpelên nêzîkî wê bigere]].",
        "rev-deleted-comment": "(kurteya guherandinê hate jêbirin)",
        "rev-deleted-user": "(navê bikarhêner hate jêbirin)",
-       "rev-deleted-event": "(pêkhatin hate jêbirin)",
-       "rev-deleted-text-permission": "Ev guhertoya vê rûpelê hatiye jêbirin. Belkî agahî di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jêbirina têketinê] de hebe.",
+       "rev-deleted-event": "(dêtayên qeydê hate jêbirin)",
+       "rev-deleted-text-permission": "Guhertoya vê rûpelê <strong>hatiye jêbirin</strong>. Dêtayên vê di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} qeyda jêbirinê] de dikarî bibînî.",
        "rev-delundel": "xuyakirinê biguherîne",
        "rev-showdeleted": "nîşan bide",
        "revisiondelete": "Guhertoyan jê bibe/nebe",
        "search-category": "(kategorî $1)",
        "search-file-match": "(bi naveroka dosye re lê te)",
        "search-suggest": "Gelo mebesta te ev bû: $1",
-       "search-interwiki-caption": "Projeyên hevçeng",
+       "search-interwiki-caption": "Netîceyên ji projeyên hevçeng",
        "search-interwiki-default": "Encamên ji $1:",
        "search-interwiki-more": "(bêhtir)",
        "search-relatedarticle": "Pêwendîdar",
        "prefs-editwatchlist-clear": "Lîsteya xwe ya şopandinê paqij bike",
        "prefs-watchlist-days": "Hejmara rojên ku di lîsteya şopandinê de bê nîşandan:",
        "prefs-watchlist-days-max": "Herî zêde $1 {{PLURAL:$1|roj|rojan}}",
-       "prefs-watchlist-edits": "Hejmara maximum guhertinê ê di lîsteya şopandinê ya berfirehkirî de bê nîşandanː",
+       "prefs-watchlist-edits": "Hejmara maximum yê guhertinan wê di lîsteya şopandinê de bê nîşandanː",
        "prefs-watchlist-edits-max": "Hejmara mezintirîn: 1000",
        "prefs-misc": "Eyarên cuda",
        "prefs-resetpass": "Şifreyê biguherîne",
-       "prefs-changeemail": "Navnîşana e-nameyê biguherîne",
+       "prefs-changeemail": "Navnîşana e-nameyê biguherîne an jî rake",
        "prefs-setemail": "Navnîşana e-nameyê binivîse",
        "prefs-email": "Vebijarkên Enameyê",
        "prefs-rendering": "Rû",
        "prefs-registration": "Dema xweqeydkirinê:",
        "yourrealname": "Navê te yê rast:",
        "yourlanguage": "Ziman:",
-       "yourvariant": "Cuda:",
+       "yourvariant": "Varyanta zimanê naverokê:",
        "yournick": "Bernavkê nû (ji bo îmzeyê):",
        "badsig": "Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.",
        "badsiglength": "Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîşanekê|nîşanan}} de be.",
        "prefs-displaywatchlist": "Vebijarkan nîşan bide",
        "prefs-diffs": "Cudahî",
        "userrights": "Îdarekirina mafên bikarhêneran",
-       "userrights-lookup-user": "Birêvebirina koman",
+       "userrights-lookup-user": "Bikarhênerek bibijêre",
        "userrights-user-editname": "Navekî bikarhêneriyê binivîse:",
-       "editusergroup": "Komên bikarhêneran biguherîne",
+       "editusergroup": "Komên bikarhêneran nîşan bide",
        "editinguser": "Mafên bikarhêner '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) tên guhertin",
-       "userrights-editusergroup": "Komên bikarhêneran biguherîne",
+       "userrights-editusergroup": "Komên {{GENDER:$1|bikarhêneran}} biguherîne",
        "saveusergroups": "Komên {{GENDER:$1|bikarhêneran}} tomar bike",
        "userrights-groupsmember": "Endamê/a:",
        "userrights-groups-help": "Tu dikarî komên bikarhêneran ên vê/vî bikarhênerê/î biguherînî:\n* Qutiyeke nîşankirî dibêje ku ev bikarhêner di wê komê de ye.\n* Qutiyeke nenîşankirî dibêje ku ev bikarhêner ne di wê komê de ye.\n* Stêrkek (*) nîşan dide ku tu nikarî wê komê jêbibî, heke te berê ew lê zêde kiribe.",
        "action-movefile": "vê daneyê bigerîne",
        "action-upload": "vê daneyê bar bike",
        "action-delete": "vê rûpelê jê bibe",
-       "action-deleterevision": "Vê revîzyonê je bibe",
+       "action-deleterevision": "revîzyonan jê bibe",
        "action-deletedhistory": "dîroka vê rûpelê jêbirî bibîne",
        "action-browsearchive": "li rûpelên jêbirî bigere",
-       "action-undelete": "vê rûpelê jê nebe",
+       "action-undelete": "rûpelan jê nebe",
        "action-userrights": "hemû mafên bikarhêneran biguherîne",
        "action-userrights-interwiki": "mafê bikarhênerên li ser wîkiyên din biguherîne",
        "action-sendemail": "enameyan bişîne",
        "notanarticle": "Ne gotar e",
        "watchlist-details": "{{PLURAL:$1|Rûpelekî|$1 rûpel}} li ser lîsteya te ya şopandinê ye (xeynî rûpelên gotûbêjê).",
        "wlheader-enotif": "Agahdariya e-nameyan hate çalakkirin",
-       "wlheader-showupdated": "Ev rûpela hatî guhertin dema te lê meyzand bi <strong>nivîsa stûr<strong> tê xuyakirin.",
-       "wlnote": "Ji $3, $4 heta niha {{PLURAL:$1|guherandinê|</strong>$1</strong> guherandinên}} dawî yê {{PLURAL:$2|saetê|</strong>$2</strong> saetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
+       "wlheader-showupdated": "Ev rûpela hatî guhertin dema te lê meyzand bi <strong>nivîsa stûr</strong> tê xuyakirin.",
+       "wlnote": "Ji $3, $4 heta niha {{PLURAL:$1|guherandinê|<strong>$1</strong> guherandinên}} dawî yê {{PLURAL:$2|saetê|<strong>$2</strong> saetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
        "wlshowlast": "Guhertinên berî $1 saetan, $2 rojan nîşan bide",
        "watchlist-hide": "Veşêre",
        "watchlist-submit": "Nîşan bide",
        "move-watch": "Vê rûpelê bişopîne",
        "movepagebtn": "Vê rûpelê bigerîne",
        "pagemovedsub": "Gerandin serkeftî",
-       "movepage-moved": "'''Navê \"$1\" weke \"$2\" hate guhertin'''",
+       "movepage-moved": "<strong>Navê \"$1\" weke \"$2\" hate guhertin</strong>",
        "movepage-moved-redirect": "Beralîkirinek hate çêkirin.",
        "movepage-moved-noredirect": "Beralîkirin nehate çêkirin.",
        "articleexists": "Rûpela bi vî navî heye, an navê ku te hilbijart derbas nabe. Navekî din hilbijêre.",
index e07ef69..9aa4a46 100644 (file)
        "errorpagetitle": "Erratum",
        "returnto": "Redire ad $1.",
        "tagline": "E {{grammar:ablative|{{SITENAME}}}}",
-       "help": "Adiutatum",
+       "help": "Auxilium",
        "search": "Quaerere",
        "searchbutton": "Quaerere",
        "go": "Ire",
        "personaltools": "Instrumenta personalia",
        "talk": "Disputatio",
        "views": "Visae",
-       "toolbox": "Arca ferramentorum",
+       "toolbox": "Instrumenta",
        "imagepage": "Videre paginam fasciculi",
        "mediawikipage": "Videre nuntium",
        "templatepage": "Videre formulam",
        "tooltip-n-currentevents": "Eventus novissimi",
        "tooltip-n-recentchanges": "Index nuper mutatorum in hac vici",
        "tooltip-n-randompage": "Ire ad paginam fortuitam",
-       "tooltip-n-help": "Adiutatum de hoc vici",
+       "tooltip-n-help": "Adiumentum ad hoc incepto utendum",
        "tooltip-t-whatlinkshere": "Index paginarum quae hic nectunt",
        "tooltip-t-recentchangeslinked": "Nuper mutata in paginis quibus haec pagina nectit",
        "tooltip-feed-rss": "Fluxus RSS huius paginae",
index 6142ec9..0226808 100644 (file)
        "mypreferencesprotected": "Dir hutt net d'Recht fir Är Astellungen z'änneren.",
        "ns-specialprotected": "Spezialsäite kënnen net verännert ginn.",
        "titleprotected": "Dësen Titel gouf vum [[User:$1|$1]] esou gespaart datt en net kann ugeluecht ginn. De Grond deen ugi gouf ass <em>$2</em>",
-       "filereadonlyerror": "De Fichier \"$1\" konnt net geännert ginn well de Repertoire vun de Fichieren \"$2\" nëmme gelies däerf ginn.\n\nDe System-Administrateur den d'Schreiwe gespaart huet, huet dës Erklärung uginn: \"$3\"",
+       "filereadonlyerror": "De Fichier \"$1\" konnt net geännert ginn well de Repertoire vun de Fichieren \"$2\" nëmme gelies däerf ginn.\n\nDe System-Administrateur deen d'Schreiwe gespaart huet, huet dës Erklärung uginn: \"$3\"",
        "invalidtitle-knownnamespace": "Net valabelen Titel mam Nummraum \"$2\" a mam Text \"$3\"",
        "invalidtitle-unknownnamespace": "Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text \"$2\"",
        "exception-nologin": "Net ageloggt",
        "virus-unknownscanner": "onbekannten Antivirus:",
        "logouttext": "'''Dir sidd elo ausgeloggt.'''\n\nOpgepasst: Op verschiddene Säite kann et nach sou aus gesinn, wéi wann Dir nach ageloggt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
        "cannotlogoutnow-title": "Ausloggen ass elo net méiglech",
-       "cannotlogoutnow-text": "Ausloggen ass net méiglech wann dir $1 benotzt.",
+       "cannotlogoutnow-text": "Ausloggen ass net méiglech wann Dir $1 benotzt.",
        "welcomeuser": "Wëllkomm $1!",
        "welcomecreation-msg": "Äre Benotzerkont gouf ugeluecht.\nVergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'änneren",
        "yourname": "Benotzernumm:",
        "cannotlogin-title": "Aloggen ass net méiglech",
        "cannotlogin-text": "Aloggen ass net méiglech.",
        "cannotloginnow-title": "Aloggen ass elo net méiglech",
-       "cannotloginnow-text": "Aloggen ass net méiglech wann dir $1 benotzt.",
+       "cannotloginnow-text": "Aloggen ass net méiglech wann Dir $1 benotzt.",
        "cannotcreateaccount-title": "Benotzerkont kënnen net opgemaach ginn",
        "cannotcreateaccount-text": "D'direkt Uleeë vu Benotzerkonten ass an dëser Wiki net aktivéiert.",
        "yourdomainname": "Ären Domän:",
        "savechanges": "Ännerunge späicheren",
        "publishpage": "Säit publizéieren",
        "publishchanges": "Ännerunge publizéieren",
+       "savearticle-start": "Säit späicheren...",
+       "savechanges-start": "Ännerunge späicheren...",
+       "publishpage-start": "Säit publizéieren...",
+       "publishchanges-start": "Ännerunge publizéieren...",
        "preview": "Kucken ouni ofzespäicheren",
        "showpreview": "Kucken ouni ofzespäicheren",
        "showdiff": "Ännerunge weisen",
        "userjspreview": "'''Denkt drun datt Dir Äre Javascript nëmmen test.'''\n'''En ass nach net gespäichert!'''",
        "sitecsspreview": "'''Denkt drun datt Dir dësen CSS just kuckt.\nE gouf nach net gespäichert!'''",
        "sitejspreview": "'''Denkt drun datt Dir dëse JavaScript-Code just kuckt.\nE gouf nach net gespäichert!'''",
-       "userinvalidconfigtitle": "'''Opgepasst:''' Et gëtt keen Ausgesinn (skin) \"$1\".\nDenkt drun datt eegen .css an .js Säiten e kleng geschriwwenen Titel benotzen, z. Bsp. {{ns:user}}:Foo/vector.css am Géigesaz zu {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Opgepasst:</strong> Et gëtt keen Ausgesinn (skin) \"$1\".\nDenkt drun datt personaliséiert .css .json an .js Säiten e kleng geschriwwenen Titel benotzen, z. Bsp. {{ns:user}}:Foo/vector.css am Géigesaz zu {{ns:user}}:Foo/Vector.css.",
        "updated": "(Geännert)",
        "note": "'''Notiz:'''",
        "previewnote": "'''Denkt drun datt dëst nëmmen eng net gespäichert Versioun ass.'''\nÄr Ännerunge sinn nach net gespäichert!",
        "default": "Standard",
        "prefs-files": "Fichieren",
        "prefs-custom-css": "Benotzerdefinéierten CSS",
+       "prefs-custom-json": "Personaliséierten JSON",
        "prefs-custom-js": "Benotzerdefinéierte JS",
-       "prefs-common-config": "Gemeinsam CSS/JS fir all Ausgesinn (skins):",
+       "prefs-common-config": "Gemeinsam CSS/JSON/JavaScript fir all Ausgesinn (skins):",
        "prefs-reset-intro": "Dir kënnt dës Säit benotze fir Är Astellungen zréck op d'Standard-Astllungen ze setzen.\nDëst kann net réckgängeg gemaach ginn.",
        "prefs-emailconfirm-label": "E-Mail Confirmatioun:",
        "youremail": "E-Mail-Adress:",
        "grant-createaccount": "Benotzerkonten opmaachen",
        "grant-createeditmovepage": "Säiten uleeën, änneren a réckelen",
        "grant-delete": "Säiten, Versiounen a Rubriken a Logbicher läschen",
-       "grant-editinterface": "MediaWiki-Nummraum a Benotzer CSS/JavaScript änneren",
-       "grant-editmycssjs": "Äre Benotzer CSS/JavaScript änneren",
+       "grant-editinterface": "MediaWiki-Nummraum a Benotzer CSS/JSON/JavaScript änneren",
+       "grant-editmycssjs": "Äre Benotzer CSS/JSON/JavaScript änneren",
        "grant-editmyoptions": "Ännert Är Benotzerastellungen",
        "grant-editmywatchlist": "Ännert Är Iwwerwaachungslëscht",
        "grant-editpage": "Säiten déi et gëtt änneren",
        "pageinfo-robot-index": "Erlaabt",
        "pageinfo-robot-noindex": "Net erlaabt",
        "pageinfo-watchers": "Zuel vun de Benotzer déi d'Säit iwwerwaachen",
-       "pageinfo-visiting-watchers": "Zuel vun de Benotzer déi iwwerwaachen déi déi rezent Ännerunge besicht hunn",
+       "pageinfo-visiting-watchers": "Zuel vun den Obsevateuren déi déi rezent Ännerunge gekuckt hunn",
        "pageinfo-few-watchers": "Manner wéi $1 {{PLURAL:$1|Benotzer deen iwwerwaacht|Benotzer déi iwwerwaachen}}",
        "pageinfo-redirects-name": "Zuel vun de Viruleedungen op dës Säit",
        "pageinfo-subpages-name": "Ënnersäite vun dëser Säit",
index b8bf3ee..abb5996 100644 (file)
        "wrongpasswordempty": "'t Ingegaeve wachwoord waor laeg. Perbeer 't obbenuujts.",
        "passwordtooshort": "Dien wachwaord is te kort. 't Mót minstes oet {{PLURAL:$1|1 teike|$1 teikes}} besjtaon.",
        "passwordtoolong": "Wachwäörd kónne neet lenger zeen es {{PLURAL:$1|ei teike| $1 teikes}}.",
-       "passwordtoopopular": "Dök-gekaoze wachwäörd kan me neet gebroeke. Kees 'n eigener wachwaord.",
+       "passwordtoopopular": "Dök-gekaoze wachwäörd kan me neet gebroeke. Kees 'n eige wachwaord det lestiger is de raoje.",
        "password-name-match": "Die wachwaord mót anges zeen es diene gebroekersnaam.",
        "password-login-forbidden": "'t Gebroek van deze gebroekersnaam mit dit wachwoord is neet toegesjtange.",
        "mailmypassword": "Mail mich e nuuj wachwaord",
        "notificationemail_subject_removed": "geregistreerd e-mailadres van {{SITENAME}} is eweggehaold",
        "scarytranscludedisabled": "[Interwikitransclusie is oetgesjakeld]",
        "scarytranscludefailed": "[Sjabloon $1 kós neet opgehaold waer]",
+       "scarytranscludefailed-httpstatus": "[Sjabloon $1 kós neet waere opgehaold: HTTP $2]",
        "scarytranscludetoolong": "[URL is te lank]",
        "deletedwhileediting": "'''Waorsjoewing''': Dees pazjena is gewis naodats doe bis begós mit bewirke!",
        "confirmrecreate": "Gebroeker [[User:$1|$1]] ([[User talk:$1|euverlèk]]) heet dees pagina eweggesjaf naodats doe mèt bewirke begós mèt de rae:\n: ''$2''\nBevesteg estebleef dats te dees pazjena ech obbenuujts wils aanmake.",
        "version-entrypoints": "Ingang-URLs",
        "version-entrypoints-header-entrypoint": "Ingank",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Geïnstalleerde biebs",
+       "version-libraries-library": "Bieb",
+       "version-libraries-version": "Versie",
+       "version-libraries-license": "Lisens",
+       "version-libraries-description": "Besjrieving",
+       "version-libraries-authors": "Sjrievers",
        "redirect": "Redirek op bestandj, gebroeker, pagina, versie of log-ID",
        "redirect-summary": "Dees speciaal pagina verwies door nao e bestandj (es 'ne bestandjsnaam weurt opgegaeve), 'n pagina (es e paginanómmer of versienómmer weurt opgegaeve), 'ne gebroekerspagina (es e gebroekersnómmer weurt opgegaeve) of 'ne logbookregel (es 'n logboekregel-ID weurt opgegaeve). Gebroek: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] of [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Gank",
        "redirect-page": "Paginanómmer",
        "redirect-revision": "Paginaversie",
        "redirect-file": "Bestandjsnaam",
+       "redirect-logid": "Log-ID",
+       "redirect-not-exists": "Waerd neet gevónje",
        "fileduplicatesearch": "Zeuk veur döbbelbestaondje bestenj",
        "fileduplicatesearch-summary": "Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.",
        "fileduplicatesearch-filename": "Bestandjsnaam:",
        "fileduplicatesearch-result-n": "'t Bestandj \"$1\" haet {{PLURAL:$2|1 identieke döbbelversie|$2 identiek döbbelversies}}.",
        "fileduplicatesearch-noresults": "d'r Is gei bestandj mitte naam \"$1\" gevónje.",
        "specialpages": "Speciaal pazjena's",
+       "specialpages-note-top": "Legenda",
+       "specialpages-note-restricted": "* Normaal speciaal pagina's.\n* <span class=\"mw-specialpagerestricted\">Bepirk-tougenkelike speciaal pagina's.</span>",
        "specialpages-group-maintenance": "Óngerhajingsrapporter",
        "specialpages-group-other": "Euverige speciaal pazjena's",
        "specialpages-group-login": "Meld dich aan / registreer",
        "tag-filter": "[[Special:Tags|Labelfilter]]:",
        "tag-filter-submit": "Filtere",
        "tag-list-wrapper": "([[Special:Tags|Label{{PLURAL:$1||s}}]]: $2)",
+       "tag-mw-contentmodelchange": "inhawdsmodelverangering",
+       "tag-mw-contentmodelchange-description": "Bewirkinge die [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel 't  inhawdsmodel van 'n pagina verangere]",
+       "tag-mw-new-redirect": "Nuje redirek",
+       "tag-mw-new-redirect-description": "Bewirkinge die 'ne nuje redirek aanmake of 'n pagina verangere in 'ne redirek",
+       "tag-mw-removed-redirect": "Eweggehaolde redirek",
+       "tag-mw-removed-redirect-description": "Bewirkinge die 'ne bestäönde redirek verangere in 'ne neet-redirek",
+       "tag-mw-changed-redirect-target": "Redireksdoel verangerd",
+       "tag-mw-changed-redirect-target-description": "Bewirkinge die 't doel van 'ne redirek verangere",
+       "tag-mw-blank": "Laeggehaold",
+       "tag-mw-blank-description": "Bewirkinge die 'n pagina laegmake",
+       "tag-mw-replace": "Vervange",
+       "tag-mw-replace-description": "Bewirkinge die mier es 90% van 'n pagina eweghaole",
+       "tag-mw-rollback": "Trökdrejjing",
+       "tag-mw-rollback-description": "Bewirkinge die ierder bewirkinge trökdrejje middels de \"drej trök\"-link",
+       "tag-mw-undo": "Maak óngedaon",
+       "tag-mw-undo-description": "Bewirkinge die veurige bewirkinge óngedaon make middels de \"maak óngedaon\"-link",
        "tags-title": "Labels",
        "tags-intro": "Op deze pagina staon de labels womit de software edere bewerking kan markere, en häör betekenis.",
        "tags-tag": "Labelnaam",
        "tags-display-header": "Weergave in wiezigingslieste",
        "tags-description-header": "Volledige beschrieving van betekenis",
+       "tags-source-header": "Brón",
+       "tags-active-header": "Aktief?",
        "tags-hitcount-header": "Gelabelde bewerkinge",
+       "tags-actions-header": "Hanjelinge",
        "tags-active-yes": "Jao",
        "tags-active-no": "Nae",
+       "tags-source-extension": "Bepaold door de sofware",
+       "tags-source-manual": "Handjmaesig tougeveug door gebroekers en bots",
+       "tags-source-none": "Neet mier in gebroek",
        "tags-edit": "bewerking",
+       "tags-delete": "sjaf eweg",
+       "tags-activate": "aktiveer",
+       "tags-deactivate": "deaktiveer",
        "tags-hitcount": "$1 {{PLURAL:$1|wieziging|wieziginge}}",
        "tags-deactivate-reason": "Raeje:",
        "tags-deactivate-submit": "Deaktiveer",
index 908fb56..2f20318 100644 (file)
        "cascadeprotected": "Оваа страница е заштитена од уредувања бидејќи е превметната во {{PLURAL:$1|следнава страница, којашто е заштитена|следниве страници, коишто се заштитени}} со можноста „каскадна заштита“:\n$2",
        "namespaceprotected": "Немате дозвола за уредување страници во именскиот простор '''$1'''.",
        "customcssprotected": "Немате дозвола да ја менувате оваа страница со CSS бидејќи содржи туѓи лични нагодувања.",
+       "customjsonprotected": "Немате дозвола да ја менувате оваа страница со JSON бидејќи содржи туѓи лични нагодувања.",
        "customjsprotected": "Немате дозвола да ја менувате оваа страница со JavaScript  бидејќи содржи туѓи лични нагодувања.",
        "mycustomcssprotected": "Немате дозвола да ја уредувате оваа каскадна стилска страница (CSS).",
+       "mycustomjsonprotected": "Немате дозвола да ја уредувате оваа страница со JSON.",
        "mycustomjsprotected": "Немате дозвола да ја уредувате оваа страница со JavaScript.",
        "myprivateinfoprotected": "Немате дозвола да ги уредувате вашите лични информации.",
        "mypreferencesprotected": "Немате дозвола да ги уредувате вашите нагодувања.",
        "wrongpasswordempty": "Внесената лозинка е празна. Обидете се повторно.",
        "passwordtooshort": "Лозинката мора да има најмалку {{PLURAL:$1|1 знак|$1 знаци}}.",
        "passwordtoolong": "Лозинката не треба да има повеќе од {{PLURAL:$1|1 знак|$1 знаци}}.",
-       "passwordtoopopular": "Не користете пречесто застапени лозинки. Одберете некоја поинаква од вообичаените.",
+       "passwordtoopopular": "Не се допуштаат пречесто застапени лозинки. Изберете потешка лозинка за погодување.",
        "password-name-match": "Лозинката мора да се разликува од корисничкото име.",
        "password-login-forbidden": "Употребата на ова корисничко име и лозинка е забранета.",
        "mailmypassword": "Нова лозинка",
        "savechanges": "Зачувај промени",
        "publishpage": "Објави ја страницата",
        "publishchanges": "Објави промени",
+       "savearticle-start": "Зачувај страница…",
+       "savechanges-start": "Зачувај промени…",
+       "publishpage-start": "Објави страница…",
+       "publishchanges-start": "Објави промени…",
        "preview": "Преглед",
        "showpreview": "Преглед",
        "showdiff": "Прикажи промени",
        "blocked-notice-logextract": "Овој корисник е моментално блокиран.\nПодолу е прикажан последниот дневнички запис:",
        "clearyourcache": "<strong>Напомена:</strong>  По зачувувањето морате да го исчистите меѓускладот (кеш) на прелистувачот за да можете ги видите промените.\n* <strong>Firefox / Safari:</strong> Држете <em>Shift</em> и стиснете на <em>Превчитај</em> (<em>Reload</em>) или притиснете <em>Ctrl-F5</em> или <em>Ctrl-R</em> (''⌘-R'' на Mac);\n* <strong>Google Chrome:</strong> Притиснете <em>Ctrl-Shift-R</em> (<em>⌘-R</em> на Mac)\n* <strong>Internet Explorer:</strong> Држете <em>Ctrl</em> додека притискате на <em>Refresh</em> или притиснете <em>Ctrl-F5</em>.\n* <strong>Opera:</strong> Појдете на <em>Menu → Settings</em> (<em>Opera → Preferences</em> на Мекинтош), а потоа на <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Совет:''' Употребете го копчето „{{int:showpreview}}“ за да го испробате вашиот нов CSS пред да зачувате.",
+       "userjsonyoucanpreview": "'''Совет:''' Употребете го копчето „{{int:showpreview}}“ за да го испробате вашиот нов JSON пред да зачувате.",
        "userjsyoucanpreview": "'''Совет:''' Употребете го копчето „{{int:showpreview}}“ за да ја испробате вашата нова JavaScript  пред да зачувате.",
        "usercsspreview": "'''Запомнете дека ова е само преглед на вашиот кориснички CSS код, страницата сè уште не е зачувана!'''",
+       "userjsonpreview": "<strong>Запомнете дека ова е само испробување/преглед на поставеноста на вашиот JSON. \nСтраницата сè уште не е зачувана!</strong>",
        "userjspreview": "'''Запомнете дека ова е само преглед на вашиот JavaScript код, страницата сè уште не е зачувана!'''",
        "sitecsspreview": "'''Запомнете дека ова е само преглед на овој CSS-код.'''\n'''Сè уште не е зачуван!'''",
+       "sitejsonpreview": "<strong>Запомнете дека ова е само преглед на оваа поставеност на JSON. Сè уште не е зачуван!</strong>",
        "sitejspreview": "'''Запомнете дека ова е само преглед на овој JavaScript-код.'''\n'''Сè уште не е зачуван!'''",
-       "userinvalidconfigtitle": "'''Предупредување:''' Нема руво „$1“.\nЗапомнете дека сопствените .css и .js страници имаат имиња со мали букви, пр. {{ns:user}}:Некој/vector.css наместо {{ns:user}}:Некој/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Предупредување:</strong> Нема руво „$1“.\nСтраниците со наставка .css, .json и .js имаат имиња со мали букви, пр. {{ns:user}}:Некој/vector.css наместо {{ns:user}}:Некој/Vector.css.",
        "updated": "(Подновено)",
        "note": "'''Напомена:'''",
        "previewnote": "'''Имајте предвид дека ова е само преглед.'''\nПромените сè уште не се зачувани!",
        "stub-threshold-disabled": "Оневозможено",
        "recentchangesdays": "Денови за приказ во скорешните промени:",
        "recentchangesdays-max": "(највеќе {{PLURAL:$1|еден ден|$1 дена}})",
-       "recentchangescount": "Број на уредувања кои ќе се прикажуваат по основно:",
-       "prefs-help-recentchangescount": "Ð\9fодÑ\80азбиÑ\80а Ñ\81коÑ\80еÑ\88ни Ð¿Ñ\80омени, Ð¸Ñ\81Ñ\82оÑ\80ии Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86и Ð¸ Ð´Ð½ÐµÐ²Ð½Ð¸Ñ\86и.",
+       "recentchangescount": "Бројот на уредувања за приказ во скорешните промени, историите на страниците и во дневници. По основно:",
+       "prefs-help-recentchangescount": "Ð\9dаÑ\98веÑ\9cе: 1000",
        "prefs-help-watchlist-token2": "Ова е тајна шифра за тековникот на вашите набљудувања.\nСекој што ја знае ќе може да ја чита, па затоа ви препорачуваме да не ја кажувате никому.\nАко е потребно, [[Special:ResetTokens|можете да ставите нова]].",
        "savedprefs": "Вашите нагодувања се зачувани.",
        "savedrights": "Корисничките групи на {{GENDER:$1|$1}} се зачувани.",
        "default": "по основно",
        "prefs-files": "Податотеки",
        "prefs-custom-css": "Посебно CSS",
+       "prefs-custom-json": "Прилагоден JSON",
        "prefs-custom-js": "Посебно JS",
-       "prefs-common-config": "Заеднички CSS/JS за сите изгледи:",
+       "prefs-common-config": "Заеднички CSS/JSON/JavaScript за сите рува:",
        "prefs-reset-intro": "Може да ја користите оваа страница за враќање на вашите нагодувања на основно-зададените нагодувања на викито. Ова дејство е неповратно.",
        "prefs-emailconfirm-label": "Потврда на е-пошта:",
        "youremail": "Е-пошта:",
        "right-editcontentmodel": "Уредување на содржинскиот модел на страница",
        "right-editinterface": "Уредување на кориснички посредник",
        "right-editusercss": "Уредување на CSS податотеки на други корисници",
+       "right-edituserjson": "Уредување на JSON-податотеките на други корисници",
        "right-edituserjs": "Уредување на JS податотеки на други корисници",
        "right-editmyusercss": "Уредување на сопствени кориснички каскадни стилски податотеки (CSS)",
+       "right-editmyuserjson": "Уредување на сопствените кориснички JSON-податотеки",
        "right-editmyuserjs": "Уредување на сопствени кориснички податотеки со JavaScript",
        "right-viewmywatchlist": "Преглед на вашиот список на набљудувања",
        "right-editmywatchlist": "Уредување на вашите набљудувани. Извесни дејства сепак ќе ставаат страници во нив и без да го имате ова право.",
        "grant-createaccount": "Правење сметки",
        "grant-createeditmovepage": "Создавање, уредување и преместување страници",
        "grant-delete": "Бришење страници, преработки и дневнички записи",
-       "grant-editinterface": "Измена на именскиот простор „МедијаВики“ и кориснички CSS/JavaScript",
-       "grant-editmycssjs": "Уредување на вашиот кориснички CSS/JavaScript",
+       "grant-editinterface": "Измена на именскиот простор „МедијаВики“ и кориснички  CSS/JSON/JavaScript",
+       "grant-editmycssjs": "Уредување на вашиот кориснички CSS/JSON/JavaScript",
        "grant-editmyoptions": "Уредување на вашите кориснички нагодувања",
        "grant-editmywatchlist": "Уредување на вашите набљудувани",
        "grant-editpage": "Менување постоечки страници",
        "group-bot.css": "/* Тука поставениот CSS ќе се применува само врз ботовите */",
        "group-sysop.css": "/* Тука поставениот CSS ќе се применува само врз системските оператори */",
        "group-bureaucrat.css": "/* Тука поставениот CSS ќе се применува само врз бирократите */",
+       "common.json": "/* Тука поставениот JSON ќе им се вчитува на сите корисници при отворањето на секоја страница. */",
        "common.js": "/* Тука поставениот JavaScript ќе им се вчитува на сите корисници при отворањето на секоја страница. */",
        "group-autoconfirmed.js": "/* Тука поставениот JavaScript  ќе им се вчитува само на автопотврдените корисници */",
        "group-user.js": "/* Тука поставениот JavaScript  ќе им се вчитува само на регистрираните корисници */",
        "unlinkaccounts-success": "Сметката е одврзана.",
        "authenticationdatachange-ignored": "Промената на податоците во заверката не е обработена. Можеби не е поставен услужник?",
        "userjsispublic": "Напомена: потстраниците со JavaScript не треба да содржат дсоверливи податоци бидејќи истите се видливи и за други корисници.",
+       "userjsonispublic": "Имајте на ум: Потстраниците со JSON не треба да содржат доверливи податоци бидејќи истите се видливи за другите корисници.",
        "usercssispublic": "Напомена: потстраниците со CSS не треба да содржат дсоверливи податоци бидејќи истите се видливи и за други корисници.",
        "restrictionsfield-badip": "Неважечки IP-дијапазон на адреси: $1",
        "restrictionsfield-label": "Допуштени IP-опсези:",
index 9cdd29a..966f392 100644 (file)
        "wrongpasswordempty": "രഹസ്യവാക്ക് നൽകിയിരുന്നില്ല. വീണ്ടും ശ്രമിക്കുക.",
        "passwordtooshort": "രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.",
        "passwordtoolong": "രഹസ്യവാക്കിൽ പരമാവധി {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} മാത്രമേ പാടുള്ളു.",
-       "passwordtoopopular": "പരà´\95àµ\8dà´\95àµ\86 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\81à´\95ൾ à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95à´°àµ\81à´¤àµ\8d. à´¦à´¯à´µà´¾à´¯à´¿ à´\95àµ\82à´\9fàµ\81തൽ à´\85നനàµ\8dയമായ രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക.",
+       "passwordtoopopular": "പരà´\95àµ\8dà´\95àµ\86 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\81à´\95ൾ à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95à´°àµ\81à´¤àµ\8d. à´¦à´¯à´µà´¾à´¯à´¿ à´\8aഹിà´\9aàµ\8dà´\9aàµ\86à´\9fàµ\81à´\95àµ\8dà´\95ാൻ à´¬àµ\81à´¦àµ\8dധിമàµ\81à´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക.",
        "password-name-match": "താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.",
        "password-login-forbidden": "ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.",
        "mailmypassword": "രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക",
        "userjspreview": "'''താങ്കൾ താങ്കളുടെ സ്വന്തം ജാവസ്ക്രിപ്റ്റ് പ്രിവ്യൂ ചെയ്യുക മാത്രമേ ചെയ്യുന്നുള്ളൂ എന്ന കാര്യം ഓർമ്മിക്കുക. ഇതു സേവ് ചെയ്തിട്ടില്ല!'''",
        "sitecsspreview": "'''താങ്കൾ ഈ സി.എസ്.എസ്.ന്റെ പ്രിവ്യൂ കാണുക മാത്രമേ ചെയ്യുന്നുള്ളൂ എന്ന കാര്യം ഓർമ്മിക്കുക.'''\n'''ഇതു സേവ് ചെയ്തിട്ടില്ല!'''",
        "sitejspreview": "'''താങ്കൾ ഈ ജാവസ്ക്രിപ്റ്റ് കോഡിന്റെ പ്രിവ്യൂ കാണുക മാത്രമേ ചെയ്യുന്നുള്ളൂ എന്ന കാര്യം ഓർമ്മിക്കുക.'''\n'''ഇതു സേവ് ചെയ്തിട്ടില്ല!'''",
-       "userinvalidconfigtitle": "'''മുന്നറിപ്പ്:''' \"$1\" എന്ന പേരിൽ ഒരു ദൃശ്യരൂപം ഇല്ല. '''.css''' ഉം '''.js''' ഉം താളുകൾ ഇംഗ്ലീഷ് ചെറിയക്ഷര തലക്കെട്ട് ആണ്‌ ഉപയോഗിക്കുന്നതെന്നു ദയവായി ഓർക്കുക. ഉദാ: {{ns:user}}:Foo/Vector.css എന്നതിനു പകരം {{ns:user}}:Foo/vector.css എന്നാണു ഉപയോഗിക്കേണ്ടത്.",
+       "userinvalidconfigtitle": "<strong>മുന്നറിയിപ്പ്:</strong> \"$1\" എന്ന പേരിൽ ഒരു ദൃശ്യരൂപം ഇല്ല. ഐച്ഛികാനുസരണമുള്ള .css, .json, .js താളുകൾ ഇംഗ്ലീഷ് ചെറിയക്ഷര തലക്കെട്ട് ആണ്‌ ഉപയോഗിക്കുന്നതെന്നോർക്കുക. ഉദാ: {{ns:user}}:Foo/Vector.css എന്നതിനു പകരം {{ns:user}}:Foo/vector.css എന്നാണു ഉപയോഗിക്കേണ്ടത്.",
        "updated": "(പുതുക്കിയിരിക്കുന്നു)",
        "note": "'''പ്രത്യേക ശ്രദ്ധയ്ക്ക്:'''",
        "previewnote": "'''ഇതൊരു പ്രിവ്യൂ മാത്രമാണെന്ന് ഓർക്കുക.'''\nതാങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ ഇതുവരെ സേവ് ചെയ്തിട്ടില്ല!",
        "continue-editing": "തിരുത്തൽ മേഖലയിലേയ്ക്ക് പോവുക",
        "previewconflict": "ഈ പ്രിവ്യൂവിൽ മുകളിലെ ടെക്സ്റ്റ് ഏരിയയിലുള്ള എഴുത്ത് മാത്രമാണ് കാട്ടുന്നത്, സേവ്‌ ചെയ്യാൻ താങ്കൾ തീരുമാനിച്ചാൽ അത് സേവ് ആകുന്നതാണ്.",
-       "session_fail_preview": "'''ക്ഷമിക്കണം! സെഷൻ ഡാറ്റ നഷ്ടപ്പെട്ടതിനാൽ താങ്കളുടെ തിരുത്തലിന്റെ തുടർപ്രക്രിയ നടത്തുവാൻ സാധിച്ചില്ല.''' \nദയവായി വീണ്ടും ശ്രമിക്കൂ.\nഎന്നിട്ടും ശരിയാവുന്നില്ലെങ്കിൽ [[Special:UserLogout|ലോഗൗട്ട് ചെയ്തതിനു ശേഷം]] വീണ്ടും ലോഗിൻ ചെയ്തുനോക്കൂ.",
-       "session_fail_preview_html": "'''ക്ഷമിക്കണം! സെഷൻ ഡാറ്റ നഷ്ടപ്പെട്ടതിനാൽ താങ്കളുടെ തിരുത്തലിന്റെ തുടർപ്രക്രിയ നടത്തുവാൻ സാധിച്ചില്ല.'''\n\n''{{SITENAME}} സം‌രംഭത്തിൽ raw HTML സജ്ജമാക്കിയിരിക്കുന്നതിനാൽ, ജാവാസ്ക്രിപ്റ്റ് ആക്രമണത്തിനെതിരെയുള്ള മുൻകരുതൽ എന്ന നിലയിൽ പ്രിവ്യൂ മറച്ചിരിക്കുന്നു.''\n\n'''താങ്കളുടേതു ഉത്തരവാദിത്വത്തോടെയുള്ള തിരുത്തലെങ്കിൽ, ദയവായി വീണ്ടും ശ്രമിക്കൂ'''. എന്നിട്ടും ശരിയാവുന്നില്ലെങ്കിൽ [[Special:UserLogout|ലോഗൗട്ട് ചെയ്തതിനു]] ശേഷം വീണ്ടും ലോഗിൻ ചെയ്യൂ.",
+       "session_fail_preview": "ക്ഷമിക്കണം! സെഷൻ ഡാറ്റ നഷ്ടപ്പെട്ടതിനാൽ താങ്കളുടെ തിരുത്തലിന്റെ തുടർപ്രക്രിയ നടത്തുവാൻ സാധിച്ചില്ല.\n\nതാങ്കൾ പുറത്ത് കടന്നിട്ടുണ്ടാകാം. <strong>ഇപ്പോഴും പ്രവേശിച്ചിരിക്കുകയാണെന്ന് ഉറപ്പ് വരുത്തിയിട്ട് വീണ്ടും ശ്രമിക്കുക</strong>.\nഎന്നിട്ടും ശരിയാവുന്നില്ലെങ്കിൽ [[Special:UserLogout|ലോഗൗട്ട് ചെയ്തതിനു ശേഷം]] വീണ്ടും ലോഗിൻ ചെയ്തുനോക്കൂ.",
+       "session_fail_preview_html": "ക്ഷമിക്കണം! സെഷൻ ഡാറ്റ നഷ്ടപ്പെട്ടതിനാൽ താങ്കളുടെ തിരുത്തലിന്റെ തുടർപ്രക്രിയ നടത്തുവാൻ സാധിച്ചില്ല.\n\n<em>{{SITENAME}} സം‌രംഭത്തിൽ raw HTML സജ്ജമാക്കിയിരിക്കുന്നതിനാൽ, ജാവാസ്ക്രിപ്റ്റ് ആക്രമണത്തിനെതിരെയുള്ള മുൻകരുതൽ എന്ന നിലയിൽ പ്രിവ്യൂ മറച്ചിരിക്കുന്നു.</em>\n\n<strong>താങ്കളുടേതു ഉത്തരവാദിത്വത്തോടെയുള്ള തിരുത്തലെങ്കിൽ, ദയവായി വീണ്ടും ശ്രമിക്കൂ.</strong> എന്നിട്ടും ശരിയാവുന്നില്ലെങ്കിൽ [[Special:UserLogout|ലോഗൗട്ട് ചെയ്തതിനു]] ശേഷം വീണ്ടും ലോഗിൻ ചെയ്യൂ, ഒപ്പം താങ്കളുടെ ബ്രൗസർ ഈ സൈറ്റിൽ നിന്നുള്ള കുക്കികൾ അനുവദിക്കുന്നുണ്ടോ എന്നുറപ്പുവരുത്തുക.",
        "token_suffix_mismatch": "'''താങ്കളുടെ ക്ലൈന്റ് തിരുത്തൽ കുറിയിലെ ചിഹ്നനങ്ങൾ നശിപ്പിച്ചതിനാൽ താങ്കളുടെ തിരുത്തൽ സ്വീകരിക്കുന്നില്ല.'''\nതാളിലെ എഴുത്തിന്റെ നാശം ഒഴിവാക്കാനാണു താങ്കളുടെ തിരുത്തൽ സ്വീകരിക്കാത്തത്.\nഗുണനിലവാരമില്ലാത്ത വെബ് അധിഷ്ഠിത അജ്ഞാത പ്രോക്സി സേവനങ്ങൾ ഉപയോഗിച്ചാൽ ചിലപ്പോൾ ഇത്തരത്തിലുണ്ടാകാറുണ്ട്.",
        "edit_form_incomplete": "'''തിരുത്തൽ ഫോമിന്റെ ചില ഭാഗങ്ങൾ സെർവറിൽ എത്തിയിട്ടില്ല; താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾക്ക് ക്ഷതമേറ്റിട്ടില്ലെന്ന് ഉറപ്പുവരുത്തി വീണ്ടും ശ്രമിക്കുക.'''",
        "editing": "തിരുത്തുന്ന താൾ: $1",
        "readonlywarning": "<strong>മുന്നറിയിപ്പ്: ഡേറ്റാബേസ് പരിപാലനത്തിനു വേണ്ടി ബന്ധിച്ചിരിക്കുന്നു, അതുകൊണ്ട് താങ്കളിപ്പോൾ വരുത്തിയ മാറ്റങ്ങൾ സേവ് ചെയ്യാൻ സാദ്ധ്യമല്ല.</strong>\nതാങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ ഒരു ടെക്സ്റ്റ് ഫയലിലേക്ക് പകർത്തി (കോപ്പി & പേസ്റ്റ്)  പിന്നീടുപയോഗിക്കുന്നതിനായി കരുതിവക്കാൻ താല്പര്യപ്പെടുന്നു. \n\nഡേറ്റാബേസ് ബന്ധിച്ച സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
        "protectedpagewarning": "'''മുന്നറിയിപ്പ്:  ഈ താൾ കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം തിരുത്താൻ സാധിക്കാവുന്ന തരത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
        "semiprotectedpagewarning": "'''ശ്രദ്ധിക്കുക:'''അംഗത്വമെടുത്തിട്ടുള്ളവർക്കുമാത്രം തിരുത്താൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
-       "cascadeprotectedwarning": "<strong>മുന്നറിയിപ്പ്:</strong> ഈ താൾ കാര്യനിർവാഹക അവകാശമുള്ളവർക്കു മാത്രം തിരുത്തുവാൻ സാധിക്കുന്ന വിധത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌. ഇനിക്കൊടുക്കുന്ന {{PLURAL:$1|താൾ|താളുകൾ}} നിർഝരിത(cascade) സം‌രക്ഷണം ചെയ്തപ്പോൾ അതിന്റെ ഭാഗമായി സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌ ഈ താൾ:",
+       "cascadeprotectedwarning": "<strong>മുന്നറിയിപ്പ്:</strong> ഈ താൾ [[Special:ListGroupRights|പ്രത്യേക അവകാശമുള്ളവർക്കു]] മാത്രം തിരുത്തുവാൻ സാധിക്കുന്ന വിധത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌. ഇനിക്കൊടുക്കുന്ന {{PLURAL:$1|താൾ|താളുകൾ}} നിർഝരിത(cascade) സം‌രക്ഷണം ചെയ്തപ്പോൾ അതിന്റെ ഭാഗമായി സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌ ഈ താൾ:",
        "titleprotectedwarning": "'''മുന്നറിയിപ്പ്: [[Special:ListGroupRights|പ്രത്യേക അവകാശമുള്ള]] ഉപയോക്താക്കൾക്ക് മാത്രം സൃഷ്ടിക്കാൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
        "templatesused": "ഈ താളിൽ ഉപയോഗിച്ചിരിക്കുന്ന {{PLURAL:$1|ഫലകം|ഫലകങ്ങൾ}}:",
        "templatesusedpreview": "ഈ പ്രിവ്യൂവിൽ ഉപയോഗിച്ചിരിക്കുന്ന {{PLURAL:$1|ഫലകം|ഫലകങ്ങൾ}}:",
        "permissionserrorstext-withaction": "താങ്കൾക്ക് $2 എന്ന പ്രവൃത്തി ചെയ്യാൻ അനുമതി ഇല്ല, {{PLURAL:$1|കാരണം|കാരണങ്ങൾ}} താഴെ കൊടുത്തിരിക്കുന്നു:",
        "recreate-moveddeleted-warn": "'''മുന്നറിയിപ്പ്: മുമ്പ് മായ്ച്ചുകളഞ്ഞ താളാണ്‌ താങ്കൾ വീണ്ടും ചേർക്കാൻ ശ്രമിക്കുന്നത്'''\n\nതാങ്കൾ ചെയ്യുന്നത് ശരിയായ നടപടിയാണോ എന്നു പരിശോധിക്കുക. ഉറപ്പിനായി ഈ താളിന്റെ മായ്ക്കൽ രേഖയും മാറ്റൽ രേഖയും കൂടെ ചേർത്തിരിക്കുന്നു.",
        "moveddeleted-notice": "ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.\nഈ താളിന്റെ മായ്ക്കൽ, സംരക്ഷണ, മാറ്റ രേഖ പരിശോധനയ്ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു",
-       "moveddeleted-notice-recent": "ക്ഷമിക്കുക, ഈ താൾ ഈയടുത്ത് (കഴിഞ്ഞ 24 മണിക്കൂറിനുള്ളിൽ) മായ്ക്കപ്പെട്ടു.\nഅവലംബമായി മായ്ക്കലിന്റെയും താൾ നീക്കിയതിന്റെയും രേഖ താഴെ കൊടുത്തിരിക്കുന്നു.",
+       "moveddeleted-notice-recent": "ക്ഷമിക്കുക, ഈ താൾ ഈയടുത്ത് (കഴിഞ്ഞ 24 മണിക്കൂറിനുള്ളിൽ) മായ്ക്കപ്പെട്ടു.\nഅവലംബമായി മായ്ക്കലിന്റെയും, സംരക്ഷിക്കലിന്റെയും, താൾ നീക്കിയതിന്റെയും രേഖ താഴെ കൊടുത്തിരിക്കുന്നു.",
        "log-fulllog": "എല്ലാ രേഖകളും കാണുക",
        "edit-hook-aborted": "തിരുത്തൽ കൊളുത്തിനാൽ റദ്ദാക്കിയിരിക്കുന്നു.\nവിശദീകരണമൊന്നും നൽകിയിട്ടില്ല.",
        "edit-gone-missing": "ഈ താൾ പുതുക്കുവാൻ സാധിക്കുകയില്ല.\nഇത് മായ്ക്കപ്പെട്ടതായി കാണുന്നു.",
        "stub-threshold-disabled": "നിർജ്ജീവമാക്കപ്പെട്ടിരിക്കുന്നു",
        "recentchangesdays": "പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:",
        "recentchangesdays-max": "പരമാവധി {{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസങ്ങൾ}}",
-       "recentchangescount": "സ്വതേ പ്രദർശിപ്പിക്കേണ്ട തിരുത്തലുകളുടെ എണ്ണം:",
-       "prefs-help-recentchangescount": "à´ªàµ\81തിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ, à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´¨à´¾àµ¾à´µà´´à´¿à´\95ൾ, à´°àµ\87à´\96à´\95ൾ à´\8eà´¨àµ\8dനിവà´\95àµ\8dà´\95àµ\81à´\82 à´\87à´¤àµ\8d à´¬à´¾à´§à´\95മാണàµ\8d.",
-       "prefs-help-watchlist-token2": "ഇത് താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ  പട്ടികയുടെ വെബ്‌ഫീഡിനുള്ള രഹസ്യചാവിയാണ്.\nഇത് അറിയാവുന്നവർക്ക് താങ്കൾ ശ്രദ്ധിക്കുന്നവയെന്താണെന്ന് വായിക്കാനാവുമെന്നതിനാൽ, പങ്ക് വെയ്ക്കാതിരിക്കുക.\n[[Special:ResetTokens|ഇത് പുനസജ്ജീകരിക്കണമെങ്കിൽ ഇവിടെ ഞെക്കുക]].",
+       "recentchangescount": "സമàµ\80à´ªà´\95ാലമാറàµ\8dà´±à´\99àµ\8dà´\99ളിലàµ\81à´\82 à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´¨à´¾àµ¾à´ªàµ\8dപതിപàµ\8dà´ªàµ\81à´\95ളിലàµ\81à´\82 à´°àµ\87à´\96à´\95ളിലàµ\81à´\82 à´¸àµ\8dവതàµ\87 à´ªàµ\8dരദർശിപàµ\8dപിà´\95àµ\8dà´\95àµ\87à´£àµ\8dà´\9f à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\9fàµ\86 à´\8eà´£àµ\8dà´£à´\82:",
+       "prefs-help-recentchangescount": "പരമാവധി à´\8eà´£àµ\8dà´£à´\82: 1000",
+       "prefs-help-watchlist-token2": "ഇത് താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ  പട്ടികയുടെ വെബ്‌ഫീഡിനുള്ള രഹസ്യചാവിയാണ്.\nഇത് അറിയാവുന്നവർക്ക് താങ്കൾ ശ്രദ്ധിക്കുന്നവയെന്താണെന്ന് വായിക്കാനാവുമെന്നതിനാൽ, പങ്ക് വെയ്ക്കാതിരിക്കുക.\nതാങ്കൾക്കാവശ്യമെങ്കിൽ [[Special:ResetTokens|ഇത് പുനസജ്ജീകരിക്കാവുന്നതാണ്]].",
        "savedprefs": "താങ്കളുടെ ക്രമീകരണങ്ങൾ കാത്തുസൂക്ഷിച്ചിരിക്കുന്നു.",
        "savedrights": "{{GENDER:$1|$1}} എന്ന ഉപയോക്താവിന്റെ ഉപയോക്തൃ സംഘങ്ങൾ സേവ് ചെയ്തിരിക്കുന്നു.",
        "timezonelegend": "സമയ മേഖല:",
        "prefs-files": "പ്രമാണങ്ങൾ",
        "prefs-custom-css": "സ്വന്തം സി.എസ്.എസ്.",
        "prefs-custom-js": "സ്വന്തം ജെ.എസ്.",
-       "prefs-common-config": "എല്ലാ ദൃശ്യരൂപങ്ങൾക്കുമായി പങ്ക് വെയ്ക്കപ്പെട്ട സി.എസ്.എസ്./ജെ.എസ്.:",
+       "prefs-common-config": "എല്ലാ ദൃശ്യരൂപങ്ങൾക്കുമായി പങ്ക് വെയ്ക്കപ്പെട്ട സി.എസ്.എസ്./ജെസൺ/ജാവാസ്ക്രിപ്റ്റ്:",
        "prefs-reset-intro": "സൈറ്റിൽ സ്വതേയുണ്ടാവേണ്ട ക്രമീകരണങ്ങൾ പുനഃക്രമീകരിക്കാൻ താങ്കൾക്ക് ഈ താൾ ഉപയോഗിക്കാവുന്നതാണ്.\nഇത് തിരിച്ചു ചെയ്യാൻ സാദ്ധ്യമല്ല.",
        "prefs-emailconfirm-label": "ഇമെയിൽ സ്ഥിരീകരണം:",
        "youremail": "ഇമെയിൽ:",
        "right-siteadmin": "ഡേറ്റാബേസ് തുറക്കുക, പൂട്ടുക",
        "right-override-export-depth": "കണ്ണിവത്കരിക്കപ്പെട്ട താളുകളുടെ ആഴം 5 വരെയുള്ള താളുകൾ കയറ്റുമതി ചെയ്യുക",
        "right-sendemail": "മറ്റുപയോക്താക്കൾക്ക് ഇമെയിൽ അയയ്ക്കുക",
-       "right-managechangetags": "ഡേറ്റാബേസിൽ നിന്നുള്ള [[Special:Tags|ടാഗുകൾ]] സൃഷ്ടിക്കുക അല്ലെങ്കിൽ മായ്ക്കുക",
+       "right-managechangetags": "[[Special:Tags|ടാഗുകൾ]] സൃഷ്ടിക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക",
        "right-applychangetags": "മാറ്റങ്ങളോടൊപ്പം [[Special:Tags|ടാഗുകളും]] ബാധകമാക്കുക",
        "right-changetags": "ഒറ്റയൊറ്റ നാൾപ്പതിപ്പുകൾക്കും രേഖയിലെ ഉൾപ്പെടുത്തലുകൾക്കും ഐച്ഛിക [[Special:Tags|ടാഗുകൾ]] ചേർക്കുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക",
        "grant-generic": "\"$1\" അവകാശ സഞ്ചയം",
        "grant-createaccount": "അംഗത്വങ്ങൾ സൃഷ്ടിക്കുക",
        "grant-createeditmovepage": "താളുകൾ സൃഷ്ടിക്കുക, തിരുത്തുക, മാറ്റുക",
        "grant-delete": "താളുകൾ, നാൾപ്പതിപ്പുകൾ, രേഖകളിലെ ഉൾപ്പെടുത്തലുകൾ മായ്ക്കുക",
-       "grant-editinterface": "മീഡിയവിക്കി നാമമേഖലയും ഉപയോക്തൃ സി.എസ്.എസ്./ജാവാസ്ക്രിപ്റ്റും തിരുത്തുക",
-       "grant-editmycssjs": "താങ്കളുടെ ഉപയോക്തൃ സി.എസ്.എസ്./ജാവാസ്ക്രിപ്റ്റ് തിരുത്തുക",
+       "grant-editinterface": "à´®àµ\80ഡിയവിà´\95àµ\8dà´\95à´¿ à´¨à´¾à´®à´®àµ\87à´\96ലയàµ\81à´\82 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´¸à´¿.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d./à´\9càµ\86സൺ/à´\9cാവാസàµ\8dà´\95àµ\8dà´°à´¿à´ªàµ\8dà´±àµ\8dà´±àµ\81à´\82 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95",
+       "grant-editmycssjs": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´¸à´¿.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d./à´\9càµ\86സൺ/à´\9cാവാസàµ\8dà´\95àµ\8dà´°à´¿à´ªàµ\8dà´±àµ\8dà´±àµ\8d à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95",
        "grant-editmyoptions": "താങ്കളുടെ ഉപയോക്തൃ ക്രമീകരണങ്ങൾ തിരുത്തുക",
        "grant-editmywatchlist": "താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക തിരുത്തുക",
        "grant-editpage": "നിലവിലുള്ള താളുകൾ തിരുത്തുക",
        "uploadstash-clear": "രഹസ്യമാക്കിയ പ്രമാണങ്ങൾ ശൂന്യമാക്കുക",
        "uploadstash-nofiles": "താങ്കൾക്ക് രഹസ്യമാക്കിയ പ്രമാണങ്ങൾ ഒന്നുമില്ല.",
        "uploadstash-badtoken": "പ്രവൃത്തി വിജയകരമായിരുന്നില്ല, താങ്കളുടെ തിരുത്തുവാനുള്ള അവകാശങ്ങൾ ചിലപ്പോൾ കാലഹരണപ്പെട്ടിട്ടുണ്ടാകാം. വീണ്ടും ശ്രമിക്കുക.",
-       "uploadstash-errclear": "à´ªàµ\8dരമാണà´\99àµ\8dà´\99ൾ à´¶àµ\82à´¨àµ\8dയമാà´\95àµ\8dà´\95ൽ à´µà´¿à´\9cà´¯à´\95രമായിരàµ\81à´¨àµ\8dനിലàµ\8dà´².",
+       "uploadstash-errclear": "à´ªàµ\8dരമാണà´\99àµ\8dà´\99ൾ à´¶àµ\82à´¨àµ\8dയമാà´\95àµ\8dà´\95ൽ à´ªà´°à´¾à´\9cയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fàµ\81.",
        "uploadstash-refresh": "പ്രമാണങ്ങളുടെ പട്ടിക പുതുക്കുക",
        "uploadstash-thumbnail": "ലഘുചിത്രം കാണുക",
        "uploadstash-bad-path-unknown-type": "അപരിചിതമായ തരം \"$1\".",
        "doubleredirects": "ഇരട്ട തിരിച്ചുവിടലുകൾ",
        "doubleredirectstext": "ഈ താളിൽ ഒരു തിരിച്ചുവിടലിൽ നിന്നും മറ്റു തിരിച്ചുവിടൽ താളുകളിലേയ്ക്ക് പോകുന്ന താളുകൾ കൊടുത്തിരിക്കുന്നു. ഓരോ വരിയിലും ഒന്നാമത്തേയും രണ്ടാമത്തേയും തിരിച്ചുവിടൽ താളിലേക്കുള്ള കണ്ണികളും, രണ്ടാമത്തെ തിരിച്ചുവിടൽ താളിൽ നിന്നു ശരിയായ ലക്ഷ്യതാളിലേക്കുള്ള കണ്ണികളും ഉൾക്കൊള്ളുന്നു.\n<del>വെട്ടിക്കൊടുത്തിരിക്കുന്നവ</del> ശരിയാക്കിയവയാണ്.",
        "double-redirect-fixed-move": "[[$1]] മാറ്റിയിരിക്കുന്നു.\nഇത് ഇപ്പോൾ സ്വയം പുതുക്കപ്പെട്ട് [[$2]] എന്നതിലേയ്ക്ക് തിരിച്ചുവിടപ്പെട്ടിരിക്കുന്നു.",
-       "double-redirect-fixed-maintenance": "[[$1]] എന്ന താളിൽ നിന്ന് [[$2]] എന്ന താളിലേയ്ക്കുള്ള ഇരട്ട തിരിച്ചുവിടൽ പരിപാലനജോലികൾക്കിടെ സ്വയം ശരിയാക്കുന്നു.",
+       "double-redirect-fixed-maintenance": "[[$1]] എന്ന താളിൽ നിന്ന് [[$2]] എന്ന താളിലേയ്ക്കുള്ള ഇരട്ട തിരിച്ചുവിടൽ പരിപാലനജോലികൾക്കിടെ സ്വയം ശരിയാക്കുന്നു",
        "double-redirect-fixer": "തിരിച്ചുവിടൽ ശരിയാക്കിയത്",
        "brokenredirects": "മുറിഞ്ഞ തിരിച്ചുവിടലുകൾ",
        "brokenredirectstext": "താഴെക്കാണുന്ന തിരിച്ചുവിടലുകൾ നിലവിലില്ലാത്ത താളുകളിലേയ്ക്കാണ്‌:",
index 92fa576..9d3bd9d 100644 (file)
        "tmp-write-error": "ယာယီဖိုင်ရေးသားရာတွင် အမှားဖြစ်ပေါ်နေသည်။",
        "largefileserver": "ဤဖိုင်သည် ဆာဗာတွင် ခွင့်ပြုရန်သတ်မှတ်ထားသော ဖိုင်အရွယ်အစားထက် ကြီးနေသည်။",
        "file-exists-duplicate": "ဤဖိုင်သည် အောက်ပါ {{PLURAL:$1|ဖိုင်|ဖိုင်များ}}၏ ထပ်တူပုံပွား ဖြစ်သည် -",
-       "uploadwarning": "Upload á\80\90á\80\84á\80ºá\80\9bá\80¬á\80\90á\80½á\80\84á\80º á\80\9eá\80\90á\80ºပေးချက်",
+       "uploadwarning": "Upload á\80\90á\80\84á\80ºá\80\9bá\80¬á\80\90á\80½á\80\84á\80º á\80\9eá\80\90á\80­ပေးချက်",
        "savefile": "ဖိုင်သိမ်းရန်",
        "uploaddisabled": "Upload တင်ခြင်း ပိတ်ထားသည်။",
        "copyuploaddisabled": "URL လင့်မှ Upload တင်ခြင်း ပိတ်ထားသည်။",
index 5d05688..2b0c4a4 100644 (file)
@@ -14,7 +14,8 @@
                        "Macofe",
                        "V6rg",
                        "Nemo bis",
-                       "S4b1nuz E.656"
+                       "S4b1nuz E.656",
+                       "Ruthven"
                ]
        },
        "tog-underline": "Sottolinia 'e jonte:",
        "permissionserrorstext-withaction": "Nun haje premmesse abbastante pe' $2, {{PLURAL:$1|'o mutivo è chesto|'e mutive so' chiste}}:",
        "contentmodelediterror": "Vuje nun putite cagnà sta verziona pecché 'o mudell' 'e cuntenute è <code>$1</code>, ca cagnasse nu poco nfacc' 'o mudell' 'e mò d' 'a paggena è <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Attenziò: staje a crià na paggena scancellata già.'''\n\nVire si è bbuono 'e cuntinuà a cagnà sta paggena. L'elenco ch' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' ffà comodo:",
-       "moveddeleted-notice": "Sta paggena è stata scancellata.\nL'elenco d' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' n'avé nfurmazione.",
+       "moveddeleted-notice": "Sta paggena è stata scancellata.\n'A lista d' 'e relative scancellamiente e spustamente sta cca 'bbascio pe' n'avé 'nfurmazione.",
        "moveddeleted-notice-recent": "Scusate, sta mmasciata è stata scancellata mo mo (dint'a sti 24 ore).\n\nL'aziune 'e scancellazione e spustamento pe' sta paggena so dispunibbele ccà p' 'a cumpretezza.",
        "log-fulllog": "Vide log sano",
        "edit-hook-aborted": "'O cagnamiento è stato annullato 'a 'o «hook».\nNun dette spiegazione nisciuna.",
        "rcshowhidecategorization": "$1 categorizzaziona d' 'a paggena",
        "rcshowhidecategorization-show": "Faje vedé",
        "rcshowhidecategorization-hide": "Annascunne",
-       "rclinks": "Faje vedé ll'urdeme $1 cagnamiente dint' ll'urdeme $2 juorne",
+       "rclinks": "Faje vedé ll'urdeme $1 cagnamienti dint' ll'urdeme $2 juorne",
        "diff": "diff",
        "hist": "cron",
        "hide": "annascunne",
        "unwatchthispage": "Nun cuntrullà cchiù sta paggena",
        "notanarticle": "Chesta paggena nun è na voce",
        "notvisiblerev": "'A verzione è stata scancellata",
-       "watchlist-details": "L'elenco 'e paggene cuntrullate cuntene {{PLURAL:$1|na paggena (e pure 'a paggena 'e chiacchiera)|$1 paggene (e pure 'e paggene 'e chiacchiera}}.",
+       "watchlist-details": "L'elenco 'e paggene cuntrullate tene {{PLURAL:$1|na paggena (e pure 'a paggena 'e chiacchiera)|$1 paggene (e pure 'e ppaggene 'e chiacchiera}}.",
        "wlheader-enotif": "'A funzione 'e notifiche e-mail è appicciata.",
        "wlheader-showupdated": "* 'E paggene cca so' state cagnate a l'urdema visita avevano so' nzignate ccà 'n '''grassetto'''.",
        "wlnote": "Ccà abbascio {{PLURAL:$1|è elencato 'o cagnamiento cchiù ricente|songo elencate 'e <strong>$1</strong> cagnamiente cchiù recente}} {{PLURAL:$2|int'a ll'urdema ora|int' 'e ll'urdeme <strong>$2</strong> ore}}; 'e date songo agghiurnate 'o $3, $4.",
index 2398d33..331b019 100644 (file)
        "wrongpasswordempty": "Du oppga ikke noe passord. Prøv igjen.",
        "passwordtooshort": "Passord må ha minst {{PLURAL:$1|ett tegn|$1 tegn}}.",
        "passwordtoolong": "Passord kan ikke overskride {{PLURAL:$1|1 character|$1 characters}}.",
-       "passwordtoopopular": "Nylig valgt passord kan ikke brukes. Vennligst bruk et mer unikt passord.",
+       "passwordtoopopular": "Hyppig brukte passord kan ikke brukes. Vennligst bruk et mer unikt passord.",
        "password-name-match": "Passord og brukernavn kan ikke være det samme.",
        "password-login-forbidden": "Bruken av dette brukernavnet og passordet er forbudt.",
        "mailmypassword": "Tilbakestill passord",
        "expansion-depth-exceeded-warning": "Sida har overskredet ekspansjonsdybden",
        "parser-unstrip-loop-warning": "«Unstrip»-loop påvist",
        "unstrip-depth-warning": "Rekursjonsgrense for taggfjerning overskredet ($1)",
+       "unstrip-depth-category": "Sider hvor dybdegrensen for unstrip er nådd",
+       "unstrip-size-warning": "Størrelsesgrensen for unstrip er nådd ($1)",
+       "unstrip-size-category": "Sider hvor størrelsesgrensen for unstrip er nådd",
        "converter-manual-rule-error": "En feil ble oppdaget i en manuell språkkonverteringsregel",
        "undo-success": "Redigeringen kan omgjøres. Sjekk sammenligningen under for å bekrefte at du vil gjøre dette, og lagre endringene for å fullføre omgjøringen.",
        "undo-failure": "Redigeringen kunne ikke omgjøres på grunn av konflikterende etterfølgende redigeringer.",
        "stub-threshold-disabled": "Deaktivert",
        "recentchangesdays": "Antall dager som skal vises i siste endringer:",
        "recentchangesdays-max": "Maks $1 {{PLURAL:$1|dag|dager}}",
-       "recentchangescount": "Antall redigeringer som skal vises som standard:",
+       "recentchangescount": "Antall redigeringer som skal vises som standard i siste endringer, sidehistorikker og logger:",
        "prefs-help-recentchangescount": "Maksimalt antall: 1000",
        "prefs-help-watchlist-token2": "Dette er den hemmelige nøkkelen til webmatingen for din overvåkningsliste.\nEnhver som kjenner nøkkelen vil kunne lese din overvåkningsliste, så ikke vis den til andre.\nOm du trenger å gjøre det kan du [[Special:ResetTokens|nullstille nøkkelen]].",
        "savedprefs": "Innstillingene ble lagret.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "limitreport-expansiondepth": "Største ekspansjonsdybde",
        "limitreport-expensivefunctioncount": "Antall kostbare parserfunksjoner",
+       "limitreport-unstrip-depth": "Rekursjonsdybde for unstrip",
+       "limitreport-unstrip-size": "Størrelse for unstrip etter utvidelse",
        "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte}}",
        "expandtemplates": "Utvid maler",
        "expand_templates_intro": "Denne spesialsiden tar wikitekst og utvider rekusivt alle maler brukt i teksten. \nDen utvider også alle parserfunksjoner som \n<code><nowiki>{{</nowiki>#language:…}}</code>, og variabler som \n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nFaktisk utvider den det meste innkapslet i doble krøllparenteser.",
index 4296409..4aa51ac 100644 (file)
        "editfont-monospace": "Lettertype waorvan t tekenbreedte vaste steet",
        "editfont-sansserif": "Sans-seriflettertype",
        "editfont-serif": "Seriflettertype",
-       "sunday": "zundag",
-       "monday": "maondag",
-       "tuesday": "diensdag",
+       "sunday": "ndag",
+       "monday": "måndag",
+       "tuesday": "dinsdag",
        "wednesday": "woonsdag",
        "thursday": "donderdag",
-       "friday": "vriedag",
-       "saturday": "zaoterdag",
+       "friday": "vrydag",
+       "saturday": "terdag",
        "sun": "zun",
        "mon": "mao",
        "tue": "die",
@@ -80,9 +80,9 @@
        "thu": "don",
        "fri": "vrie",
        "sat": "zao",
-       "january": "jannewaori",
-       "february": "febrewaori",
-       "march": "meert",
+       "january": "janri",
+       "february": "febrri",
+       "march": "määrt",
        "april": "april",
        "may_long": "mei",
        "june": "juni",
@@ -91,7 +91,7 @@
        "september": "september",
        "october": "oktober",
        "november": "november",
-       "december": "desember",
+       "december": "december",
        "january-gen": "jannewaori",
        "february-gen": "febrewaori",
        "march-gen": "meert",
        "feb": "feb",
        "mar": "mrt",
        "apr": "apr",
-       "may": "mei",
+       "may": "mey",
        "jun": "jun",
        "jul": "jul",
        "aug": "aug",
        "sep": "sep",
        "oct": "okt",
        "nov": "nov",
-       "dec": "des",
+       "dec": "dec",
        "january-date": "$1 jannewaori",
        "february-date": "$1 febrewaori",
        "march-date": "$1 meert",
        "morenotlisted": "Disse lieste is niet kompleet...",
        "mypage": "Gebrukerszied",
        "mytalk": "Myn oaverleg",
-       "anontalk": "Overleg",
+       "anontalk": "Oaverleg",
        "navigation": "Navigasie",
        "and": "&#32;en",
        "faq": "Vragen die vake esteld wörden",
        "viewdeleted_short": "{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken",
        "protect": "Beveiligen",
        "protect_change": "wiezigen",
-       "unprotect": "Beveiliging wiezigen",
+       "unprotect": "Beveyliging wysigen",
        "newpage": "Nieje zied",
-       "talkpagelinktext": "Overleg",
+       "talkpagelinktext": "Oaverleg",
        "specialpage": "Spesiale zied",
        "personaltools": "Persoonlike instellingen",
        "talk": "Oaverleg",
        "youhavenewmessagesmanyusers": "Je hebben $1 van n bulte gebrukers ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|n niej bericht|999=nieje berichten}}",
        "newmessagesdifflinkplural": "leste {{PLURAL:$1|wieziging|999=wiezigingen}}",
-       "youhavenewmessagesmulti": "Je hebben nieje berichten op $1",
+       "youhavenewmessagesmulti": "Jy hebben nye berichten up $1",
        "editsection": "bewark",
        "editold": "bewark",
        "viewsourceold": "brontekste bekyken",
        "recentchanges-summary": "Op disse zied ku'j de leste wiezigingen van disse wiki bekieken.",
        "recentchanges-noresult": "Der waren in disse periode gien wiezigingen die an de kriteria voldoon.",
        "recentchanges-feed-description": "Zeuk naor de alderleste wiezingen op disse wiki in disse voer.",
-       "recentchanges-label-newpage": "Mit disse bewarking is n nieje zied an-emaakt",
-       "recentchanges-label-minor": "Dit is n kleine wieziging",
-       "recentchanges-label-bot": "Disse bewarking is uutevoerd deur n bot",
-       "recentchanges-label-unpatrolled": "Disse bewarking is nog niet nao-ekeken",
-       "recentchanges-label-plusminus": "Disse ziedgrootte is mit dit antal bytes ewiezigd",
+       "recentchanges-label-newpage": "Mid disse bewarking is een nye syde an-emaakt",
+       "recentchanges-label-minor": "Dit is een kleyne wysiging",
+       "recentchanges-label-bot": "Disse bewarking is uutevoord döär een bot",
+       "recentchanges-label-unpatrolled": "Disse bewarking is noch nyt nå-ekeaken",
+       "recentchanges-label-plusminus": "Disse sydegroutte is mid dit antal bytes ewysigd",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie oek de [[Special:NewPages|lieste mit nieje ziejen]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sy ouk de [[Special:NewPages|lyste mid nye syden]])",
        "recentchanges-submit": "Bekiek",
-       "rcfilters-legend-heading": "<strong>Lieste mit aofkortingen:</strong>",
+       "rcfilters-legend-heading": "<strong>Lyste mid ofkortingen:</strong>",
        "rcfilters-group-results-by-page": "Resultaoten per zied groeperen",
-       "rcfilters-activefilters": "Aktieve filters",
+       "rcfilters-activefilters": "Aktive filters",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|wysiging|wysigingen}}, $2",
        "rcfilters-days-title": "De leste dagen",
        "rcfilters-hours-title": "De leste uren",
-       "rcfilters-quickfilters": "Op-esleugen filterinstellingen",
-       "rcfilters-quickfilters-placeholder-title": "Nog gien verwiezingen op-esleugen",
-       "rcfilters-quickfilters-placeholder-description": "Um joew filterinstellingen op te slaon en t laoter te gebruken, klik op t bladwiezerikoon onderan bie \"Aktieve filter\".",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|dagen}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|uur|uren}}",
+       "rcfilters-quickfilters": "Up-eslöägen filters",
+       "rcfilters-quickfilters-placeholder-title": "Noch gyn filters up-eslöägen",
+       "rcfilters-quickfilters-placeholder-description": "Üm juuw filterinstellingen up te slån en et låter te gebruken, klik up et bladwyserikoon underan by \"Aktive filters\".",
        "rcfilters-savedqueries-apply-label": "Instellingen opslaon",
        "rcfilters-savedqueries-cancel-label": "Aofbreken",
-       "rcfilters-savedqueries-add-new-title": "Filterinstellingen opslaon",
+       "rcfilters-savedqueries-add-new-title": "Filterinstellingen upslån",
        "rcfilters-restore-default-filters": "Standardfilters weerummezetten",
        "rcfilters-clear-all-filters": "Alle filters vortdoon",
-       "rcfilters-search-placeholder": "Filter leste wiezigingen (blaojer of begin mit intypen)",
-       "rcfilters-filterlist-feedbacklink": "Geef kommentaar op de nieje (bèta)filters",
-       "rcfilters-highlightbutton-title": "Resultaoten markeren",
+       "rcfilters-search-placeholder": "Filter wysigingen (gebruuk et menu of söök up filtername)",
+       "rcfilters-filterlist-feedbacklink": "Låt uns weaten wat jy van disse (nye) filterhülpmiddels vinden",
+       "rcfilters-highlightbutton-title": "Resultåten markeren",
        "rcfilters-highlightmenu-title": "Kies n kleur",
+       "rcfilters-filtergroup-userExpLevel": "Gebrukersanmelding en ervåring",
+       "rcfilters-filter-user-experience-level-registered-label": "An-emeld",
+       "rcfilters-filter-user-experience-level-registered-description": "An-emelde bewarkers.",
+       "rcfilters-filter-user-experience-level-unregistered-label": "Nyt an-emeld",
+       "rcfilters-filter-user-experience-level-unregistered-description": "Bewarkers dy nyt an-emeld binnen.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Anwas",
+       "rcfilters-filter-user-experience-level-newcomer-description": "An-emelde bewarkers dy minder as 10 bewarkingen edån hebben of 4 dagen aktiv ewest binnen.",
+       "rcfilters-filter-user-experience-level-learner-label": "Learlingen",
+       "rcfilters-filter-user-experience-level-learner-description": "An-emelde bewarkers mid meer ervåring as \"anwas\", mär minder as \"ervåren gebrukers\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Ervåren gebrukers",
+       "rcfilters-filter-user-experience-level-experienced-description": "An-emelde bewarkers mid meer as 500 bewarkingen en 30 dagen van aktiviteyt.",
        "rcfilters-filter-bots-label": "Bot",
-       "rcfilters-filter-humans-label": "Meenselik (gien bot)",
-       "rcfilters-filter-humans-description": "Bewarkingen deur meenselike bewarkers.",
+       "rcfilters-filter-humans-label": "Meanskelik (gyn bot)",
+       "rcfilters-filter-humans-description": "Bewarkingen döär meanskelike bewarkers.",
        "rcfilters-filtergroup-reviewstatus": "Beoordelingsstaotus",
        "rcfilters-filter-patrolled-label": "Nao-ekeken",
        "rcfilters-filter-unpatrolled-label": "Niet nao-ekeken",
        "rcfilters-filtergroup-significance": "Petansie",
-       "rcfilters-filter-minor-label": "Kleine bewarkingen",
-       "rcfilters-filter-major-label": "Gien kleine bewarking",
+       "rcfilters-filter-minor-label": "Kleyne bewarkingen",
+       "rcfilters-filter-major-label": "Gyn kleyne bewarking",
        "rcfilters-filter-major-description": "Bewarkingen niet emarkeerd as klein.",
        "rcfilters-filtergroup-watchlist": "Evolgde ziejen",
        "rcfilters-filter-watchlist-watched-label": "Op de volglieste",
        "rcfilters-filter-watchlist-watchednew-label": "Nieje volgliestwiezigingen",
        "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglieste",
        "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wiezigingen an ziejen die op joew volglieste staon.",
-       "rcfilters-filter-pageedits-label": "Ziedbewarkingen",
-       "rcfilters-filter-newpages-label": "Nieje ziejen",
-       "rcfilters-filter-newpages-description": "Bewarkingen waormee'j een nieje zied anmaken.",
-       "rcfilters-filter-categorization-label": "Kategoriewiezigingen",
-       "rcfilters-filter-logactions-label": "Eregistreerden aksies",
-       "rcfilters-filtergroup-lastRevision": "Leste versie",
-       "rcfilters-filter-lastrevision-label": "Leste versie",
-       "rcfilters-filter-previousrevision-label": "Eerdere versies",
-       "rcfilters-liveupdates-button": "Rechtstreekse aktualisering",
+       "rcfilters-filter-pageedits-label": "Sydebewarkingen",
+       "rcfilters-filter-pageedits-description": "Wysigingen an de wiki-inhold, diskussys, kategorybeskryvingen…",
+       "rcfilters-filter-newpages-label": "Nye syden",
+       "rcfilters-filter-newpages-description": "Bewarkingen wårmead jy een nye syde anmaken.",
+       "rcfilters-filter-categorization-label": "Kategorywysigingen",
+       "rcfilters-filter-categorization-description": "Upgave van syden dy tovoogd of vortedån wörden uut kategoryen.",
+       "rcfilters-filter-logactions-label": "Eregistreerde aktys",
+       "rcfilters-filtergroup-lastRevision": "Lätste versys",
+       "rcfilters-filter-lastrevision-label": "Lätste versy",
+       "rcfilters-filter-lastrevision-description": "Allinnig de lätste wysiging an een syde.",
+       "rcfilters-filter-previousrevision-label": "Nyt de lätste versy",
+       "rcfilters-filter-previousrevision-description": "Alle wysigingen dy nyt de \"lätste versy\" binnen.",
+       "rcfilters-view-namespaces-tooltip": "Filter resultåten up naamruumte",
+       "rcfilters-view-tags-tooltip": "Filter resultåten döär gebruuk te maken van bewarkingsetiketten",
+       "rcfilters-liveupdates-button": "Rechtstreakse aktualisering",
        "rcfilters-liveupdates-button-title-off": "Nieje wiezigingen voortdalik laoten zien",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhidecategorization-show": "Bekiek",
        "rcshowhidecategorization-hide": "Verbarg",
        "rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen",
-       "diff": "wiez",
-       "hist": "gesch",
+       "diff": "verskil",
+       "hist": "geskydenisse",
        "hide": "verbarg",
        "show": "bekiek",
        "minoreditletter": "K",
        "newpages-submit": "Bekiek",
        "newpages-username": "Gebrukersnaam:",
        "ancientpages": "Oudste artikels",
-       "move": "Herneumen",
+       "move": "Hernömen",
        "movethispage": "Herneum",
        "unusedimagestext": "Vergeet niet dat aandere wiki's misschien oek n antal van disse bestaanden gebruken.\n\nDe volgende bestaanden bin op-estuurd mer niet in gebruuk.\nt Kan ween dat der drekt verwezen wörden naor n bestaand.\nn Bestaand kan hier dus verkeerd op-eneumen ween.",
        "unusedcategoriestext": "De onderstaonde kategorieën bin an-emaakt mer bin niet in gebruuk.",
        "sp-contributions-deleted": "vortedaone gebrukersbiedragen",
        "sp-contributions-uploads": "nieje bestaanden",
        "sp-contributions-logs": "logboeken",
-       "sp-contributions-talk": "overleg",
+       "sp-contributions-talk": "oaverleg",
        "sp-contributions-userrights": "gebrukersrechtenbeheer",
        "sp-contributions-blocked-notice": "Disse gebruker is op t moment eblokkeerd.\nDe leste regel uut t blokkeerlogboek steet hieronder as referensie:",
        "sp-contributions-blocked-notice-anon": "Dit IP-adres is eblokkeerd.\nDe leste regel uut t blokkeerlogboek steet as referensie",
        "watchlisttools-view": "Wiezigingen bekieken",
        "watchlisttools-edit": "Volglieste bekieken en bewarken",
        "watchlisttools-raw": "Volglieste as tekstlieste bewarken",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|overleg]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|oaverleg]])",
        "duplicate-defaultsort": "Waorschuwing: de standardsortering \"$2\" krig veurrang veur de sortering \"$1\".",
        "version": "Versie",
        "version-extensions": "Uutbreidingen die installeerd bin",
index 00f4ee7..8baefda 100644 (file)
        "cascadeprotected": "Deze pagina kan niet bewerkt worden, omdat ze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:\n$2",
        "namespaceprotected": "U hebt geen rechten om pagina's in de naamruimte <strong>$1</strong> te bewerken.",
        "customcssprotected": "U kunt deze CSS-pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.",
+       "customjsonprotected": "U kunt deze JSONpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.",
        "customjsprotected": "U kunt deze JavaScriptpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.",
        "mycustomcssprotected": "U hebt geen rechten om deze CSS-pagina te bewerken.",
+       "mycustomjsonprotected": "U hebt geen rechten om deze JSONpagina te bewerken.",
        "mycustomjsprotected": "U hebt geen rechten om deze JavaScriptpagina te bewerken.",
        "myprivateinfoprotected": "U hebt geen rechten om uw privégegevens te bewerken.",
        "mypreferencesprotected": "U hebt geen rechten om uw voorkeuren aan te passen.",
        "wrongpasswordempty": "Het opgegeven wachtwoord was leeg.\nProbeer het opnieuw.",
        "passwordtooshort": "Wachtwoorden moeten uit minstens {{PLURAL:$1|$1 teken|$1 tekens}} bestaan.",
        "passwordtoolong": "Wachtwoorden kunnen niet langer zijn dan {{PLURAL:$1|één teken|$1 tekens}}.",
-       "passwordtoopopular": "Vaak gekozen wachtwoorden kunnen niet worden gebruikt. Kies een unieker wachtwoord.",
+       "passwordtoopopular": "Veel gekozen wachtwoorden kunnen niet worden gebruikt. Kies een wachtwoord dat lastiger kan worden geraden.",
        "password-name-match": "Uw wachtwoord en uw gebruikersnaam mogen niet overeenkomen.",
        "password-login-forbidden": "Het gebruik van deze gebruikersnaam met dit wachtwoord is niet toegestaan.",
        "mailmypassword": "Nieuw wachtwoord e-mailen",
        "savechanges": "Wijzigingen opslaan",
        "publishpage": "Pagina publiceren",
        "publishchanges": "Wijzigingen publiceren",
+       "savearticle-start": "Pagina opslaan...",
+       "savechanges-start": "Wijzigingen opslaan...",
+       "publishpage-start": "Pagina publiceren...",
+       "publishchanges-start": "Wijzigingen publiceren...",
        "preview": "Voorvertoning",
        "showpreview": "Bewerking ter controle bekijken",
        "showdiff": "Wijzigingen bekijken",
        "blocked-notice-logextract": "Deze gebruiker is momenteel geblokkeerd.\nDe laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:",
        "clearyourcache": "<strong>Opmerking:</strong> nadat u de wijzigingen hebt opgeslagen is het wellicht nodig uw browsercache te legen.\n* <strong>Firefox / Safari:</strong> houd <em>Shift</em> ingedrukt terwijl u op <em>Vernieuwen</em> klikt of druk op <em>Ctrl-F5</em> of <em>Ctrl-R</em> (<em>⌘-Shift-R</em> op een Mac)\n* <strong>Google Chrome:</strong> druk op <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> op een Mac)\n* <strong>Internet Explorer:</strong> houd <em>Ctrl</em> ingedrukt terwijl u op <em>Vernieuwen</em> klikt of druk op <em>Ctrl-F5</em>\n* '''Opera:''' ga naar <em>Menu → Instellingen</em> (<em>Opera → Voorkeuren</em> op een Mac) en daarna naar <em>Privacy & beveiliging → Browsegegevens wissen... →  Tijdelijk opgeslgen afbeeldingen en bestanden</em>.",
        "usercssyoucanpreview": "'''Tip:''' gebruik de knop \"{{int:showpreview}}\" om uw nieuwe CSS te testen alvorens op te slaan.",
+       "userjsonyoucanpreview": "'''Tip:''' gebruik de knop \"{{int:showpreview}}\" om uw nieuwe JSON te testen alvorens op te slaan.",
        "userjsyoucanpreview": "'''Tip:''' gebruik de knop \"{{int:showpreview}}\" om uw nieuwe JavaScript te testen alvorens op te slaan.",
        "usercsspreview": "'''Dit is alleen een voorvertoning van uw persoonlijke CSS.'''\n'''Deze is nog niet opgeslagen!'''",
+       "userjsonpreview": "<strong>Let op: u test nu uw persoonlijke JSON.\nDe pagina is niet opgeslagen!</strong>",
        "userjspreview": "'''Let op: u test nu uw persoonlijke JavaScript.'''\n'''De pagina is niet opgeslagen!'''",
        "sitecsspreview": "'''Dit is alleen een voorvertoning van de CSS.'''\n'''Deze is nog niet opgeslagen!'''",
+       "sitejsonpreview": "<strong>Dit is alleen een voorvertoning van de JSON configuratie.\nDeze is nog niet opgeslagen!</strong>",
        "sitejspreview": "'''Dit is alleen een voorvertoning van de JavaScriptcode.'''\n'''Deze is nog niet opgeslagen!'''",
-       "userinvalidconfigtitle": "'''Waarschuwing:''' er is geen uiterlijk \"$1\".\nUw eigen .css- en .js-pagina's beginnen met een kleine letter, bijvoorbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Waarschuwing:</strong>''' er is geen vormgeving \"$1\".\nUw eigen .css-, .json- en .js-pagina's beginnen met een kleine letter, bijvoorbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
        "updated": "(Bijgewerkt)",
        "note": "<strong>Opmerking:</strong>",
        "previewnote": "'''Let op: dit is een controlepagina.'''\nUw tekst is niet opgeslagen!",
        "default": "standaard",
        "prefs-files": "Bestanden",
        "prefs-custom-css": "Aangepaste CSS",
-       "prefs-custom-js": "Aangepast JavaScript",
-       "prefs-common-config": "Gedeelde CSS/JavaScript voor elke vormgeving:",
+       "prefs-custom-json": "Aangepaste JSON",
+       "prefs-custom-js": "Aangepaste JavaScript",
+       "prefs-common-config": "Gedeelde CSS/JSON/JavaScript voor elke vormgeving:",
        "prefs-reset-intro": "Gebruik deze functie om uw voorkeuren te herstellen naar de standaardinstellingen.\nDeze handeling kan niet ongedaan gemaakt worden.",
        "prefs-emailconfirm-label": "E-mailbevestiging:",
        "youremail": "E-mailadres:",
        "right-editcontentmodel": "Het paginainhoudmodel bewerken",
        "right-editinterface": "De gebruikersinterface bewerken",
        "right-editusercss": "De CSS-bestanden van andere gebruikers bewerken",
+       "right-edituserjson": "De JSONbestanden van andere gebruikers bewerken",
        "right-edituserjs": "De JavaScriptbestanden van andere gebruikers bewerken",
        "right-editmyusercss": "Uw eigen CSS-pagina's bewerken",
+       "right-editmyuserjson": "Uw eigen JSonpagina's bewerken",
        "right-editmyuserjs": "Uw eigen JavaScriptpagina's bewerken",
        "right-viewmywatchlist": "Uw eigen volglijst bekijken",
        "right-editmywatchlist": "Uw eigen volglijst bewerken. Via sommige handelingen kunnen nog steeds pagina's toegevoegd worden, zelfs zonder deze bevoegdheid",
        "grant-createaccount": "Accounts aanmaken",
        "grant-createeditmovepage": "Pagina's aanmaken, bewerken en hernoemen",
        "grant-delete": "Pagina's, wijzigingen en logboekregels verwijderen",
-       "grant-editinterface": "De naamruimte MediaWiki en CSS en JavaScript van gebruikers bewerken",
-       "grant-editmycssjs": "Eigen CSS en JavaScript bewerken",
+       "grant-editinterface": "De naamruimte MediaWiki en CSS, JSON en JavaScript van gebruikers bewerken",
+       "grant-editmycssjs": "Eigen CSS, JSON en JavaScript bewerken",
        "grant-editmyoptions": "Eigen voorkeuren instellen",
        "grant-editmywatchlist": "Eigen volglijst bewerken",
        "grant-editpage": "Bestaande pagina's bewerken",
        "group-bot.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op robots */",
        "group-sysop.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op beheerders */",
        "group-bureaucrat.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op bureaucraten */",
+       "common.json": "/* JSON die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */",
        "common.js": "/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */",
        "group-autoconfirmed.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */",
        "group-user.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op geregistreerde gebruikers */",
        "unlinkaccounts-success": "Het account is ontkoppeld.",
        "authenticationdatachange-ignored": "De wijziging van de authenticatiegegevens is niet afgehandeld. Misschien is er geen provider geconfigureerd?",
        "userjsispublic": "Let op: JavaScript deelpagina's moeten geen vertrouwelijke gegevens bevatten omdat ze kunnen worden bekeken door andere gebruikers.",
+       "userjsonispublic": "Let op: JSON deelpagina's moeten geen vertrouwelijke gegevens bevatten omdat ze kunnen worden bekeken door andere gebruikers.",
        "usercssispublic": "Let op: CSS deelpagina's moeten geen vertrouwelijke gegevens bevatten omdat ze kunnen worden bekeken door andere gebruikers.",
        "restrictionsfield-badip": "Ongeldig IP-adres of range: $1",
        "restrictionsfield-label": "Toegestane IP-ranges:",
index 4527809..0e3e25b 100644 (file)
        "tag-filter-submit": "Filtrer",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Merke}}]]: $2)",
        "tag-mw-contentmodelchange": "endring av innhaldsmodell",
+       "tag-mw-contentmodelchange-description": "Endringar som [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel byter innhaldsmodellen] til ei side",
        "tag-mw-new-redirect": "Ny omdirigering",
+       "tag-mw-new-redirect-description": "Endringar som opprettar ei ny omdirigering eller gjer ei side om til ei omdirigering",
        "tag-mw-removed-redirect": "Fjerna omdirigering",
+       "tag-mw-removed-redirect-description": "Endringar som gjer om ei omdirigering til ei ikkje-omdirigering",
        "tag-mw-changed-redirect-target": "Omdirigeringsmål endra",
        "tag-mw-changed-redirect-target-description": "Endringar som endrar målet til ei omdirigering",
        "tag-mw-blank-description": "Endringar som tømmer ei side",
        "tag-mw-replace": "Bytte ut innhald",
        "tag-mw-replace-description": "Endringar som fjernar meir enn 90&nbsp;% av innhaldet på ei side",
        "tag-mw-rollback": "Attenderulling",
+       "tag-mw-rollback-description": "Endringar som rullar attende tidlegare endringar ved hjelp av attenderullingslenkja",
        "tag-mw-undo": "Endringsfjerning",
+       "tag-mw-undo-description": "Endringar som fjernar tidlegare endringar med fjernelenkja",
        "tags-title": "Merke",
        "tags-intro": "Denne sida listar opp merka som programvara kan merkja ei endring med, og kva desse tyder.",
        "tags-tag": "Merkenamn",
index 731c447..350aba9 100644 (file)
@@ -18,7 +18,9 @@
                        "Xð",
                        "Nicolas Eynaud",
                        "Fitoschido",
-                       "Vriullop"
+                       "Vriullop",
+                       "Unuaiga",
+                       "Guilhelma"
                ]
        },
        "tog-underline": "Soslinhar los ligams :",
        "cascadeprotected": "Aquesta pagina es protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta qu'es estada protegida|las paginas seguentas que son estadas protegidas}} amb l’opcion « proteccion en cascada » activada :\n$2",
        "namespaceprotected": "Avètz pas la permission de modificar las paginas de l’espaci de noms « '''$1''' ».",
        "customcssprotected": "Avètz pas la permission d'editar aquesta pagina CSS perque conten de preferéncias d’autres utilizaires.",
+       "customjsonprotected": "Avètz pas la permission d'editar aquesta pagina JSON perque conten las preferéncias d’un autre utilizator.",
        "customjsprotected": "Avètz pas la permission d'editar aquesta pagina JavaScript perque conten de preferéncias d’autres utilizaires.",
        "mycustomcssprotected": "Avètz pas lo dreit de modificar aquesta pagina CSS.",
+       "mycustomjsonprotected": "Avètz pas la permission de modificar aquesta pagina JSON.",
        "mycustomjsprotected": "Avètz pas lo dreit de modificar aquesta pagina JavaScript.",
        "myprivateinfoprotected": "Avètz pas los dreits per modificar vòstras informacions personalas.",
        "mypreferencesprotected": "Avètz pas los dreits per modificar vòstras preferéncias.",
        "savechanges": "Enregistrar los cambiaments",
        "publishpage": "Publicar la pagina",
        "publishchanges": "Publicar las modificacions",
+       "savearticle-start": "Enregistrar la pagina...",
+       "savechanges-start": "Enregistrar las modificacions",
+       "publishpage-start": "Publicar la pagina",
+       "publishchanges-start": "Publicar las modificacions...",
        "preview": "Previsualizar",
        "showpreview": "Previsualizar",
        "showdiff": "Veire los cambiaments",
        "blocked-notice-logextract": "Aqueste utilizaire es actualament blocat.\nLa darrièra entrada del jornal dels blocatges es indicada çaijós a títol d’informacion :",
        "clearyourcache": "<strong>Nòta</strong>: Aprèp aver enregistrat vòstras modificacions, es possible que vos calga forçar lo recargament complet de l'escondedor de vòstre navigador per veire los cambiaments : \n* <strong>Firefox / Safari :</strong> mantenètz la tòca <em>Maj</em> (<em>Shift</em>) en clicant lo boton <em>Actualizar</em> o quichatz sus <em>Ctrl-F5</em> o <em>Ctrl-R</em>  (<em>⌘-R</em> sus un Mac)\n* <strong>Google Chrome :</strong> Quichatz sus <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> sus un Mac) \n* <strong>Internet Explorer :</strong> Mantenètz la tòca <em>Ctrl</em> en clicant sul boton <em>Actualizar</em>, o quichatz <em>Ctrl-F5</em> \n* <strong>Opera :</strong> anatz dins <em>Menú → Settings</em> (<em>Opera → Preferéncias</em> sus un Mac) e puèi a <em>Confidencialitat & seguretat → Escafar las donadas d’exploracion → Imatges e fichièrs en cache</em>.",
        "usercssyoucanpreview": "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh css/js novèl abans de l'enregistrar.",
+       "userjsonyoucanpreview": "<strong>Astúcia :</strong> Utilizatz lo boton \"{{int:showpreview}}\" per testar vòstre novèl JSON abans de salvar.",
        "userjsyoucanpreview": "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh css/js novèl abans de l'enregistrar.",
        "usercsspreview": "'''Remembratz-vos que sètz a previsualizar vòstre pròpri fuèlh CSS !'''\n'''Es pas estada encara enregistrada !'''",
+       "userjsonpreview": "Remembratz-vos que sètz a testar vòstre configuracion  utilizaire JSON\nEs pas encara estada enregistrada !",
        "userjspreview": "'''Remembratz-vos que sètz a visualizar o testar vòstre còdi JavaScript e qu’es pas encara estat enregistrat !'''",
        "sitecsspreview": "'''Remembratz-vos que sètz a previsualizar vòstre pròpri fuèlh CSS !'''\n'''Es pas estada encara enregistrada !'''",
+       "sitejsonpreview": "<strong>Remembratz-vos que fasètz pas que previsualizar aquesta configuracion JSON.\nEs pas encara estada salvagardada !</strong>",
        "sitejspreview": "'''Remembratz-vos que sètz a visualizar o testar vòstre còdi JavaScript e qu’es pas encara estat enregistrat !'''",
        "userinvalidconfigtitle": "'''Atencion :''' existís pas d'estil « $1 ». Remembratz-vos que las paginas personalas amb extensions .css e .js utilizan de títols en minusculas, per exemple, {{ns:user}}:Foo/vector.css e non pas {{ns:user}}:Foo/Vector.css.",
        "updated": "(Mes a jorn)",
        "default": "defaut",
        "prefs-files": "Fichièrs",
        "prefs-custom-css": "CSS personalizat",
+       "prefs-custom-json": "JSON personalizat",
        "prefs-custom-js": "JS personalizat",
-       "prefs-common-config": "JavaScript e CSS partejat per totes los abilhatges :",
+       "prefs-common-config": "JavaScript, CSS e JSON partejat per totes los abilhatges :",
        "prefs-reset-intro": "Podètz utilizar aquesta pagina per restablir vòstras preferéncias a las valors per defaut del site. Aquò pòt pas èsser desfait.",
        "prefs-emailconfirm-label": "Confirmacion del corrièr electronic :",
        "youremail": "Adreça de corrièr electronic :",
        "right-editcontentmodel": "Modificar lo modèl de contengut d’una pagina",
        "right-editinterface": "Modificar l'interfàcia d'utilizaire",
        "right-editusercss": "Modificar los fichièrs CSS d'autres utilizaires",
+       "right-edituserjson": "Modificar los fichièrs JSON dels autres utilizators",
        "right-edituserjs": "Modificar los fichièrs JS d'autres utilizaires",
        "right-editmyusercss": "Modificar vòstres pròpris fichièrs CSS utilizaire",
+       "right-editmyuserjson": "Modificar vòstres fichièrs JSON d'utilizator pròpris",
        "right-editmyuserjs": "Modificar vòstres pròpris fichièrs JavaScript utilizaire",
        "right-viewmywatchlist": "Afichar vòstra pròpria lista de seguiment",
        "right-editmywatchlist": "Modificar vòstra pròpria lista de seguiment. Remarcatz que certanas accions apondràn encara de paginas sens aqueste dreit.",
        "grant-blockusers": "Blocar e desblocar d'utilizaires",
        "grant-createaccount": "Crear de comptes",
        "grant-createeditmovepage": "Crear, modificar e desplaçar de paginas",
+       "grant-editinterface": "Modificar l'espaci de noms de MediaWiki e lo CSS/JSON/Javascript",
+       "grant-editmycssjs": "Modificar vòstre CSS/JSON/JavaScript utilizator",
        "grant-editmyoptions": "Modificar vòstras preferéncias d'utilizaire",
        "grant-editpage": "Modificar de paginas existentas",
        "grant-editprotected": "Modificar de paginas protegidas",
        "tooltip-summary": "Apondètz un brèu resumit",
        "common.css": "/** Lo CSS plaçat aicí serà aplicat a totas las aparéncias. */",
        "print.css": "/* Lo CSS plaçat aicí afectarà las impressions */",
+       "common.json": "/* Qual JSON que siá aquí serà cargat per totes los utilizators sus cada pagina cargada. */",
        "common.js": "/* Tot JavaScript serà cargat amb cada pagina accedida per un utilizaire quin que siá. */",
        "anonymous": "{{PLURAL:$1|Utilizaire anonim|Utilizaires anonims}} de {{SITENAME}}",
        "siteuser": "Utilizaire $1 de {{SITENAME}}",
        "linkaccounts": "Ligar los comptes",
        "linkaccounts-success-text": "Lo compte es estat ligat.",
        "linkaccounts-submit": "Ligar los comptes",
+       "userjsonispublic": "De notar : las jos-paginas JSON devon pas contenir de donadas confidencialas perque d'autres utilizators las pòdon veire.",
        "restrictionsfield-badip": "Adreça IP o plaja invalida : $1",
        "revid": "version $1",
        "pageid": "ID de pagina $1"
index 59f6584..df6fd9e 100644 (file)
        "redirectedfrom": "(Przekierowano z $1)",
        "redirectpagesub": "Strona przekierowująca",
        "redirectto": "Przekierowanie do:",
-       "lastmodifiedat": "Tę stronę ostatnio edytowano $2, $1.",
+       "lastmodifiedat": "Tę stronę ostatnio edytowano $1, $2.",
        "viewcount": "Tę stronę obejrzano {{PLURAL:$1|tylko raz|$1 razy}}.",
        "protectedpage": "Strona zabezpieczona",
        "jumpto": "Skocz do:",
        "cascadeprotected": "Ta strona została zabezpieczona przed edycją, ponieważ jest ona zawarta na {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:\n$2",
        "namespaceprotected": "Nie masz uprawnień do edytowania stron w przestrzeni nazw '''$1'''.",
        "customcssprotected": "Nie jesteś uprawniony do edytowania tej strony CSS, ponieważ zawiera ona ustawienia osobiste innego użytkownika.",
+       "customjsonprotected": "Nie jesteś uprawniony do edytowania tej strony JSON, ponieważ zawiera ona ustawienia osobiste innego użytkownika.",
        "customjsprotected": "Nie jesteś uprawniony do edytowania tej strony JavaScript, ponieważ zawiera ona ustawienia osobiste innego użytkownika.",
        "mycustomcssprotected": "Nie masz uprawnień do edytowania tej strony CSS.",
+       "mycustomjsonprotected": "Nie masz uprawnień do edytowania tej strony JSON.",
        "mycustomjsprotected": "Nie masz uprawnień do edytowania tej strony JavaScript.",
        "myprivateinfoprotected": "Nie masz uprawnień do edytowania swoich prywatnych danych.",
        "mypreferencesprotected": "Nie masz uprawnień do edytowania swoich preferencji.",
        "savechanges": "Zapisz zmiany",
        "publishpage": "Opublikuj stronę",
        "publishchanges": "Opublikuj zmiany",
+       "savearticle-start": "Zapisz stronę...",
+       "savechanges-start": "Zapisz zmiany...",
+       "publishpage-start": "Opublikuj stronę...",
+       "publishchanges-start": "Opublikuj zmiany...",
        "preview": "Podgląd",
        "showpreview": "Pokaż podgląd",
        "showdiff": "Podgląd zmian",
        "blocked-notice-logextract": "{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} jest obecnie {{GENDER:$1|zablokowany|zablokowana}}.\nOstatni wpis rejestru blokad jest pokazany poniżej.",
        "clearyourcache": "<strong>Uwaga:</strong> aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.\n* <strong>Firefox / Safari:</strong> Przytrzymaj <em>Shift</em> podczas klikania <em>Odśwież bieżącą stronę</em>, lub naciśnij klawisze <em>Ctrl+F5</em> lub <em>Ctrl+R</em> (<em>⌘-R</em> na komputerze Mac)\n* <strong>Google Chrome:</strong> Naciśnij <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na komputerze Mac)\n* <strong>Internet Explorer:</strong> Przytrzymaj <em>Ctrl</em>, jednocześnie klikając <em>Odśwież</em>, lub naciśnij klawisze <em>Ctrl+F5</em>\n* <strong>Opera:</strong> Przejdź do <em>Menu → Ustawienia</em> (<em>Opera → Preferencje</em> w Mac), a następnie <em>Prywatność i bezpieczeństwo → Wyczyść dane przeglądania → Opróżnij pamięć podręczną</em>.",
        "usercssyoucanpreview": "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy arkusz stylów CSS przed jego zapisaniem.",
+       "userjsonyoucanpreview": "<strong>Podpowiedź:</strong>Użyj przycisku „{{int:showpreview}}”, aby przetestować nowy JSON przed jego zapisaniem.",
        "userjsyoucanpreview": "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy kod JavaScript przed jego zapisaniem.",
        "usercsspreview": "'''Pamiętaj, że to tylko podgląd arkusza stylów CSS – nic jeszcze nie zostało zapisane!'''",
+       "userjsonpreview": "<strong>Pamiętaj że teraz tylko testujesz lub wyświetlasz podgląd swojej konfiguracji użytkownika w JSON.\nZawartość nie została jeszcze zapisana!</strong>",
        "userjspreview": "'''Pamiętaj, że to tylko podgląd Twojego kodu JavaScript – nic jeszcze nie zostało zapisane!'''",
        "sitecsspreview": "'''Pamiętaj, że to tylko podgląd arkusza stylów CSS.'''\n'''Zmiany nie zostały jeszcze zapisane!'''",
+       "sitejsonpreview": "<strong>Pamiętaj że teraz tylko wyświetlasz podgląd tej konfiguracji w JSON.\nZawartość nie została jeszcze zapisana!</strong>",
        "sitejspreview": "'''Pamiętaj, że to tylko podgląd kodu JavaScript.'''\n'''Zmiany nie zostały jeszcze zapisane!'''",
-       "userinvalidconfigtitle": "'''Uwaga:''' Brak skórki o nazwie „$1”.\nStrony użytkownika zawierające CSS i JavaScript powinny zaczynać się małą literą, np. {{ns:user}}:Foo/vector.css, w przeciwieństwie do nieprawidłowego {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Uwaga:</strong> Brak skórki o nazwie „$1”.\nStrony użytkownika zawierające CSS, JSON i JavaScript powinny zaczynać się małą literą, np. {{ns:user}}:Foo/vector.css, w przeciwieństwie do nieprawidłowego {{ns:user}}:Foo/Vector.css.",
        "updated": "(Zmodyfikowano)",
        "note": "'''Uwaga:'''",
        "previewnote": "<strong>To jest tylko podgląd.</strong>\nZmiany nie zostały jeszcze zapisane!",
        "default": "domyślnie",
        "prefs-files": "Pliki",
        "prefs-custom-css": "własny CSS",
+       "prefs-custom-json": "Własny JSON",
        "prefs-custom-js": "własny JavaScript",
-       "prefs-common-config": "Wspólny CSS/JS dla wszystkich skórek:",
+       "prefs-common-config": "Wspólny CSS/JSON/JS dla wszystkich skórek:",
        "prefs-reset-intro": "Na tej stronie można przywrócić domyślne ustawienia preferencji dla tej witryny.\nTej operacji nie można później cofnąć.",
        "prefs-emailconfirm-label": "Potwierdzenie adresu e‐mail:",
        "youremail": "Twój adres e‐mail:",
        "right-editcontentmodel": "Edycja modelu zawartości strony",
        "right-editinterface": "Edycja interfejsu użytkownika",
        "right-editusercss": "Edycja plików CSS innych użytkowników",
+       "right-edituserjson": "Edycja plików JSON innych użytkowników",
        "right-edituserjs": "Edycja plików JS innych użytkowników",
        "right-editmyusercss": "Edycja swoich plików CSS",
+       "right-editmyuserjson": "Edycja swoich plików JSON",
        "right-editmyuserjs": "Edycja swoich plików JavaScript",
        "right-viewmywatchlist": "Podgląd swojej listy obserwowanych stron",
        "right-editmywatchlist": "Edycja swojej listy obserwowanych stron. Niektóre akcje mogą dodawać strony do obserwowanych bez tego uprawnienia.",
        "grant-createaccount": "Tworzenie kont",
        "grant-createeditmovepage": "Tworzenie, edycja i przenoszenie stron",
        "grant-delete": "Usuwanie stron, wersji stron i wpisów rejestru",
-       "grant-editinterface": "Edycja przestrzeni nazw MediaWiki oraz CSS/JavaScript użytkownika",
-       "grant-editmycssjs": "Edycja swoich plików CSS/JavaScript",
+       "grant-editinterface": "Edycja przestrzeni nazw MediaWiki oraz CSS/JSON/JavaScript użytkownika",
+       "grant-editmycssjs": "Edycja swoich plików CSS/JSON/JavaScript",
        "grant-editmyoptions": "Edycja swoich preferencji",
        "grant-editmywatchlist": "Edycja listy obserwowanych",
        "grant-editpage": "Edycja istniejących stron",
        "group-bot.css": "/* CSS tutaj umieszczony będzie obowiązywał tylko dla botów */",
        "group-sysop.css": "/* Umieszczony tutaj kod CSS dotyczyć będzie tylko administratorów */",
        "group-bureaucrat.css": "/* Umieszczony tutaj kod CSS dotyczyć będzie tylko biurokratów */",
+       "common.json": "/* Umieszczony tutaj JSON zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony. */",
        "common.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony. */",
        "anonymous": "{{PLURAL:$1|Anonimowy użytkownik|Anonimowi użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}",
        "siteuser": "{{GENDER:$2|użytkownik|użytkowniczka}} {{GRAMMAR:D.lp|{{SITENAME}}}} – $1",
        "unlinkaccounts": "Odłącz konta",
        "unlinkaccounts-success": "Konta zostały odłączone.",
        "userjsispublic": "Uwaga: Podstrony z kodem JavaScript są widoczne publicznie i nie powinny zawierać poufnych danych.",
+       "userjsonispublic": "Uwaga: podstrony JSON nie powinny zawierać poufnych danych, ponieważ są dostępne dla innych użytkowników.",
        "usercssispublic": "Uwaga: Podstrony z kodem CSS są widoczne publicznie i nie powinny zawierać poufnych danych.",
        "restrictionsfield-badip": "Nieprawidłowy adres IP lub zakres adresów: $1",
        "restrictionsfield-label": "Dozwolone zakresy adresów IP:",
index 6abbc0a..d5837d9 100644 (file)
                        "BarbaraAckles",
                        "Trigonometria87",
                        "RadiX",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Ed g2s"
                ]
        },
        "tog-underline": "Ligação sublinhada:",
        "cascadeprotected": "Esta página foi protegida contra edições porque é transcluída {{PLURAL:$1| na seguinte página que está protegida|nas seguintes páginas que estão protegidas}} com a opção \"em cascata\" ativada: $2",
        "namespaceprotected": "Você não possui permissão para editar páginas no espaço nominal '''$1'''.",
        "customcssprotected": "Você não tem permissão para editar esta página CSS, porque ele contém configurações pessoais de outro usuário.",
+       "customjsonprotected": "Você não tem permissão para editar esta página JSON porque ela contém as configurações pessoais de outro usuário.",
        "customjsprotected": "Você não tem permissão para editar esta página de JavaScript, porque ele contém configurações pessoais de outro usuário.",
        "mycustomcssprotected": "Você não tem permissão para editar esta página CSS",
+       "mycustomjsonprotected": "Você não tem permissão para editar esta página JSON.",
        "mycustomjsprotected": "Você não tem permissão para editar esta página JavaScript",
        "myprivateinfoprotected": "Você não tem permissão para editar suas informações privadas.",
        "mypreferencesprotected": "Você não tem permissão para editar suas preferências.",
        "wrongpasswordempty": "Foi fornecida uma senha em branco.\nTente novamente.",
        "passwordtooshort": "As senhas devem ter no mínimo {{PLURAL:$1|1 caractere|$1 caracteres}}.",
        "passwordtoolong": "Senhas não podem ser maiores do que {{PLURAL:$1|1 caractere|$1 caracteres}}.",
-       "passwordtoopopular": "Senhas comuns não podem ser usadas. Por favor escolha uma senha mais difícil",
+       "passwordtoopopular": "Não podem ser usadas senha vulgares. Escolha uma palavra-passe mais difícil de adivinhar, por favor.",
        "password-name-match": "A sua senha deve ser diferente do seu nome de usuário.",
        "password-login-forbidden": "O uso deste nome de usuário e senha foi desautorizado.",
        "mailmypassword": "Redefinir senha",
        "savechanges": "Salvar alterações",
        "publishpage": "Publicar página",
        "publishchanges": "Publicar alterações",
+       "savearticle-start": "Salvar página…",
+       "savechanges-start": "Salvar alterações…",
+       "publishpage-start": "Publicar página…",
+       "publishchanges-start": "Publicar alterações…",
        "preview": "Pré-visualização",
        "showpreview": "Mostrar previsão",
        "showdiff": "Mostrar alterações",
        "blocked-notice-logextract": "{{GENDER:$1|Este usuário está atualmente bloqueado|Esta usuária está atualmente bloqueada|Este(a) usuário(a) está atualmente bloqueado(a)}}.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:",
        "clearyourcache": "<strong>Nota:</strong> Após salvar, você pode ter que limpar o \"cache\" do seu navegador para ver as alterações.\n*<strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n*<strong>Google Chrome:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione<em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou Pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vá para <em>Menu → Configurações</em> (<em>Opera → Preferencias</em> no Mac) e depois para <em>Privacidade e Segurança → Limpar dados de navegação → Imagens e arquivos em cache</em>.",
        "usercssyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo CSS antes de salvar.",
+       "userjsonyoucanpreview": "<strong>Dica:</strong> Use o botão \"{{int:showpreview}}\" para testar o seu novo JSON antes de gravar.",
        "userjsyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo JavaScript antes de salvar.",
        "usercsspreview": "'''Lembre-se de que você está apenas previsualizando o seu CSS particular.'''\n'''Ele ainda não foi salvo!'''",
+       "userjsonpreview": "<strong>Lembre-se de que está apenas a testar ou pré-visualizar o JSON na sua configuração de usuário.\nEste ainda não foi salvado!</strong>",
        "userjspreview": "'''Lembre-se que está apenas testando/prevendo o seu JavaScript particular e que ele ainda não foi salvo!'''",
        "sitecsspreview": "'''Lembre-se de que você está apenas previsualizando este CSS.'''\n'''Ele ainda não foi salvo!'''",
+       "sitejsonpreview": "<strong>Lembre-se de que está apenas pré-visualizar esta configuração do JSON.\nEla ainda não foi salvada!</strong>",
        "sitejspreview": "'''Lembre-se de que você está apenas previsualizando este código JavaScript.'''\n'''Ele ainda não foi salvo!'''",
-       "userinvalidconfigtitle": "'''Aviso:''' Não existe um tema \"$1\". Lembre-se que as páginas .css e  .js utilizam um título em minúsculas, exemplo: {{ns:user}}:Alguém/vector.css aposto a {{ns:user}}:Alguém/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Aviso:</strong> Não existe um tema \"$1\".\nAs páginas personalizadas .css, .json e .js têm um título em minúsculas, por exemplo: {{ns:user}}:Alguém/vector.css em vez de {{ns:user}}:Alguém/Vector.css.",
        "updated": "(Atualizado)",
        "note": "'''Nota:'''",
        "previewnote": "'''Lembre-se de que isto é apenas uma previsão.'''\nSuas alterações ainda não foram salvas!",
        "default": "padrão",
        "prefs-files": "Arquivos",
        "prefs-custom-css": "CSS personalizada",
+       "prefs-custom-json": "JSON personalizado",
        "prefs-custom-js": "JS personalizado",
-       "prefs-common-config": "CSS/JS compartilhado por todos os temas:",
+       "prefs-common-config": "CSS/JSON/JavaScript compartilhado por todos os temas:",
        "prefs-reset-intro": "Você pode usar esta página para restaurar as suas preferências para os valores predefinidos do sítio.\nEsta ação não pode ser desfeita.",
        "prefs-emailconfirm-label": "Confirmação do e-mail:",
        "youremail": "Seu e-mail:",
        "right-editcontentmodel": "Editar o modelo de uma pagina",
        "right-editinterface": "Editar a interface de usuário",
        "right-editusercss": "Editar os arquivos CSS de outros usuários",
+       "right-edituserjson": "\nEditar arquivos JSON de outros usuários",
        "right-edituserjs": "Editar os arquivos JS de outros usuários",
        "right-editmyusercss": "Edite seu próprio arquivo CSS de usuário",
+       "right-editmyuserjson": "Edite seus próprios arquivos JSON do usuário",
        "right-editmyuserjs": "Edite seu próprio arquivo JavaScript de usuário",
        "right-viewmywatchlist": "Ver sua lista de vigiados",
        "right-editmywatchlist": "Editar sua lista de vigiados. Observe que algumas ações seguirão adicionando páginas, mesmo sem este direito.",
        "grant-createaccount": "Criar contas",
        "grant-createeditmovepage": "Criar, editar e mover páginas",
        "grant-delete": "Excluir páginas, revisões e entradas de registro",
-       "grant-editinterface": "Editar o domínio MediaWiki e o CSS/JavaScript do usuário",
-       "grant-editmycssjs": "Editar o seu CSS/JavaScript de usuário",
+       "grant-editinterface": "Editar o domínio MediaWiki e o CSS/JSON/JavaScript do usuário",
+       "grant-editmycssjs": "Editar o seu CSS/JSON/JavaScript personalizado",
        "grant-editmyoptions": "Editar suas preferências de usuário",
        "grant-editmywatchlist": "Editar sua lista de páginas vigiadas",
        "grant-editpage": "Editar páginas existentes",
        "tooltip-preferences-save": "Salvar preferências",
        "tooltip-summary": "Forneça um breve resumo",
        "common.css": "/** o código CSS colocado aqui será aplicado a todos os temas */",
+       "common.json": "/* Qualquer JSON aqui será carregado para todos os usuários em cada carregamento de página. */",
        "common.js": "/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */",
        "anonymous": "{{PLURAL:$1|Usuário anônimo|Usuários anônimos}} da {{SITENAME}}",
        "siteuser": "{{GENDER:$2|um usuário|uma usuária|um usuário}} da {{SITENAME}} ($1)",
        "unlinkaccounts-success": "A conta foi desassociada.",
        "authenticationdatachange-ignored": "A alteração de dados de autenticação não foi processada. Talvez nenhum provedor tenha sido configurado?",
        "userjsispublic": "Observação: as subpáginas JavaScript não devem conter dados confidenciais, pois são visíveis por outros usuários.",
+       "userjsonispublic": "Observe: as subpáginas JSON não devem conter dados confidenciais, pois podem ser visualizados por outros usuários.",
        "usercssispublic": "Observação: As subpáginas CSS não devem conter dados confidenciais, pois são visíveis por outros usuários.",
        "restrictionsfield-badip": "Endereço IP ou intervalo inválido: $1",
        "restrictionsfield-label": "Intervalos IP permitidos:",
index ebb080d..a5a02f6 100644 (file)
        "cascadeprotected": "Esta página foi protegida contra edições por estar transcluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de proteção \"em cascata\" ativada):\n$2",
        "namespaceprotected": "Não tem permissão para editar páginas no espaço nominal <strong>$1</strong>.",
        "customcssprotected": "Não tem permissão para editar esta página de CSS porque a página contém as configurações pessoais de outro utilizador.",
+       "customjsonprotected": "Não tem permissão para editar esta página de JSON porque a página contém as configurações pessoais de outro utilizador.",
        "customjsprotected": "Não tem permissão para editar esta página de JavaScript porque a página contém as configurações pessoais de outro utilizador.",
        "mycustomcssprotected": "Não tem permissão para editar esta página de CSS.",
+       "mycustomjsonprotected": "Não tem permissão para editar esta página de JSON.",
        "mycustomjsprotected": "Não tem permissão para editar esta página de JavaScript.",
        "myprivateinfoprotected": "Não tem permissão para editar a sua informação privada.",
        "mypreferencesprotected": "Não tem permissão para editar as suas preferências.",
        "savechanges": "Gravar alterações",
        "publishpage": "Publicar página",
        "publishchanges": "Publicar alterações",
+       "savearticle-start": "Gravar página…",
+       "savechanges-start": "Gravar alterações…",
+       "publishpage-start": "Publicar página…",
+       "publishchanges-start": "Publicar alterações…",
        "preview": "Antevisão",
        "showpreview": "Antever resultado",
        "showdiff": "Mostrar alterações",
        "blocked-notice-logextract": "Este utilizador está bloqueado.\nPara referência, o último registo de bloqueio é apresentado abaixo:",
        "clearyourcache": "<strong>Nota:</strong> Após gravar, terá de limpar a <em>cache</em> do seu navegador para ver as alterações.\n* <strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n* <strong>Google Chrome:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione <em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Ir para <em>Menu → Configurações</em> (<em>Opera → Preferências</em> no Mac) e, em seguida, <em>Privacidade e segurança → Limpar dados de navegação → Imagens e ficheiros em cache</em>.",
        "usercssyoucanpreview": "<strong>Dica:</strong> Use o botão \"{{int:showpreview}}\" para testar o seu novo CSS antes de gravar.",
+       "userjsonyoucanpreview": "<strong>Dica:</strong> Use o botão \"{{int:showpreview}}\" para testar o seu novo JSON antes de gravar.",
        "userjsyoucanpreview": "<strong>Dica:</strong> Use o botão \"{{int:showpreview}}\" para testar o seu novo JavaScript antes de gravar.",
        "usercsspreview": "<strong>Lembre-se de que está apenas a antever o seu CSS particular.\nEste ainda não foi gravado!</strong>",
+       "userjsonpreview": "<strong>Lembre-se de que está apenas a testar ou a antever o JSON na sua configuração de utilizador.\nEste ainda não foi gravado!</strong>",
        "userjspreview": "<strong>Lembre-se de que está apenas a testar ou a antever o seu JavaScript particular.\nEste ainda não foi gravado!</strong>",
        "sitecsspreview": "<strong>Lembre-se de que está apenas a antever este CSS.\nEle ainda não foi gravado!</strong>",
+       "sitejsonpreview": "<strong>Lembre-se de que está apenas a antever esta configuração do JSON.\nEla ainda não foi gravada!</strong>",
        "sitejspreview": "<strong>Lembre-se de que está apenas a antever este código JavaScript.\nEle ainda não foi gravado!</strong>",
-       "userinvalidconfigtitle": "<strong>Aviso:</strong> Não existe um tema \"$1\".\nAs páginas personalizadas .css e .js têm um título em minúsculas, por exemplo: {{ns:user}}:Alguém/vector.css em vez de {{ns:user}}:Alguém/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Aviso:</strong> Não existe um tema \"$1\".\nAs páginas personalizadas .css, .json e .js têm um título em minúsculas, por exemplo: {{ns:user}}:Alguém/vector.css em vez de {{ns:user}}:Alguém/Vector.css.",
        "updated": "(Atualizado)",
        "note": "<strong>Nota:</strong>",
        "previewnote": "<strong>Lembre-se de que esta é apenas uma antevisão do resultado.</strong>\nAs modificações ainda não foram gravadas!",
        "default": "padrão",
        "prefs-files": "Ficheiros",
        "prefs-custom-css": "CSS personalizado",
+       "prefs-custom-json": "JSON personalizado",
        "prefs-custom-js": "JS personalizado",
-       "prefs-common-config": "CSS/JS partilhado por todos os temas:",
+       "prefs-common-config": "CSS/JSON/JavaScript partilhado por todos os temas:",
        "prefs-reset-intro": "Pode usar esta página para repor as configurações padrão das preferências.\nAs suas preferências serão modificadas para os valores predefinidos do sítio.\nEsta operação não pode ser desfeita.",
        "prefs-emailconfirm-label": "Confirmação do correio eletrónico:",
        "youremail": "Correio eletrónico:",
        "right-editcontentmodel": "Editar o modelo de conteúdo de uma página",
        "right-editinterface": "Editar a interface de utilizador",
        "right-editusercss": "Editar os ficheiros CSS de outros utilizadores",
+       "right-edituserjson": "Editar os ficheiros JSON de outros utilizadores",
        "right-edituserjs": "Editar os ficheiros JS de outros utilizadores",
        "right-editmyusercss": "Editar os seus próprios ficheiros CSS de utilizador",
+       "right-editmyuserjson": "Editar os ficheiros JSON do próprio utilizador",
        "right-editmyuserjs": "Editar os seus próprios ficheiros JavaScript de utilizador",
        "right-viewmywatchlist": "Ver a sua lista de páginas vigiadas",
        "right-editmywatchlist": "Editar a sua própria lista de páginas vigiadas. Observe que algumas ações continuaram a adicionar páginas, mesmo sem este direito.",
        "grant-createaccount": "Criar contas",
        "grant-createeditmovepage": "Criar, editar e mover páginas",
        "grant-delete": "Eliminar páginas, revisões e entradas de registo",
-       "grant-editinterface": "Editar o domínio MediaWiki e o CSS/JavaScript do utilizador",
-       "grant-editmycssjs": "Editar o seu CSS/JavaScript personalizado",
+       "grant-editinterface": "Editar o domínio MediaWiki e o CSS/JSON/JavaScript do utilizador",
+       "grant-editmycssjs": "Editar o seu CSS/JSON/JavaScript personalizado",
        "grant-editmyoptions": "Editar as suas preferências de utilizador",
        "grant-editmywatchlist": "Editar a sua lista de páginas vigiadas",
        "grant-editpage": "Editar páginas existentes",
        "common.css": "/* Código CSS colocado aqui será aplicado a todos os temas */",
        "print.css": "/* Código CSS colocado aqui afectará as impressões */",
        "noscript.css": "/* Os estilos CSS colocados aqui afetarão os utilizadores que tenham o JavaScript desativado em seus navegadores */",
+       "common.json": "/* Qualquer JSON colocado aqui será carregado para todos os utilizadores em cada carregamento de página. */",
        "common.js": "/* Código Javascript colocado aqui será carregado para todos os utilizadores em cada carregamento de página */",
        "anonymous": "{{PLURAL:$1|Utilizador anónimo|Utilizadores anónimos}} da wiki {{SITENAME}}",
        "siteuser": "$1 da wiki {{SITENAME}}",
        "unlinkaccounts-success": "A conta foi desassociada.",
        "authenticationdatachange-ignored": "A alteração dos dados de autenticação não foi realizada. Talvez o fornecedor não tenha sido configurado?",
        "userjsispublic": "Nota: As subpáginas de Javascript não devem conter dados confidenciais porque podem ser vistas por outros utilizadores.",
+       "userjsonispublic": "Note, por favor: as subpáginas JSON não devem conter dados confidenciais, pois podem ser vistas por outros utilizadores.",
        "usercssispublic": "Nota: As subpáginas de CSS não devem conter dados confidenciais porque podem ser vistas por outros utilizadores.",
        "restrictionsfield-badip": "Endereço IP (ou gama de endereços IP) inválido: $1",
        "restrictionsfield-label": "Gamas de endereços IP permitidas:",
index 0768f32..703b49f 100644 (file)
        "sitetitle": "{{Ignore}}",
        "sitesubtitle": "{{Ignore}}",
        "actions": "{{Identical|Action}}",
-       "namespaces": "{{Identical|Namespace}}",
+       "namespaces": "Currently there's lack of documentation about usages of this message, please join [[phab:T190158]] to discuss.\n{{Identical|Namespace}}",
        "variants": "Used by the Vector skin.",
        "navigation-heading": "Heading shown above the navigation menu (sidebar) for screen-readers (or in non-standard skins).",
        "errorpagetitle": "Message shown in browser title bar when encountering error operation.\n\n{{Identical|Error}}",
        "cascadeprotected": "Parameters:\n* $1 - number of cascade-protected pages, used for PLURAL\n* $2 - list of cascade-protected pages\n* $3 - (Unused) the action the user attempted to perform",
        "namespaceprotected": "Parameters:\n* $1 - namespace name\n* $2 - (Unused) the action the user attempted to perform",
        "customcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+       "customjsonprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "customjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "mycustomcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+       "mycustomjsonprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "mycustomjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "myprivateinfoprotected": "Used as error message.",
        "mypreferencesprotected": "Used as error message.",
        "savechanges": "Text on the button to save the changes to an existing page. It should be an action which is short and makes clear that the effect is immediate and public.\n\nSee also {{msg-mw|showpreview}} and {{msg-mw|showdiff}} for the other buttons, and {{msg-mw|savearticle}} for the label for the button when the page is being modified.\n\nNote: This i18n is being introduced in advance of usage to provide extra time for translators.\n\nSee also:\n* {{msg-mw|Accesskey-publish}}\n* {{msg-mw|Tooltip-publish}}\n{{Identical|Save changes}}",
        "publishpage": "Text on the button to create a new page on a public wiki. It should be an action which is short and makes clear that the effect is immediate and public.\n\nSee also {{msg-mw|showpreview}} and {{msg-mw|showdiff}} for the other buttons, and {{msg-mw|publishchanges}} for the label for the button when the page is being modified.\n\nNote: This i18n is being introduced in advance of usage to provide extra time for translators.\n\nSee also:\n* {{msg-mw|Accesskey-publish}}\n* {{msg-mw|Tooltip-publish}}\n{{Identical|Publish page}}",
        "publishchanges": "Text on the button to save the changes to an existing page on a public wiki. It should be an action which is short and makes clear that the effect is immediate and public.\n\nSee also {{msg-mw|showpreview}} and {{msg-mw|showdiff}} for the other buttons, and {{msg-mw|publishchanges}} for the label for the button when the page is being created.\n\nNote: This i18n is being introduced in advance of usage to provide extra time for translators.\n\nSee also:\n* {{msg-mw|Accesskey-publish}}\n* {{msg-mw|Tooltip-publish}}\n{{Identical|Publish changes}}",
+       "savearticle-start": "Text on the button to start the process to create a new page. Usually just {{msg-mw|savearticle}} with an ellipsis (…).",
+       "savechanges-start": "Text on the button to start the process save the changes to an existing page. Usually just {{msg-mw|savechanges}} with an ellipsis (…).",
+       "publishpage-start": "Text on the button to start the process create a new page on a public wiki. Usually just {{msg-mw|publishpage}} with an ellipsis (…).",
+       "publishchanges-start": "Text on the button to start the process save the changes to an existing page on a public wiki. Usually just {{msg-mw|publishchanges}} with an ellipsis (…).",
        "preview": "The title of the Preview page shown after clicking the \"Show preview\" button in the edit page. Since this is a heading, it should probably be translated as a noun and not as a verb.\n\n{{Identical|Preview}}",
        "showpreview": "The text of the button to preview the page you are editing. See also {{msg-mw|showdiff}} and {{msg-mw|savearticle}} for the other buttons.\n\nSee also:\n* {{msg-mw|Showpreview}}\n* {{msg-mw|Accesskey-preview}}\n* {{msg-mw|Tooltip-preview}}\n{{Identical|Show preview}}",
        "showdiff": "Button below the edit page. See also {{msg-mw|Showpreview}} and {{msg-mw|Savearticle}} for the other buttons.\n\nSee also:\n* {{msg-mw|Showdiff}}\n* {{msg-mw|Accesskey-diff}}\n* {{msg-mw|Tooltip-diff}}\n{{Identical|Show change}}",
        "userpage-userdoesnotexist": "Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki.\n\nParameters:\n* $1 - a username\n{{Identical|Userdoesnotexist}}",
        "userpage-userdoesnotexist-view": "Shown in user pages of non-existing users. See for example [{{canonicalurl:User:Foo}} User:Foo].\n\nParameters:\n* $1 - a username\n{{Identical|Userdoesnotexist}}",
        "blocked-notice-logextract": "{{gender}}\nParameters:\n* $1 - (Optional) the name of the blocked user. Can be used for GENDER.",
-       "clearyourcache": "Text at the top of .js/.css pages.\n\nWhen translating browser function names, check how they are translated in the localized versions of these web browsers in your language. If a browser is not translated to it, use English or another language in which browsers are most commonly used by the speakers of your language.",
-       "usercssyoucanpreview": "Text displayed on every CSS page.\n\nSee also:\n* {{msg-mw|Userjsyoucanpreview}}\n* {{msg-mw|Showpreview}}",
-       "userjsyoucanpreview": "Text displayed on every JavaScript page.\n\nSee also:\n* {{msg-mw|Usercssyoucanpreview}}\n* {{msg-mw|Showpreview}}",
+       "clearyourcache": "Text at the top of .js/.json/.css pages.\n\nWhen translating browser function names, check how they are translated in the localized versions of these web browsers in your language. If a browser is not translated to it, use English or another language in which browsers are most commonly used by the speakers of your language.",
+       "usercssyoucanpreview": "Text displayed on every CSS page.\n\nSee also:\n* {{msg-mw|Userjsyoucanpreview}}\n* {{msg-mw|Userjsonyoucanpreview}}\n* {{msg-mw|Showpreview}}",
+       "userjsonyoucanpreview": "Text displayed on every JSON page.\n\nSee also:\n* {{msg-mw|Usercssyoucanpreview}}\n* {{msg-mw|Userjsyoucanpreview}}\n* {{msg-mw|Showpreview}}",
+       "userjsyoucanpreview": "Text displayed on every JavaScript page.\n\nSee also:\n* {{msg-mw|Userjsonyoucanpreview}}\n* {{msg-mw|Usercssyoucanpreview}}\n* {{msg-mw|Showpreview}}",
        "usercsspreview": "Text displayed on preview of every user .css subpage.\n\nSee also:\n* {{msg-mw|Sitecsspreview}}",
+       "userjsonpreview": "Text displayed on preview of every user .json subpage",
        "userjspreview": "Text displayed on preview of every user .js subpage",
        "sitecsspreview": "Text displayed on preview of .css pages in MediaWiki namespace.\n\nSee also:\n* {{msg-mw|Usercsspreview}}",
+       "sitejsonpreview": "Text displayed on preview of .json pages in MediaWiki namespace",
        "sitejspreview": "Text displayed on preview of .js pages in MediaWiki namespace",
        "userinvalidconfigtitle": "Parameters:\n* $1 - skin name",
        "updated": "{{Identical|Updated}}",
        "addsection-preload": "{{notranslate}}",
        "addsection-editintro": "{{notranslate}}",
        "defaultmessagetext": "Caption above the default message text shown on the left-hand side of a diff displayed after clicking \"Show changes\" when creating a new page in the MediaWiki: namespace",
-       "content-failed-to-parse": "Error message indicating that the page's content can not be saved because it is syntactically invalid. This may occurr for content types using serialization or a strict markup syntax.\n\nParameters:\n* $1 – content model, any one of the following messages:\n** {{msg-mw|Content-model-wikitext}}\n** {{msg-mw|Content-model-javascript}}\n** {{msg-mw|Content-model-css}}\n** {{msg-mw|Content-model-text}}\n* $2 – content format as MIME type (e.g. <code>text/css</code>)\n* $3 – specific error message",
+       "content-failed-to-parse": "Error message indicating that the page's content can not be saved because it is syntactically invalid. This may occurr for content types using serialization or a strict markup syntax.\n\nParameters:\n* $1 – content model, any one of the following messages:\n** {{msg-mw|Content-model-wikitext}}\n** {{msg-mw|Content-model-javascript}}\n** {{msg-mw|Content-model-css}}\n** {{msg-mw|Content-model-json}}\n** {{msg-mw|Content-model-text}}\n* $2 – content format as MIME type (e.g. <code>text/css</code>)\n* $3 – specific error message",
        "invalid-content-data": "Error message indicating that the page's content can not be saved because it is invalid. This may occurr for content types with internal consistency constraints.",
-       "content-not-allowed-here": "Error message indicating that the desired content model is not supported in given localtion.\n* $1 - the human readable name of the content model: {{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}}\n* $2 - the title of the page in question",
+       "content-not-allowed-here": "Error message indicating that the desired content model is not supported in given localtion.\n* $1 - the human readable name of the content model: {{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-json}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}}\n* $2 - the title of the page in question",
        "editwarning-warning": "Uses {{msg-mw|Prefs-editing}}",
        "editpage-invalidcontentmodel-title": "Title of error page shown when using an unrecognized content model on EditPage",
        "editpage-invalidcontentmodel-text": "Error message shown when using an unrecognized content model on EditPage. $1 is the user's invalid input",
        "default": "{{Identical|Default}}",
        "prefs-files": "Title of a tab in [[Special:Preferences]].\n{{Identical|File}}",
        "prefs-custom-css": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom CSS}}",
+       "prefs-custom-json": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom JSON}}",
        "prefs-custom-js": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom JavaScript}}",
        "prefs-common-config": "Used as label in [[Special:Preferences#mw-prefsection-rendering|preferences]], tab \"Appearance\", section \"Skin\".\n\nSee also:\n* {{msg-mw|Globalcssjs-custom-css-js}}",
        "prefs-reset-intro": "Used in [[Special:Preferences/reset]].",
        "right-editcontentmodel": "{{doc-right|editcontentmodel}}",
        "right-editinterface": "{{doc-right|editinterface}}",
        "right-editusercss": "{{doc-right|editusercss}}\nSee also:\n* {{msg-mw|Right-editmyusercss}}",
+       "right-edituserjson": "{{doc-right|edituserjson}}\nSee also:\n* {{msg-mw|Right-editmyuserjson}}",
        "right-edituserjs": "{{doc-right|edituserjs}}\nSee also:\n* {{msg-mw|Right-editmyuserjs}}",
        "right-editmyusercss": "{{doc-right|editmyusercss}}\nSee also:\n* {{msg-mw|Right-editusercss}}",
+       "right-editmyuserjson": "{{doc-right|editmyuserjson}}\nSee also:\n* {{msg-mw|Right-edituserjson}}",
        "right-editmyuserjs": "{{doc-right|editmyuserjs}}\nSee also:\n* {{msg-mw|Right-edituserjs}}",
        "right-viewmywatchlist": "{{doc-right|viewmywatchlist}}",
        "right-editmywatchlist": "{{doc-right|editmywatchlist}}",
        "filerevert-success": "Message displayed when you succeed in reverting a version of a file.\n* $1 is the name of the media\n* $2 is a date\n* $3 is a time\n* $4 is an URL and must follow square bracket: [$4\n{{Identical|Revert}}",
        "filerevert-badversion": "Used as error message.",
        "filerevert-identical": "Used as error message.",
-       "filedelete": "Used as page title. Parameters:\n* $1 - file title\nSee also:\n* {{msg-mw|Filedelete-intro}}",
+       "filedelete": "Used as page title. Parameters:\n* $1 - file title (without namespace prefix)\nSee also:\n* {{msg-mw|Filedelete-intro}}",
        "filedelete-legend": "Used as fieldset label in the \"Delete file\" form.\n{{Identical|Delete file}}",
        "filedelete-intro": "Used as introduction for FileDelete form. Parameters:\n* $1 - page title for file\nSee also:\n* {{msg-mw|Filedelete|page title}}",
        "filedelete-intro-old": "Message displayed when you try to delete a version of a file.\n* $1 is the name of the media\n* $2 is a date\n* $3 is a time\n* $4 is a URL and must follow square bracket: [$4",
        "group-bot.css": "{{doc-group|bot|css}}",
        "group-sysop.css": "{{doc-group|sysop|css}}",
        "group-bureaucrat.css": "{{doc-group|bureaucrat|css}}",
+       "common.json": "{{optional}}\nJSON for all users.",
        "common.js": "{{optional}}\nJS for all users.",
        "group-autoconfirmed.js": "{{doc-group|autoconfirmed|js}}",
        "group-user.js": "{{doc-group|user|js}}",
        "unlinkaccounts": "Title of the special page [[Special:UnlinkAccounts]] which allows the user to remove linked remote accounts.",
        "unlinkaccounts-success": "Account unlinking form success message",
        "authenticationdatachange-ignored": "Shown when authentication data change was unsuccessful due to configuration problems.\n\nCf. e.g. {{msg-mw|Passwordreset-ignored}}.",
-       "userjsispublic": "A reminder to users that Javascript subpages are not preferences but normal pages, and thus can be viewed by other users and the general public. This message is shown to a user whenever they are editing a subpage in their own user-space that ends in .js. See also {{msg-mw|usercssispublic}}.",
-       "usercssispublic": "A reminder to users that CSS subpages are not preferences but normal pages, and thus can be viewed by other users and the general public. This message is shown to a user whenever they are editing a subpage in their own user-space that ends in .css. See also {{msg-mw|userjsispublic}}",
+       "userjsispublic": "A reminder to users that Javascript subpages are not preferences but normal pages, and thus can be viewed by other users and the general public. This message is shown to a user whenever they are editing a subpage in their own user-space that ends in .js. See also {{msg-mw|usercssispublic}} and {{msg-mw|userjsonispublic}}.",
+       "userjsonispublic": "A reminder to users that JSON subpages are not preferences but normal pages, and thus can be viewed by other users and the general public. This message is shown to a user whenever they are editing a subpage in their own user-space that ends in .json. See also {{msg-mw|userjsispublic}} and {{msg-mw|usercssispublic}}",
+       "usercssispublic": "A reminder to users that CSS subpages are not preferences but normal pages, and thus can be viewed by other users and the general public. This message is shown to a user whenever they are editing a subpage in their own user-space that ends in .css. See also {{msg-mw|userjsispublic}} and {{msg-mw|userjsonispublic}}",
        "restrictionsfield-badip": "An error message shown when one entered an invalid IP address or range in a restrictions field (such as Special:BotPassword). $1 is the IP address.",
        "restrictionsfield-label": "Field label shown for restriction fields (e.g. on Special:BotPassword).",
        "restrictionsfield-help": "Placeholder text displayed in restriction fields (e.g. on Special:BotPassword).",
index 2d92059..c061734 100644 (file)
        "cascadeprotected": "Данная страница защищена от изменений, поскольку она включена в {{PLURAL:$1|1=следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:\n$2",
        "namespaceprotected": "У вас нет разрешения редактировать страницы в пространстве имён «$1».",
        "customcssprotected": "У вас нет разрешения редактировать эту CSS-страницу, так как она содержит личные настройки другого участника.",
+       "customjsonprotected": "У вас нет разрешения редактировать эту JSON-страницу, так как она содержит личные настройки другого участника.",
        "customjsprotected": "У вас нет разрешения редактировать эту JavaScript-страницу, так как она содержит личные настройки другого участника.",
        "mycustomcssprotected": "У вас нет прав для редактирования этого CSS страницы.",
+       "mycustomjsonprotected": "У вас нет прав для редактирования этой JSON-страницы.",
        "mycustomjsprotected": "У вас нет прав для редактирования JavaScript на странице.",
        "myprivateinfoprotected": "У вас нет разрешения на изменение вашей личной информации",
        "mypreferencesprotected": "У вас нет прав для редактирования настроек.",
        "wrongpasswordempty": "Пожалуйста, введите непустой пароль.",
        "passwordtooshort": "Пароль должен состоять не менее, чем из $1 {{PLURAL:$1|символа|символов}}.",
        "passwordtoolong": "Пароль не может содержать более {{PLURAL:$1|1=$1 символа|$1 символов}}.",
-       "passwordtoopopular": "ЧаÑ\81Ñ\82о Ð²Ñ\8bбиÑ\80аемÑ\8bе Ð¿Ð°Ñ\80оли Ð½Ðµ Ð¼Ð¾Ð³Ñ\83Ñ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзованÑ\8b. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ñ\8bбеÑ\80иÑ\82е Ð±Ð¾Ð»ÐµÐµ Ñ\83никалÑ\8cнÑ\8bй Ð¿Ð°Ñ\80оль.",
+       "passwordtoopopular": "ЧаÑ\81Ñ\82о Ð²Ñ\8bбиÑ\80аемÑ\8bе Ð¿Ð°Ñ\80оли Ð½Ðµ Ð¼Ð¾Ð³Ñ\83Ñ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзованÑ\8b. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ñ\8bбеÑ\80иÑ\82е Ð¿Ð°Ñ\80олÑ\8c, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ñ\81ложнее Ñ\83гадаÑ\82ь.",
        "password-name-match": "Введённый пароль должен отличаться от имени участника.",
        "password-login-forbidden": "Использование этого имени участника и пароля запрещено.",
        "mailmypassword": "Сбросить пароль",
        "savechanges": "Записать страницу",
        "publishpage": "Создать страницу",
        "publishchanges": "Записать страницу",
+       "savearticle-start": "Сохранить страницу…",
+       "savechanges-start": "Сохранить изменения…",
+       "publishpage-start": "Опубликовать страницу…",
+       "publishchanges-start": "Опубликовать изменения…",
        "preview": "Предпросмотр",
        "showpreview": "Предварительный просмотр",
        "showdiff": "Внесённые изменения",
        "blocked-notice-logextract": "{{GENDER:$1|Этот участник|Эта участница}} в данный момент {{GENDER:$1|заблокирован|заблокирована}}.\nНиже приведена последняя запись из журнала блокировок:",
        "clearyourcache": "<strong>Замечание.</strong> Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.\n* <strong>Firefox / Safari:</strong> Удерживая клавишу <em>Shift</em>, нажмите на панели инструментов <em>Обновить</em> либо нажмите <em>Ctrl-F5</em> или <em>Ctrl-R</em> (<em>⌘-R</em> на Mac)\n* <strong>Google Chrome:</strong> Нажмите <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Mac)\n* <strong>Internet Explorer:</strong> Удерживая <em>Ctrl</em>, нажмите <em>Обновить</em> либо нажмите <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Перейдите в <em>Menu → Настройки</em> (<em>Opera → Настройки</em> на Mac), а затем <em>Безопасность → Очистить историю посещений → Кэшированные изображения и файлы</em>",
        "usercssyoucanpreview": "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить свой новый CSS-файл перед сохранением.",
+       "userjsonyoucanpreview": "<strong>Подсказка:</strong> Нажмите кнопку «{{int:showpreview}}», чтобы проверить свой новый JSON-файл перед сохранением.",
        "userjsyoucanpreview": "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить свой новый JS-файл перед сохранением.",
        "usercsspreview": "'''Помните, что это только предварительный просмотр вашего CSS-файла, он ещё не сохранён!'''",
+       "userjsonpreview": "<strong>Помните, что это только тестовый/предварительный просмотр вашей JSON-конфигурации.\nОна ещё не сохранена!</strong>",
        "userjspreview": "'''Помните, что это только предварительный просмотр вашего javascript-файла, он ещё не сохранён!'''",
        "sitecsspreview": "'''Помните, что вы только предварительно просматриваете этот CSS.'''\n'''Он ещё не сохранён!'''",
+       "sitejsonpreview": "<strong>Помните, что это только предварительный просмотр JSON-конфигурации.\nОна ещё не сохранена!</strong>",
        "sitejspreview": "'''Помните, что вы только предварительно просматриваете этот JavaScript-код.'''\n'''Он ещё не сохранён!'''",
-       "userinvalidconfigtitle": "'''Внимание:''' тема оформления «$1» не найдена. Помните, что пользовательские страницы .css и .js должны иметь название, состоящее только из строчных букв, например «{{ns:user}}:Некто/vector.css», а не «{{ns:user}}:Некто/Vector.css».",
+       "userinvalidconfigtitle": "<strong>Внимание:</strong> тема оформления «$1» не найдена. Пользовательские страницы .css, .json и .js должны иметь название, состоящее только из строчных букв, например «{{ns:user}}:Некто/vector.css», а не «{{ns:user}}:Некто/Vector.css».",
        "updated": "(Обновлена)",
        "note": "'''Примечание:'''",
        "previewnote": "'''Помните, что это только предварительный просмотр.'''\nВаши изменения ещё не были сохранены!",
        "sectioneditnotsupported-text": "На этой странице не поддерживается редактирование разделов",
        "permissionserrors": "Ошибка прав доступа",
        "permissionserrorstext": "У вас нет прав на выполнение этой операции по {{PLURAL:$1|1=следующей причине|следующим причинам}}:",
-       "permissionserrorstext-withaction": "У вас нет прав на $2 по {{PLURAL:$1|1=следующей причине|следующим причинам}}:",
+       "permissionserrorstext-withaction": "У вас нет прав на выполнение действия «$2» по {{PLURAL:$1|1=следующей причине|следующим причинам}}:",
        "contentmodelediterror": "Вы не можете редактировать эту версию, поскольку модель её содержания — <code>$1</code>, отличающаяся от текущей модели содержания страницы — <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''\n\nПроверьте, действительно ли вам нужно воссоздавать эту страницу.\nНиже приведены журналы удалений и переименований этой страницы.",
        "moveddeleted-notice": "Эта страница была удалена.\nНиже для справки приведены журналы удаления, защиты и перемещения для этой страницы.",
        "default": "по умолчанию",
        "prefs-files": "Файлы",
        "prefs-custom-css": "Собственный CSS",
+       "prefs-custom-json": "Пользовательский JSON",
        "prefs-custom-js": "Собственный JS",
-       "prefs-common-config": "Общие CSS/JS для всех тем оформления:",
+       "prefs-common-config": "Общие CSS/JSON/JavaScript для всех тем оформления:",
        "prefs-reset-intro": "Эта страница может быть использована для сброса ваших настроек на стандартные.\nУчтите, что это действие невозможно отменить.",
        "prefs-emailconfirm-label": "Подтверждение электронной почты:",
        "youremail": "Электронная почта:",
        "right-editcontentmodel": "редактирование контентной модели страницы",
        "right-editinterface": "изменение пользовательского интерфейса",
        "right-editusercss": "правка CSS-файлов других участников",
+       "right-edituserjson": "правка JSON-файлов других участников",
        "right-edituserjs": "правка JavaScript-файлов других участников",
        "right-editmyusercss": "редактирование своих пользовательских CSS-файлов",
+       "right-editmyuserjson": "редактирование своих пользовательских JSON-файлов",
        "right-editmyuserjs": "редактирование своих пользовательских JavaScript-файлов",
        "right-viewmywatchlist": "просмотр своего списка наблюдения",
        "right-editmywatchlist": "редактирование своего списка наблюдения",
        "grant-createaccount": "Создание учётных записей",
        "grant-createeditmovepage": "Создание, редактирование и переименование страниц",
        "grant-delete": "Удаление страниц, правок и записей журнала",
-       "grant-editinterface": "Правка пространства имён MediaWiki и пользовательских CSS/JavaScript",
-       "grant-editmycssjs": "РедакÑ\82иÑ\80ование Ð²Ð°Ñ\88иÑ\85 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81киÑ\85 CSS/JavaScript",
+       "grant-editinterface": "Правка пространства имён MediaWiki и пользовательских CSS/JSON/JavaScript",
+       "grant-editmycssjs": "Ð\9fÑ\80авка Ð²Ð°Ñ\88иÑ\85 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81киÑ\85 CSS/JSON/JavaScript",
        "grant-editmyoptions": "Редактирование ваших персональных настроек",
        "grant-editmywatchlist": "Редактирование вашего списка наблюдения",
        "grant-editpage": "Редактирование существующих страниц",
        "rcfilters-watchlist-markseen-button": "Отметить все изменения как просмотренные",
        "rcfilters-watchlist-edit-watchlist-button": "Редактировать ваш список наблюдения",
        "rcfilters-watchlist-showupdated": "Изменения страниц, которые вы не посещали с того момента, как они изменились, выделены <strong>жирным</strong> и отмечены полным маркером.",
-       "rcfilters-preference-label": "Скрыть улучшенную версию Последних изменений",
+       "rcfilters-preference-label": "Скрыть улучшенную версию «Свежих правок»",
        "rcfilters-preference-help": "Откатывает редизайн интерфейса 2017 года и все инструменты, добавленные с тех пор.",
        "rcfilters-filter-showlinkedfrom-label": "Показать правки на ссылаемых страницах",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>Страницы, на которые ссылается</strong> выбранная",
        "group-bot.css": "/* Размещённый здесь CSS будет применяться только для ботов */",
        "group-sysop.css": "/* Размещённый здесь CSS будет применяться только для администраторов */",
        "group-bureaucrat.css": "/* Размещённый здесь CSS будет применяться только для бюрократов */",
+       "common.json": "/* Размещённый здесь JSON-код будет загружаться всем участникам при каждом обращении к странице */",
        "common.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */",
        "group-autoconfirmed.js": "/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус автоподтверждённых (autoconfirmed) */",
        "group-user.js": "/* Размещённый здесь JavaScript будет применяться только для зарегистрированных пользователей */",
        "unlinkaccounts-success": "Учетная запись была отвязан.",
        "authenticationdatachange-ignored": "Изменение данных для проверки подлинности не было обработано. Может быть, не был настроен ни один провайдер?",
        "userjsispublic": "Обратите внимание: подстраницы JavaScript не должны содержать конфиденциальные сведения, поскольку они доступны для просмотра другим участникам.",
+       "userjsonispublic": "Обратите внимание: подстраницы JSON не должны содержать конфиденциальных данных, поскольку они доступны для просмотра другими участниками.",
        "usercssispublic": "Обратите внимание: подстраницы CSS не должны содержать конфиденциальные сведения, поскольку они доступны для просмотра другим участникам.",
        "restrictionsfield-badip": "Недопустимый IP-адрес или диапазон адресов: $1",
        "restrictionsfield-label": "Разрешённые диапазоны IP-адресов:",
index c6ed4e8..ed8e391 100644 (file)
        "tog-newpageshidepatrolled": "ᱱᱟᱣᱟ ᱥᱟᱦᱴᱟ ᱛᱟᱹᱞᱠᱟᱹ ᱠᱷᱚᱱ ᱵᱤᱰᱟᱹᱣᱠᱟᱱ ᱥᱟᱦᱴᱟᱠᱚ ᱩᱠᱩᱭᱢᱮ",
        "tog-hidecategorization": "ᱥᱟᱦᱴᱟ ᱨᱮᱱᱟᱜ ᱛᱷᱚᱠ ᱠᱚ ᱫᱟᱱᱟᱝ",
        "tog-extendwatchlist": "ᱠᱷᱟᱹᱞᱤ ᱱᱮᱛᱚᱜ ᱵᱚᱫᱚᱞᱟᱜ ᱫᱚ ᱵᱟᱝ, ᱡᱚᱛᱚ ᱵᱟᱫᱚᱞᱟᱜ ᱜᱮ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱯᱷᱟᱭᱞᱟᱣᱢᱮ",
-       "tog-usenewrc": "Nahaḱ bodolakanaḱko ar nojor reaḱ pahaṭare bodolaḱko mit́são ńelńam",
+       "tog-usenewrc": "ᱱᱟᱣᱟᱱᱟᱜ ᱵᱚᱫᱚᱞ ᱟᱠᱟᱱᱠᱩ ᱟᱨ ᱨᱚᱠᱟ ᱵᱚᱫᱚᱞᱟᱠᱟᱱ ᱯᱟᱸᱦᱴᱟᱨᱮ ᱵᱚᱫᱚᱞᱟᱠᱠᱳ ᱢᱤᱛᱥᱟᱶ ᱧᱮᱞᱢᱮ",
        "tog-numberheadings": "ᱢᱩᱬᱩᱛ ᱠᱟᱛᱷᱟᱠᱩ ᱫᱚ ᱟᱪᱛᱮᱜᱮ ᱯᱤᱲᱦᱤ ᱯᱤᱲᱦᱤᱛᱮ ᱥᱟᱡᱟᱜᱢᱟ",
        "tog-showtoolbar": "ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱟᱸᱛ ᱩᱫᱩᱜᱽ ᱢᱮ",
-       "tog-editondblclick": "Bar dhao lin kate sakam torjomão reaḱ ạidari emogoḱma",
-       "tog-editsectiononrightclick": "Pahaṭa reaḱ pahaṭa guṭkathare jojom seć lin hotete <br /> pahaṭa sompadon lạgitte ektiạr em hoyoḱma (JavaScript)",
+       "tog-editondblclick": "ᱵᱟᱨ ᱫᱷᱟᱣ ᱞᱤᱱ ᱠᱟᱛᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱵᱚᱫᱚᱞᱢᱮ",
+       "tog-editsectiononrightclick": "ᱯᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱜᱩᱴ ᱠᱟᱛᱷᱟᱨᱮ ᱡᱚᱡᱚᱢ ᱥᱮᱡ ᱞᱤᱱ ᱦᱚᱛᱮᱛᱮ <br /> ᱯᱟᱸᱦᱴᱟ ᱥᱟᱯᱲᱟᱣ ᱞᱟᱜᱤᱛᱛᱮ ᱟᱹᱭᱫᱟᱹᱨᱤ ᱮᱢ ᱦᱩᱭᱩᱜ ᱢᱟ (JavaScript)",
        "tog-watchcreations": "ᱥᱟᱦᱴᱟᱠᱩ ᱥᱮᱞᱮᱫᱢᱮ ᱤᱧᱟᱜ ᱛᱮᱭᱟᱨ ᱟᱨ ᱨᱮᱫᱠᱩ ᱤᱧᱟᱜ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱨᱟᱠᱟᱵ ᱢᱮ",
        "tog-watchdefault": "ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱟᱨ ᱨᱮᱫᱠᱩ ᱥᱮᱞᱮᱫ ᱢᱮ",
        "tog-watchmoves": "ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱟᱨ ᱨᱮᱫᱠᱩ ᱚᱪᱟᱜᱽ ᱢᱮ",
        "tog-minordefault": "ᱮᱛᱦᱚᱵᱨᱮ ᱥᱟᱱᱟᱢ ᱥᱟᱯᱲᱟᱣᱠᱩ ᱦᱩᱰᱤᱧ ᱞᱮᱠᱟᱛᱮ ᱪᱤᱱᱦᱟᱹ ᱠᱟᱜ ᱢᱮ",
        "tog-previewontop": "ᱥᱟᱯᱲᱟᱣ ᱵᱟᱠᱥᱳ ᱞᱟᱦᱟᱨᱮ ᱩᱱᱩᱫᱩᱜ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "tog-previewonfirst": "ᱯᱟᱹᱦᱤᱞ ᱥᱟᱯᱲᱟᱣ ᱨᱮ ᱩᱱᱩᱫᱩᱜ ᱩᱫᱩᱜᱽ ᱢᱮ",
-       "tog-enotifwatchlistpages": "E-mailạńme one tinre in̕aḱ n̕eloḱ tạlika do bodolok",
+       "tog-enotifwatchlistpages": "ᱡᱟᱸᱦᱟᱸ ᱥᱟᱦᱴᱟ ᱥᱮ ᱨᱮᱫ ᱤᱧᱟᱜ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹ ᱨᱮ ᱢᱮᱱᱟᱜ-ᱟ ᱚᱱᱟᱠᱩ ᱵᱚᱫᱚᱞ ᱞᱮᱱ ᱠᱷᱟᱡ E-mail ᱟᱹᱧᱢᱮ",
        "tog-enotifusertalkpages": "ᱤ-ᱢᱮᱞ ᱟᱹᱧᱢᱮ ᱛᱤᱱᱨᱮ ᱤᱧᱟᱜ ᱨᱚᱲ ᱥᱟᱦᱴᱟ ᱵᱚᱫᱚᱞᱜ-ᱟ",
-       "tog-enotifminoredits": "E-mailạn̕me arhõ one tinre in̕aḱ sakamre huḍiń kạmi hoyoḱ",
+       "tog-enotifminoredits": "ᱥᱟᱦᱴᱟ ᱟᱨ ᱨᱮᱫ ᱠᱩ ᱦᱩᱰᱤᱧ ᱥᱟᱯᱲᱟᱣ ᱞᱮᱱ ᱠᱷᱟᱡ ᱦᱚᱸ E-mail ᱟᱹᱧᱢᱮ",
        "tog-enotifrevealaddr": "ᱰᱷᱟᱹᱨᱣᱟᱜ ᱥᱟᱦᱴᱟᱨᱮ ᱤᱧᱟᱜ e-mail ᱴᱷᱤᱠᱱᱟ ᱥᱚᱫᱚᱨ ᱦᱩᱭᱩᱜ ᱢᱟ",
        "tog-shownumberswatching": "ᱧᱮᱞᱚᱜ ᱵᱮᱵᱟᱦᱟᱨᱤᱡ ᱠᱯᱣᱟᱜ ᱮᱞᱮᱞ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "tog-oldsig": "ᱟᱢᱟᱜ ᱥᱩᱦᱤ:",
        "tog-fancysig": "ᱥᱩᱦᱤ ᱫᱚ ᱣᱤᱠᱤ ᱚᱞ ᱦᱤᱥᱟᱹᱵᱛᱮ ᱢᱚᱱᱮᱭᱢᱮ (ᱟᱪᱛᱮ ᱦᱩᱭᱠᱟᱱ ᱡᱚᱱᱚᱲ ᱵᱟᱹᱜᱤᱠᱟᱛᱮ)",
-       "tog-uselivepreview": "Jewet́ ńeloḱ beoharme (JavaScript jaruṛ menaḱa)",
+       "tog-uselivepreview": "ᱡᱤᱣᱟᱹᱛ ᱧᱮᱞᱚᱜ ᱵᱮᱣᱦᱟᱨᱢᱮ(JavaScript ᱡᱟᱹᱨᱩᱲ ᱢᱮᱱᱟᱜ-ᱟ)",
        "tog-forceeditsummary": "ᱠᱷᱟᱹᱞᱤ ᱥᱟᱯᱲᱟᱣ ᱜᱤᱴ ᱠᱟᱛᱷᱟ ᱮᱢ ᱚᱠᱛᱚᱨᱮ ᱤᱧ ᱵᱟᱰᱟᱭ ᱚᱪᱚᱭᱤᱧ ᱦᱩᱭᱩᱜᱢᱟ",
        "tog-watchlisthideown": "ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹ ᱠᱷᱚᱱ ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣᱠᱩ ᱩᱠᱩᱭᱢᱮ",
        "tog-watchlisthidebots": "ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹ ᱠᱷᱚᱱ ᱵᱚᱴ ᱥᱟᱯᱲᱟᱣᱠᱩ ᱩᱠᱩᱭᱢᱮ",
        "tog-ccmeonemails": "E-mail ᱠᱩ ᱨᱮᱭᱟᱜ ᱠᱚᱯᱤᱠᱩ ᱠᱩᱞᱢᱮ ᱡᱟᱸᱦᱟᱸ ᱤᱧ ᱮᱴᱟᱜ ᱵᱮᱵᱦᱟᱨᱤᱡᱠᱩ ᱴᱷᱮᱱᱤᱧ ᱠᱩᱞ ᱞᱮ",
        "tog-diffonly": "ᱯᱷᱟᱨᱟᱠ ᱨᱮᱭᱟᱜ ᱞᱟᱛᱟᱨ ᱥᱟᱦᱴᱟᱨᱮ ᱵᱟᱵᱚᱛᱠᱩ ᱵᱟᱝ ᱩᱫᱩᱜᱚᱜ ᱢᱟ",
        "tog-showhiddencats": "ᱩᱠᱩ ᱛᱷᱚᱠᱠᱩ ᱩᱫᱩᱜᱽᱢᱮ",
-       "tog-norollbackdiff": "rollback tayomte farak alom uduga",
+       "tog-norollbackdiff": "rollback ᱛᱟᱭᱚᱢ ᱛᱮ ᱯᱷᱟᱨᱟᱠ ᱟᱞᱚᱢ ᱩᱫᱩᱜᱟ",
        "underline-always": "ᱥᱟᱨᱟ ᱜᱷᱟᱹᱲᱤᱡ",
        "underline-never": "ᱛᱤᱥ ᱦᱚᱸ ᱵᱟᱝ",
-       "underline-default": "Browjarre cetlekate em hoy akana",
+       "underline-default": "ᱦᱟᱨᱛᱟ ᱥᱮ ᱵᱨᱟᱣᱡᱟᱨ ᱪᱮᱛᱞᱮᱠᱟ ᱛᱟᱸᱦᱮᱸᱠᱟᱱᱟ ᱚᱝᱠᱟᱜᱮ",
        "editfont-style": "ᱥᱟᱯᱲᱟᱣ ᱡᱟᱜᱟ ᱨᱮᱱᱟᱜ ᱯᱷᱚᱱᱴ ᱮᱥᱴᱟᱭᱤᱞ:",
        "editfont-monospace": "Monospaced font",
        "editfont-sansserif": "Sans-serif font",
        "laggedslavemode": "'''Sontoroḱme:''' sakamre do nahaḱ nãwãnaḱko paseć bạnuḱa.",
        "readonly": "ᱰᱟᱴᱟᱵᱮᱡᱽ ᱛᱟᱞᱟᱜᱮᱭᱟ",
        "enterlockreason": "Cạbie reaḱ karon do cet́kana ma lạimẽ, Saõte tinre tala cạbim jhija ona okte hõ lạimẽ",
-       "readonlytext": "Nãwã hataen ar eṭagaḱ sompadon lạgit́te ḍaṭabes do nit bondo gea. Paseć ḍaṭabes rukhiyạre niyom lekate kạmi calaḱ kana. Thoṛa ghạrịić porte laha obosthare acur hạjuḱa.\nSasetić do noa kathae roṛ keda: $1",
+       "readonlytext": "ᱱᱟᱣᱟ ᱦᱟᱹᱴᱤᱧ ᱟᱨ ᱮᱴᱟᱜᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱞᱟᱹᱜᱤᱛᱛᱮ ᱰᱟᱴᱟᱵᱮᱡᱽ ᱫᱚ ᱱᱤᱛ ᱵᱚᱱᱰᱷᱚ ᱜᱮᱭᱟ᱾ ᱯᱟᱥᱮᱡ ᱰᱟᱴᱟᱵᱮᱡ ᱨᱩᱠᱷᱤᱭᱟᱨᱮ ᱱᱤᱭᱚᱢ ᱞᱮᱠᱟᱛᱮ ᱠᱟᱹᱢᱤ ᱪᱟᱞᱟᱜ ᱠᱟᱱᱟ᱾ ᱛᱷᱚᱲᱟ ᱜᱷᱟᱹᱲᱤᱡ ᱯᱚᱨ ᱞᱟᱦᱟᱛᱮ ᱞᱮᱠᱟ ᱟᱹᱪᱩᱨ ᱦᱟᱹᱡᱩᱜ-ᱟ᱾\nᱥᱟᱥᱮᱛᱤᱪ ᱫᱚ ᱱᱚᱣᱟ ᱠᱟᱛᱷᱟᱭ ᱨᱚᱲ ᱠᱮᱫᱟ: $1",
        "missing-article": "\"$1\" $2 noa ńutumanaḱ sakhiyạ̣t sakamre olakanaḱ do bań ṅamoka.\nNoa hoy renaḱ karon do hoyoḱkana cabak tạrik pharak se noare joṛao sakam do get́ giḍi akana.\nJudi noa do karon bań hoylen khan, noa do am sopṭoyer re kạtićtem ńam daṛeyaḱa.\nDaya katet́ noa do nonde [[Special:ListUsers/sysop|administrator]],  ṭhen lạime, URL hotete.",
        "missingarticle-rev": "(ᱥᱩᱫᱷᱨᱟᱹᱣ#:$1)",
        "missingarticle-diff": "(ᱯᱷᱟᱨᱟᱠ: $1, $2)",
        "viewsource": "ᱯᱷᱮᱰᱟᱛ ᱧᱮᱞ",
        "viewsource-title": "$1 ᱨᱮᱱᱟᱜ ᱯᱷᱮᱰᱟᱛ ᱧᱮᱞᱢᱮ",
        "actionthrottled": "ᱠᱟᱹᱢᱤ ᱨᱮᱭᱟᱜ ᱫᱷᱟᱨᱟ ᱵᱟᱹᱭ",
-       "protectedpagetext": "Noa sakam do ol toṅge lạgit́te do bańcao gea.",
+       "protectedpagetext": "ᱱᱚᱣᱟ ᱥᱟᱦᱴᱟ ᱫᱚ ᱚᱞ ᱥᱟᱯᱲᱟᱣ ᱞᱟᱹᱜᱤᱛᱛᱮ ᱫᱚ ᱵᱟᱸᱪᱟᱣ ᱜᱮᱭᱟ᱾",
        "viewsourcetext": "ᱱᱚᱭᱟ ᱥᱟᱦᱴᱟᱢ ᱧᱮᱞ ᱫᱟᱲᱮᱭᱟᱜ-ᱟ ᱟᱨᱮᱢ ᱠᱚᱯᱤ ᱫᱟᱲᱮᱭᱟᱜ-ᱟ᱾",
-       "viewyourtext": "Am do '''Amaḱ sompadon''' noa sakam ńel arem kopi hatao daṛeaḱa:",
+       "viewyourtext": "ᱟᱢ ᱫᱚ '''ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ''' ᱥᱟᱦᱴᱟ ᱧᱮᱞ ᱟᱨ ᱮᱢ ᱠᱚᱯᱤ ᱦᱟᱛᱟᱣ ᱫᱟᱲᱮᱭᱟᱜ-ᱟ:",
        "protectedinterface": "Noa sakam reaḱ babotko do wiki sofṭoyer reaḱ mit́ṭen inṭarfes khobore ema, onate noa do rukhiyạ doho hoeakana.",
        "cascadeprotected": "Noa sakam do sompadon khon rukhiyạre menaḱa, karon sakam do latar reaḱ {{PLURAL:$1 gan sakam reaḱ gan sakam reaḱ}} bhitrire, oka sakam do (cascading) te rukhiyạ menaḱa:\n$2",
        "namespaceprotected": "Amaḱ do sakamko joṛao lạgit́te ạidạri banuḱ tama '''$1''' ńutumjayga.",
        "anoneditwarning": "<strong>ᱦᱩᱥᱤᱭᱟᱹᱨ:</strong> ᱟᱢ ᱵᱟᱢ ᱵᱚᱞᱚᱣᱟᱠᱟᱱᱟ ᱾ ᱡᱩᱫᱤ ᱟᱢ ᱡᱟᱦᱟᱸᱱᱟᱜ ᱥᱟᱯᱲᱟᱣᱟᱢ ᱟᱢᱟᱜ IP ᱵᱩᱴᱟᱹ ᱥᱚᱫᱚᱨ ᱛᱟᱦᱮᱸᱱᱟ ᱾ ᱡᱩᱫᱤ ᱟᱢ [$1 ᱵᱚᱞᱚᱱᱟᱢ]</strong> ᱟᱨᱵᱟᱝ <strong>[$2 ᱠᱷᱟᱛᱟ ᱛᱮᱭᱟᱨᱟᱢ]</strong>, ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱫᱚ ᱩᱫᱩᱜᱚᱜ-ᱟ ᱟᱢᱟᱜ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ, ᱥᱟᱶᱛᱮ ᱮᱴᱟᱜ ᱥᱩᱵᱤᱫᱷᱟ ᱠᱚ ᱾",
        "anonpreviewwarning": "\"Am do bhitri bam bolo akana. Noa sakamre amaḱ kạmiko jạre IP ṭhiikạ̣nare rukhiyạ ḱa.\"",
        "missingcommenttext": "ᱫᱟᱭᱟ ᱠᱟᱛᱮ ᱟᱢᱟᱜ ᱠᱟᱛᱷᱟ ᱵᱚᱞᱚᱭ ᱢᱮ᱾",
-       "summary-preview": "Guṭ katha unuduḱ:",
-       "subject-preview": "Babot/Guṭkatha unuduḱ:",
+       "summary-preview": "ᱜᱩᱴ ᱠᱟᱛᱷᱟ ᱩᱱᱩᱫᱩᱜ:",
+       "subject-preview": "ᱜᱩᱴᱠᱟᱛᱷᱟ ᱩᱱᱩᱫᱩᱜ:",
        "blockedtitle": "ᱵᱮᱵᱷᱟᱨᱤᱡ ᱫᱚ ᱮᱥᱮᱫ ᱚᱪᱚᱣᱟᱠᱟᱱᱟᱭ",
        "blockedtext": "<strong>ᱟᱢᱟᱜ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ ᱟᱨᱵᱟᱝ IP ᱵᱩᱴᱟᱹ ᱫᱚ ᱵᱚᱸᱫᱽ ᱟᱠᱟᱱᱟ ᱾ </strong>\n\nᱱᱚᱶᱟ ᱵᱚᱸᱫᱽ ᱫᱚ $1 ᱫᱟᱨᱟᱭᱛᱮ ᱦᱩᱭᱟᱠᱱᱟ ᱾\nᱱᱚᱶᱟ ᱨᱮᱱᱟᱜ ᱚᱡᱮ ᱫᱚ ᱮᱢᱮᱱᱟ <em>$2</em>.\n\n* ᱵᱚᱸᱫᱽ ᱮᱦᱚᱵ: $8\n* ᱵᱚᱸᱫᱽ ᱢᱩᱪᱟᱹᱫ: $6\n* ᱟᱥᱟᱦᱟᱱ ᱵᱚᱸᱫᱽᱠᱚ: $7\n\nᱟᱢ $1 ᱮᱢ ᱥᱟᱹᱜᱟᱹᱭ ᱫᱟᱲᱮᱭᱟᱭᱟ ᱵᱟᱝᱠᱷᱟᱱ ᱮᱴᱟᱜ [[{{MediaWiki:Grouppage-sysop}}|ᱟᱰᱢᱤᱱᱤᱥᱴᱨᱮᱴᱚᱨ]] ᱵᱚᱸᱫᱽ ᱵᱟᱵᱚᱫᱽ ᱛᱮ ᱜᱟᱞᱚᱪ ᱞᱟᱹᱜᱤᱫ ᱾\nᱟᱢ ᱵᱟᱢ ᱵᱮᱵᱷᱟᱨ ᱫᱟᱲᱮᱭᱟᱜ \"email this user\" ᱥᱩᱵᱤᱫᱷᱟ ᱡᱚᱛᱷᱟᱛ ᱤᱢᱮᱞ ᱵᱩᱴᱟᱹ ᱛᱟᱢ ᱵᱟᱝ ᱛᱟᱦᱮᱸᱱ ᱠᱷᱟᱱ ᱟᱨ ᱱᱚᱶᱟ ᱫᱚ ᱪᱤᱱᱦᱟᱹᱣ-ᱟ [[Special:Preferences|ᱠᱷᱟᱛᱟ ᱧᱮᱞᱚᱚᱜ]] ᱠᱷᱚᱱ ᱟᱨ ᱟᱢ ᱫᱚ ᱵᱟᱢ ᱵᱚᱸᱫᱽ ᱟᱠᱟᱱᱟ ᱱᱚᱶᱟ ᱵᱮᱵᱷᱟᱨ ᱠᱷᱚᱱ ᱾\nᱟᱢᱟᱜ ᱱᱤᱛᱚᱜᱟᱜ IP ᱵᱩᱴᱟᱹ ᱫᱚ $3, ᱟᱨ ᱵᱚᱸᱫᱽ ID ᱫᱚ #$5  \nᱫᱟᱭᱟᱠᱟᱛᱮ ᱥᱮᱞᱮᱫᱽ ᱢᱮ ᱪᱮᱛᱟᱱᱟᱜ ᱠᱟᱛᱷᱟᱠᱚ ᱡᱚᱛᱚ ᱞᱮᱠᱟᱱ ᱠᱩᱠᱞᱤ ᱨᱮ ᱾",
        "blockednoreason": "ᱡᱟᱸᱦᱟᱸᱱ ᱚᱡᱮ ᱵᱟᱝ ᱮᱢᱠᱟᱱᱟ",
        "page_last": "ᱢᱩᱪᱟᱹᱫ",
        "histlegend": "ᱮᱴᱟᱜ ᱵᱟᱪᱷᱟᱣ: ᱱᱟᱣᱟ ᱵᱚᱫᱚᱞᱠᱚ ᱛᱩᱞᱟᱹᱣ ᱢᱮᱱᱠᱷᱟᱱ, ᱨᱮᱰᱤᱭᱳ ᱵᱟᱠᱥᱚᱨᱮ ᱪᱤᱱ ᱮᱢ ᱠᱟᱛᱮ ᱵᱚᱞᱚᱜ ᱥᱮ ᱞᱟᱛᱟᱨ ᱨᱮᱱᱟᱜ ᱵᱟᱴᱚᱱ ᱞᱤᱱᱢᱮ᱾<br />\nᱩᱱᱩᱫᱩᱜ: <strong>({{int:cur}})</strong> = ᱱᱮᱛᱟᱨ ᱥᱩᱫᱷᱨᱟᱹᱣ ᱥᱟᱶᱛᱮ ᱥᱚᱝ, <strong>({{int:last}})</strong> = ᱞᱟᱦᱟ ᱨᱮᱭᱟᱜ ᱱᱟᱣᱟ ᱥᱩᱫᱷᱨᱟᱹᱣ ᱥᱟᱶᱛᱮ ᱥᱚᱝ, <strong>{{int:minoreditletter}}</strong> = ᱦᱩᱰᱤᱧ ᱥᱟᱯᱲᱟᱣ ᱾",
        "history-fieldset-title": "ᱧᱮᱞ ᱟᱹᱨᱩ ᱞᱟᱹᱜᱤᱫ ᱥᱮᱸᱫᱽᱨᱟ",
-       "history-show-deleted": "khạli get giḍiyaḱ koge",
+       "history-show-deleted": "ᱠᱷᱟᱹᱞᱤ ᱜᱮᱫ ᱜᱤᱰᱤᱭᱟᱜ ᱠᱚᱜᱮ",
        "histfirst": "ᱢᱟᱨᱮᱱᱟᱜ",
        "histlast": "ᱱᱟᱣᱟᱱᱟᱜ",
        "historysize": "({{PLURAL:$1 1 ᱵᱟᱭᱤᱴ $1 ᱵᱟᱭᱤᱴᱥ}})",
        "history-feed-item-nocomment": "$2 ᱨᱮ $1",
        "rev-deleted-comment": "(ᱥᱟᱯᱲᱟᱣ ᱢᱩᱬᱩᱛ ᱠᱟᱛᱦᱟ ᱚᱪᱟᱜᱠᱟᱱᱟ)",
        "rev-deleted-user": "(ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱜ ᱧᱩᱛᱩᱢ ᱚᱪᱚᱜᱠᱟᱱᱟ)",
-       "rev-deleted-event": "(Log kạmi do ocog hoena)",
+       "rev-deleted-event": "(Log ᱠᱟᱹᱢᱤ ᱫᱚ ᱚᱪᱚᱜ ᱦᱩᱭᱱᱟ)",
        "rev-deleted-user-contribs": "[ᱵᱮᱵᱷᱟᱨᱤᱡ ᱧᱩᱛᱩᱢ ᱥᱮ IP ᱴᱷᱤᱠᱟᱱᱟ ᱫᱚ ᱚᱪᱟᱜ ᱦᱩᱭᱱᱟ - ᱮᱱᱮᱢ ᱠᱷᱚᱱ ᱥᱟᱯᱲᱟᱣ ᱫᱚ ᱩᱠᱩ ᱟᱠᱟᱱᱟ]",
        "rev-delundel": "ᱧᱮᱧᱮᱞᱟᱜ ᱵᱚᱫᱚᱞ",
        "rev-showdeleted": "ᱥᱚᱫᱚᱨ",
        "revdelete-show-file-submit": "ᱦᱮᱸ",
        "revdelete-hide-text": "Nãwã aroe olko ukuemẽ",
        "revdelete-hide-image": "ᱨᱮᱫ ᱥᱟᱛᱚᱢᱠᱩ ᱩᱠᱩᱭᱢᱮ",
-       "revdelete-hide-name": "Kạmi ar bejha ukue mẽ",
-       "revdelete-hide-comment": "Sompadon gut katha ukue mẽ",
-       "revdelete-hide-user": "Sompadonićaḱ beohar ńutum/IP ṭhikạna ukuemẽ",
+       "revdelete-hide-name": "ᱠᱟᱹᱢᱤ ᱟᱨ ᱵᱮᱡᱷᱟ ᱩᱠᱩᱭᱢᱮ",
+       "revdelete-hide-comment": "ᱥᱟᱯᱲᱟᱣ ᱜᱩᱴᱠᱟᱛᱷᱟ",
+       "revdelete-hide-user": "ᱥᱟᱯᱲᱟᱣᱤᱡ ᱟ ᱧᱩᱛᱩᱢ/IP ᱴᱷᱤᱠᱟᱱᱟᱠᱩ",
        "revdelete-radio-same": "(ᱟᱞᱚᱢ ᱵᱚᱫᱚᱞᱟ)",
        "revdelete-radio-set": "ᱩᱠᱩ",
        "revdelete-radio-unset": "ᱧᱮᱞ ᱜᱟᱱᱚᱜ",
        "search-file-match": "(ᱢᱤᱫᱩᱜᱟᱜ ᱨᱮᱫ ᱩᱱᱩᱫᱩᱜ)",
        "search-suggest": "ᱪᱮᱫ ᱮᱢ ᱢᱮᱱ ᱚᱪᱚᱭᱮᱫᱟ: $1",
        "search-interwiki-caption": "ᱥᱟᱶᱛᱮᱱ ᱯᱨᱚᱡᱮᱠᱴ ᱠᱷᱚᱱ ᱚᱨᱡᱚ",
-       "search-interwiki-default": "$1 folko:",
+       "search-interwiki-default": "Results from $1:",
        "search-interwiki-more": "(ᱵᱟᱹᱲᱛᱤ)",
        "search-interwiki-more-results": "ᱵᱟᱹᱲᱛᱤ ᱚᱨᱡᱚᱠᱚ",
        "search-relatedarticle": "ᱥᱟᱹᱜᱟᱹᱭᱟᱱ",
        "datedefault": "ᱠᱩᱥᱤ ᱵᱟᱹᱱᱩᱜ-ᱟ",
        "prefs-user-pages": "ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱜ ᱥᱟᱦᱴᱟᱠᱚ",
        "prefs-resetpass": "ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱵᱚᱫᱚᱞ",
-       "prefs-changeemail": "E-mail á¹­hikạna bodolme",
+       "prefs-changeemail": "E-mail á±´á±·á±¤á± á±\9fá±±á±\9f á±µá±\9aᱫá±\9aá±\9e á±¥á±® á±\9cᱮᱫ á±\9cᱤᱰᱤᱭᱢᱮ",
        "prefs-setemail": "ᱤᱢᱮᱞ ᱵᱩᱴᱟᱹ ᱡᱚᱲᱟᱣᱢᱮ",
        "saveprefs": "ᱨᱩᱠᱷᱤᱭᱟᱹᱭᱢᱮ",
        "searchresultshead": "ᱥᱮᱸᱫᱽᱨᱟ",
        "prefs-searchoptions": "ᱥᱮᱸᱫᱽᱨᱟ",
        "prefs-files": "ᱨᱮᱫᱠᱚ",
        "youremail": "Email:",
-       "username": "Beoharićaḱ ńutum:",
+       "username": "{{GENDER:$1|ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱜ ᱧᱩᱛᱩᱢ}}:",
        "yourrealname": "ᱟᱥᱚᱞ ᱧᱩᱛᱩᱢ:",
        "yourlanguage": "ᱯᱟᱹᱨᱥᱤ:",
        "yournick": "ᱱᱟᱶᱟ ᱥᱩᱦᱤ:",
-       "gender-male": "Baba hoṛ",
-       "gender-female": "Gogo hoṛ, Kuṛi, Kuṛi gidrạ",
+       "gender-male": "ᱵᱟᱵᱟ ᱦᱚᱲ ᱣᱤᱠᱤ ᱥᱟᱦᱴᱟ ᱠᱩᱭ ᱥᱟᱯᱲᱟᱣ ᱠᱮᱫᱟ",
+       "gender-female": "ᱜᱚᱜᱚ ᱦᱚᱲ ᱣᱤᱠᱤ ᱥᱟᱦᱴᱟ ᱠᱩᱭ ᱥᱟᱯᱲᱟᱣ ᱠᱮᱫᱟ",
        "email": "Email",
        "prefs-help-email": "E-mail ṭhikana do bạṛtitege, menkhan uku namber nãwãte benao jạruṛa, am do amaḱ uku nomborem hiṛiń keda.",
        "prefs-help-email-others": "Am são e-mail hotete jogajog dohoy lạgitte mitṭen joṛao se amaḱ katha roṛaḱ sakam bachao jońme.\nAmaḱ e-mail ṭhikạna do bań cabaḱa tinre onko do ko beohara",
        "prefs-signature": "ᱥᱩᱦᱤ",
        "prefs-editor": "ᱥᱟᱯᱲᱮᱛ",
        "prefs-preview": "ᱧᱮᱞ ᱵᱤᱰᱟᱹᱣ",
-       "userrights": "Beoharićaḱ laṛcaṛ ektiạrko",
-       "userrights-lookup-user": "Beoharkoaḱ gãotako laṛcaṛ",
+       "userrights": "ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱜ ᱟᱹᱭᱫᱟᱹᱨᱤ ᱠᱩ",
+       "userrights-lookup-user": "ᱢᱤᱫᱴᱮᱱ ᱵᱮᱵᱦᱟᱨᱤ ᱴᱷᱤᱠᱤ ᱢᱮ",
        "userrights-user-editname": "ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱜ ᱧᱤᱛᱩᱢ ᱵᱚᱞᱚᱭ ᱢᱮ:",
-       "editusergroup": "Beoharićaḱ gãotako toṅgeymẽ",
-       "userrights-editusergroup": "Beoharićaḱ gãotako toṅgeymẽ",
-       "saveusergroups": "Beoharićaḱ gãotako rukhiyaymẽ",
+       "editusergroup": "ᱵᱮᱵᱦᱟᱨᱤ ᱜᱟᱶᱛᱟᱠᱩ ᱩᱰᱩᱜᱽ ᱢᱮ",
+       "userrights-editusergroup": "ᱥᱟᱯᱲᱟᱣ {{GENDER:$1|ᱵᱮᱵᱦᱟᱨᱤ}} ᱜᱟᱶᱛᱟᱠᱩ",
+       "saveusergroups": "ᱨᱩᱠᱷᱤᱭᱟᱹ {{GENDER:$1|ᱵᱮᱵᱦᱟᱨᱤ}} ᱜᱟᱶᱛᱟᱠᱩ",
        "userrights-reason": "ᱚᱡᱮ:",
        "group-bot": "ᱵᱚᱴᱠᱚ",
        "group-sysop": "ᱟᱰᱢᱤᱱᱤᱥᱴᱨᱮᱴᱚᱨ",
        "newpageletter": "N",
        "boteditletter": "b",
        "rc-change-size-new": "$1 {{PLURAL:$1|ᱵᱟᱭᱤᱴ|ᱵᱟᱭᱤᱴᱥ}} ᱵᱚᱫᱚᱞ ᱛᱟᱭᱚᱢ",
-       "rc-enhanced-expand": "Purạote uduḱ",
+       "rc-enhanced-expand": "ᱡᱚᱛᱚ ᱩᱰᱩᱜᱽ ᱢᱮ",
        "rc-enhanced-hide": "ᱡᱚᱛᱚᱭᱟᱜ ᱩᱠᱩᱭᱢᱮ",
        "rc-old-title": "ᱚᱥᱚᱞᱨᱮ ᱛᱮᱭᱟᱨᱟᱠᱟᱱᱟ \"$1\" ᱞᱮᱠᱟᱛᱮ",
        "recentchangeslinked": "ᱥᱟᱶᱛᱮᱱᱟᱜ ᱵᱚᱫᱚᱞᱠᱚ",
        "listusers-blocked": "(ᱮᱥᱮᱫ ᱜᱮᱭᱟ)",
        "listgrouprights-group": "ᱜᱟᱶᱛᱟ",
        "listgrouprights-rights": "ᱟᱹᱭᱫᱟᱹᱨᱤᱠᱚ",
-       "listgrouprights-helppage": "Goṛo:Gaõta ạidạri",
+       "listgrouprights-helppage": "ᱜᱚᱸᱲᱚᱸ:ᱜᱟᱶᱛᱟ ᱟᱹᱭᱫᱟᱹᱨᱤ ᱠᱩ",
        "listgrouprights-members": "(ᱥᱚᱦᱮᱫᱠᱩᱣᱟᱜ ᱛᱟᱹᱞᱠᱟᱹ)",
        "listgrouprights-addgroup-all": "ᱡᱚᱛᱚ ᱜᱟᱶᱛᱟᱠᱩ ᱥᱮᱞᱮᱫ ᱠᱩ ᱢᱮ",
        "listgrouprights-removegroup-all": "ᱡᱚᱛᱚ ᱜᱟᱶᱛᱟᱠᱩ ᱚᱪᱚᱜ ᱠᱩ ᱢᱮ",
        "whatlinkshere-hideimages": "$1 ᱨᱮᱫ ᱡᱳᱱᱳᱲᱠᱚ",
        "whatlinkshere-filters": "ᱪᱷᱟᱹᱱᱤᱠᱩ",
        "block": "ᱵᱮᱵᱦᱟᱨᱤᱡ ᱮᱥᱮᱫᱮᱢ",
-       "blockip": "Beoharić esedem",
+       "blockip": "ᱮᱥᱮᱫᱽ {{GENDER:$1|ᱵᱮᱵᱦᱟᱨᱤ}}",
        "ipboptions": "᱒ ᱜᱷᱚᱱᱴᱟ : 2 hours, ᱑ ᱢᱟᱦᱟᱸ:1 day, ᱓ ᱢᱟᱦᱟᱸ : 3 days,᱑ ᱦᱟᱯᱛᱟ:1 week, ᱒ ᱦᱟᱯᱛᱟ : 2 weeks, ᱑ ᱪᱟᱸᱫᱚ :1 month, ᱓ ᱪᱟᱸᱫᱚ : 3 months, ᱖ ᱪᱟᱸᱫᱚ:6 months, ᱑ ᱥᱮᱨᱢᱟ:1 year, ᱥᱤᱢᱟᱹᱱᱟᱹ ᱪᱷᱟᱲᱟ : infinite",
        "autoblocklist-submit": "ᱥᱮᱸᱫᱽᱨᱟ",
        "ipblocklist": "ᱵᱮᱵᱦᱟᱨᱤᱡ ᱮᱥᱮᱫᱜᱮᱭᱟᱭ",
index 991e756..99558c5 100644 (file)
        "changeemail-none": "(کوئی وی کائنی)",
        "changeemail-password": "تہاݙا {{SITENAME}} پاس ورڈ:",
        "changeemail-submit": "ای-میل بدلو",
+       "resettokens": "ٹوکناں دی نویں ترتیب",
        "resettokens-tokens": "ٹوکن",
        "resettokens-token-label": "$1 (موجودہ قدر: $2)",
        "bold_sample": "موٹی لکھائی",
        "diff-empty": "(کوئی فرق کائنی)",
        "searchresults": "کھوج دا نتارا",
        "searchresults-title": "\"$1\" دے کھوج نتارے",
+       "titlematches": "ورقے دا ناں رلدے",
+       "textmatches": "ورقے دی لکھت رلدی ہے",
+       "notextmatches": "ورقے دی لکھت نی رلدی",
        "prevn": "پچھلے {{PLURAL:$1|$1}}",
        "nextn": "اگلے {{PLURAL:$1|$1}}",
        "prev-page": "پچھلا ورقہ",
        "grant-createaccount": "کھاتے کھولو",
        "grant-uploadfile": "نویاں فائلاں اپ لوڈ کرو",
        "grant-basic": "بنیادی حقوق",
+       "grant-viewmywatchlist": "آپݨی نظریں ہیٹھ تندیر ݙیکھو",
        "newuserlogpage": "کھاتہ بݨاوݨ آلی لاگ",
        "rightslog": "ورتݨ والے دے حقاں دی لاگ",
        "action-read": "ایہ ورقہ پڑھو",
        "action-createaccount": "ایہ ورتݨ آلا کھاتہ کھولو",
        "action-move": "ایہ ورقہ ٹورو",
        "action-movefile": "ایہ فائل ٹورو",
+       "action-upload": "ایہ فائل اپ لوڈ کرو",
        "action-delete": "ایہ ورقہ مٹاؤ",
        "action-sendemail": "ای میلاں بھیجو",
+       "action-purge": "ایہ ورقہ تازہ تے صاف کرو",
        "enhancedrc-history": "پچھلا کم",
        "recentchanges": "نویاں تبدیلیاں",
        "recentchanges-legend": "اِختیاراتِ حالیہ تبدیلیاں",
        "recentchanges-legend-heading": "<strong>اختصارات:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ایہ وی ݙیکھو [[Special:NewPages|نویں ورقیاں دی لسٹ]])",
        "recentchanges-submit": "ݙیکھاؤ",
+       "rcfilters-tag-remove": "ہٹاؤ '$1'",
+       "rcfilters-activefilters": "فعال نتارے",
+       "rcfilters-advancedfilters": "ودھائے نتارے",
+       "rcfilters-limit-title": "ݙیکھاوݨ کیتے نتیجے",
        "rcfilters-limit-and-date-label": "$1{{PLURAL:$1|تبدیلی|تبدیلیاں}}، $2",
+       "rcfilters-date-popup-title": "ڳولݨ کیتے ویلے دی مدت",
        "rcfilters-days-title": "موجودہ ݙینہ",
        "rcfilters-hours-title": "موجودہ گھنٹے",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|ݙینہ}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|گھنٹہ|گھنٹے}}",
+       "rcfilters-highlighted-filters-list": "نمایاں: $1",
+       "rcfilters-quickfilters": "محفوظ نتارے",
        "rcfilters-savedqueries-rename": "نواں ناں لکھو",
        "rcfilters-savedqueries-setdefault": "ݙیفالٹ بݨاؤ",
        "rcfilters-savedqueries-unsetdefault": "ݙیفالٹ توں ہٹاؤ",
index 61e62ec..35c26b7 100644 (file)
        "cascadeprotected": "Ta stran je bila zaščitena pred urejanji, ker je vključena na {{PLURAL:$1|sledečo stran, ki je bila zaščitena|sledeči strani, ki sta bili zaščiteni|sledeče strani, ki so bile zaščitene}} z vključeno kaskadno možnostjo:\n$2",
        "namespaceprotected": "Za urejanje strani v imenskem prostoru '''$1''' nimate dovoljenja.",
        "customcssprotected": "Nimate pravice urejati te strani CSS, ker vsebuje osebne nastavitve drugega uporabnika.",
+       "customjsonprotected": "Nimate pravice urejati te strani JSON, ker vsebuje osebne nastavitve drugega uporabnika.",
        "customjsprotected": "Nimate pravice urejati te strani JavaScript, ker vsebuje osebne nastavitve drugega uporabnika.",
        "mycustomcssprotected": "Nimate pravic za urejanje te strani s CSS.",
+       "mycustomjsonprotected": "Nimate pravic za urejanje te strani z JSON.",
        "mycustomjsprotected": "Nimate pravic za urejanje te strani z JavaScriptom.",
        "myprivateinfoprotected": "Nimate dovoljenja za urejanje svojih zasebnih podatkov.",
        "mypreferencesprotected": "Nimate dovoljenja za urejanje svojih nastavitev.",
        "savechanges": "Shrani spremembe",
        "publishpage": "Objavi stran",
        "publishchanges": "Objavi spremembe",
+       "savearticle-start": "Shrani stran ...",
+       "savechanges-start": "Shrani spremembe ...",
+       "publishpage-start": "Objavi stran ...",
+       "publishchanges-start": "Objavi spremembe ...",
        "preview": "Predogled",
        "showpreview": "Prikaži predogled",
        "showdiff": "Prikaži spremembe",
        "blocked-notice-logextract": "Ta uporabnik je trenutno blokiran.\nNajnovejši vnos v dnevniku blokad je prikazan spodaj:",
        "clearyourcache": "<strong>Opomba:</strong> Da bodo spremembe prišle do veljave, po shranitvi izpraznite predpomnilnik svojega brskalnika.\n* <strong>Firefox/Safari:</strong> Držite <em>Shift</em> in kliknite <em>Ponovno naloži</em> (<em>Reload</em>) ali pritisnite <em>Ctrl-Shift-R</em> ali <em>Ctrl-R</em> (<em>⌘-R</em> na sistemu Mac)\n* <strong>Internet Explorer:</strong> Držite <em>Ctrl-F5</em> in kliknite <em>Osveži</em> (<em>Refresh</em>) ali pritisnite <em>Ctrl-F5</em>\n* <strong>Google Chrome:</strong> Pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na sistemu Mac)\n* <strong>Opera:</strong> Pojdite v <em>Meni → Nastavitve</em> (<em>Opera → Nastavitve</em> na sistemu Mac) in nato na <em>Zasebnost in varnost → Počisti podatke o brskanju → Predpomnjene slike in datoteke</em>.",
        "usercssyoucanpreview": "'''Nasvet:''' Za preizkušanje svojega novega CSS pred shranjevanjem uporabite gumb »{{int:showpreview}}«.",
+       "userjsonyoucanpreview": "<strong>Nasvet:</strong> Za preizkušanje svojega novega JSON pred shranjevanjem uporabite gumb »{{int:showpreview}}«.",
        "userjsyoucanpreview": "'''Nasvet:''' Za preizkušanje svojega novega JavaScripta pred shranjevanjem uporabite gumb »{{int:showpreview}}«.",
        "usercsspreview": "'''Svoj uporabniški CSS le predogledujete.'''\n'''Ni še bil shranjen!'''",
+       "userjsonpreview": "<strong>Ne pozabite, da svojo uporabniško konfiguracijo JSON le preizkušate/predogledujete.\nNi še bila shranjena!</strong>",
        "userjspreview": "'''Ne pozabite, da svoj uporabniški JavaScript le preizkušate/predogledujete.'''\n'''Ni še bil shranjen!'''",
        "sitecsspreview": "'''Ne pozabite, da ta CSS samo preizkušate.'''\n'''Ni še bil shranjen!'''",
+       "sitejsonpreview": "<strong>Ne pozabite, da svojo uporabniško konfiguracijo JSON le predogledujete.\nNi še bila shranjena!</strong>",
        "sitejspreview": "'''Ne pozabite, da kodo tega JavaScripta samo preizkušate.'''\n'''Ni še bila shranjena!'''",
-       "userinvalidconfigtitle": "'''Opozorilo:''' Koža »$1« ne obstaja.\nVedite, da .css in .js strani po meri uporabljajo naslov z malo začetnico, npr. {{ns:user}}:Blabla/vector.css namesto {{ns:user}}:Blabla/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Opozorilo:</strong> Koža »$1« ne obstaja.\nVedite, da strani .css, .json in .js po meri uporabljajo naslov z malo začetnico, npr. {{ns:user}}:Blabla/vector.css namesto {{ns:user}}:Blabla/Vector.css.",
        "updated": "(Posodobljeno)",
        "note": "'''Opomba:'''",
        "previewnote": "'''Vedite, da stran le predogledujete.'''\nVaših sprememb še nismo shranili!",
        "default": "privzeto",
        "prefs-files": "Datoteke",
        "prefs-custom-css": "CSS po meri",
+       "prefs-custom-json": "JSON po meri",
        "prefs-custom-js": "JS po meri",
-       "prefs-common-config": "Skupni CSS/JS za vse kože:",
+       "prefs-common-config": "Skupni CSS/JSON/JavaScript za vse kože:",
        "prefs-reset-intro": "To stran lahko uporabite za ponastavitev nastavitev na privzete za to spletišče.\nTega ni mogoče razveljaviti.",
        "prefs-emailconfirm-label": "Potrditev e-pošte:",
        "youremail": "E-poštni naslov:",
        "right-editcontentmodel": "Urejanje vsebinskega modela strani",
        "right-editinterface": "Urejanje uporabniškega vmesnika",
        "right-editusercss": "Uredi CSS datotek drugih uporabnikov",
+       "right-edituserjson": "Urejanje JSON-datotek drugih uporabnikov",
        "right-edituserjs": "Uredi JS datotek drugih uporabnikov",
        "right-editmyusercss": "Uredite svoje uporabniške datoteke CSS",
+       "right-editmyuserjson": "Urejanje svojih uporabniških datotek JSON",
        "right-editmyuserjs": "Uredite svoje uporabniške datoteke JavaScript",
        "right-viewmywatchlist": "Ogledovanje svojega spiska nadzorov",
        "right-editmywatchlist": "Urejanje vašega spiska nadzorov. Vedite, da bodo nekatera dejanja dodala strani nanj tudi brez te pravice.",
        "grant-createaccount": "Ustvarjanje računov",
        "grant-createeditmovepage": "Ustvarjanje, urejanje in prestavljanje strani",
        "grant-delete": "Brisanje strani, redakcij in dnevniških vnosov",
-       "grant-editinterface": "Urejanje imenskega prostora MediaWiki in uporabniškega CSS/JavaScripta",
-       "grant-editmycssjs": "Urejanje svojega uporabniškega CSS/JavaScripta",
+       "grant-editinterface": "Urejanje imenskega prostora MediaWiki in uporabniškega CSS/JSON/JavaScripta",
+       "grant-editmycssjs": "Urejanje svojega uporabniškega CSS/JSON/JavaScripta",
        "grant-editmyoptions": "Urejanje svojih uporabniških nastavitev",
        "grant-editmywatchlist": "Urejanje svojega spiska nadzorov",
        "grant-editpage": "Urejanje obstoječih strani",
        "tooltip-preferences-save": "Shrani nastavitve",
        "tooltip-summary": "Vnesite kratek povzetek",
        "interlanguage-link-title": "$1 – $2",
+       "common.json": "/* JSON, ki ga vnesete tukaj, se bo naložil vsem uporabnikom ob nalaganju vsake strani. */",
        "anonymous": "{{PLURAL:$1|Brezimni uporabnik|Brezimna uporabnika|Brezimni uporabniki}} {{GRAMMAR:rodilnik|{{SITENAME}}}}",
        "siteuser": "uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1",
        "anonuser": "Brezimni uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1",
        "unlinkaccounts-success": "Račun smo razvezali.",
        "authenticationdatachange-ignored": "Sprememba overitvenih podatkov ni bila obdelana. Morda ni bil konfiguriran noben ponudnik?",
        "userjsispublic": "Pomnite: Podstrani JavaScript naj ne vsebujejo zaupnih podatkov, saj so vidne tudi drugim uporabnikom.",
+       "userjsonispublic": "Pomnite: podstrani JSON naj ne vsebujejo zaupnih podatkov, saj so vidne drugih uporabnikom.",
        "usercssispublic": "Pomnite: Podstrani CSS naj ne vsebujejo zaupnih podatkov, saj so vidne tudi drugim uporabnikom.",
        "restrictionsfield-badip": "Neveljaven IP-naslov ali obseg: $1",
        "restrictionsfield-label": "Dovoljeni IP-obsegi:",
index 8fdfa58..0d5735c 100644 (file)
        "createacct-another-username-ph": "Shtypni emrin e përdoruesit",
        "yourpassword": "Fjalëkalimi:",
        "userlogin-yourpassword": "Fjalëkalimi",
-       "userlogin-yourpassword-ph": "Shtypni fjalëkalimin tuaj",
-       "createacct-yourpassword-ph": "Shtypni një fjalëkalim",
+       "userlogin-yourpassword-ph": "Fut fjalëkalimin tënd",
+       "createacct-yourpassword-ph": "Fut një fjalëkalim",
        "yourpasswordagain": "Fusni fjalëkalimin përsëri",
        "createacct-yourpasswordagain": "Konfirmoni fjalëkalimin",
-       "createacct-yourpasswordagain-ph": "Shtypni fjalëkalimin përsëri",
+       "createacct-yourpasswordagain-ph": "Fut fjalëkalimin përsëri",
        "userlogin-remembermypassword": "Më mbaj të kyçur",
        "userlogin-signwithsecure": "Përdor lidhje të sigurtë",
        "cannotlogin-title": "Nuk mund të kyçeni",
        "userlogin-reauth": "Duhet të identifikoheni përsëri për të verifikuar që jeni {{GENDER:$1|$1}}",
        "userlogin-createanother": "Krijo një llogari tjeter",
        "createacct-emailrequired": "Posta elektronike",
-       "createacct-emailoptional": "Adresa Elektronike (me dëshirë)",
+       "createacct-emailoptional": "Adresa elektronike (me dëshirë)",
        "createacct-email-ph": "Fusni adresën tuaj elektronike",
        "createacct-another-email-ph": "Vendos adresën e postës elektronike",
        "createaccountmail": "Përdorni një fjalëkalim të përkohshëm të rastit dhe  dërgojeni atë në adresën e specifikuar te email",
index 466c869..6d0e8b2 100644 (file)
        "copyright": "Садржај је доступан под лиценцом $1 осим ако је другачије наведено.",
        "copyrightpage": "{{ns:project}}:Ауторска права",
        "currentevents": "Актуелности",
-       "currentevents-url": "Project:Ð\9dовости",
+       "currentevents-url": "Project:Ð\90кÑ\82Ñ\83елности",
        "disclaimers": "Одрицање одговорности",
        "disclaimerpage": "Project:Одрицање одговорности",
        "edithelp": "Помоћ при уређивању",
        "badaccess": "Грешке у овлашћењима",
        "badaccess-group0": "Није Вам дозвољено да извршите захтевану радњу.",
        "badaccess-groups": "Радња коју сте захтевали је ограничена само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}: $1.",
-       "versionrequired": "Ð\9fоÑ\82Ñ\80ебно Ñ\98е $1 Ð¸Ð·Ð´Ð°Ñ\9aе Медијавикија",
-       "versionrequiredtext": "Потребно је $1 издање Медијавикија да бисте користили ову страницу.\nПогледајте страницу за [[Special:Version|издање]].",
+       "versionrequired": "Ð\9fоÑ\82Ñ\80ебна Ñ\98е Ð²ÐµÑ\80зиÑ\98а $1 Медијавикија",
+       "versionrequiredtext": "Потребно је издање $1 Медијавикија да бисте користили ову страницу.\nПогледајте страницу за [[Special:Version|издање]].",
        "ok": "У реду",
        "pagetitle": "$1 — {{SITENAME}}",
        "pagetitle-view-mainpage": "{{SITENAME}}",
        "toc": "Садржај",
        "showtoc": "прикажи",
        "hidetoc": "сакриј",
-       "collapsible-collapse": "СакÑ\80иÑ\98",
+       "collapsible-collapse": "СкÑ\83пи",
        "collapsible-expand": "Прикажи",
        "confirmable-confirm": "Да ли {{GENDER:$1|сте}} сигурни?",
        "confirmable-yes": "Да",
        "passwordreset-ignored": "Ресетовање лозинке није успело. Можда послужилац није конфигурисан?",
        "passwordreset-invalidemail": "Неисправна имејл адреса",
        "passwordreset-nodata": "Корисничко име и адреса е-поште нису наведени",
-       "changeemail": "Ð\9fÑ\80омени Ð¸Ð»Ð¸ Ñ\83клони Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81Ñ\83",
+       "changeemail": "Ð\9fÑ\80омена Ð¸Ð»Ð¸ Ñ\83клаÑ\9aаÑ\9aе Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81е",
        "changeemail-header": "Попуните овај образац да би сте променили Вашу имејл адресу. Ако жели да ускратите приступ било којој имејл адреси Вашем налогу, оставите празно поље за нову имејл адресу приликом попуњавање обрасца.",
        "changeemail-no-info": "Морате бити пријављени да бисте приступили овој страници.",
        "changeemail-oldemail": "Тренутна имејл адреса:",
        "savechanges": "Сачувај измене",
        "publishpage": "Објави страницу",
        "publishchanges": "Објави измене",
+       "savearticle-start": "Сачувај страницу...",
+       "savechanges-start": "Сачувај измене...",
+       "publishpage-start": "Објави страницу...",
+       "publishchanges-start": "Објави измене...",
        "preview": "Претпреглед",
        "showpreview": "Прикажи претпреглед",
        "showdiff": "Прикажи измене",
        "userjspreview": "<strong>Ово је само преглед јаваскрипта.\nСтраница још није сачувана!</strong>",
        "sitecsspreview": "<strong>Ово је само преглед CSS-а.\nСтраница још није сачувана!</strong>",
        "sitejspreview": "<strong>Ово је само преглед јаваскрипта.\nСтраница још није сачувана!</strong>",
-       "userinvalidconfigtitle": "<strong>Упозорење:</strong> не постоји тема „$1“.\nПрилагођене странице CSS и јаваскрипт почињу малим словом, нпр. {{ns:user}}:Foo/vector.css, а не {{ns:user}}:Foo/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Упозорење:</strong> не постоји тема „$1“.\nПрилагођене странице CSS, JSON и Јаваскрипт почињу малим словом, нпр. {{ns:user}}:Foo/vector.css, а не {{ns:user}}:Foo/Vector.css.",
        "updated": "(ажурирано)",
        "note": "<strong>Напомена:</strong>",
        "previewnote": "<strong>Не заборавите да је ово само претпреглед.</strong>\nВаше измене још нису сачуване!",
        "viewpagelogs": "Дневници ове странице",
        "nohistory": "Не постоји историја измена ове странице.",
        "currentrev": "Тренутна измена",
-       "currentrev-asof": "Ð\9fоÑ\81ледÑ\9aа Ð²ÐµÑ\80зиÑ\98а на датум $2 у $3",
-       "revisionasof": "Ð\98змена Ð¾Ð´ $2 у $3",
-       "revision-info": "Ð\98змена Ð¾Ð´ $1 ÐºÐ¾Ñ\98Ñ\83 Ñ\98е {{GENDER:$6|Ñ\83Ñ\80едио $2|Ñ\83Ñ\80едила $2}}$7",
+       "currentrev-asof": "Ð\9fоÑ\81ледÑ\9aа Ð¸Ð·Ð¼ÐµÐ½а на датум $2 у $3",
+       "revisionasof": "Ð\98змена Ð½Ð° Ð´Ð°Ñ\82Ñ\83м $2 у $3",
+       "revision-info": "Ð\98змена Ð¾Ð´ $1 Ð¾Ð´ Ñ\81Ñ\82Ñ\80ане {{GENDER:$6|коÑ\80иÑ\81ника $2|коÑ\80иÑ\81ниÑ\86е $2}}$7",
        "previousrevision": "← Старија измена",
        "nextrevision": "Новија измена →",
        "currentrevisionlink": "Тренутна измена",
        "default": "подразумевана",
        "prefs-files": "Датотеке",
        "prefs-custom-css": "прилагођени CSS",
+       "prefs-custom-json": "Прилагођени JSON",
        "prefs-custom-js": "прилагођени Јаваскрипт",
-       "prefs-common-config": "Дељени CSS/Јаваскрипт за све теме:",
+       "prefs-common-config": "Дељени CSS/JSON/Јаваскрипт за све теме:",
        "prefs-reset-intro": "Можете користити ову страницу да поништите своја подешавања на подразумеване вредности.\nОва радња се не може вратити.",
        "prefs-emailconfirm-label": "Потврда имејла:",
        "youremail": "Имејл:",
        "grant-createaccount": "Отварање налога",
        "grant-createeditmovepage": "Прављење, уређивање и премештање страница",
        "grant-delete": "Брисање страница, измена и уноса у дневницима",
-       "grant-editinterface": "Уређивање Медијавики именског простора и корисничких CSS/JavaScript страница",
-       "grant-editmycssjs": "Уређивање вашег CSS/JavaScript-а",
+       "grant-editinterface": "Уређивање Медијавики именског простора и корисничких CSS/JSON/Јаваскрипт страница",
+       "grant-editmycssjs": "Уређивање вашег CSS/JSON/Јаваскрипта",
        "grant-editmyoptions": "Уређивање ваших подешавања",
        "grant-editmywatchlist": "Уређивање вашег списка надгледања",
        "grant-editpage": "Уређивање постојећих страница",
        "recentchanges-network": "Због техничког проблема не могу да учитам резултате. Покушајте поновно да учитате страницу.",
        "recentchanges-notargetpage": "Унесите назив странице како бисте видели сродне измене.",
        "recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.",
-       "recentchanges-label-newpage": "Ð\9dова страница",
-       "recentchanges-label-minor": "Ð\9cања измена",
-       "recentchanges-label-bot": "Ð\91оÑ\82овÑ\81ка Ð¸Ð·Ð¼ÐµÐ½Ð°",
-       "recentchanges-label-unpatrolled": "Ð\9dепаÑ\82Ñ\80олиÑ\80ана Ð¸Ð·Ð¼Ðµна",
+       "recentchanges-label-newpage": "Ð\9eвом Ð¸Ð·Ð¼ÐµÐ½Ð¾Ð¼ Ñ\98е Ð½Ð°Ð¿Ñ\80авÑ\99ена Ð½ова страница",
+       "recentchanges-label-minor": "Ð\9eво Ñ\98е Ð¼ања измена",
+       "recentchanges-label-bot": "Ð\9eвÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83 Ñ\98е Ð½Ð°Ñ\87инио Ð±Ð¾Ñ\82",
+       "recentchanges-label-unpatrolled": "Ð\9eва Ð¸Ð·Ð¼ÐµÐ½Ð° Ñ\98оÑ\88 Ð½Ð¸Ñ\98е Ð¿Ð°Ñ\82Ñ\80олиÑ\80ана",
        "recentchanges-label-plusminus": "Промена величине странице у бајтовима",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
-       "recentchanges-legend-newpage": "[[w:sr:Посебно:НовеСтране|<u>Н</u>ова страница]]",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|списак нових страница]])",
        "recentchanges-submit": "Прикажи",
        "rcfilters-tag-remove": "Уклоните филтер „$1”",
        "rcfilters-legend-heading": "<strong>Списак скраћеница:</strong>",
        "rcfilters-liveupdates-button-title-on": "Искључите ажурирања уживо",
        "rcfilters-liveupdates-button-title-off": "Прикажи нове измене уживо",
        "rcfilters-watchlist-markseen-button": "Означи све измене као погледане",
-       "rcfilters-watchlist-edit-watchlist-button": "Промените Ваш списак надгледаних страница",
+       "rcfilters-watchlist-edit-watchlist-button": "Промени списак надгледаних страница",
        "rcfilters-watchlist-showupdated": "Измене на страницама које нисте посетили од када је измена извршена су <strong>подебљане</strong>, са испуњеним ознакама.",
        "rcfilters-preference-label": "Сакриј побољшану верзију скорашњих измена",
        "rcfilters-preference-help": "Поништава редизајн интерфејса из 2017. и све алатке додате тада и после.",
        "recentchanges-page-removed-from-category": "[[:$1]] је уклоњена из категорије",
        "recentchanges-page-removed-from-category-bundled": "[[:$1]] је уклоњена из категорије, [[Special:WhatLinksHere/$1|ова страница је повезана са другим страницама]]",
        "autochange-username": "Медијавики аутоматска измена",
-       "upload": "Ð\9eÑ\82пÑ\80еми Ð´Ð°Ñ\82оÑ\82екÑ\83",
+       "upload": "Ð\9eÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82еке",
        "uploadbtn": "Отпреми датотеку",
        "reuploaddesc": "Назад на образац за отпремање",
        "upload-tryagain": "Пошаљи измењени опис датотеке",
        "nopagetext": "Тражена страница не постоји.",
        "pager-newer-n": "{{PLURAL:$1|новији 1|новија $1|новијих $1}}",
        "pager-older-n": "{{PLURAL:$1|старији 1|старија $1|старијих $1}}",
-       "suppress": "СакÑ\80иÑ\98",
+       "suppress": "Ð\9fоÑ\82иÑ\81ни",
        "querypage-disabled": "Ова посебна страница је онемогућена ради побољшања перформанси.",
        "apihelp": "API помоћ",
        "apihelp-no-such-module": "Модул „$1“ није пронађен.",
        "deletedcontributions": "Обрисани кориснички доприноси",
        "deletedcontributions-title": "Обрисани кориснички доприноси",
        "sp-deletedcontributions-contribs": "доприноси",
-       "linksearch": "Ð\9fÑ\80еÑ\82Ñ\80ажи Ñ\81поÑ\99аÑ\88Ñ\9aе Ð²ÐµÐ·Ðµ",
+       "linksearch": "Ð\9fÑ\80еÑ\82Ñ\80ага Ñ\81поÑ\99аÑ\88Ñ\9aиÑ\85 Ð²ÐµÐ·Ð°",
        "linksearch-pat": "Образац претраге:",
        "linksearch-ns": "Именски простор:",
        "linksearch-ok": "Претражи",
        "rollback-success-notify": "Враћене измене корисника $1;\nвраћено на последњу измену корисника $2. [$3 Прикажи измене]",
        "sessionfailure-title": "Сесија је окончана",
        "sessionfailure": "Изгледа да постоји проблем с вашом сесијом;\nова радња је отказана да би се избегла злоупотреба.\nМолимо, поново пошаљите образац.",
-       "changecontentmodel": "Ð\9fÑ\80омени Ð¼Ð¾Ð´ÐµÐ» садржаја странице",
+       "changecontentmodel": "Ð\9fÑ\80омена Ð¼Ð¾Ð´ÐµÐ»Ð° садржаја странице",
        "changecontentmodel-legend": "Промени модел садржаја",
        "changecontentmodel-title-label": "Наслов странице",
        "changecontentmodel-model-label": "Нови модел садржаја",
        "tooltip-pt-userpage": "{{GENDER:|Ваша}} корисничка страница",
        "tooltip-pt-anonuserpage": "Корисничка страница за ИП адресу с које уређујете",
        "tooltip-pt-mytalk": "{{GENDER:|Ваша}} страница за разговор",
-       "tooltip-pt-anontalk": "Разговор о изменама с ове ИП адресе",
+       "tooltip-pt-anontalk": "Разговор о изменама са ове IP адресе",
        "tooltip-pt-preferences": "{{GENDER:|Ваша}} подешавања",
        "tooltip-pt-watchlist": "Списак страница које надгледате",
        "tooltip-pt-mycontris": "Списак {{GENDER:|Ваших}} доприноса",
        "tooltip-pt-anoncontribs": "Списак измена направљених са ове IP адресе",
-       "tooltip-pt-login": "Ð\9fÑ\80епоÑ\80Ñ\83Ñ\87Ñ\83Ñ\98емо Ð²Ð°Ð¼ Ð´Ð° Ñ\81е Ð¿Ñ\80иÑ\98авиÑ\82е, Ð¸Ð°ÐºÐ¾ Ñ\82о Ð½Ð¸Ñ\98е Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾.",
+       "tooltip-pt-login": "Ð\9fÑ\80епоÑ\80Ñ\83Ñ\87Ñ\83Ñ\98емо Ð\92ам Ð´Ð° Ñ\81е Ð¿Ñ\80иÑ\98авиÑ\82е, Ð¸Ð°ÐºÐ¾ Ñ\82о Ð½Ð¸Ñ\98е Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾",
        "tooltip-pt-login-private": "Морате да се пријавите да бисте користили овај Вики",
        "tooltip-pt-logout": "Одјавите се",
-       "tooltip-pt-createaccount": "Ð\9eÑ\85Ñ\80абÑ\80Ñ\83Ñ\98емо Ð²Ð°Ñ\81 Ð´Ð° Ð¾Ñ\82воÑ\80иÑ\82е Ð½Ð°Ð»Ð¾Ð³ Ð¸ Ð¿Ñ\80иÑ\98авиÑ\82е Ñ\81е Ð°Ð»Ð¸ то није обавезно",
+       "tooltip-pt-createaccount": "Ð\9fÑ\80епоÑ\80Ñ\83Ñ\87иÑ\98емо Ð\92ам Ð´Ð° Ð¾Ñ\82воÑ\80иÑ\82е Ð½Ð°Ð»Ð¾Ð³ Ð¸ Ð¿Ñ\80иÑ\98авиÑ\82е Ñ\81е, Ð¸Ð°ÐºÐ¾ то није обавезно",
        "tooltip-ca-talk": "Разговор о страници са садржајем",
        "tooltip-ca-edit": "Уредите ову страницу",
        "tooltip-ca-addsection": "Започните нови одељак",
        "tooltip-ca-move": "Премести ову страницу",
        "tooltip-ca-watch": "Додајте ову страницу на списак надгледања",
        "tooltip-ca-unwatch": "Уклони ову страницу са списка надгледања",
-       "tooltip-search": "Ð\9fÑ\80еÑ\82Ñ\80ажи",
+       "tooltip-search": "Ð\9fÑ\80еÑ\82Ñ\80ага",
        "tooltip-search-go": "Идите на страницу с овим именом, ако постоји",
        "tooltip-search-fulltext": "Претражите странице с овим текстом",
        "tooltip-p-logo": "Посетите главну страну",
        "duplicate-defaultsort": "<strong>Упозорење:</strong> Подразумевани кључ сврставања „$2“ мења ранији подразумевани кључ сврставања „$1“.",
        "duplicate-displaytitle": "<strong>Упозорење:</strong> наслов за приказ „$2“ замениће постојећи „$1“.",
        "restricted-displaytitle": "<strong>Упозорење:</strong> Наслов за приказ „$1” је игнорисан пошто није еквивалентан стварном наслову странице.",
-       "version": "Ð\98здаÑ\9aе",
+       "version": "Ð\92еÑ\80зиÑ\98а",
        "version-extensions": "Инсталирана проширења",
        "version-skins": "Инсталиране теме",
        "version-specialpages": "Посебне странице",
        "version-entrypoints-header-url": "Адреса",
        "version-libraries": "Инсталиране библиотеке",
        "version-libraries-library": "Библиотека",
-       "version-libraries-version": "Ð\98здаÑ\9aе",
+       "version-libraries-version": "Ð\92еÑ\80зиÑ\98а",
        "version-libraries-license": "Лиценца",
        "version-libraries-description": "Опис",
        "version-libraries-authors": "Аутори",
        "tags-delete-reason": "Разлог:",
        "tags-delete-submit": "Неповратно обриши ову ознаку",
        "tags-delete-not-found": "Ознака „$1“ не постоји.",
+       "tags-delete-too-many-uses": "Ознака „$1” је примењена на више од $2 {{PLURAL:$2|измене|изменa}}, што значи да се не може обрисати.",
        "tags-delete-no-permission": "Немате дозволу да бришете ознаке за измену.",
        "tags-activate-title": "Активирање ознака",
        "tags-activate-question": "Активирате ознаку „$1“.",
        "tags-deactivate-reason": "Разлог:",
        "tags-deactivate-not-allowed": "Није могуће деактивирати ознаку „$1“.",
        "tags-deactivate-submit": "Декативирај",
+       "tags-update-no-permission": "Немате дозволу за додавање или уклањање ознаке измена из засебних измена или уноса у дневнику.",
+       "tags-update-blocked": "Не можете додавати нити уклањати ознаке измена док {{GENDER:$1|сте}} блокирани.",
+       "tags-update-add-not-allowed-one": "Није дозвољено да се ознака „$1” додаје ручно.",
        "tags-edit-title": "Уреди ознаке",
        "tags-edit-manage-link": "Управљај ознакама",
        "tags-edit-existing-tags": "Постојеће ознаке:",
        "diff-form-oldid": "ID старе измене (необавезно)",
        "diff-form-revid": "ID измене или разлике",
        "diff-form-submit": "Прикажи разлике",
-       "permanentlink": "СÑ\82ална веза",
+       "permanentlink": "ТÑ\80аÑ\98на веза",
        "permanentlink-revid": "ID измене",
        "permanentlink-submit": "Иди на измену",
        "dberr-problems": "Дошло је до техничких проблема.",
        "feedback-thanks": "Хвала! Ваша повратна информација је постављена на страницу „[$2 $1]“.",
        "feedback-thanks-title": "Хвала вам!",
        "feedback-useragent": "Кориснички агент:",
-       "searchsuggest-search": "Претражи",
+       "searchsuggest-search": "Претражи пројекат {{SITENAME}}",
        "searchsuggest-containing": "садржи...",
        "api-error-badtoken": "Унутрашња грешка: неисправан жетон.",
        "api-error-emptypage": "Стварање нових празних страница није дозвољено.",
index e9aa40a..1f46d6c 100644 (file)
        "nopagetext": "Tražena stranica ne postoji.",
        "pager-newer-n": "{{PLURAL:$1|noviji 1|novija $1|novijih $1}}",
        "pager-older-n": "{{PLURAL:$1|stariji 1|starijih $1}}",
-       "suppress": "Revizija",
+       "suppress": "Potisni",
        "querypage-disabled": "Ova posebna stranica je onemogućena radi poboljšanja performansi.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul „$1“ nije pronađen.",
index ce6b738..aa699bd 100644 (file)
        "cascadeprotected": "Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med \"kaskaderande\"-inställningen aktiverad:\n$2",
        "namespaceprotected": "Du har inte behörighet att redigera sidor i namnrymden <strong>$1</strong>.",
        "customcssprotected": "Du har inte behörighet att redigera denna CSS-sida eftersom den innehåller en annan användares personliga inställningar.",
+       "customjsonprotected": "Du har inte behörighet att redigera denna JSON-sida eftersom den innehåller en annan användares personliga inställningar.",
        "customjsprotected": "Du har inte behörighet att redigera denna JavaScript-sida eftersom den innehåller en annan användares personliga inställningar.",
        "mycustomcssprotected": "Du har inte behörighet att redigera denna CSS-sida.",
+       "mycustomjsonprotected": "Du har inte behörighet att redigera denna JSON-sida.",
        "mycustomjsprotected": "Du har inte behörighet att redigera denna JavaScript-sida.",
        "myprivateinfoprotected": "Du har inte behörighet att redigera din privata information.",
        "mypreferencesprotected": "Du har inte behörighet att redigera dina inställningar.",
        "wrongpasswordempty": "Lösenordet som angavs var tomt. Var god försök igen.",
        "passwordtooshort": "Lösenord måste innehålla minst {{PLURAL:$1|$1 tecken}}.",
        "passwordtoolong": "Lösenord kan inte vara längre än {{PLURAL:$1|1 tecken|$1 tecken}}.",
-       "passwordtoopopular": "Vanliga lösenord kan inte användas. Välj ett mer unikt lösenord.",
+       "passwordtoopopular": "Vanliga lösenord kan inte användas. Välj ett lösenord som är svårare att gissa.",
        "password-name-match": "Ditt lösenord måste vara olikt ditt användarnamn.",
        "password-login-forbidden": "Användningen av dessa användarnamn och lösenord har förbjudits.",
        "mailmypassword": "Återställ lösenord",
        "savechanges": "Spara ändringar",
        "publishpage": "Publicera sida",
        "publishchanges": "Publicera ändringar",
+       "savearticle-start": "Spara sida…",
+       "savechanges-start": "Spara ändringar…",
+       "publishpage-start": "Publicera sida…",
+       "publishchanges-start": "Publicera ändringar…",
        "preview": "Förhandsgranska",
        "showpreview": "Visa förhandsgranskning",
        "showdiff": "Visa ändringar",
        "blocked-notice-logextract": "Användaren är blockerad.\nOrsaken till senaste blockeringen kan ses nedan:",
        "clearyourcache": "<strong>OBS:</strong> Efter du sparat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.\n*<strong>Firefox / Safari:</strong> Håll ned <em>Skift</em> och klicka på <em>Uppdatera sidan</em> eller tryck antingen <em>Ctrl-F5</em> eller <em>Ctrl-R</em> (<em>⌘-R</em> på Mac)\n*<strong>Google Chrome:</strong> Tryck <em>Ctrl-Skift-R</em>  (<em>⌘-Shift-R</em> på Mac)\n*<strong>Internet Explorer:</strong>  Håll ned <em>Ctrl</em> och klicka på <em>Uppdatera</em> eller tryck <em>Ctrl-F5</em>\n*<strong>Opera:</strong> Gå till <em>Meny → Inställningar</em> (<em>Opera → Inställningar</em> på en Mac) och sedan på <em>Sekretess & säkerhet → Rensa webbläsardata → Hämtade bilder och filer</em>.",
        "usercssyoucanpreview": "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya CSS innan du sparar.",
+       "userjsonyoucanpreview": "<strong>Tips:</strong> Använd knappen \"{{int:showpreview}}\" för att testa din nya JSON innan du sparar.",
        "userjsyoucanpreview": "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa ditt nya JavaScript innan du sparar.",
-       "usercsspreview": "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.'''\n'''Den har inte sparats än!'''",
-       "userjspreview": "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript.'''\n'''Det har inte sparats än!'''",
-       "sitecsspreview": "'''Kom ihåg att du bara förhandsgranskar detta CSS.''' \n'''Det har ännu inte sparats!'''",
-       "sitejspreview": "'''Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.'''\n'''Det har ännu inte sparats!'''",
-       "userinvalidconfigtitle": "'''Varning:''' Utseendet \"$1\" finns inte. Kom ihåg att .css- och .js-sidor för enskilda användare börjar på liten bokstav. Exempel: {{ns:user}}:Foo/vector.css i stället för {{ns:user}}:Foo/Vector.css.",
+       "usercsspreview": "<strong>Kom ihåg att du bara förhandsgranskar din användardefinierade CSS-kod.\nDen har ännu inte sparats!</strong>",
+       "userjsonpreview": "<strong>Kom ihåg att du bara testar/förhandsgranskar din användardefinierade JSON-konfiguration.\nDen har ännu inte sparats!</strong>",
+       "userjspreview": "<strong>Kom ihåg att du bara testar/förhandsgranskar din användardefinierade JavaScript-kod.\nDen har ännu inte sparats!</strong>",
+       "sitecsspreview": "<strong>Kom ihåg att du bara förhandsgranskar denna CSS-kod.\nDet har ännu inte sparats!</strong>",
+       "sitejsonpreview": "<strong>Kom ihåg att du bara förhandsgranskar denna JSON-konfiguration.\nDen har ännu inte sparats!</strong>",
+       "sitejspreview": "<strong>Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.\nDet har ännu inte sparats!</strong>",
+       "userinvalidconfigtitle": "'''Varning:''' Utseendet \"$1\" finns inte. Kom ihåg att .css-, .json- och .js-sidor för enskilda användare börjar på liten bokstav. Exempel: {{ns:user}}:Foo/vector.css i stället för {{ns:user}}:Foo/Vector.css.",
        "updated": "(Uppdaterad)",
        "note": "'''Obs!'''",
        "previewnote": "'''Kom ihåg att detta bara är en förhandsvisning.'''\nDina ändringar har ännu inte sparats!",
        "default": "ursprungsinställning",
        "prefs-files": "Filer",
        "prefs-custom-css": "Personlig CSS",
+       "prefs-custom-json": "Anpassad JSON",
        "prefs-custom-js": "Personligt JavaScript",
-       "prefs-common-config": "Delad CSS/JS för alla utseenden:",
+       "prefs-common-config": "Delad CSS/JSON/JavaScript för alla utseenden:",
        "prefs-reset-intro": "Du kan använda den här sidan till att återställa dina inställningar till webbplatsens standardinställningar.\nDetta kan inte återställas.",
        "prefs-emailconfirm-label": "E-postbekräftelse:",
        "youremail": "E-post:",
        "right-editcontentmodel": "Ändra innehållsmodellen för en sida",
        "right-editinterface": "Redigera användargränssnittet",
        "right-editusercss": "Redigera andra användares CSS-filer",
+       "right-edituserjson": "Redigera andra användares JSON-filer",
        "right-edituserjs": "Redigera andra användares JavaScript-filer",
        "right-editmyusercss": "Redigera din egen användares CSS-filer",
+       "right-editmyuserjson": "Redigera dina egna JSON-filer",
        "right-editmyuserjs": "Redigera din egen användares JavaScript-filer",
        "right-viewmywatchlist": "Visa din egen bevakningslista",
        "right-editmywatchlist": "Redigera din egen bevakningslista. Observera att en del åtgärder kommer fortfarande lägga till sidor även utan denna rättighet.",
        "grant-createaccount": "Skapa konton",
        "grant-createeditmovepage": "Skapa, redigera och flytta sidor",
        "grant-delete": "Radera sidor, revideringar och loggposter",
-       "grant-editinterface": "Redigera MediaWiki-namnrymden och CSS/Javascript för användaren",
-       "grant-editmycssjs": "Redigera din CSS/JavaScript för användare",
+       "grant-editinterface": "Redigera CSS/JSON/Javascript för MediaWiki-namnrymden och -användare",
+       "grant-editmycssjs": "Redigera din egen CSS/JSON/JavaScript",
        "grant-editmyoptions": "Redigera dina användarinställningar",
        "grant-editmywatchlist": "Redigera din bevakningslista",
        "grant-editpage": "Redigera befintliga sidor",
        "group-bot.css": "/* CSS som placeras här kommer bara att påverka robotar */",
        "group-sysop.css": "/* CSS som placeras här kommer bara att påverka administratörer */",
        "group-bureaucrat.css": "/* CSS som placeras här kommer bara att påverka byråkrater */",
+       "common.json": "/* JSON som skrivs här körs för alla användare varje gång en sida laddar. */",
        "common.js": "/* JavaScript som skrivs här körs varje gång en användare laddar en sida. */",
        "group-autoconfirmed.js": "/* JavaScript här kommer att laddas för bekräftade användare */",
        "group-user.js": "/* JavaScript här kommer att laddas för registrerade användare */",
        "unlinkaccounts-success": "Kontot avlänkades.",
        "authenticationdatachange-ignored": "Ändringen av autentiseringsdata hanterades inte. Kanske ingen tillhandahållare har konfigurerats?",
        "userjsispublic": "Observera: JavaScript-undersidor bör inte innehålla konfidentiella uppgifter eftersom de kan ses av andra användare.",
+       "userjsonispublic": "OBS: JSON-undersidor bör inte innehålla privat information eftersom de kan läsas av andra användare.",
        "usercssispublic": "Observera: CSS-undersidor bör inte innehålla konfidentiella uppgifter eftersom de kan ses av andra användare.",
        "restrictionsfield-badip": "Ogiltig IP-adress eller intervall: $1",
        "restrictionsfield-label": "Tillåtna IP-intervall:",
index b273a2a..1ded9b0 100644 (file)
        "rcfilters-group-results-by-page": "ఫలితాలను పేజీవారీగా గుదిగుచ్చు",
        "rcfilters-activefilters": "సచేతనమైన వడపోతలు",
        "rcfilters-advancedfilters": "ఉన్నత వడపోతలు",
-       "rcfilters-limit-title": "à°\9aà±\82పిà°\82à°\9aాలà±\8dసిన à°®à°¾à°°à±\8dà°ªà±\81లు",
+       "rcfilters-limit-title": "à°\9aà±\82పిà°\82à°\9aాలà±\8dసిన à°«à°²à°¿à°¤à°¾లు",
        "rcfilters-days-title": "ఇటీవలి రోజులు",
        "rcfilters-hours-title": "ఇటీవలి గంటలు",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|రోజు|రోజులు}}",
        "rcfilters-days-show-hours": "$1 {{PLURAL:$1|గంట|గంటలు}}",
        "rcfilters-highlighted-filters-list": "హైలైటు చేసినవి: $1",
        "rcfilters-quickfilters": "భద్రపరచిన వడపోతలు",
-       "rcfilters-quickfilters-placeholder-title": "à°\87à°\82à°\95à°¾ à°²à°¿à°\82à°\95à±\81à°²à±\81 à°µà±\87à°\9fà°¿à°¨ీ భద్రపరచలేదు",
+       "rcfilters-quickfilters-placeholder-title": "à°\87à°\82à°\95à°¾ à°µà°¡à°ªà±\8bతలà±\87à°®ీ భద్రపరచలేదు",
        "rcfilters-quickfilters-placeholder-description": "మీ వడపోత సెట్టింగులను భద్రపరచి తరువాత వాడుకోవాలంటే, కింద ఉన్న యాక్టివ్ ఫిల్టర్ ఏరియా లోని పేజీక (బుక్‌మార్కు) ఐకన్ను నొక్కండి.",
        "rcfilters-savedqueries-defaultlabel": "భద్రపరచిన వడపోతలు",
        "rcfilters-savedqueries-rename": "పేరుమార్చు",
        "rcfilters-liveupdates-button-title-off": "కొత్త మార్పులు, జరుగుతూండగానే చూపించు",
        "rcfilters-watchlist-markseen-button": "మార్పులన్నీ చూసినట్లుగా గుర్తించు",
        "rcfilters-watchlist-edit-watchlist-button": "మీ వీక్షణ జాబితాను సవరించండి",
+       "rcfilters-watchlist-showupdated": "మీ గత సందర్శన తరువాత మారిన పేజీలు '''బొద్దుగా''' మరియు నింపిన గుండ్రని గుర్తుల ద్వారా చూపించబడ్డాయి.",
        "rcnotefrom": "<strong>$3, $4</strong> తరువాత జరిగిన {{PLURAL:$5|మార్పు|మార్పులు}} కింద ఇచ్చాం (<strong>$1</strong> దాకా చూపించాం).",
        "rclistfromreset": "తేదీ ఎంపికను రీసెట్ చెయ్యి",
        "rclistfrom": "$3, $2 తో మొదలుపెట్టి ఆ తరువాత జరిగిన మార్పులను చూపించు",
        "enotif_body_intro_restored": "{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|పునస్థాపించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.",
        "enotif_body_intro_changed": "{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|మార్చారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.",
        "enotif_lastvisited": "మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.",
-       "enotif_lastdiff": "ఈ మార్పు చూసేందుకు  $1 కు వెళ్ళండి.",
+       "enotif_lastdiff": "ఈ మార్పును చూసేందుకు, $1కు వెళ్ళండి.",
        "enotif_anon_editor": "అజ్ఞాత వాడుకరి $1",
        "enotif_body": "ప్రియమైన $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nచేర్పరి సారాంశం: $PAGESUMMARY $PAGEMINOREDIT\n\nచేర్పరిని సంప్రదించండి:\nమెయిలు: $PAGEEDITOR_EMAIL\nవికీ: $PAGEEDITOR_WIKI\n\nమీరు లాగినై ఈ పేజీకి వెళ్తే తప్ప ఇక ముందు జరిగే కార్యకలాపాల గురించిన వార్తలను మీకు పంపించము. మీ వీక్షణజాబితా లోని అన్ని పేజీలకు ఉన్న గమనింపు జెండాలను మార్చుకోవచ్చు.\n\nమీ స్నేహపూర్వక {{SITENAME}} గమనింపుల వ్యవస్థ\n\n--\nమీ ఈమెయిలు గమనింపుల అమరికలను మార్చుకునేందుకు, చూడండి\n{{canonicalurl:{{#special:Preferences}}}}\n\nమీ వీక్షణ జాబితా అమరికలను మార్చుకునేందుకు, చూడండి\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nమీ వీక్షణ జాబితా నుండి పేజీని తొలగించేందుకు, చూడండి\n$UNWATCHURL\n\nఫీడుబ్యాకుకు, ఇతర సహాయం కోసం:\n$HELPPAGE",
+       "enotif_minoredit": "ఇది ఒక చిన్న మార్పు",
        "created": "సృష్టించారు",
        "changed": "మార్చారు",
        "deletepage": "పేజీని తొలగించు",
        "unblocked-id": "$1 అనే నిరోధాన్ని తొలగించాం",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] పైనున్న నిరోధాన్ని ఎత్తివేసాం.",
        "blocklist": "నిరోధిత వాడుకరులు",
+       "autoblocklist-submit": "వెతుకు",
        "ipblocklist": "నిరోధించబడిన వాడుకరులు",
        "ipblocklist-legend": "నిరోధించబడిన వాడుకరిని వెతకండి",
        "blocklist-userblocks": "ఖాతా నిరోధాలను దాచు",
        "compare-invalid-title": "మీరు ఇచ్చిన శీర్షిక చెల్లనిది.",
        "compare-title-not-exists": "మీరు పేర్కొన్న శీర్షిక లేనే లేదు.",
        "compare-revision-not-exists": "మీరు పేర్కొన్న కూర్పు లేనే లేదు.",
-       "diff-form": "à°\92à°\95 '''ఫారà°\82'''",
+       "diff-form": "à°¤à±\87డాలà±\81",
        "dberr-problems": "క్షమించండి! ఈ సైటు సాంకేతిక సమస్యలని ఎదుర్కొంటుంది.",
        "dberr-again": "కొన్ని నిమిషాలాగి మళ్ళీ ప్రయత్నించండి.",
        "dberr-info": "(డేటాబేసును చేరలేకున్నాం: $1)",
index ae77870..7bb95b6 100644 (file)
@@ -31,7 +31,7 @@
                ]
        },
        "tog-underline": "การขีดเส้นใต้ลิงก์:",
-       "tog-hideminor": "à¸\8bà¹\88อà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80ลà¹\87à¸\81à¸\99à¹\89อยà¹\83à¸\99หà¸\99à¹\89าà¸\9bรัà¸\9aà¸\9bรุงล่าสุด",
+       "tog-hideminor": "à¸\8bà¹\88อà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80ลà¹\87à¸\81à¸\99à¹\89อยà¹\83à¸\99หà¸\99à¹\89าà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลงล่าสุด",
        "tog-hidepatrolled": "ซ่อนการแก้ไขที่ตรวจสอบแล้วในหน้าปรับปรุงล่าสุด",
        "tog-newpageshidepatrolled": "ซ่อนหน้าที่ตรวจสอบแล้วในรายการหน้าใหม่",
        "tog-hidecategorization": "ซ่อนการจัดหมวดหมู่หน้า",
        "filereadonlyerror": "ไม่สามารถแก้ไขไฟล์ \"$1\" เพราะที่เก็บไฟล์ \"$2\" อยู่ในภาวะอ่านอย่างเดียว\n\nผู้ดูแลระบบที่ล็อกให้คำอธิบายว่า: \"$3\"",
        "invalidtitle-knownnamespace": "ชื่อเรื่องที่มีเนมสเปซ \"$2\" กับข้อความ \"$3\" ไม่ถูกต้อง",
        "invalidtitle-unknownnamespace": "ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ \"$2\" ไม่ถูกต้อง",
-       "exception-nologin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99",
+       "exception-nologin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¸\87à¸\8aืà¹\88อà¹\80à¸\82à¹\89าระà¸\9aà¸\9a",
        "exception-nologin-text": "โปรดล็อกอินเพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
        "exception-nologin-text-manual": "โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
        "virus-badscanner": "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: <em>$1</em>",
        "yourpasswordagain": "พิมพ์รหัสผ่านอีกครั้ง:",
        "createacct-yourpasswordagain": "ยืนยันรหัสผ่าน",
        "createacct-yourpasswordagain-ph": "กรอกรหัสผ่านอีกครั้ง",
-       "userlogin-remembermypassword": "à¹\83หà¹\89à¸\89ัà¸\99อยูà¹\88à¹\83à¸\99ระà¸\9aà¸\9aà¸\95à¹\88อ",
+       "userlogin-remembermypassword": "à¹\83หà¹\89à¸\89ัà¸\99à¸\84à¸\87อยูà¹\88à¹\83à¸\99ระà¸\9aà¸\9aà¸\95à¹\88อà¹\84à¸\9b",
        "userlogin-signwithsecure": "ใช้การเชื่อมต่อที่ปลอดภัย",
        "cannotlogin-title": "ไม่สามารถเข้าสู่ระบบได้",
        "cannotlogin-text": "ไม่สามารถเข้าสู่ระบบได้",
        "yourdomainname": "โดเมนของคุณ:",
        "password-change-forbidden": "คุณไม่สามารถเปลี่ยนรหัสผ่านบนวิกินี้",
        "externaldberror": "มีข้อผิดพลาดของฐานข้อมูลการพิสูจน์ตัวจริง หรือคุณไม่ได้รับอนุญาตให้ปรับบัญชีภายนอกของคุณ",
-       "login": "ลà¹\87อà¸\81อิà¸\99",
+       "login": "à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9a",
        "login-security": "ยืนยันตัวตนของคุณ",
        "nav-login-createaccount": "ล็อกอิน / สร้างบัญชี",
-       "logout": "ลà¹\87อà¸\81à¹\80อาà¸\95à¹\8c",
-       "userlogout": "ลà¹\87อà¸\81à¹\80อาà¸\95à¹\8c",
-       "notloggedin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99",
+       "logout": "ออà¸\81à¸\88าà¸\81ระà¸\9aà¸\9a",
+       "userlogout": "ออà¸\81à¸\88าà¸\81ระà¸\9aà¸\9a",
+       "notloggedin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¸\87à¸\8aืà¹\88อà¹\80à¸\82à¹\89าระà¸\9aà¸\9a",
        "userlogin-noaccount": "ไม่มีบัญชีหรือ",
        "userlogin-joinproject": "เข้าร่วมกับ{{SITENAME}}",
        "createaccount": "สร้างบัญชี",
        "userlogin-resetpassword-link": "ลืมรหัสผ่านหรือ",
-       "userlogin-helplink2": "วิà¸\98ีà¹\83à¸\8aà¹\89à¹\80รืà¹\88อà¸\87à¸\81ารลà¹\87อà¸\81อิà¸\99",
-       "userlogin-loggedin": "à¸\84ุà¸\93ลà¹\87อà¸\81อิà¸\99à¹\83à¸\99à¸\8aืà¹\88อ {{GENDER:$1|$1}} à¹\81ลà¹\89ว\nà¹\83à¸\8aà¹\89à¹\81à¸\9aà¸\9aà¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¹\80à¸\9eืà¹\88อลà¹\87อà¸\81อิà¸\99เป็นอีกผู้ใช้หนึ่ง",
+       "userlogin-helplink2": "à¸\84ำอà¸\98ิà¸\9aายà¹\80รืà¹\88อà¸\87à¸\81ารà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9a",
+       "userlogin-loggedin": "à¸\84ุà¸\93à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aà¹\83à¸\99à¸\8aืà¹\88อ {{GENDER:$1|$1}} à¹\81ลà¹\89ว\nà¹\83à¸\8aà¹\89à¹\81à¸\9aà¸\9aà¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¹\80à¸\9eืà¹\88อà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aเป็นอีกผู้ใช้หนึ่ง",
        "userlogin-reauth": "คุณต้องเข้าสู่ระบบอีกครั้งเพื่อยืนยันว่าคุณคือ{{GENDER:$1|$1}}",
        "userlogin-createanother": "สร้างอีกบัญชี",
        "createacct-emailrequired": "ที่อยู่อีเมล",
        "nocookiesfornew": "บัญชีผู้ใช้ไม่ถูกสร้าง เนื่องจากเราไม่สามารถยืนยันต้นทาง\nกรุณาทำให้แน่ใจว่าคุณได้เปิดใช้งานคุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง",
        "createacct-loginerror": "บัญชีผู้ใช้ถูกสร้างสำเร็จแล้ว แต่คุณไม่สามารถเข้าสู่ระบบได้โดยอัตโนมัติ โปรด[[Special:UserLogin|เข้าสู่ระบบด้วยตนเอง]]",
        "noname": "คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง",
-       "loginsuccesstitle": "ลà¹\87อà¸\81อิà¸\99สำเร็จ",
+       "loginsuccesstitle": "à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aสำเร็จ",
        "loginsuccess": "<strong>ขณะนี้คุณล็อกอินสู่ {{SITENAME}} ในชื่อ \"$1\"</strong>",
        "nosuchuser": "ไม่มีผู้ใช้ชื่อ \"$1\"\nชื่อผู้ใช้นั้นไวต่ออักษรใหญ่เล็ก\nกรุณาตรวจการสะกดอีกครั้ง หรือ[[Special:CreateAccount|สร้างบัญชีใหม่]]",
        "nosuchusershort": "ไม่มีผู้ใช้ชื่อ \"$1\" \nกรุณาตรวจสอบการสะกด",
        "loginlanguagelabel": "ภาษา: $1",
        "suspicious-userlogout": "คำขอล็อกเอาต์ของคุณถูกปฏิเสธเพราะดูเหมือนส่งมาจากเบราว์เซอร์หรือพร็อกซีแคชที่เสีย",
        "createacct-another-realname-tip": "ไม่จำเป็นต้องใส่ชื่อจริง\nหากคุณเลือกใส่ชื่อจริง จะใช้เพื่อแสดงที่มาสำหรับงานของตน",
-       "pt-login": "ลà¹\87อà¸\81อิà¸\99",
-       "pt-login-button": "ลà¹\87อà¸\81อิà¸\99",
+       "pt-login": "à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9a",
+       "pt-login-button": "à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9a",
        "pt-login-continue-button": "ทำการเข้าสู่ระบบต่อไป",
        "pt-createaccount": "สร้างบัญชี",
-       "pt-userlogout": "ลà¹\87อà¸\81à¹\80อาà¸\95à¹\8c",
+       "pt-userlogout": "ออà¸\81à¸\88าà¸\81ระà¸\9aà¸\9a",
        "php-mail-error-unknown": "เกิดข้อผิดพลาดไม่ทราบสาเหตุในฟังก์ชัน mail() ของพีเอชพี",
        "user-mail-no-addy": "พยายามส่งอีเมลโดยไม่มีที่อยู่อีเมล",
        "user-mail-no-body": "พยายามส่งอีเมลที่มีเนื้อหาว่างหรือสั้นอย่างไร้เหตุผล",
        "nosuchsectiontitle": "ไม่พบส่วน",
        "nosuchsectiontext": "คุณพยายามแก้ไขส่วนที่ไม่มีอยู่ \nส่วนดังกล่าวอาจถูกย้ายหรือลบขณะที่คุณดูหน้าอยู่",
        "loginreqtitle": "ต้องล็อกอิน",
-       "loginreqlink": "ลà¹\87อà¸\81อิà¸\99",
+       "loginreqlink": "à¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9a",
        "loginreqpagetext": "กรุณา$1เพื่อดูหน้าอื่น",
        "accmailtitle": "ส่งรหัสผ่านแล้ว",
        "accmailtext": "ส่งรหัสผ่านแบบสุ่มของ [[User talk:$1|$1]] ไป $2 แล้ว สามารถเปลี่ยนรหัสผ่านในหน้า<em>[[Special:ChangePassword|เปลี่ยนรหัสผ่าน]]</em> หลังล็อกอิน",
        "prefs-labs": "คุณสมบัติทดลอง",
        "prefs-user-pages": "หน้าผู้ใช้",
        "prefs-personal": "โพรไฟล์ผู้ใช้",
-       "prefs-rc": "เปลี่ยนแปลงล่าสุด",
+       "prefs-rc": "à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87ลà¹\88าสุà¸\94",
        "prefs-watchlist": "รายการเฝ้าดู",
        "prefs-editwatchlist": "แก้ไขรายการเฝ้าดู",
        "prefs-editwatchlist-label": "แก้ไขหน่วยในรายการเฝ้าดูของคุณ:",
        "nchanges": "$1 การเปลี่ยนแปลง",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ตั้งแต่การเยี่ยมชมครั้งสุดท้าย}}",
        "enhancedrc-history": "ประวัติ",
-       "recentchanges": "เปลี่ยนแปลงล่าสุด",
+       "recentchanges": "à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87ลà¹\88าสุà¸\94",
        "recentchanges-legend": "ตัวเลือกการเปลี่ยนแปลงล่าสุด",
        "recentchanges-summary": "ติดตามการเปลี่ยนแปลงล่าสุดบนวิกินี้ได้ทางหน้านี้",
        "recentchanges-noresult": "ไม่มีการเปลี่ยนแปลงในช่วงที่กำหนดซึ่งตรงกับเกณฑ์เหล่านี้",
        "reuploaddesc": "ยกเลิกการอัปโหลดและกลับไปแบบอัปโหลด",
        "upload-tryagain": "ส่งคำอธิบายไฟล์ที่ดัดแปรแล้ว",
        "upload-tryagain-nostash": "ส่งไฟล์ที่อัปโหลดใหม่และคำอธิบายที่ดัดแปรแล้ว",
-       "uploadnologin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99",
+       "uploadnologin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¸\87à¸\8aืà¹\88อà¹\80à¸\82à¹\89าระà¸\9aà¸\9a",
        "uploadnologintext": "โปรด$1เพื่ออัปโหลดไฟล์",
        "upload_directory_missing": "สารบบอัปโหลด ($1) หาย และเว็บเซิร์ฟเวอร์ไม่สามารถสร้างได้",
        "upload_directory_read_only": "เว็บเซิร์ฟเวอร์ไม่สามารถเขียนสารบบอัปโหลด ($1)",
        "watchlistfor2": "สำหรับ $1 $2",
        "nowatchlist": "ไม่มีรายการในรายการเฝ้าดูของคุณ",
        "watchlistanontext": "กรุณาล็อกอินเพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
-       "watchnologin": "ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99",
+       "watchnologin": "à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¸\87à¸\8aืà¹\88อà¹\80à¸\82à¹\89าระà¸\9aà¸\9a",
        "addwatch": "เพิ่มเข้ารายการเฝ้าดู",
        "addedwatchtext": "เพิ่มหน้า \"[[:$1]]\" และหน้าอภิปรายเข้า[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว",
        "addedwatchtext-talk": "เพิ่ม \"[[:$1]]\" และหน้าที่สัมพันธ์เข้า[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว",
        "namespace_association": "เนมสเปซที่เกี่ยวข้อง",
        "tooltip-namespace_association": "เลือกกล่องนี้เพื่อรวมเนมสเปซคุยหรือเรื่องที่เกี่ยวข้องกับเนมสเปซที่เลือกด้วย",
        "blanknamespace": "(หลัก)",
-       "contributions": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88{{GENDER:$1|à¸\9cูà¹\89à¹\83à¸\8aà¹\89}}à¸\99ีà¹\89à¹\80à¸\82ียà¸\99",
+       "contributions": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88{{GENDER:$1|à¸\9cูà¹\89à¹\83à¸\8aà¹\89}}มีสà¹\88วà¸\99รà¹\88วม",
        "contributions-title": "เรื่องที่มีส่วนร่วมโดย $1",
        "mycontris": "เรื่องที่มีส่วนร่วม",
        "anoncontribs": "เรื่องที่มีส่วนร่วม",
        "nolinkshere": "ไม่มีหน้าใดลิงก์มา <strong>[[:$1]]</strong>",
        "nolinkshere-ns": "ไม่มีหน้าใดลิงก์มา <strong>[[:$1]]</strong> ในเนมสเปซที่เลือก",
        "isredirect": "หน้าเปลี่ยนทาง",
-       "istemplate": "ใช้แม่แบบ",
+       "istemplate": "à¹\82à¸\94ยà¹\83à¸\8aà¹\89à¹\81มà¹\88à¹\81à¸\9aà¸\9a",
        "isimage": "ลิงก์ไฟล์",
        "whatlinkshere-prev": "{{PLURAL:$1|ก่อนหน้า|ก่อนหน้า $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|ถัดไป|ถัดไป $1}}",
        "blocklink": "บล็อก",
        "unblocklink": "ปลดบล็อก",
        "change-blocklink": "เปลี่ยนการบล็อก",
-       "contribslink": "ส่วนร่วม",
+       "contribslink": "มีสà¹\88วà¸\99รà¹\88วม",
        "emaillink": "ส่งอีเมล",
        "autoblocker": "ถูกบล็อกอัตโนมัติเนื่องจาก \"[[User:$1|$1]]\" ใช้เลขที่อยู่ไอพีของคุณเมื่อเร็ว ๆ นี้\nเหตุผลที่ให้แก่การบล็อก $1 คือ: \"$2\"",
        "blocklogpage": "ปูมการบล็อก",
        "tooltip-pt-anoncontribs": "รายการการแก้ไขจากเลขที่อยู่ไอพีนี้",
        "tooltip-pt-login": "สนับสนุนให้คุณล็อกอิน แต่ไม่บังคับ",
        "tooltip-pt-login-private": "คุณต้องล็อกอินจึงจะใช้วิกินี้ได้",
-       "tooltip-pt-logout": "ลà¹\87อà¸\81à¹\80อาà¸\95à¹\8c",
+       "tooltip-pt-logout": "ออà¸\81à¸\88าà¸\81ระà¸\9aà¸\9a",
        "tooltip-pt-createaccount": "สนับสนุนให้คุณสร้างบัญชีและล็อกอิน แต่ไม่บังคับ",
        "tooltip-ca-talk": "อภิปรายเกี่ยวกับหน้าเนื้อหา",
        "tooltip-ca-edit": "แก้ไขหน้านี้",
index 58b707f..7dd1eeb 100644 (file)
        "cascadeprotected": "Сторінка захищена від редагувань, оскільки вона включена на {{PLURAL:$1|1=сторінці|сторінках}}, де встановлено каскадний захист: $2",
        "namespaceprotected": "У вас нема дозволу редагувати сторінки в просторі назв «$1».",
        "customcssprotected": "У вас немає дозволу на редагування цієї CSS-сторінки, бо вона містить особисті налаштування іншого користувача.",
+       "customjsonprotected": "У Вас немає прав на редагування цієї JSON-сторінки, оскільки вона містить персональні налаштування іншого користувача.",
        "customjsprotected": "У вас немає дозволу на редагування цієї JavaScript-сторінки, бо вона містить особисті налаштування іншого користувача.",
        "mycustomcssprotected": "У вас немає дозволу для редагування цієї CSS сторінки.",
+       "mycustomjsonprotected": "У Вас немає прав на редагування цієї JSON-сторінки.",
        "mycustomjsprotected": "Ви не маєте дозволу для редагування цієї сторінки JavaScript.",
        "myprivateinfoprotected": "У вас немає дозволу на редагування своєї приватної інформації.",
        "mypreferencesprotected": "У вас немає дозволу на редагування своїх налаштувань.",
        "wrongpasswordempty": "Ви не ввели пароль. Будь ласка, спробуйте ще раз.",
        "passwordtooshort": "Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.",
        "passwordtoolong": "Пароль не може бути довшим ніж {{PLURAL:$1|1 символ|$1 символи|$1 символів}}.",
-       "passwordtoopopular": "Ð\9fаÑ\80олÑ\96, Ñ\89о Ñ\87аÑ\81Ñ\82о Ð¾Ð±Ð¸Ñ\80аÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f, Ð½Ðµ Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82анÑ\96. Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¾Ð±ÐµÑ\80Ñ\96Ñ\82Ñ\8c Ð±Ñ\96лÑ\8cÑ\88 Ñ\83нÑ\96калÑ\8cний Ð¿Ð°Ñ\80олÑ\8c.",
+       "passwordtoopopular": "Ð\9fоÑ\88иÑ\80енÑ\96 Ð¿Ð°Ñ\80олÑ\96 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð°. Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¾Ð±ÐµÑ\80Ñ\96Ñ\82Ñ\8c Ð¿Ð°Ñ\80олÑ\8c, Ñ\8fкий Ð±Ñ\83ло Ð± Ñ\81кладнÑ\96Ñ\88е Ð²Ð³Ð°Ð´Ð°Ñ\82и.",
        "password-name-match": "Ваш пароль має відрізнятися від імені користувача.",
        "password-login-forbidden": "Використання цього імені користувача і пароля заборонено.",
        "mailmypassword": "Перевстановити пароль",
        "savechanges": "Зберегти зміни",
        "publishpage": "Зберегти сторінку",
        "publishchanges": "Зберегти зміни",
+       "savearticle-start": "Зберегти сторінку...",
+       "savechanges-start": "Зберегти зміни...",
+       "publishpage-start": "Опублікувати сторінку...",
+       "publishchanges-start": "Опублікувати зміни...",
        "preview": "Попередній перегляд",
        "showpreview": "Попередній перегляд",
        "showdiff": "Показати зміни",
        "blocked-notice-logextract": "{{GENDER:$1|Цей користувач|Ця користувачка}} наразі {{GENDER:$1|заблокований|заблокована}}.\nОстанній запис у журналі блокувань такий:",
        "clearyourcache": "<strong>Увага:</strong> Після збереження слід очистити кеш оглядача, щоб побачити зміни.\n* <strong>Firefox / Safari:</strong> тримайте <em>Shift</em>, коли натискаєте <em>Оновити</em>, або натисніть <em>Ctrl-F5</em> чи <em>Ctrl-Shift-R</em> (<em>⌘-R</em> на Apple Mac)\n* <strong>Google Chrome:</strong> натисніть <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Apple Mac)\n* <strong>Internet Explorer:</strong> тримайте <em>Ctrl</em>, коли натискаєте <em>Оновити</em>, або натисніть <em>Ctrl-F5</em>\n* <strong>Opera:</strong> очистіть кеш за допомогою <em>Інструменти → Налаштування</em> (<em>Opera → Побажання</em> на Apple Mac) та перейдіть на <em>Приватність & безпека → очистити дані браузера → кеш</em>",
        "usercssyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий css-файл перед збереженням.",
+       "userjsonyoucanpreview": "<strong>Підказка:</strong> використовуйте кнопку «{{int:showpreview}}», щоб протестувати Ваш новий код JSON перед збереженням.",
        "userjsyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий код JavaScript перед збереженням.",
        "usercsspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого css-файлу.'''\n'''Його ще не збережено!'''",
+       "userjsonpreview": "<strong>Пам'ятайте, що Ви лише тестуєте/попередньо переглядаєте Ваші користувацькі налаштування JSON.\nЇх ще не збережено!</strong>",
        "userjspreview": "'''Пам'ятайте, що це тільки попередній перегляд вашого JavaScript-файлу і він поки-що не збережений!'''",
        "sitecsspreview": "'''Пам'ятайте, що це тільки попередній перегляд цього CSS.'''\n'''Його ще не збережено!'''",
+       "sitejsonpreview": "<strong>Пам'ятайте, що Ви лише попередньо переглядаєте ці JSON-налаштування.\nЇх ще не збережено!</strong>",
        "sitejspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого JavaScript-коду.'''\n'''Його ще не збережено!'''",
-       "userinvalidconfigtitle": "'''Увага:''' тема оформлення «$1» не знайдена.\nПам'ятайте, що користувацькі .css та .js сторінки повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
+       "userinvalidconfigtitle": "<strong>Увага:</strong> теми оформлення «$1» не знайдено.\nПам'ятайте, що користувацькі сторінки .css, .json та .js повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
        "updated": "(Оновлена)",
        "note": "'''Зауваження:'''",
        "previewnote": "'''Це лише попередній перегляд.'''\nВаші зміни ще не збережено!",
        "expansion-depth-exceeded-warning": "На сторінці перевищено межу глибини вкладеності",
        "parser-unstrip-loop-warning": "Виявлено незакритий тег (такий, як <pre>)",
        "unstrip-depth-warning": "Перевищено межу вкладеної рекурсії ($1) для парсера.",
+       "unstrip-depth-category": "Сторінки, на яких перевищено граничну глибину Unstrip",
+       "unstrip-size-warning": "Перевищено граничний розмір Unstrip ($1)",
+       "unstrip-size-category": "Сторінки, на яких перевищено граничний розмір Unstrip",
        "converter-manual-rule-error": "Помилка в ручному правилі перетворення мови",
        "undo-success": "Редагування може бути скасовано.\nБудь ласка, перевірте порівняння нижче, щоб впевнитись, що це те, що ви хочете зробити, а потім збережіть зміни, щоб закінчити скасування редагування.",
        "undo-failure": "Неможливо скасувати редагування через несумісність проміжних змін.",
        "stub-threshold-disabled": "Вимкнений",
        "recentchangesdays": "За скільки днів показувати нові редагування:",
        "recentchangesdays-max": "(максимум $1 {{PLURAL:$1|день|дні|днів}})",
-       "recentchangescount": "Кількість редагувань для показу за замовчуванням:",
-       "prefs-help-recentchangescount": "Це Ñ\81Ñ\82оÑ\81Ñ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ð½Ð¾Ð²Ð¸Ñ\85 Ñ\80едагÑ\83ванÑ\8c, Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96й Ñ\81Ñ\82оÑ\80Ñ\96нок Ñ\96 Ð¶Ñ\83Ñ\80налÑ\96в.",
+       "recentchangescount": "Кількість редагувань для показу за замовчуванням на сторінках нових редагувань, історій сторінок та в журналах:",
+       "prefs-help-recentchangescount": "Ð\9cакÑ\81ималÑ\8cна ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c: 1000",
        "prefs-help-watchlist-token2": "Це секретний ключ до веб-каналу вашого списку спостереження.\nБудь-хто, хто його знає, матиме можливість читати ваш список спостереження, тому не поширюйте його.\nЯкщо вам потрібно, [[Special:ResetTokens|ви можете скинути його]].",
        "savedprefs": "Ваші налаштування збережено.",
        "savedrights": "Групи {{GENDER:$1|користувача $1|користувачки $1}} було збережено.",
        "default": "за замовчуванням",
        "prefs-files": "Файли",
        "prefs-custom-css": "Власний CSS",
+       "prefs-custom-json": "Власний JSON",
        "prefs-custom-js": "Власний JS",
-       "prefs-common-config": "CSS/JS спільні для всіх тем оформлення:",
+       "prefs-common-config": "CSS/JSON/JavaScript, спільні для всіх тем оформлення:",
        "prefs-reset-intro": "Ця сторінка може бути використана для зміни ваших налаштувань на стандартні.\nПісля виконання цієї дії ви не зможете відкотити зміни.",
        "prefs-emailconfirm-label": "Підтвердження адреси:",
        "youremail": "Адреса електронної пошти:",
        "right-editcontentmodel": "Редагувати модель вмісту сторінки",
        "right-editinterface": "редагування інтерфейсу користувача",
        "right-editusercss": "редагування CSS-файлів інших користувачів",
+       "right-edituserjson": "редагування JSON-файлів інших користувачів",
        "right-edituserjs": "редагування JS-файлів інших користувачів",
        "right-editmyusercss": "редагування власних CSS-файлів користувача",
+       "right-editmyuserjson": "редагування власних JSON-файлів користувача",
        "right-editmyuserjs": "редагування власних JavaScript-файлів користувача",
        "right-viewmywatchlist": "перегляд власного списку спостереження",
        "right-editmywatchlist": "редагування власного списку спостереження; зверніть увагу, що деякі дії будуть додавати сторінки навіть без такого права.",
        "grant-createaccount": "Створювати облікові записи",
        "grant-createeditmovepage": "Створювати, редагувати та перейменовувати сторінки",
        "grant-delete": "Вилучати сторінки, версії і записи журналів",
-       "grant-editinterface": "Редагувати простір назв MediaWiki та CSS/JavaScript користувача",
-       "grant-editmycssjs": "Редагувати Ваш користувацький CSS/JavaScript",
+       "grant-editinterface": "Редагувати простір назв MediaWiki та CSS/JSON/JavaScript користувача",
+       "grant-editmycssjs": "Редагувати Ваш користувацький CSS/JSON/JavaScript",
        "grant-editmyoptions": "Редагувати Ваші налаштування користувача",
        "grant-editmywatchlist": "Редагувати Ваш список спостереження",
        "grant-editpage": "Редагувати наявні сторінки",
        "rcfilters-activefilters": "Активні фільтри",
        "rcfilters-advancedfilters": "Розширені фільтри",
        "rcfilters-limit-title": "Результати, які треба показати",
-       "rcfilters-limit-and-date-label": "{{PLURAL:$1|одна зміна|$1 змін}}, $2",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|зміна|зміни|змін}}, $2",
        "rcfilters-date-popup-title": "Період часу для пошуку",
        "rcfilters-days-title": "Останні дні",
        "rcfilters-hours-title": "Останні години",
        "rcfilters-view-tags-tooltip": "Фільтрувати результати, використовуючи мітки до редагувань",
        "rcfilters-view-return-to-default-tooltip": "Повернутися до головного меню фільтра",
        "rcfilters-view-tags-help-icon-tooltip": "Дізнайтесь більше про редагування з мітками",
-       "rcfilters-liveupdates-button": "Ð\9eновленнÑ\8f Ð½Ð°Ð¶Ð¸Ð²Ð¾",
-       "rcfilters-liveupdates-button-title-on": "Ð\92имкнÑ\83Ñ\82и Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ\8f Ð½Ð°Ð¶Ð¸Ð²Ð¾",
+       "rcfilters-liveupdates-button": "Ð\90вÑ\82омаÑ\82иÑ\87не Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ\8f",
+       "rcfilters-liveupdates-button-title-on": "Ð\92имкнÑ\83Ñ\82и Ð°Ð²Ñ\82омаÑ\82иÑ\87не Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ\8f",
        "rcfilters-liveupdates-button-title-off": "Показувати нові зміни одразу ж після їх здійснення",
        "rcfilters-watchlist-markseen-button": "Позначити всі зміни як переглянуті",
        "rcfilters-watchlist-edit-watchlist-button": "Редагувати Ваш список спостереження",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>Сторінки, на які є посилання з</strong> обраної сторінки",
        "rcfilters-filter-showlinkedto-label": "Показати зміни на сторінках, що посилаються сюди",
        "rcfilters-filter-showlinkedto-option-label": "<strong>Сторінки, що посилаються на</strong> обрану сторінку",
-       "rcfilters-target-page-placeholder": "Уведіть назву сторінки",
+       "rcfilters-target-page-placeholder": "Уведіть назву сторінки (чи категорії)",
        "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).",
        "rclistfromreset": "Скинути вибір дати",
        "rclistfrom": "Показати редагування починаючи з $3 $2.",
        "lockmanager-fail-closelock": "Не вдалося закрити файл блокування для \"$1\".",
        "lockmanager-fail-deletelock": "Не вдалось вилучити файл блокування для \"$1\".",
        "lockmanager-fail-acquirelock": "Не вдалося блокувати \"$1\".",
-       "lockmanager-fail-openlock": "Не вдалося відкрити файл блокування для \"$1\".",
+       "lockmanager-fail-openlock": "Не вдалося відкрити файл блокування для «$1». Впевніться, що Ваш каталог завантаження налаштовано належним чином, і що Ваш веб-сервер має дозвіл на здійснення змін в цьому каталозі. Див. https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory, щоб дізнатись більше.",
        "lockmanager-fail-releaselock": "Не вдалось розблокувати \"$1\".",
        "lockmanager-fail-db-bucket": "Не вдається зв'язатися з достатньою кількістю баз блокувань в сегменті $1.",
        "lockmanager-fail-db-release": "Не вдалось зняти блокування бази даних $1.",
        "doubleredirects": "Подвійні перенаправлення",
        "doubleredirectstext": "На цій сторінці наведено список перенаправлень на інші перенаправлення.\nКожен рядок містить посилання на перше та друге перенаправлення, а також перший рядок тексту другого перенаправлення, що зазвичай містить «реальне» перенаправлення на необхідну сторінку, куди повинно вказувати й перше перенаправлення.\n<del>Закреслені</del> записи були виправлені.",
        "double-redirect-fixed-move": "Сторінка «[[$1]]» була переміщена.\nВона автоматично оновлена і тепер є перенаправленням на «[[$2]]»",
-       "double-redirect-fixed-maintenance": "Автоматичне виправлення подвійного перенаправлення з [[$1]] на [[$2]] в роботі по технічному обслуговуванню.",
+       "double-redirect-fixed-maintenance": "Автоматичне виправлення подвійного перенаправлення з [[$1]] на [[$2]] в роботі по технічному обслуговуванню",
        "double-redirect-fixer": "Redirect fixer",
        "brokenredirects": "Розірвані перенаправлення",
        "brokenredirectstext": "Такі перенаправлення вказують на неіснуючі сторінки:",
        "rollback-success": "Відкинуті редагування {{GENDER:$3|користувача|користувачки}} $1; повернення до версії {{GENDER:$4|користувача|користувачки}} $2.",
        "rollback-success-notify": "Відкинуті редагування користувача $1; \nповернено до останньої версії користувача $2. [$3 Показати зміни]",
        "sessionfailure-title": "Помилка сеансу",
-       "sessionfailure": "Ð\97даÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f, Ð²Ð¸Ð½Ð¸ÐºÐ»Ð¸ Ð¿Ñ\80облеми Ð· Ð¿Ð¾Ñ\82оÑ\87ним Ñ\81еанÑ\81ом Ñ\80обоÑ\82и;\nÑ\86Ñ\8f Ð´Ñ\96Ñ\8f Ð±Ñ\83ла Ñ\81каÑ\81ована Ð· Ð¼ÐµÑ\82оÑ\8e Ð¿Ð¾Ð¿ÐµÑ\80едиÑ\82и Â«Ð·Ð°Ñ\85опленнÑ\8f Ñ\81еанÑ\81Ñ\83».\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð½Ð°Ñ\82иÑ\81нÑ\96Ñ\82Ñ\8c ÐºÐ½Ð¾Ð¿ÐºÑ\83 Â«Ð\9dазад» Ñ\96 Ð¿ÐµÑ\80езаванÑ\82ажÑ\82е Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83, Ð· Ñ\8fкоÑ\97 Ð²Ð¸ Ð¿Ñ\80ийÑ\88ли.",
+       "sessionfailure": "Ð\97даÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f, Ð²Ð¸Ð½Ð¸ÐºÐ»Ð¸ Ð¿Ñ\80облеми Ð· Ð¿Ð¾Ñ\82оÑ\87ним Ñ\81еанÑ\81ом Ñ\80обоÑ\82и;\nÑ\86Ñ\8e Ð´Ñ\96Ñ\8e Ñ\81каÑ\81овано, Ñ\89об Ð·Ð°Ð¿Ð¾Ð±Ñ\96гÑ\82и Â«Ð·Ð°Ñ\85опленнÑ\8e Ñ\81еанÑ\81Ñ\83».\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð½Ð°Ð´Ñ\96Ñ\88лÑ\96Ñ\82Ñ\8c Ñ\84оÑ\80мÑ\83 Ñ\89е Ñ\80аз.",
        "changecontentmodel": "Змінити модель вмісту сторінки",
        "changecontentmodel-legend": "Змінити модель вмісту",
        "changecontentmodel-title-label": "Назва сторінки",
        "thumbnail_dest_directory": "Неможливо створити цільову директорію",
        "thumbnail_image-type": "Тип зображення не підтримується",
        "thumbnail_gd-library": "Неповна конфігурація бібліотеки GD, відсутня функція $1",
+       "thumbnail_image-size-zero": "Схоже, що розмір файлу зображення є нульовим.",
        "thumbnail_image-missing": "Очевидно, відсутній файл $1",
        "thumbnail_image-failure-limit": "Там було дуже багато недавніх невдалих спроб ($1 або більше) для візуалізації цього ескізу. Будь ласка, спробуйте ще раз пізніше.",
        "import": "Імпорт статей",
        "group-bot.css": "/* Розміщений тут CSS-код буде використаний тільки для ботів */",
        "group-sysop.css": "/* Розміщений тут CSS-код буде використаний тільки для адміністраторів */",
        "group-bureaucrat.css": "/* Розміщений тут CSS-код буде використаний тільки для бюрократів */",
+       "common.json": "/* Будь-який JSON тут завантажуватиметься для всіх користувачів при кожному завантаженні сторінки. */",
        "common.js": "/* Розміщений тут код JavaScript буде завантажений всім користувачам при зверненні до будь-якої сторінки */",
        "group-autoconfirmed.js": "/* Розміщений тут код JavaScript буде завантажений тільки для автопідтверджених користувачів */",
        "group-bot.js": "/* Розміщений тут код JavaScript буде завантажений тільки для ботів */",
        "pageinfo-category-subcats": "Кількість підкатегорій",
        "pageinfo-category-files": "Кількість файлів",
        "pageinfo-user-id": "ID користувача",
+       "pageinfo-file-hash": "Хеш-значення",
        "markaspatrolleddiff": "Позначити як перевірену",
        "markaspatrolledtext": "Позначити цю сторінку як перевірену",
        "markaspatrolledtext-file": "Позначити цю версію файлу як відпатрульовану",
        "watchlistedit-clear-titles": "Сторінки:",
        "watchlistedit-clear-submit": "Очистити список спостереження (це незворотно!)",
        "watchlistedit-clear-done": "Ваш список спостереження було очищено.",
+       "watchlistedit-clear-jobqueue": "Триває очищення Вашого списку спостереження. Це може зайняти трохи часу!",
        "watchlistedit-clear-removed": "Було видалено {{PLURAL:$1|1 запис|$1 записів|$1 записи}}:",
        "watchlistedit-too-many": "Забагато сторінок для відображення тут.",
        "watchlisttools-clear": "Очистити список спостереження",
        "version-poweredby-others": "інші",
        "version-poweredby-translators": "перекладачі translatewiki.net",
        "version-credits-summary": "Нам хотілося б відзначити наступних осіб, що зробили внесок у [[Special:Version|MediaWiki]].",
-       "version-license-info": "MediaWiki є вільним програмним забезпеченням, ви можете розповсюджувати та/або модифікувати його відповідно до умов GNU General Public License, яка опублікованя фондом вільного програмного забезпечення; або версії 2 Ліцензії, або (на Ваш розсуд) будь-якої наступної версії. \n\nMediaWiki поширюється в надії, що вона буде корисною, але БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ, навіть без неявної гарантії КОМЕРЦІЙНОЇ ПРИДАТНОСТІ чи ПРИДАТНОСТІ ДЛЯ ПЕВНОЇ МЕТИ. Дивіться GNU General Public License для більш докладної інформації. \n\nВи повинні були отримати [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разом з цією програмою, якщо немає, напишіть у Free Software Foundation, Inc 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, США або [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитайте її онлайн].",
+       "version-license-info": "MediaWiki є вільним програмним забезпеченням; Ви можете поширювати та/або модифікувати його відповідно до умов GNU General Public License в редакції, опублікованій Фондом вільного програмного забезпечення; або версії 2 Ліцензії, або (на Ваш розсуд) будь-якої наступної версії. \n\nMediaWiki поширюється в надії, що вона буде корисною, але <em>БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ</em>, навіть без неявної гарантії <strong>КОМЕРЦІЙНОЇ ПРИДАТНОСТІ</strong> чи <strong>ПРИДАТНОСТІ ДЛЯ ПЕВНОЇ МЕТИ</strong>. Див. GNU General Public License, щоб дізнатись подробиці. \n\nВи повинні були отримати [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разом з цією програмою; якщо її немає, пишіть до Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитайте її онлайн].",
        "version-software": "Установлене програмне забезпечення",
        "version-software-product": "Продукт",
        "version-software-version": "Версія",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|байт|байти|байтів}}",
        "limitreport-expansiondepth": "Найвища глибина розширення",
        "limitreport-expensivefunctioncount": "Число дорогої функції аналізатора",
+       "limitreport-unstrip-depth": "Глибина рекурсії Unstrip",
+       "limitreport-unstrip-size": "Розмір Unstrip після розгортання",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|байт|байти|байтів}}",
        "expandtemplates": "Розгортання шаблонів",
-       "expand_templates_intro": "Ця спеціальна сторінка перетворює текст, рекурсивно розгортаючи всі шаблони в ньому.\nТакож розгортаються всі функції парсера\n<nowiki>{{</nowiki>#language:...}} і змінні типу\n<nowiki>{{</nowiki>CURRENTDAY}}.\nФактично, усе всередині подвійних фігурних дужок.",
+       "expand_templates_intro": "Ця спеціальна сторінка перетворює вікірозмітку, рекурсивно розгортаючи всі шаблони в ній.\nТакож розгортаються всі парсерні функції на кшталт\n<nowiki>{{</nowiki>#language:...}} і змінні типу\n<nowiki>{{</nowiki>CURRENTDAY}}.\nФактично, усе всередині подвійних фігурних дужок.",
        "expand_templates_title": "Заголовок сторінки для {{FULLPAGENAME}} тощо:",
-       "expand_templates_input": "Ð\92Ñ\85Ñ\96дний Ñ\82екÑ\81Ñ\82:",
+       "expand_templates_input": "Ð\92Ñ\85Ñ\96дна Ð²Ñ\96кÑ\96Ñ\80озмÑ\96Ñ\82ка:",
        "expand_templates_output": "Результат",
        "expand_templates_xml_output": "XML-вивід",
        "expand_templates_html_output": "Сирий вивід HTML",
        "expand_templates_preview": "Попередній перегляд",
        "expand_templates_preview_fail_html": "<em>Оскільки {{SITENAME}} має ввімкнений сирий HTML і відбулася втрата даних сесії, попередній перегляд прихований як захід безпеки від JavaScript-атак.</em>\n\n<strong>Якщо це правомірна спроба попереднього перегляду, будь ласка, спробуйте знову.</strong>\nЯкщо це далі не працює, спробуйте [[Special:UserLogout|вийти із системи]] і знову ввійти, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.",
        "expand_templates_preview_fail_html_anon": "<em>Оскільки {{SITENAME}} має ввімкненим сирий HTML, а Ви не ввійшли до системи, попередній перегляд прихований як захід безпеки від JavaScript-атак.</em>\n\n<strong>Якщо це правомірна спроба попереднього перегляду, будь ласка, [[Special:UserLogin|увійдіть до системи]] та спробуйте знову.</strong>",
-       "expand_templates_input_missing": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð½Ð°Ð´Ð°Ñ\82и Ð¿Ñ\80инаймнÑ\96 Ð´ÐµÑ\8fкий Ð²Ñ\85Ñ\96дний Ñ\82екÑ\81Ñ\82.",
+       "expand_templates_input_missing": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð²ÐºÐ°Ð·Ð°Ñ\82и Ð¿Ñ\80инаймнÑ\96 Ñ\8fкÑ\83Ñ\81Ñ\8c Ð²Ñ\85Ñ\96днÑ\83 Ð²Ñ\96кÑ\96Ñ\80озмÑ\96Ñ\82кÑ\83.",
        "pagelanguage": "Змінити мову сторінки",
        "pagelang-name": "Сторінка",
        "pagelang-language": "Мова",
        "unlinkaccounts-success": "Обліковий запис було відв'язано.",
        "authenticationdatachange-ignored": "Неопрацьована зміна облікових даних. Можливо, жоден з провайдерів не був налаштований?",
        "userjsispublic": "Будь ласка, зверніть увагу: підсторінки JavaScript не повинні містити конфіденційних даних, бо їх можуть бачити інші користувачі.",
+       "userjsonispublic": "Будь ласка, зверніть увагу: підсторінки JSON не повинні містити конфіденційних даних, адже їх можуть бачити інші користувачі.",
        "usercssispublic": "Будь ласка, зверніть увагу: підсторінки CSS не повинні містити конфіденційних даних, бо їх можуть бачити інші користувачі.",
        "restrictionsfield-badip": "Недійсна IP-адреса або діапазон: $1",
        "restrictionsfield-label": "Дозволені діапазони IP-адрес:",
index 49577a5..d7a35fb 100644 (file)
@@ -35,7 +35,8 @@
                        "Saraiki",
                        "BukhariSaeed",
                        "Zainab Meher",
-                       "Sayam Asjad"
+                       "Sayam Asjad",
+                       "Abdulq"
                ]
        },
        "tog-underline": "ربط کی خط کشیدگی:",
        "cascadeprotected": "درج ذیل محفوظ کردہ {{PLURAL:$1|صفحہ|صفحات}} کی «آبشاری» حفاظت میں شامل ہونے کی وجہ سے یہ صفحہ بھی محفوظ ہے:\n$2",
        "namespaceprotected": "آپ کو '''$1''' نام فضا کے صفحات میں ترمیم کی اجازت نہیں۔",
        "customcssprotected": "آپ کو اس سی ایس ایس میں ترمیم کرنے کی اجازت نہیں کیونکہ اس میں کسی دوسرے صارف کی ذاتی ترتیبات موجود ہیں۔",
+       "customjsonprotected": "آپ کو اس JSON میں ترمیم کرنے کی اجازت نہیں کیونکہ اس میں کسی دوسرے صارف کی ذاتی ترتیبات موجود ہیں۔",
        "customjsprotected": "آپ کو اس جاوا اسکرپٹ میں ترمیم کرنے کی اجازت نہیں کیونکہ اس میں کسی دوسرے صارف کی ذاتی ترتیبات موجود ہیں۔",
        "mycustomcssprotected": "آپ اس سی ایس ایس (CSS) صفحہ میں ترمیم کرنے کا اختیار نہیں رکھتے۔",
        "mycustomjsprotected": "آپ اس جاوا اسکپرٹ (JavaScript) صفحہ میں ترمیم کرنے کا اختیار نہیں رکھتے۔",
        "savechanges": "تبدیلیاں محفوظ کریں",
        "publishpage": "شائع کریں",
        "publishchanges": "تبدیلیاں شائع کریں",
+       "savearticle-start": "صفحہ محفوظ کریں",
+       "savechanges-start": "تبدیلیاں محفوظ کریں",
+       "publishpage-start": "صفحہ شائع کریں",
+       "publishchanges-start": "تبدیلیاں شائع کریں",
        "preview": "نمائش",
        "showpreview": "نمائش",
        "showdiff": "تبدیلیاں دکھائیں",
index 634b405..64a0b8f 100644 (file)
@@ -88,6 +88,7 @@
        "hidden-category-category": "ⵜⴰⴳⴳⴰⵢⵉⵏ ⵉⵜⵜⵓⵏⵜⴰⵍⵏ",
        "category-subcat-count": "{{PLURAL:$2|ⴰⵙⵎⵉⵍ ⴰⴷ ⴷⵉⴳⵙ ⵖⴰⵙ ⵉⴷⵓⵙⵎⵉⵍⵏ ⴰⴷ.|ⴰⵙⵎⵉⵍ ⴰⴷ ⴷⵉⴳⵙ {{PLURAL:$1|ⴰⴷⵓⵙⵎⵉⵍ ⴰⴷ |$1 ⵉⴷⵓⵙⵎⵉⵍⵏ ⴰⴷ}}, ⵙⴳ $2 ⴳ ⵓⵖⵔⵓⴷ.}}",
        "category-article-count": "{{PLURAL:$2|ⴰⵙⵎⵉⵍ ⴰⴷ ⵢⵓⵎⴰ ⵖⴰⵙ ⵜⴰⵙⵏⴰ ⴰⴷ {{PLURAL:$1|ⵜⴰⵙⵏⴰ ⴰⴷ ⵜⵍⵍⴰ|$1 ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⵍⵍⴰⵏⵜ}} ⴳ ⵓⵙⵎⵉⵍ ⴰⴷ, ⵙⴳ $2 ⴳ ⵓⵖⵔⵓⴷ.}}",
+       "listingcontinuesabbrev": "ⴹⴼⵓⵔ",
        "about": "ⵅⴼ",
        "article": "ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ",
        "newwindow": "(ⴰⴷ ⵉⵏⵏⵓⵔⵥⵎ ⴳ ⵓⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ)",
        "searchprofile-everything-tooltip": "ⵔⵣⵓ ⴳ ⵜⵓⵎⴰⵢⵜ ⴰⴽⴽⵯ (ⵓⵍⴰ ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵎⵙⴰⵡⴰⵍ)",
        "searchprofile-advanced-tooltip": "ⵔⵣⵓ ⴳ ⵜⵉⵔⵉⵡⵉⵏ ⵏ ⵉⵙⵎⴰⵡⵏ ⵉⵜⵡⴰⵏⵉⵎⴰⵏ",
        "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴳⵓⵔⵉ|$2 ⵜⴳⵓⵔⵉⵡⵉⵏ}})",
+       "search-redirect": "(ⵓⵖⵓⵍ ⵙⴳ $1)",
        "search-suggest": "ⵉⵙ ⵜⵅⵙⴷ ⴰⴷ ⵜⵉⵏⵉⴷ: $1",
        "search-interwiki-more": "(ⵓⴳⴳⴰⵔ)",
        "searchall": "ⴰⴽⴽ",
        "recentchanges-label-newpage": "ⵉⵙⵏⴼⵍⵓⵍ ⵓⵙⵏⴼⵍ ⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "recentchanges-label-minor": "ⵡⴰ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰⴷ ⵉⵜⵡⴰⵙⴽⴰⵔ ⵙ ⵓⴱⵓⵜ",
+       "recentchanges-label-unpatrolled": "ⴰⵙⵏⴼⵍ ⴰⴷ ⵓⵔⵜⴰ ⵉⵜⵜⵡⴰⵣⵣⵔⵉ",
        "recentchanges-label-plusminus": "ⵜⴰⵙⵎⴽⵜⴰ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ ⵜⵙⵙⵏⴼⵍ ⵙ ⵓⵎⴹⴰⵏ ⴰⴷ ⵏ ⵉⴱⴰⵢⵜⵏ",
        "recentchanges-legend-heading": "<strong>ⴰⵙⵙⴼⵔⵓ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ⵥⵔ ⴰⵍⵜⵓ [[Special:NewPages|ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ]])",
        "nolinkstoimage": "ⵓⵔ ⵍⵍⵉⵏⵜ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏⵏⴰ ⵉⵇⵇⵏⴻⵏ ⵖⵔ ⵓⴼⴰⵢⵍⵓ ⴰ.",
        "sharedupload-desc-here": "ⴰⵙⴷⴰⵡ ⴰⴷ ⵙⴳ $1 ⵉⵥⴹⴰⵔ ⴰ ⵉⵜⵜⵡⴰⵙⵎⵔⵙ ⴳ ⵉⵙⵏⵜⴰⵢⵏ ⵢⴰⴹⵏ.\nⴰⵙⵏⵓⵎⵎⵍ ⵏⵙ ⴳ [$2 ⵜⴰⵙⵏⴰ ⵏⵙ ⵏ ⵓⵙⵏⵓⵎⵎⵍ] ⵜⵡⴰⵙⵎⴰⵍ ⵙⴰⴷⵓ.",
        "filepage-nofile": "ⵓⵔ ⵓⴼⴰⵢⵍⵓ ⵙ ⵢⵉⵙⵎ ⴰ.",
+       "upload-disallowed-here": "ⵓⵔ ⵜⵓⴼⵉⵜ ⴰ ⵜⵙⵎⵎⵙⴽⵍⴷ ⴰⵙⴷⴰⵡ ⴰⴷ.",
        "filerevert-comment": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
        "filedelete": "ⴽⴽⵙ $1",
        "filedelete-legend": "ⴽⴽⵙ ⴰⴼⴰⵢⵍⵓ",
        "tooltip-ca-nstab-category": "ⵙⴽⵏ ⴰⵏⴰⵡ ⵏ ⵜⴰⵙⵏⴰ",
        "tooltip-minoredit": "ⵕⵛⵎ ⵓⵢⴰ ⴰⵎ ⴰⵙⵏⴼⵍ ⵎⵥⵥⵉⵢⵏ",
        "tooltip-save": "ⵃⴹⵓ ⵉⵙⵏⴼⴰⵍ ⵏⵏⴽ",
+       "tooltip-preview": "ⵣⵔ ⵣⵡⴰⵔ ⵉⵙⵏⴼⵍⵏ ⵏⴽ. ⴼⴰⴷ ⴰⴷ ⵜⵏ ⵜⵙⵓⵙⵔⴷ.",
        "tooltip-diff": "ⵙⴽⵏ ⵎⴰⵏ ⵉⵙⵏⴼⴰⵍ ⵜⴳⴳⵉⴷ ⵉ ⵓⴹⵔⵉⵙ",
        "tooltip-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰ ⵉ ⵜⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}",
        "tooltip-rollback": "\"ⵔⴰⵔ\" ⵙⵙⵔ ⴰⵙⵏⴼⵍ ⵏⵖ ⵉⵙⵏⴼⴰⵍⵏ ⵏ ⵓⵎⴰⴷⵔⴰⵡ ⴰⵎⴳⴳⴰⵔⵓ ⴳ ⵜⴰⵙⵏⴰ ⴷ ⵙ ⵢⴰⵏ ⵓⴽⵍⵉⴽ",
        "tooltip-summary": "ⴰⵔⴰ ⴽⵔⴰ ⵏ ⵓⵙⴳⵣⵍ ⵎⵥⵥⵉⵢⵏ",
+       "simpleantispam-label": "ⵜⵉⵎⵏⵥⵉⵜ ⵎⴳⵍ-ⴳⴰⵔⴰⵙⵎⵔⴰⵔⴰ.\nⴰⴷ <strong>ⵓⵔ</strong> ⵜⵣⵎⵎⴻⵎⴷ ⴰⵎⵢⴰ ⴳ ⵖⵉ!",
        "pageinfo-title": "ⵉⵏⵖⵎⵉⵙⵏ ⵖⴼ $1",
        "pageinfo-header-edits": "ⵙⵏⴼⵍ ⴰⵎⵣⵔⵓⵢ",
        "pageinfo-header-restrictions": "ⴰⴼⵔⴰⴳ ⵏ ⵜⴰⵙⵏⴰ",
index b7176ae..46970ac 100644 (file)
        "cascadeprotected": "本页面已经受到保护,不能编辑,因为它被嵌入于以下被“连锁保护”的{{PLURAL:$1|页面}}:\n$2",
        "namespaceprotected": "您没有权限编辑<strong>$1</strong>名字空间内的页面。",
        "customcssprotected": "您没有权限编辑此CSS页面,因为它包含另一位用户的个人设置。",
+       "customjsonprotected": "您没有权限编辑此JSON页面,因为它包含另一位用户的个人设置。",
        "customjsprotected": "您没有权限编辑此JavaScript页面,因为它包含另一位用户的个人设置。",
        "mycustomcssprotected": "您没有权限编辑这个 CSS 页面。",
+       "mycustomjsonprotected": "您没有权限编辑这个JSON页面。",
        "mycustomjsprotected": "您没有权限编辑这个 JavaScript 页面。",
        "myprivateinfoprotected": "您没有权限编辑您的私人信息。",
        "mypreferencesprotected": "您没有权限来编辑您的个人设置。",
        "savechanges": "保存更改",
        "publishpage": "发布页面",
        "publishchanges": "发布更改",
+       "savearticle-start": "保存页面…",
+       "savechanges-start": "保存更改…",
+       "publishpage-start": "发布页面…",
+       "publishchanges-start": "发布更改…",
        "preview": "预览",
        "showpreview": "显示预览",
        "showdiff": "显示更改",
        "blocked-notice-logextract": "这位用户目前已被封禁。以下提供最近的封禁日志以供参考:",
        "clearyourcache": "<strong>注意:</strong>在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。\n* <strong>Firefox或Safari:</strong>按住<em>Shift</em>的同时单击<em>刷新</em>,或按<em>Ctrl-F5</em>或<em>Ctrl-R</em>(Mac为<em>⌘-R</em>)\n* <strong>Google Chrome:</strong>按<em>Ctrl-Shift-R</em>(Mac为<em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong>按住<em>Ctrl</em>的同时单击<em>刷新</em>,或按<em>Ctrl-F5</em>\n* <strong>Opera:</strong>前往<em>菜单 → 设置</em>(Mac为<em>Opera → Preferences</em>),然后<em>隐私和安全 → 清除浏览数据 → 缓存的图片和文件</em>。",
        "usercssyoucanpreview": "<strong>提示:</strong>在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
+       "userjsonyoucanpreview": "<strong>提示:</strong>在保存前请用“{{int:showpreview}}”按钮来测试您新的JSON。",
        "userjsyoucanpreview": "<strong>提示:</strong>在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
        "usercsspreview": "<strong>请记住您现在只是在预览您的用户CSS。它尚未保存!</strong>",
+       "userjsonpreview": "<strong>请记住您现在只是在测试/预览您的用户JSON配置。它尚未保存!</strong>",
        "userjspreview": "<strong>请记住您现在只是在测试/预览您的用户JavaScript。它尚未保存!</strong>",
        "sitecsspreview": "<strong>请记住您现在只是在预览该CSS。它尚未保存!</strong>",
+       "sitejsonpreview": "<strong>请记住您现在只是在预览该JSON配置。它尚未保存!</strong>",
        "sitejspreview": "<strong>请记住您现在只是在预览该JavaScript代码。它尚未保存!</strong>",
-       "userinvalidconfigtitle": "<strong>警告:</strong>不存在皮肤“$1”。注意自定义的 .css 和 .js 页要使用小写标题,例如,{{ns:user}}:Foo/vector.css 不同于 {{ns:user}}:Foo/Vector.css。",
+       "userinvalidconfigtitle": "<strong>警告:</strong>不存在皮肤“$1”。自定义的.css、.json和.js页面应使用小写标题,例如,{{ns:user}}:Foo/vector.css而不是{{ns:user}}:Foo/Vector.css。",
        "updated": "(已更新)",
        "note": "<strong>注意:</strong>",
        "previewnote": "<strong>请记住这只是预览。</strong>您的更改尚未保存!",
        "default": "默认",
        "prefs-files": "文件",
        "prefs-custom-css": "自定义CSS",
+       "prefs-custom-json": "自定义JSON",
        "prefs-custom-js": "自定义JavaScript",
-       "prefs-common-config": "所有皮肤共用的CSS/JavaScript:",
+       "prefs-common-config": "所有皮肤共用的CSS/JSON/JavaScript:",
        "prefs-reset-intro": "可以通过本页面将系统设置重置为网站默认值。该操作无法撤销。",
        "prefs-emailconfirm-label": "电子邮件确认:",
        "youremail": "电子邮件:",
        "right-editcontentmodel": "编辑页面的内容模型",
        "right-editinterface": "编辑用户界面",
        "right-editusercss": "编辑其他用户的CSS文件",
+       "right-edituserjson": "编辑其他用户的JSON文件",
        "right-edituserjs": "编辑其他用户的JavaScript文件",
        "right-editmyusercss": "编辑您的用户CSS文件",
+       "right-editmyuserjson": "编辑您的用户JSON文件",
        "right-editmyuserjs": "编辑您的用户JavaScript文件",
        "right-viewmywatchlist": "查看您的监视列表",
        "right-editmywatchlist": "编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。",
        "grant-createaccount": "创建账户",
        "grant-createeditmovepage": "创建、编辑和移动页面",
        "grant-delete": "删除页面、修订和日志记录",
-       "grant-editinterface": "编辑MediaWiki名字空间和用户CSS/JavaScript",
-       "grant-editmycssjs": "编辑您的用户CSS/JavaScript",
+       "grant-editinterface": "编辑MediaWiki名字空间和用户CSS/JSON/JavaScript",
+       "grant-editmycssjs": "编辑您的用户CSS/JSON/JavaScript",
        "grant-editmyoptions": "编辑您的用户参数设置",
        "grant-editmywatchlist": "编辑您的监视列表",
        "grant-editpage": "编辑存在的页面",
        "group-bot.css": "/* 这里放置的CSS将只影响机器人 */",
        "group-sysop.css": "/* 这里放置的CSS将只影响管理员 */",
        "group-bureaucrat.css": "/* 这里放置的CSS将只影响行政员 */",
+       "common.json": "/* 这里的任何JSON将为所有用户在每次页面载入时加载。 */",
        "common.js": "/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */",
        "group-autoconfirmed.js": "/* 这里的任何JavaScript将只为自动确认用户加载 */",
        "group-user.js": "/* 这里的任何JavaScript将只为注册用户加载 */",
        "unlinkaccounts-success": "账户已取消链接。",
        "authenticationdatachange-ignored": "身份验证数据更改未处理。也许没有配置的提供者?",
        "userjsispublic": "请注意:JavaScript子页面不应包含机密数据,因为它们可以被其他用户查看。",
+       "userjsonispublic": "请注意:JSON子页面不应包含保密数据,因为它们可被其他用户看到。",
        "usercssispublic": "请注意:CSS子页面不应包含机密数据,因为它们可以被其他用户查看。",
        "restrictionsfield-badip": "无效的IP地址或段:$1",
        "restrictionsfield-label": "允许的IP段:",
index 2f7673c..846212b 100644 (file)
@@ -93,7 +93,8 @@
                        "蘭斯特",
                        "机智的小鱼君",
                        "Wbxshiori",
-                       "Laundry Machine"
+                       "Laundry Machine",
+                       "和平至上"
                ]
        },
        "tog-underline": "底線標示連結:",
        "permissionserrors": "權限錯誤",
        "permissionserrorstext": "由於下列{{PLURAL:$1|原因}},您沒有權限進行目前的動作:",
        "permissionserrorstext-withaction": "由於下列{{PLURAL:$1|原因}},您沒有權限進行 $2 的動作:",
-       "contentmodelediterror": "您無法編輯此修訂,因此修訂使用的內容模型為 <code>$1</code> 與目前使用的頁面內容模型 <code>$2</code> 不同。",
+       "contentmodelediterror": "您無法編輯此修訂,因為它的內容模型為<code>$1</code>,與目前使用的頁面內容模型<code>$2</code>不同。",
        "recreate-moveddeleted-warn": "<strong>警告:您正重新建立先前已刪除的頁面。</strong>\n\n您應考慮是否繼續編輯此頁。\n在此提供刪除與移動日誌方便作為參考:",
        "moveddeleted-notice": "此頁面已刪除。\n下方提供此頁面的刪除、保護和移動日誌以便參考。",
        "moveddeleted-notice-recent": "對不起,此頁面剛剛被刪除(在最近24小時內)。頁面的刪除、保護和移動日誌在下方提供以供參考。",
        "feedback-terms": "我了解我的使用者代理資訊包含完整的瀏覽器與作業系統版本資訊,且該資訊將會與意見回饋一同公開共享。",
        "feedback-termsofuse": "我同意依照使用條款提供意見回饋。",
        "feedback-thanks": "感謝!您的意見回饋已發佈到頁面 \"[$2 $1]\"。",
-       "feedback-thanks-title": "感謝您!",
+       "feedback-thanks-title": "感謝您",
        "feedback-useragent": "使用者代理:",
        "searchsuggest-search": "搜尋 {{SITENAME}}",
        "searchsuggest-containing": "包含...",
index 23122cd..7a9d0c3 100644 (file)
@@ -14,11 +14,11 @@ $namespaceNames = [
        NS_TALK             => 'Razgovor',
        NS_USER             => 'Korisnik',
        NS_USER_TALK        => 'Razgovor_s_korisnikom',
-       NS_PROJECT_TALK     => 'Razgovor_{{grammar:instrumental|$1}}',
+       NS_PROJECT_TALK     => 'Razgovor_o_{{grammar:lokativ|$1}}',
        NS_FILE             => 'Datoteka',
        NS_FILE_TALK        => 'Razgovor_o_datoteci',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_razgovor',
+       NS_MEDIAWIKI_TALK   => 'Razgovor_o_MediaWikiju',
        NS_TEMPLATE         => 'Šablon',
        NS_TEMPLATE_TALK    => 'Razgovor_o_šablonu',
        NS_HELP             => 'Pomoć',
@@ -34,6 +34,8 @@ $namespaceAliases = [
        'Razgovor_o_datoteci' => NS_FILE_TALK,
        'MedijaViki' => NS_MEDIAWIKI,
        'Razgovor_o_MedijaVikiju' => NS_MEDIAWIKI_TALK,
+       'MediaWiki_razgovor' => NS_MEDIAWIKI_TALK,
+       'Razgovor_{{grammar:instrumental|$1}}' => NS_PROJECT_TALK,
 ];
 
 $specialPageAliases = [
index 19f8232..f3d4f97 100644 (file)
@@ -46,6 +46,7 @@ $specialPageAliases = [
        'AllMyUploads'              => [ 'כל_ההעלאות_שלי' ],
        'Allpages'                  => [ 'כל_הדפים' ],
        'ApiHelp'                   => [ 'עזרת_API' ],
+       'ApiSandbox'                => [ 'ארגז_חול_של_API' ],
        'Ancientpages'              => [ 'דפים_מוזנחים' ],
        'Badtitle'                  => [ 'כותרת_שגויה' ],
        'Blankpage'                 => [ 'דף_ריק' ],
diff --git a/maintenance/archives/patch-ar_rev_id-not-null.sql b/maintenance/archives/patch-ar_rev_id-not-null.sql
new file mode 100644 (file)
index 0000000..8418f20
--- /dev/null
@@ -0,0 +1,3 @@
+-- T182678: Make ar_rev_id not nullable
+ALTER TABLE /*_*/archive
+  CHANGE COLUMN ar_rev_id ar_rev_id int unsigned NOT NULL;
diff --git a/maintenance/archives/patch-image-img_description_id.sql b/maintenance/archives/patch-image-img_description_id.sql
new file mode 100644 (file)
index 0000000..d098c80
--- /dev/null
@@ -0,0 +1,7 @@
+--
+-- patch-image-img_description_id.sql
+--
+-- T188132. Add `img_description_id` to the `image` table.
+
+ALTER TABLE /*_*/image
+  ADD COLUMN img_description_id bigint unsigned NOT NULL DEFAULT 0 AFTER img_description;
diff --git a/maintenance/archives/patch-site_stats-modify.sql b/maintenance/archives/patch-site_stats-modify.sql
new file mode 100644 (file)
index 0000000..c70dd00
--- /dev/null
@@ -0,0 +1,7 @@
+ALTER TABLE /*_*/site_stats
+       ALTER ss_total_edits SET DEFAULT NULL,
+       ALTER ss_good_articles SET DEFAULT NULL,
+       MODIFY COLUMN ss_total_pages bigint unsigned DEFAULT NULL,
+       MODIFY COLUMN ss_users bigint unsigned DEFAULT NULL,
+       MODIFY COLUMN ss_active_users bigint unsigned DEFAULT NULL,
+       MODIFY COLUMN ss_images bigint unsigned DEFAULT NULL;
diff --git a/maintenance/deleteAutoPatrolLogs.php b/maintenance/deleteAutoPatrolLogs.php
new file mode 100644 (file)
index 0000000..73e0baa
--- /dev/null
@@ -0,0 +1,198 @@
+<?php
+/**
+ * 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.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Remove autopatrol logs in the logging table.
+ *
+ * @ingroup Maintenance
+ */
+class DeleteAutoPatrolLogs extends Maintenance {
+
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Remove autopatrol logs in the logging table' );
+               $this->addOption( 'dry-run', 'Print debug info instead of actually deleting' );
+               $this->addOption(
+                       'check-old',
+                       'Check old patrol logs (for deleting old format autopatrols).' .
+                               'Note that this will not delete rows older than 2011 (MediaWiki 1.18).'
+               );
+               $this->addOption(
+                       'before',
+                       'Timestamp to delete only before that time, all MediaWiki timestamp formats are accepted',
+                       false,
+                       true
+               );
+               $this->addOption(
+                       'from-id',
+                       'First row (log id) to start updating from',
+                       false,
+                       true
+               );
+               $this->addOption(
+                       'sleep',
+                       'Sleep time (in seconds) between every batch',
+                       false,
+                       true
+               );
+               $this->setBatchSize( 1000 );
+       }
+
+       public function execute() {
+               $this->setBatchSize( $this->getOption( 'batch-size', $this->getBatchSize() ) );
+
+               $sleep = (int)$this->getOption( 'sleep', 10 );
+               $fromId = $this->getOption( 'from-id', null );
+               $this->countDown( 5 );
+               while ( true ) {
+                       if ( $this->hasOption( 'check-old' ) ) {
+                               $rowsData = $this->getRowsOld( $fromId );
+                               // We reached end of the table
+                               if ( !$rowsData ) {
+                                       break;
+                               }
+                               $rows = $rowsData['rows'];
+                               $fromId = $rowsData['lastId'];
+
+                               // There is nothing to delete in this batch
+                               if ( !$rows ) {
+                                       continue;
+                               }
+                       } else {
+                               $rows = $this->getRows( $fromId );
+                               if ( !$rows ) {
+                                       break;
+                               }
+                               $fromId = end( $rows );
+                       }
+
+                       if ( $this->hasOption( 'dry-run' ) ) {
+                               $this->output( 'These rows will get deleted: ' . implode( ', ', $rows ) . "\n" );
+                       } else {
+                               $this->deleteRows( $rows );
+                               $this->output( 'Processed up to row id ' . end( $rows ) . "\n" );
+                       }
+
+                       if ( $sleep > 0 ) {
+                               sleep( $sleep );
+                       }
+               }
+       }
+
+       private function getRows( $fromId ) {
+               $dbr = MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer()->getConnection(
+                       DB_REPLICA
+               );
+               $before = $this->getOption( 'before', false );
+
+               $conds = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'autopatrol',
+               ];
+
+               if ( $fromId ) {
+                       $conds[] = 'log_id > ' . $dbr->addQuotes( $fromId );
+               }
+
+               if ( $before ) {
+                       $conds[] = 'log_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( $before ) );
+               }
+
+               return $dbr->selectFieldValues(
+                       'logging',
+                       'log_id',
+                       $conds,
+                       __METHOD__,
+                       [ 'LIMIT' => $this->getBatchSize() ]
+               );
+       }
+
+       private function getRowsOld( $fromId ) {
+               $dbr = MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer()->getConnection(
+                       DB_REPLICA
+               );
+               $batchSize = $this->getBatchSize();
+               $before = $this->getOption( 'before', false );
+
+               $conds = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'patrol',
+               ];
+
+               if ( $fromId ) {
+                       $conds[] = 'log_id > ' . $dbr->addQuotes( $fromId );
+               }
+
+               if ( $before ) {
+                       $conds[] = 'log_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( $before ) );
+               }
+
+               $result = $dbr->select(
+                       'logging',
+                       [ 'log_id', 'log_params' ],
+                       $conds,
+                       __METHOD__,
+                       [ 'LIMIT' => $batchSize ]
+               );
+
+               $last = null;
+               $autopatrolls = [];
+               foreach ( $result as $row ) {
+                       $last = $row->log_id;
+                       Wikimedia\suppressWarnings();
+                       $params = unserialize( $row->log_params );
+                       Wikimedia\restoreWarnings();
+
+                       // Skipping really old rows, before 2011
+                       if ( !is_array( $params ) || !array_key_exists( '6::auto', $params ) ) {
+                               continue;
+                       }
+
+                       $auto = $params['6::auto'];
+                       if ( $auto ) {
+                               $autopatrolls[] = $row->log_id;
+                       }
+               }
+
+               if ( $last === null ) {
+                       return null;
+               }
+
+               return [ 'rows' => $autopatrolls, 'lastId' => $last ];
+       }
+
+       private function deleteRows( array $rows ) {
+               $dbw = MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer()->getConnection(
+                       DB_MASTER
+               );
+
+               $dbw->delete(
+                       'logging',
+                       [ 'log_id' => $rows ],
+                       __METHOD__
+               );
+
+               MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->waitForReplication();
+       }
+
+}
+
+$maintClass = DeleteAutoPatrolLogs::class;
+require_once RUN_MAINTENANCE_IF_MAIN;
index 77b0e61..9917a4f 100644 (file)
@@ -54,13 +54,7 @@ if ( !is_readable( $file ) ) {
 }
 $ext = pathinfo( $file, PATHINFO_EXTENSION );
 if ( $ext == 'php' || $ext == 'php5' ) {
-       # Execute php files
-       # We use require and return true here because when you return false
-       # the php webserver will discard post data and things like login
-       # will not function in the dev environment.
-       require $file;
-
-       return true;
+       return false;
 }
 $mime = false;
 // Borrow mime type file from MimeAnalyzer
index e3c7e0f..ff06e49 100644 (file)
@@ -2027,7 +2027,6 @@ isminor
 ismodsince
 ismulti
 isnew
-ispermalink
 isroot
 isself
 isset
index 2462eaf..736b12b 100644 (file)
@@ -9,7 +9,7 @@ require_once $basePath . '/maintenance/Maintenance.php';
  *
  * @since 1.25
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Daniel Kinzler
  */
 class ExportSites extends Maintenance {
index 60dbea1..b2b14cb 100644 (file)
@@ -24,7 +24,7 @@
 require_once __DIR__ . '/Maintenance.php';
 
 /**
- * Maintenance script that migrates archive.ar_text and ar_flags to modern storage
+ * Maintenance script that migrates archive.ar_text and ar_flags to text storage
  *
  * @ingroup Maintenance
  * @since 1.31
@@ -33,7 +33,7 @@ class MigrateArchiveText extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
                $this->addDescription(
-                       'Migrates comments from pre-1.5 ar_text and ar_flags columns to modern storage'
+                       'Migrates content from pre-1.5 ar_text and ar_flags columns to text storage'
                );
                $this->addOption(
                        'replace-missing',
diff --git a/maintenance/mssql/archives/patch-ar_rev_id-not-null.sql b/maintenance/mssql/archives/patch-ar_rev_id-not-null.sql
new file mode 100644 (file)
index 0000000..d287f49
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/archive ALTER COLUMN ar_rev_id INT NOT NULL;
diff --git a/maintenance/mssql/archives/patch-image-img_description_id.sql b/maintenance/mssql/archives/patch-image-img_description_id.sql
new file mode 100644 (file)
index 0000000..bc51b52
--- /dev/null
@@ -0,0 +1,6 @@
+--
+-- patch-image-img_description_id.sql
+--
+-- T188132. Add `img_description_id` to the `image` table.
+
+ALTER TABLE /*_*/image ADD img_description_id bigint NOT NULL CONSTRAINT DF_img_description_id DEFAULT 0 CONSTRAINT FK_img_description_id FOREIGN KEY REFERENCES /*_*/comment(comment_id);
diff --git a/maintenance/mssql/archives/patch-rc_patrolled_type.sql b/maintenance/mssql/archives/patch-rc_patrolled_type.sql
new file mode 100644 (file)
index 0000000..c8c7755
--- /dev/null
@@ -0,0 +1,22 @@
+DECLARE @cname sysname;--
+
+SELECT @cname = dc.name
+FROM sys.default_constraints dc
+JOIN sys.columns c
+       ON c.object_id = dc.parent_object_id
+       AND c.column_id = dc.parent_column_id
+WHERE
+       c.name = 'rc_patrolled'
+       AND c.object_id = OBJECT_ID('/*_*/recentchanges', 'U');--
+
+IF @cname IS NOT NULL
+BEGIN;--
+       DECLARE @sql nvarchar(max);--
+       SET @sql = N'ALTER TABLE /*_*/recentchanges DROP CONSTRAINT ' + @cname;--
+       EXEC sp_executesql @sql;--
+END;--
+
+DROP INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges;--
+ALTER TABLE /*_*/recentchanges ALTER COLUMN rc_patrolled tinyint NOT NULL;--
+ALTER TABLE /*_*/recentchanges ADD CONSTRAINT DF_rc_patrolled DEFAULT 0 FOR rc_patrolled;--
+CREATE INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp);
\ No newline at end of file
diff --git a/maintenance/mssql/archives/patch-site_stats-modify.sql b/maintenance/mssql/archives/patch-site_stats-modify.sql
new file mode 100644 (file)
index 0000000..b2de948
--- /dev/null
@@ -0,0 +1,32 @@
+/* Delete old default constraints */
+DECLARE @sql nvarchar(max)
+SET @sql=''
+
+/* IMHO: A DBMS where you have to do THIS to change a default value sucks. */
+SELECT @sql= @sql + 'ALTER TABLE site_stats DROP CONSTRAINT ' + df.name + '; '
+FROM sys.default_constraints df
+JOIN sys.columns c
+       ON c.object_id = df.parent_object_id
+       AND c.column_id = df.parent_column_id
+WHERE
+       df.parent_object_id =  OBJECT_ID('site_stats');--
+
+EXEC sp_executesql @sql;
+
+/* Change data type of ss_images from int to bigint.
+ * All other fields (except ss_row_id) already are bigint.
+ * This MUST happen before adding new constraints. */
+ALTER TABLE site_stats ALTER COLUMN ss_images bigint;
+
+/* Add new default constraints.
+ * Don't ask me why I have to repeat ALTER TABLE site_stats
+ * instead of using commas, for some reason SQL Server 2016
+ * didn't accept it in any other way. Maybe I just don't know
+ * enough about mssql, but this works.
+ */
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_total_edits DEFAULT NULL FOR ss_total_edits;
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_good_article DEFAULT NULL FOR ss_good_articles;
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_total_pages DEFAULT NULL FOR ss_total_pages;
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_users DEFAULT NULL FOR ss_users;
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_active_users DEFAULT NULL FOR ss_active_users;
+ALTER TABLE site_stats ADD CONSTRAINT col_ss_images DEFAULT NULL FOR ss_images;
index ddc5517..a34b5b8 100644 (file)
@@ -279,7 +279,7 @@ CREATE TABLE /*_*/archive (
    ar_timestamp varchar(14) NOT NULL default '',
    ar_minor_edit BIT NOT NULL DEFAULT 0,
    ar_flags NVARCHAR(255) NOT NULL,
-   ar_rev_id INT NULL, -- NOT a FK, the row gets deleted from revision and moved here
+   ar_rev_id INT NOT NULL, -- NOT a FK, the row gets deleted from revision and moved here
    ar_text_id INT CONSTRAINT ar_text_id__old_id__fk FOREIGN KEY REFERENCES /*_*/text(old_id) ON DELETE CASCADE,
    ar_deleted TINYINT NOT NULL DEFAULT 0,
    ar_len INT,
@@ -591,26 +591,22 @@ CREATE TABLE /*_*/site_stats (
   ss_row_id int NOT NULL CONSTRAINT /*i*/ss_row_id PRIMARY KEY,
 
   -- Total number of edits performed.
-  ss_total_edits bigint default 0,
+  ss_total_edits bigint default NULL,
 
-  -- An approximate count of pages matching the following criteria:
-  -- * in namespace 0
-  -- * not a redirect
-  -- * contains the text '[['
-  -- See Article::isCountable() in includes/Article.php
-  ss_good_articles bigint default 0,
+  -- See SiteStatsInit::articles().
+  ss_good_articles bigint default NULL,
 
-  -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster
-  ss_total_pages bigint default '-1',
+  -- Total pages, theoretically equal to SELECT COUNT(*) FROM page.
+  ss_total_pages bigint default NULL,
 
-  -- Number of users, theoretically equal to SELECT COUNT(*) FROM user;
-  ss_users bigint default '-1',
+  -- Number of users, theoretically equal to SELECT COUNT(*) FROM user.
+  ss_users bigint default NULL,
 
-  -- Number of users that still edit
-  ss_active_users bigint default '-1',
+  -- Number of users that still edit.
+  ss_active_users bigint default NULL,
 
-  -- Number of images, equivalent to SELECT COUNT(*) FROM image
-  ss_images int default 0
+  -- Number of images, equivalent to SELECT COUNT(*) FROM image.
+  ss_images bigint default NULL
 );
 
 
@@ -740,6 +736,7 @@ CREATE TABLE /*_*/image (
   -- Description field as entered by the uploader.
   -- This is displayed in image upload history and logs.
   img_description nvarchar(255) NOT NULL CONSTRAINT DF_img_description DEFAULT '',
+  img_description_id bigint NOT NULL CONSTRAINT DF_img_description_id DEFAULT 0 CONSTRAINT FK_img_description_id FOREIGN KEY REFERENCES /*_*/comment(comment_id),
 
   -- user_id and user_name of uploader.
   img_user int REFERENCES /*_*/mwuser(user_id) ON DELETE SET NULL,
@@ -1004,8 +1001,9 @@ CREATE TABLE /*_*/recentchanges (
   -- If the Recent Changes Patrol option is enabled,
   -- users may mark edits as having been reviewed to
   -- remove a warning flag on the RC list.
-  -- A value of 1 indicates the page has been reviewed.
-  rc_patrolled bit NOT NULL default 0,
+  -- A value of 1 indicates the page has been reviewed manually.
+  -- A value of 2 indicates the page has been automatically reviewed.
+  rc_patrolled tinyint NOT NULL CONSTRAINT DF_rc_patrolled DEFAULT 0
 
   -- Recorded IP address the edit was made from, if the
   -- $wgPutIPinRC option is enabled.
diff --git a/maintenance/oracle/archives/patch-ar_rev_id-not-null.sql b/maintenance/oracle/archives/patch-ar_rev_id-not-null.sql
new file mode 100644 (file)
index 0000000..56f1598
--- /dev/null
@@ -0,0 +1,5 @@
+-- T182678: Make ar_rev_id not nullable
+
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.archive MODIFY ar_rev_id NUMBER NOT NULL;
diff --git a/maintenance/oracle/archives/patch-image-img_description_id.sql b/maintenance/oracle/archives/patch-image-img_description_id.sql
new file mode 100644 (file)
index 0000000..5995b24
--- /dev/null
@@ -0,0 +1,7 @@
+--
+-- patch-image-img_description_id.sql
+--
+-- T188132. Add `img_description_id` to the `image` table.
+
+ALTER TABLE &mw_prefix.image ADD ( img_description_id NUMBER DEFAULT 0 NOT NULL );
+ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.oldimage_fk2 FOREIGN KEY (img_description_id) REFERENCES &mw_prefix."COMMENT"(comment_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
diff --git a/maintenance/oracle/archives/patch-site_stats-modify.sql b/maintenance/oracle/archives/patch-site_stats-modify.sql
new file mode 100644 (file)
index 0000000..1c784d9
--- /dev/null
@@ -0,0 +1,7 @@
+ALTER TABLE /*_*/site_stats
+       ALTER ss_total_edits SET DEFAULT NULL,
+       ALTER ss_good_articles SET DEFAULT NULL,
+       ALTER ss_total_pages SET DEFAULT NULL,
+       ALTER ss_users SET DEFAULT NULL,
+       ALTER ss_active_users SET DEFAULT NULL,
+       ALTER ss_images SET DEFAULT NULL;
index 058ef15..e69c79b 100644 (file)
@@ -257,7 +257,7 @@ CREATE TABLE &mw_prefix.archive (
   ar_timestamp   TIMESTAMP(6) WITH TIME ZONE  NOT NULL,
   ar_minor_edit  CHAR(1)         DEFAULT '0' NOT NULL,
   ar_flags       VARCHAR2(255),
-  ar_rev_id      NUMBER,
+  ar_rev_id      NUMBER NOT NULL,
   ar_text_id     NUMBER,
   ar_deleted     CHAR(1)      DEFAULT '0' NOT NULL,
   ar_len         NUMBER,
@@ -457,12 +457,12 @@ CREATE UNIQUE INDEX &mw_prefix.iwlinks_ui02 ON &mw_prefix.iwlinks (iwl_prefix, i
 
 CREATE TABLE &mw_prefix.site_stats (
   ss_row_id         NUMBER  NOT NULL PRIMARY KEY,
-  ss_total_edits    NUMBER            DEFAULT 0,
-  ss_good_articles  NUMBER            DEFAULT 0,
-  ss_total_pages    NUMBER            DEFAULT -1,
-  ss_users          NUMBER            DEFAULT -1,
-  ss_active_users   NUMBER            DEFAULT -1,
-  ss_images         NUMBER            DEFAULT 0
+  ss_total_edits    NUMBER            DEFAULT NULL,
+  ss_good_articles  NUMBER            DEFAULT NULL,
+  ss_total_pages    NUMBER            DEFAULT NULL,
+  ss_users          NUMBER            DEFAULT NULL,
+  ss_active_users   NUMBER            DEFAULT NULL,
+  ss_images         NUMBER            DEFAULT NULL
 );
 
 CREATE SEQUENCE ipblocks_ipb_id_seq;
@@ -517,6 +517,7 @@ CREATE TABLE &mw_prefix.image (
   img_major_mime   VARCHAR2(32) DEFAULT 'unknown',
   img_minor_mime   VARCHAR2(100) DEFAULT 'unknown',
   img_description  VARCHAR2(255),
+  img_description_id  NUMBER DEFAULT 0 NOT NULL,
   img_user         NUMBER       DEFAULT 0 NOT NULL,
   img_user_text    VARCHAR2(255)      NULL,
   img_actor        NUMBER       DEFAULT 0 NOT NULL,
@@ -525,6 +526,7 @@ CREATE TABLE &mw_prefix.image (
 );
 ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_pk PRIMARY KEY (img_name);
 ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_fk1 FOREIGN KEY (img_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_fk2 FOREIGN KEY (img_description_id) REFERENCES &mw_prefix."COMMENT"(comment_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 CREATE INDEX &mw_prefix.image_i01 ON &mw_prefix.image (img_user_text,img_timestamp);
 CREATE INDEX &mw_prefix.image_i02 ON &mw_prefix.image (img_size);
 CREATE INDEX &mw_prefix.image_i03 ON &mw_prefix.image (img_timestamp);
diff --git a/maintenance/populateArchiveRevId.php b/maintenance/populateArchiveRevId.php
new file mode 100644 (file)
index 0000000..b8b9e68
--- /dev/null
@@ -0,0 +1,177 @@
+<?php
+/**
+ * Populate ar_rev_id in pre-1.5 rows
+ *
+ * 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.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+use Wikimedia\Rdbms\IDatabase;
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script that populares archive.ar_rev_id in old rows
+ *
+ * @ingroup Maintenance
+ * @since 1.31
+ */
+class PopulateArchiveRevId extends LoggedUpdateMaintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Populate ar_rev_id in pre-1.5 rows' );
+               $this->setBatchSize( 100 );
+       }
+
+       protected function getUpdateKey() {
+               return __CLASS__;
+       }
+
+       protected function doDBUpdates() {
+               $this->output( "Populating ar_rev_id...\n" );
+               $dbw = $this->getDB( DB_MASTER );
+
+               // Quick exit if there are no rows needing updates.
+               $any = $dbw->selectField(
+                       'archive',
+                       'ar_id',
+                       [ 'ar_rev_id' => null ],
+                       __METHOD__
+               );
+               if ( !$any ) {
+                       $this->output( "Completed ar_rev_id population, 0 rows updated.\n" );
+                       return true;
+               }
+
+               $rev = $this->makeDummyRevisionRow( $dbw );
+               $count = 0;
+               while ( true ) {
+                       wfWaitForSlaves();
+
+                       $arIds = $dbw->selectFieldValues(
+                               'archive',
+                               'ar_id',
+                               [ 'ar_rev_id' => null ],
+                               __METHOD__,
+                               [ 'LIMIT' => $this->getBatchSize(), 'ORDER BY' => [ 'ar_id' ] ]
+                       );
+                       if ( !$arIds ) {
+                               $this->output( "Completed ar_rev_id population, $count rows updated.\n" );
+                               return true;
+                       }
+
+                       try {
+                               $updates = $dbw->doAtomicSection( __METHOD__, function ( $dbw, $fname ) use ( $arIds, $rev ) {
+                                       // Create new rev_ids by inserting dummy rows into revision and then deleting them.
+                                       $dbw->insert( 'revision', array_fill( 0, count( $arIds ), $rev ), $fname );
+                                       $revIds = $dbw->selectFieldValues(
+                                               'revision',
+                                               'rev_id',
+                                               [ 'rev_timestamp' => $rev['rev_timestamp'] ],
+                                               $fname
+                                       );
+                                       if ( !is_array( $revIds ) ) {
+                                               throw new UnexpectedValueException( 'Failed to insert dummy revisions' );
+                                       }
+                                       if ( count( $revIds ) !== count( $arIds ) ) {
+                                               throw new UnexpectedValueException(
+                                                       'Tried to insert ' . count( $arIds ) . ' dummy revisions, but found '
+                                                       . count( $revIds ) . ' matching rows.'
+                                               );
+                                       }
+                                       $dbw->delete( 'revision', [ 'rev_id' => $revIds ], $fname );
+
+                                       return array_combine( $arIds, $revIds );
+                               } );
+                       } catch ( UnexpectedValueException $ex ) {
+                               $this->fatalError( $ex->getMessage() );
+                       }
+
+                       foreach ( $updates as $arId => $revId ) {
+                               $dbw->update(
+                                       'archive',
+                                       [ 'ar_rev_id' => $revId ],
+                                       [ 'ar_id' => $arId, 'ar_rev_id' => null ],
+                                       __METHOD__
+                               );
+                               $count += $dbw->affectedRows();
+                       }
+
+                       $min = min( array_keys( $updates ) );
+                       $max = max( array_keys( $updates ) );
+                       $this->output( " ... $min-$max\n" );
+               }
+       }
+
+       /**
+        * Construct a dummy revision table row to use for reserving IDs
+        *
+        * The row will have a wildly unlikely timestamp, and possibly a generic
+        * user and comment, but will otherwise be derived from a revision on the
+        * wiki's main page.
+        *
+        * @param IDatabase $dbw
+        * @return array
+        */
+       private function makeDummyRevisionRow( IDatabase $dbw ) {
+               $ts = $dbw->timestamp( '11111111111111' );
+               $mainPage = Title::newMainPage();
+               if ( !$mainPage ) {
+                       $this->fatalError( 'Main page does not exist' );
+               }
+               $pageId = $mainPage->getArticleId();
+               if ( !$pageId ) {
+                       $this->fatalError( $mainPage->getPrefixedText() . ' has no ID' );
+               }
+               $rev = $dbw->selectRow(
+                       'revision',
+                       '*',
+                       [ 'rev_page' => $pageId ],
+                       __METHOD__,
+                       [ 'ORDER BY' => 'rev_timestamp ASC' ]
+               );
+               if ( !$rev ) {
+                       $this->fatalError( $mainPage->getPrefixedText() . ' has no revisions' );
+               }
+               unset( $rev->rev_id );
+               $rev = (array)$rev;
+               $rev['rev_timestamp'] = $ts;
+               if ( isset( $rev['rev_user'] ) ) {
+                       $rev['rev_user'] = 0;
+                       $rev['rev_user_text'] = '0.0.0.0';
+               }
+               if ( isset( $rev['rev_comment'] ) ) {
+                       $rev['rev_comment'] = 'Dummy row';
+               }
+
+               $any = $dbw->selectField(
+                       'revision',
+                       'rev_id',
+                       [ 'rev_timestamp' => $ts ],
+                       __METHOD__
+               );
+               if ( $any ) {
+                       $this->fatalError( "... Why does your database contain a revision dated $ts?" );
+               }
+
+               return $rev;
+       }
+}
+
+$maintClass = "PopulateArchiveRevId";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/postgres/archives/patch-ar_rev_id-not-null.sql b/maintenance/postgres/archives/patch-ar_rev_id-not-null.sql
new file mode 100644 (file)
index 0000000..1a090e9
--- /dev/null
@@ -0,0 +1,3 @@
+-- T182678: Make ar_rev_id not nullable
+ALTER TABLE archive
+  ALTER COLUMN ar_rev_id SET NOT NULL;
diff --git a/maintenance/postgres/archives/patch-site_stats-modify.sql b/maintenance/postgres/archives/patch-site_stats-modify.sql
new file mode 100644 (file)
index 0000000..1c784d9
--- /dev/null
@@ -0,0 +1,7 @@
+ALTER TABLE /*_*/site_stats
+       ALTER ss_total_edits SET DEFAULT NULL,
+       ALTER ss_good_articles SET DEFAULT NULL,
+       ALTER ss_total_pages SET DEFAULT NULL,
+       ALTER ss_users SET DEFAULT NULL,
+       ALTER ss_active_users SET DEFAULT NULL,
+       ALTER ss_images SET DEFAULT NULL;
index 1e1c434..a361b8e 100644 (file)
@@ -248,7 +248,7 @@ CREATE TABLE archive (
   ar_timestamp      TIMESTAMPTZ  NOT NULL,
   ar_minor_edit     SMALLINT     NOT NULL  DEFAULT 0,
   ar_flags          TEXT,
-  ar_rev_id         INTEGER,
+  ar_rev_id         INTEGER      NOT NULL,
   ar_text_id        INTEGER,
   ar_deleted        SMALLINT     NOT NULL  DEFAULT 0,
   ar_len            INTEGER          NULL,
@@ -370,13 +370,13 @@ CREATE INDEX langlinks_lang_title    ON langlinks (ll_lang,ll_title);
 
 CREATE TABLE site_stats (
   ss_row_id         INTEGER  NOT NULL  PRIMARY KEY DEFAULT 0,
-  ss_total_edits    INTEGER            DEFAULT 0,
-  ss_good_articles  INTEGER            DEFAULT 0,
-  ss_total_pages    INTEGER            DEFAULT -1,
-  ss_users          INTEGER            DEFAULT -1,
-  ss_active_users   INTEGER            DEFAULT -1,
-  ss_admins         INTEGER            DEFAULT -1,
-  ss_images         INTEGER            DEFAULT 0
+  ss_total_edits    INTEGER            DEFAULT NULL,
+  ss_good_articles  INTEGER            DEFAULT NULL,
+  ss_total_pages    INTEGER            DEFAULT NULL,
+  ss_users          INTEGER            DEFAULT NULL,
+  ss_active_users   INTEGER            DEFAULT NULL,
+  ss_admins         INTEGER            DEFAULT NULL,
+  ss_images         INTEGER            DEFAULT NULL
 );
 
 
@@ -421,6 +421,7 @@ CREATE TABLE image (
   img_major_mime   TEXT                DEFAULT 'unknown',
   img_minor_mime   TEXT                DEFAULT 'unknown',
   img_description  TEXT      NOT NULL  DEFAULT '',
+  img_description_id INTEGER NOT NULL  DEFAULT 0,
   img_user         INTEGER   NOT NULL  DEFAULT 0 REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
   img_user_text    TEXT      NOT NULL  DEFAULT '',
   img_actor        INTEGER   NOT NULL  DEFAULT 0,
index c91d4ed..4458901 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @ingroup Maintenance
  * @author Rob Church <robchur@gmail.com>
- * @licence GNU General Public Licence 2.0 or later
+ * @license GNU General Public Licence 2.0 or later
  */
 
 use Wikimedia\Rdbms\IDatabase;
index 502b01d..673d507 100755 (executable)
@@ -84,6 +84,12 @@ cp ./node_modules/oojs-ui/src/themes/apex/*.json "$REPO_DIR/$TARGET_DIR/themes/a
 # WikimediaUI LESS variables for sharing
 cp ./node_modules/oojs-ui/dist/wikimedia-ui-base.less "$REPO_DIR/$TARGET_DIR"
 
+# Misc stuff
+cp ./node_modules/oojs-ui/dist/AUTHORS.txt "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/History.md "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/LICENSE-MIT "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/README.md "$REPO_DIR/$TARGET_DIR"
+
 # Clean up temporary area
 rm -rf "$NPM_DIR"
 
index bf15a04..19c4d3a 100644 (file)
@@ -134,6 +134,7 @@ CREATE TABLE /*_*/image_tmp (
   img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
   img_minor_mime varbinary(100) NOT NULL default "unknown",
   img_description varbinary(767) NOT NULL default '',
+  img_description_id bigint unsigned NOT NULL DEFAULT 0,
   img_user int unsigned NOT NULL default 0,
   img_user_text varchar(255) binary NOT NULL DEFAULT '',
   img_actor bigint unsigned NOT NULL DEFAULT 0,
@@ -143,12 +144,12 @@ CREATE TABLE /*_*/image_tmp (
 
 INSERT OR IGNORE INTO /*_*/image_tmp (
        img_name, img_size, img_width, img_height, img_metadata, img_bits,
-       img_media_type, img_major_mime, img_minor_mime, img_description, img_user,
-       img_user_text, img_timestamp, img_sha1)
+       img_media_type, img_major_mime, img_minor_mime, img_description,
+       img_description_id, img_user, img_user_text, img_timestamp, img_sha1)
   SELECT
        img_name, img_size, img_width, img_height, img_metadata, img_bits,
-       img_media_type, img_major_mime, img_minor_mime, img_description, img_user,
-       img_user_text, img_timestamp, img_sha1
+       img_media_type, img_major_mime, img_minor_mime, img_description,
+       img_description_id, img_user, img_user_text, img_timestamp, img_sha1
   FROM /*_*/image;
 
 DROP TABLE /*_*/image;
diff --git a/maintenance/sqlite/archives/patch-ar_rev_id-not-null.sql b/maintenance/sqlite/archives/patch-ar_rev_id-not-null.sql
new file mode 100644 (file)
index 0000000..3df205f
--- /dev/null
@@ -0,0 +1,49 @@
+-- T182678: Make ar_rev_id not nullable
+
+BEGIN;
+
+DROP TABLE IF EXISTS /*_*/archive_tmp;
+CREATE TABLE /*_*/archive_tmp (
+  ar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+  ar_namespace int NOT NULL default 0,
+  ar_title varchar(255) binary NOT NULL default '',
+  ar_text mediumblob NOT NULL,
+  ar_comment varbinary(767) NOT NULL default '',
+  ar_comment_id bigint unsigned NOT NULL DEFAULT 0,
+  ar_user int unsigned NOT NULL default 0,
+  ar_user_text varchar(255) binary NOT NULL DEFAULT '',
+  ar_actor bigint unsigned NOT NULL DEFAULT 0,
+  ar_timestamp binary(14) NOT NULL default '',
+  ar_minor_edit tinyint NOT NULL default 0,
+  ar_flags tinyblob NOT NULL,
+  ar_rev_id int unsigned NOT NULL,
+  ar_text_id int unsigned,
+  ar_deleted tinyint unsigned NOT NULL default 0,
+  ar_len int unsigned,
+  ar_page_id int unsigned,
+  ar_parent_id int unsigned default NULL,
+  ar_sha1 varbinary(32) NOT NULL default '',
+  ar_content_model varbinary(32) DEFAULT NULL,
+  ar_content_format varbinary(64) DEFAULT NULL
+) /*$wgDBTableOptions*/;
+
+INSERT OR IGNORE INTO /*_*/archive_tmp (
+       ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_comment_id, ar_user,
+       ar_user_text, ar_actor, ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id,
+       ar_text_id, ar_deleted, ar_len, ar_page_id, ar_parent_id, ar_sha1,
+       ar_content_model, ar_content_format)
+  SELECT
+       ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_comment_id, ar_user,
+       ar_user_text, ar_actor, ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id,
+       ar_text_id, ar_deleted, ar_len, ar_page_id, ar_parent_id, ar_sha1,
+       ar_content_model, ar_content_format
+  FROM /*_*/archive;
+
+DROP TABLE /*_*/archive;
+ALTER TABLE /*_*/archive_tmp RENAME TO /*_*/archive;
+CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+CREATE INDEX /*i*/ar_actor_timestamp ON /*_*/archive (ar_actor,ar_timestamp);
+CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
+
+COMMIT;
diff --git a/maintenance/sqlite/archives/patch-image-img_description_id.sql b/maintenance/sqlite/archives/patch-image-img_description_id.sql
new file mode 100644 (file)
index 0000000..dd8959e
--- /dev/null
@@ -0,0 +1,47 @@
+--
+-- patch-image-img_description_id.sql
+--
+-- T188132. Add `img_description_id` to the `image` table.
+
+BEGIN;
+
+DROP TABLE IF EXISTS /*_*/image_tmp;
+CREATE TABLE /*_*/image_tmp (
+  img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
+  img_size int unsigned NOT NULL default 0,
+  img_width int NOT NULL default 0,
+  img_height int NOT NULL default 0,
+  img_metadata mediumblob NOT NULL,
+  img_bits int NOT NULL default 0,
+  img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D") default NULL,
+  img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
+  img_minor_mime varbinary(100) NOT NULL default "unknown",
+  img_description varbinary(767) NOT NULL default '',
+  img_description_id bigint unsigned NOT NULL DEFAULT 0,
+  img_user int unsigned NOT NULL default 0,
+  img_user_text varchar(255) binary NOT NULL default '',
+  img_timestamp varbinary(14) NOT NULL default '',
+  img_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+
+INSERT OR IGNORE INTO /*_*/image_tmp (
+       img_name, img_size, img_width, img_height, img_metadata, img_bits,
+       img_media_type, img_major_mime, img_minor_mime, img_description, img_user,
+       img_user_text, img_timestamp, img_sha1)
+  SELECT
+       img_name, img_size, img_width, img_height, img_metadata, img_bits,
+       img_media_type, img_major_mime, img_minor_mime, img_description, img_user,
+       img_user_text, img_timestamp, img_sha1
+  FROM /*_*/image;
+
+DROP TABLE /*_*/image;
+ALTER TABLE /*_*/image_tmp RENAME TO /*_*/image;
+CREATE INDEX /*i*/img_user_timestamp ON /*_*/image (img_user,img_timestamp);
+CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
+CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
+CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10));
+CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime);
+
+COMMIT;
diff --git a/maintenance/sqlite/archives/patch-site_stats-modify.sql b/maintenance/sqlite/archives/patch-site_stats-modify.sql
new file mode 100644 (file)
index 0000000..8d267a6
--- /dev/null
@@ -0,0 +1,35 @@
+DROP TABLE IF EXISTS /*_*/site_stats_tmp;
+
+-- Create the temporary table. The following part
+-- is copied & pasted from the changed tables.sql
+-- file besides having an other table name.
+CREATE TABLE /*_*/site_stats_tmp (
+  ss_row_id int unsigned NOT NULL PRIMARY KEY,
+  ss_total_edits bigint unsigned default NULL,
+  ss_good_articles bigint unsigned default NULL,
+  ss_total_pages bigint unsigned default NULL,
+  ss_users bigint unsigned default NULL,
+  ss_active_users bigint unsigned default NULL,
+  ss_images bigint unsigned default NULL
+) /*$wgDBTableOptions*/;
+
+-- Move the data from the old to the new table
+INSERT OR IGNORE INTO /*_*/site_stats_tmp (
+       ss_row_id,
+       ss_total_edits,
+       ss_good_articles,
+       ss_total_pages,
+       ss_active_users,
+       ss_images
+) SELECT
+       ss_row_id,
+       ss_total_edits,
+       ss_good_articles,
+       ss_total_pages,
+       ss_active_users,
+       ss_images
+FROM /*_*/site_stats;
+
+DROP TABLE /*_*/site_stats;
+
+ALTER TABLE /*_*/site_stats_tmp RENAME TO /*_*/site_stats;
index 90c559a..f601bfc 100644 (file)
@@ -365,6 +365,9 @@ CREATE TABLE /*_*/revision (
   -- It's possible for multiple revisions to use the same text,
   -- for instance revisions where only metadata is altered
   -- or a rollback to a previous version.
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = rev_id
+  -- exist, this field should be ignored (and may be 0) in favor of the
+  -- corresponding data from the slots and content tables
   rev_text_id int unsigned NOT NULL default 0,
 
   -- Text comment summarizing the change. Deprecated in favor of
@@ -401,9 +404,14 @@ CREATE TABLE /*_*/revision (
   rev_sha1 varbinary(32) NOT NULL default '',
 
   -- content model, see CONTENT_MODEL_XXX constants
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = rev_id
+  -- exist, this field should be ignored (and may be NULL) in favor of the
+  -- corresponding data from the slots and content tables
   rev_content_model varbinary(32) DEFAULT NULL,
 
   -- content format, see CONTENT_FORMAT_XXX constants
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = rev_id
+  -- exist, this field should be ignored (and may be NULL).
   rev_content_format varbinary(64) DEFAULT NULL
 
 ) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
@@ -572,23 +580,24 @@ CREATE INDEX /*i*/comment_hash ON /*_*/comment (comment_hash);
 
 
 --
--- Holding area for deleted articles, which may be viewed
--- or restored by admins through the Special:Undelete interface.
--- The fields generally correspond to the page, revision, and text
--- fields, with several caveats.
+-- Archive area for deleted pages and their revisions.
+-- These may be viewed (and restored) by admins through the Special:Undelete interface.
 --
 CREATE TABLE /*_*/archive (
   -- Primary key
   ar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+
+  -- Copied from page_namespace
   ar_namespace int NOT NULL default 0,
+  -- Copied from page_title
   ar_title varchar(255) binary NOT NULL default '',
 
-  -- Newly deleted pages will not store text in this table,
-  -- but will reference the separately existing text rows.
-  -- This field is retained for backwards compatibility,
-  -- so old archived pages will remain accessible after
-  -- upgrading from 1.4 to 1.5.
-  -- Text may be gzipped or otherwise funky.
+  -- Copied from text.old_text, for pages deleted before MediaWiki 1.5.
+  -- This row may contain the raw revision text, possibly compressed.
+  -- Newer MediaWiki versions use ar_text_id instead.
+  -- This field is retained for backwards compatibility, so that
+  -- old archived pages will remain accessible.
+  -- See migrateArchiveText.php for migrating values to text storage.
   ar_text mediumblob NOT NULL,
 
   -- Basic revision stuff...
@@ -600,52 +609,67 @@ CREATE TABLE /*_*/archive (
   ar_timestamp binary(14) NOT NULL default '',
   ar_minor_edit tinyint NOT NULL default 0,
 
-  -- See ar_text note.
+  -- Copied from text.old_flags, for pages deleted before MediaWiki 1.5.
+  -- Otherwise empty string.
+  -- See also note for ar_text.
   ar_flags tinyblob NOT NULL,
 
-  -- When revisions are deleted, their unique rev_id is stored
-  -- here so it can be retained after undeletion. This is necessary
-  -- to retain permalinks to given revisions after accidental delete
-  -- cycles or messy operations like history merges.
+  -- Copied from rev_id.
   --
-  -- Old entries from 1.4 will be NULL here, and a new rev_id will
-  -- be created on undeletion for those revisions.
-  ar_rev_id int unsigned,
-
-  -- For newly deleted revisions, this is the text.old_id key to the
-  -- actual stored text. To avoid breaking the block-compression scheme
-  -- and otherwise making storage changes harder, the actual text is
-  -- *not* deleted from the text table, merely hidden by removal of the
-  -- page and revision entries.
+  -- @since 1.5 Entries from 1.4 will be NULL here. When restoring
+  -- archive rows from before 1.5, a new rev_id is created.
+  ar_rev_id int unsigned NOT NULL,
+
+  -- Copied from rev_text_id, references text.old_id.
+  -- To avoid breaking the block-compression scheme and otherwise making
+  -- storage changes harder, the actual text is *not* deleted from the
+  -- text storage. Instead, it is merely hidden from public view, by removal
+  -- of the page and revision entries.
   --
-  -- Old entries deleted under 1.2-1.4 will have NULL here, and their
-  -- ar_text and ar_flags fields will be used to create a new text
-  -- row upon undeletion.
+  -- @since 1.5 Entries from 1.2-1.4 will have NULL here. When restoring
+  -- archive rows without this, ar_text and ar_flags are used instead.
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = ar_rev_id
+  -- exist, this field should be ignored (and may be NULL or 0) in favor of the
+  -- corresponding data from the slots and content tables
   ar_text_id int unsigned,
 
-  -- rev_deleted for archives
+  -- Copied from rev_deleted. Although this may be raised during deletion.
+  -- Users with the "suppressrevision" right may "archive" and "suppress"
+  -- content in a single action.
+  -- @since 1.10
   ar_deleted tinyint unsigned NOT NULL default 0,
 
-  -- Length of this revision in bytes
+  -- Copied from rev_len, length of this revision in bytes.
+  -- @since 1.10
   ar_len int unsigned,
 
-  -- Reference to page_id. Useful for sysadmin fixing of large pages
-  -- merged together in the archives, or for cleanly restoring a page
-  -- at its original ID number if possible.
+  -- Copied from page_id. Restoration will attempt to use this as page ID if
+  -- no current page with the same name exists. Otherwise, the revisions will
+  -- be restored under the current page. Can be used for manual undeletion by
+  -- developers if multiple pages by the same name were archived.
   --
-  -- Will be NULL for pages deleted prior to 1.11.
+  -- @since 1.11 Older entries will have NULL.
   ar_page_id int unsigned,
 
-  -- Original previous revision
+  -- Copied from rev_parent_id.
+  -- @since 1.13
   ar_parent_id int unsigned default NULL,
 
-  -- SHA-1 text content hash in base-36
+  -- Copied from rev_sha1, SHA-1 text content hash in base-36
+  -- @since 1.19
   ar_sha1 varbinary(32) NOT NULL default '',
 
-  -- content model, see CONTENT_MODEL_XXX constants
+  -- Copied from rev_content_model, see CONTENT_MODEL_XXX constants
+  -- @since 1.21
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = ar_rev_id
+  -- exist, this field should be ignored (and may be NULL) in favor of the
+  -- corresponding data from the slots and content tables
   ar_content_model varbinary(32) DEFAULT NULL,
 
-  -- content format, see CONTENT_FORMAT_XXX constants
+  -- Copied from rev_content_format, see CONTENT_FORMAT_XXX constants
+  -- @since 1.21
+  -- @deprecated since 1.31. If rows in the slots table with slot_revision_id = ar_rev_id
+  -- exist, this field should be ignored (and may be NULL).
   ar_content_format varbinary(64) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
@@ -667,7 +691,7 @@ CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
 --
 CREATE TABLE /*_*/slots (
 
-  -- reference to rev_id
+  -- reference to rev_id or ar_rev_id
   slot_revision_id bigint unsigned NOT NULL,
 
   -- reference to role_id
@@ -701,7 +725,9 @@ CREATE TABLE /*_*/content (
   -- Nominal hash of the content object (not necessarily of the serialized blob)
   content_sha1 varbinary(32) NOT NULL,
 
-  -- reference to model_id
+  -- reference to model_id. Note the content format isn't specified; it should
+  -- be assumed to be in the default format for the model unless auto-detected
+  -- otherwise.
   content_model smallint unsigned NOT NULL,
 
   -- URL-like address of the content blob
@@ -988,26 +1014,22 @@ CREATE TABLE /*_*/site_stats (
   ss_row_id int unsigned NOT NULL PRIMARY KEY,
 
   -- Total number of edits performed.
-  ss_total_edits bigint unsigned default 0,
+  ss_total_edits bigint unsigned default NULL,
 
-  -- An approximate count of pages matching the following criteria:
-  -- * in namespace 0
-  -- * not a redirect
-  -- * contains the text '[['
-  -- See Article::isCountable() in includes/Article.php
-  ss_good_articles bigint unsigned default 0,
+  -- See SiteStatsInit::articles().
+  ss_good_articles bigint unsigned default NULL,
 
-  -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster
-  ss_total_pages bigint default '-1',
+  -- Total pages, theoretically equal to SELECT COUNT(*) FROM page.
+  ss_total_pages bigint unsigned default NULL,
 
-  -- Number of users, theoretically equal to SELECT COUNT(*) FROM user;
-  ss_users bigint default '-1',
+  -- Number of users, theoretically equal to SELECT COUNT(*) FROM user.
+  ss_users bigint unsigned default NULL,
 
-  -- Number of users that still edit
-  ss_active_users bigint default '-1',
+  -- Number of users that still edit.
+  ss_active_users bigint unsigned default NULL,
 
-  -- Number of images, equivalent to SELECT COUNT(*) FROM image
-  ss_images int default 0
+  -- Number of images, equivalent to SELECT COUNT(*) FROM image.
+  ss_images bigint unsigned default NULL
 ) /*$wgDBTableOptions*/;
 
 --
@@ -1145,9 +1167,11 @@ CREATE TABLE /*_*/image (
 
   -- Description field as entered by the uploader.
   -- This is displayed in image upload history and logs.
-  -- Deprecated in favor of image_comment_temp.imgcomment_description_id.
+  -- Deprecated in favor of img_description_id.
   img_description varbinary(767) NOT NULL default '',
 
+  img_description_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that img_description should be used)
+
   -- user_id and user_name of uploader.
   -- Deprecated in favor of img_actor.
   img_user int unsigned NOT NULL default 0,
index 26a6086..e5e28c9 100644 (file)
@@ -8,6 +8,7 @@
     "selenium": "killall -0 chromedriver 2>/dev/null || chromedriver --url-base=/wd/hub --port=4444 & grunt webdriver:test; killall chromedriver"
   },
   "devDependencies": {
+    "bluebird": "3.5.1",
     "deepmerge": "1.3.2",
     "eslint": "4.9.0",
     "eslint-config-wikimedia": "0.5.0",
diff --git a/resources/lib/oojs-ui/AUTHORS.txt b/resources/lib/oojs-ui/AUTHORS.txt
new file mode 100644 (file)
index 0000000..52b4888
--- /dev/null
@@ -0,0 +1,65 @@
+Principal Authors (major contributors, alphabetically)
+
+Bartosz Dziewoński <matma.rex@gmail.com>
+Ed Sanders <esanders@wikimedia.org>
+James D. Forrester <jforrester@wikimedia.org>
+Kirsten Menger-Anderson <kmenger@wikimedia.org>
+Kunal Mehta <legoktm@gmail.com>
+Moriel Schottlender <moriel@gmail.com>
+Prateek Saxena <prtksxna@gmail.com>
+Roan Kattouw <roan@wikimedia.org>
+Rob Moen <rmoen@wikimedia.org>
+Timo Tijhof <krinklemail@gmail.com>
+Trevor Parscal <trevor@wikimedia.org>
+Volker E. <volker.e@wikimedia.org>
+
+Patch Contributors (minor contributors, alphabetically)
+
+Alangi Derick <alangiderick@gmail.com>
+Alex Monk <krenair@wikimedia.org>
+Amir E. Aharoni <aaharoni@wikimedia.org>
+Amir Sarabadani <Ladsgroup@gmail.com>
+Andrew Garrett <agarrett@wikimedia.org>
+Andrew Green <andrew.green.df@gmail.com>
+Antoine Musso <hashar@free.fr>
+Brad Jorsch <bjorsch@wikimedia.org>
+Brion Vibber <brion@users.mediawiki.org>
+C. Scott Ananian <cscott@cscott.net>
+Chad Horohoe <chadh@wikimedia.org>
+codynguyen1116 <samanthanguyen1116@gmail.com>
+David Lynch <dlynch@wikimedia.org>
+Derk-Jan Hartman <hartman.wiki@gmail.com>
+eranroz <eranroz89@gmail.com>
+Erick Guan <fantasticfears@gmail.com>
+Erik Moeller <erik@wikimedia.org>
+Florian <florian.schmidt.stargatewissen@gmail.com>
+Geoffrey Mon <geofbot@gmail.com>
+Gilles Dubuc <gdubuc@wikimedia.org>
+Huji Lee <huji.huji@gmail.com>
+Inez Korczyński <inez@wikia-inc.com>
+IvanFon <ivanfonseca55@gmail.com>
+Jon Robson <jrobson@wikimedia.org>
+Juliusz Gonera <jgonera@wikimedia.org>
+Kartik Mistry <kartik.mistry@gmail.com>
+Kyle Florence <kflorence@wikia-inc.com>
+Leszek Manicki <leszek.manicki@wikimedia.de>
+Marc A. Pelletier <marc@uberbox.org>
+Mark Holmquist <mtraceur@member.fsf.org>
+Matthew Flaschen <mflaschen@wikimedia.org>
+May Tee-Galloway <mgalloway@wikimedia.org>
+Mr. Stradivarius <misterstrad@gmail.com>
+Niklas Laxström <nlaxstrom@wikimedia.org>
+Nirzar Pangarkar <nirzardp@gmail.com>
+Ori Livneh <ori@wikimedia.org>
+Paladox <thomasmulhall410@yahoo.com>
+Pau Giner <pau.giner@gmail.com>
+Ricordisamoa <ricordisamoa@openmailbox.org>
+rillke <rillke@wikipedia.de>
+Ryan Kaldari <rkaldari@wikimedia.org>
+Sam Reed <reedy@wikimedia.org>
+Stephane Bisson <sbisson@wikimedia.org>
+Sucheta Ghoshal <sghoshal@wikimedia.org>
+Thalia Chan <thalia.e.chan@googlemail.com>
+Victor Barbu <victorbarbu08@gmail.com>
+Wei-Ko Kao <othree@gmail.com>
+Željko Filipin <zeljko.filipin@gmail.com>
diff --git a/resources/lib/oojs-ui/History.md b/resources/lib/oojs-ui/History.md
new file mode 100644 (file)
index 0000000..44bb274
--- /dev/null
@@ -0,0 +1,3185 @@
+# OOUI Release History
+## v0.26.1 / 2018-03-23
+### Deprecations
+* [DEPRECATING CHANGE] icons: Flag 'comment' as to be removed (James D. Forrester)
+* [DEPRECATING CHANGE] icons: Rename 'clip'/'unClip' to 'bookmark'/'bookmarkOutline' (Volker E.)
+
+### Styles
+* ButtonElement (framed): Remove `padding` on icon + indicator variant (Volker E.)
+* WikimediaUI theme: Reduce distance of Tools in BarToolGroup (Volker E.)
+* WikimediaUI theme: Reduce necessary widths for narrow toolbar elements (Volker E.)
+* WikimediaUI icons: Amend 'help' icon to address feedback (Volker E.)
+* WikimediaUI icons: Fix 'speechBubbles' icons (Volker E.)
+* WikimediaUI icons: Fix 'underline-a' icon to be an 'a', not a 'u' (Ed Sanders)
+* WikimediaUI icons: Slightly adapted size of 'clip'/'unClip' for algnment to other icons (Volker E.)
+* WikimediaUI icons: Swap 'advanced' and 'settings' icons (Volker E.)
+
+### Code
+* WikimediaUI theme: Remove unused RTL variants of alignLeft/Right icons (Ed Sanders)
+* WikimediaUI theme: Fix/remove unused icon files (Bartosz Dziewoński)
+* demos: Add alert popout to toolbars demos (Volker E.)
+* demos: Add specialCharacter terminal tool to toolbars demos (James D. Forrester)
+* docs: Add Demos to JSDuck navigation menu (Timo Tijhof)
+* build: Replace grunt-image with grunt-imagemin (James D. Forrester)
+* icons: Re-crush SVGs (James D. Forrester)
+
+## v0.26.0 / 2018-03-20
+### Breaking changes
+* [BREAKING CHANGE] WikimediaUI: Unify available variants across icon packs (Ed Sanders)
+* [BREAKING CHANGE] icons: Remove 'alignCentre', renamed in v0.24.2 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'arrowLast', deprecated since v0.25.0 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'bellOn', deprecated in v0.25.0 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'quotesAdd', deprecated in v0.24.4 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'redirect', renamed in v0.24.4 (James D. Forrester)
+* [BREAKING CHANGE] indicators: Remove 'next' and 'previous', deprecated in v0.25.0 (James D. Forrester)
+
+### Features
+* FieldLayout: Use better icons for warning/error messages (Bartosz Dziewoński)
+* MenuTagMultiselectWidget: Check for empty inputValue in addTagFromInput (Prateek Saxena)
+* TagMultiselectWidget: Handle disabled items (Moriel Schottlender)
+
+### Styles
+* WikimediaUI theme: Add additional 'interactions' & 'media' pack icons (Volker E.)
+* WikimediaUI theme: Align refined WikimediaUI icons in size and position (Volker E.)
+* WikimediaUI theme: Apply `translateZ` hack to full canvas icons (Volker E.)
+* WikimediaUI theme: Fix regression on accelerator key alignment (Volker E.)
+* WikimediaUI theme: Fix toolbar buttonGroup (Ed Sanders)
+* WikimediaUI theme: Harmonize `padding` on FieldLayout messages (Volker E.)
+* WikimediaUI theme: Unify and refine WikimediaUI icons (Volker E.)
+* WikimediaUI theme: Use `14px` base font size & amend positioning/sizing (Volker E.)
+* Apex theme: Fix toolbar buttonGroup (Ed Sanders)
+* Apex theme: Make Apex also use 20px canvas icons (Bartosz Dziewoński)
+
+### Code
+* Use theme rules to define which tools should get blue icons, not flags (Ed Sanders)
+* build: Make the copy task for the WikimediaUI less vars less confusing (James D. Forrester)
+* build: Stop using 'grunt-image' for optimising PNGs, at least for now (James D. Forrester)
+* build: Switch SVG optimization to 'grunt-svgmin' (Volker E.)
+* build: Temporarily disable running unit tests in Firefox due to timeouts (James D. Forrester)
+* build: Update devDependencies to latest (James D. Forrester)
+* build: Updating jakub-onderka/php-parallel-lint to 1.0.0 (libraryupgrader)
+* build: Acknowledge in package.json that grunt-exec 3.0.0 exists, but we don't want it (Bartosz Dziewoński)
+* demos: Include editor switch menu in toolbars menu (Volker E.)
+* demos: Increase base `font-size` to `14px` (Volker E.)
+* demos: Re-enable bigger base size on mobile breakpoint (Volker E.)
+* demos: Use `0.8em` body font size for Apex (Bartosz Dziewoński)
+* dist: Distribute History.md so people can see what's changed (James D. Forrester)
+
+
+## v0.25.3 / 2018-03-06
+### Features
+* DropdownInputWidget: Extract menu item creation (Gabriel Birke)
+* MenuTagMultiselectWidget: Highlight first item when filtering (Moriel Schottlender)
+* demos: Use individual oojs-ui-* JS files for sourcemap support (Moriel Schottlender)
+
+### Styles
+* WikimediaUI theme: Align action toolbar primary button focus state (Volker E.)
+* WikimediaUI theme: Align toolbar items' focus to widgets elsewhere (Volker E.)
+
+### Code
+* Imply `inline-block` on toolbar item labels (Volker E.)
+* CheckboxMultiselectInputWidget: Fix handling of 'name' config option in JS (Bartosz Dziewoński)
+* TagMultiselectWidget: Only apply `onMouseDown` if not in input (Moriel Schottlender)
+* Gruntfile: Remove reference to long-absent at-ease PHP library (James D. Forrester)
+* build: Add jakub-onderka/php-console-highlighter (Umherirrender)
+* build: Adding MinusX (Kunal Mehta)
+* build: Updating mediawiki/mediawiki-codesniffer to 16.0.1 (libraryupgrader)
+* build: Updating phpunit/phpunit to 4.8.36 || ^6.5 (libraryupgrader)
+* build: pass --ansi --no-progress to composer (Antoine Musso)
+* demos: Add monospace hack for `code` element (Volker E.)
+* demos: Only claim ARIA `main` role on the first toolbar demo (Volker E.)
+* demos: Replace “Save” by “Publish changes” (Volker E.)
+
+
+## v0.25.2 / 2018-02-06
+### Deprecations
+* [DEPRECATING CHANGE] icons: Flag indicator 'alert' as to be removed (Volker E.)
+
+### Features
+* Element: Fix infusion edge case (Bartosz Dziewoński)
+* InputWidget and subclasses: Remember original value when creating the widget (Bartosz Dziewoński)
+* MultilineTextInputWidget: Emit 'enter' for Ctrl+Enter (Ed Sanders)
+* MenuTagMultiselectWidget: Erase the input when a menu option is chosen (Prateek Saxena)
+* OptionWidget: Option is still selectable/highlightable/pressable if its parent is disabled (Bartosz Dziewoński)
+* RadioSelectInputWidget: Prevent exceptions when trying to set unavailable options (Bartosz Dziewoński)
+
+### Styles
+* FieldLayout: Fix help icon negative margin in Apex (Ed Sanders)
+* LabelElement: Switch `box-sizing` to `border-box` (srishakatux)
+* ListToolGroup: Correctly point the collapse/expand icon on bottom toolbars (Volker E.)
+* RadioSelectInputWidget, CheckboxMultiselectInputWidget: Fix spacing between options in PHP (Apex theme) (Bartosz Dziewoński)
+
+### Code
+* Avoid having to call `.setValue()` in some widgets' constructors multiple times (Bartosz Dziewoński)
+* CheckboxMultiselectInputWidget: Turn inline event handler into a method (Bartosz Dziewoński)
+* DraggableElement: Replace 'OOjs-UI' with 'OOUI' for code hygiene (Volker E.)
+* TextInputWidget: Move previously forgotten methods to Multiline (Bartosz Dziewoński)
+* Follow-up b28e99712: Remove `mediawiki/at-ease` dependancy (Sam Reed)
+* Reduce code duplication between `#setValue` and `#setOptions` (Bartosz Dziewoński)
+* Remove duplicate documentation between TextInputWidget and Multiline (Bartosz Dziewoński)
+* TextInputWidget: Document that 'maxLength' counts UTF-16 code units (Bartosz Dziewoński)
+* Toolbars: Replace `$.width` with `clientWidth`/`offsetWidth` (Ed Sanders)
+* Use child selectors for menuLayout (Ed Sanders)
+* build: Don't lint a generated JSON file for validity before it's rebuilt (James D. Forrester)
+* build: Update Rubocop config for deprecations (Bartosz Dziewoński)
+* demos, docs: Replace 'alert' indicator, as it's deprecated (Volker E.)
+* demos: Bring “Word processor toolbar” demos closer to VE (Volker E.)
+* demos: Provide more space at bottom of page (Volker E.)
+* tests: Do not use obviously fake data when testing infusion (Bartosz Dziewoński)
+* testsuitegenerator: Test some 'value' parameters that match 'options' parameters (Bartosz Dziewoński)
+
+
+## v0.25.1 / 2018-01-16
+### Code
+* Allow other stuff to handle the event when we call `simulateLabelClick()` (Bartosz Dziewoński)
+* Follow-Up I0f1d9c1f: Update usages of `getSelectedItem` -> `findSelectedItem` (Ed Sanders)
+* PanelLayout: Remove buggy `translateZ` performance hack (Volker E.)
+* PopupToolGroup: Revert "Fix popup direction changing…" (Bartosz Dziewoński)
+* Rename prefixes of unique IDs to not mention "OOjs" (Bartosz Dziewoński)
+* build, demos, docs: Use “OOUI” as unified name (Volker E.)
+* demos: Use MultilineTextInputWidget in PHP demos (Ed Sanders)
+* docs: Clarify `required` true handling with `indicator: 'required'` (Volker E.)
+* docs: Use “OOUI” as unified name in code comments (Volker E.)
+
+
+## v0.25.0 / 2018-01-09
+### Breaking changes
+* [BREAKING CHANGE] Drop the `constructive` flag entirely (James D. Forrester)
+* [BREAKING CHANGE] Remove `BookletLayout#getClosestPage` (James D. Forrester)
+* [BREAKING CHANGE] SelectWidget: Remove `getFirstSelectableItem` (Prateek Saxena)
+* [BREAKING CHANGE] SelectWidget: Remove `getHighlightedItem` (Prateek Saxena)
+* [BREAKING CHANGE] SelectWidget: Remove `getRelativeSelectableItem` (Prateek Saxena)
+* [BREAKING CHANGE] icons: Drop 'watchlist', deprecated in v0.23.1 (James D. Forrester)
+
+### Deprecations
+* [DEPRECATING CHANGE] GroupElement: Rename getItem(s)FromData to findItem(s)FromData (Prateek Saxena)
+* [DEPRECATING CHANGE] MultiSelectWidget: Rename getters (Prateek Saxena)
+* [DEPRECATING CHANGE] SelectWidget: Rename `getSelectedItem` to `findSelectedItem` (Prateek Saxena)
+* [DEPRECATING CHANGE] icons: Flag indicators 'previous' & 'next' as to be removed (Volker E.)
+* [DEPRECATING CHANGE] icons: Rename 'arrowLast' to 'arrowPrevious' (James D. Forrester)
+
+### Features
+* MenuTagMultiselectWidget: Erase the input when tag is selected if filtering (Moriel Schottlender)
+
+### Styles
+* Add `margin-bottom` for widgets which are part of OOUI HorizontalLayout (Phantom42)
+* FieldLayout: Improve alignment of multiline labels with 'help' button (Bartosz Dziewoński)
+* WikimediaUI theme: Align 'transparency' icon to WikimedaUI color palette (Volker E.)
+* WikimediaUI theme: Remove obsolete global flag for 'layout' icon pack (Volker E.)
+* WikimediaUI theme: Remove obsolete icon flags (Volker E.)
+* Apex theme: Align readonly TextInputWidget across themes (Volker E.)
+* Apex theme: Apply `opacity` button transition and ensure Chrome support (Volker E.)
+* Apex theme: Remove unused, obsolete 'logo-wikimediaDiscovery' icon (Volker E.)
+* icons: Remove obsolete 'bookmark' icon remainders (Volker E.)
+* icons: Remove obsolete 'watchlist' icon remainders (Volker E.)
+* icons: Shorten 'accessibility' pack invert hex color (Volker E.)
+
+### Code
+* Clarify `.oo-ui-force-gpu-composite-layer()` mixin comment (Volker E.)
+* Fix blurry text on PanelLayout promoted to GPU in Safari (Volker E.)
+* Fix popup direction changing when the "anchor" is partially offscreen (Bartosz Dziewoński)
+* MenuTagMultiselectWidget: Don't use overlay for `$autoCloseIgnore` (Moriel Schottlender)
+* MultilineTextInputWidget: Correct documentation for `config.maxRows` (Roan Kattouw)
+* PHP TextInputWidget: Remove remaining type 'search' specific code (Volker E.)
+* Use findItem(s)FromData instead of getItem(s)FromData (Prateek Saxena)
+* demos: Override OO.ui.getViewportSpacing in infused PHP demo too (Bartosz Dziewoński)
+* demos: Promote icons page IndicatorWidget to GPU layer (Volker E.)
+* docs: Bump copyright year (James D. Forrester)
+* docs: TagMultiselectWidget: Remove wrong link to MediaWiki documentation (Prateek Saxena)
+* build: Update .gitattributes for .phpcs.xml file move (Kunal Mehta)
+* build: Add rake to Gemfile (Antoine Musso)
+* build: Don't include Gemfile* in composer zipballs (Kunal Mehta)
+* build: Update RuboCop Ruby gem (Željko Filipin)
+* build: Updating mediawiki/mediawiki-codesniffer to 15.0.0 (libraryupgrader)
+* build: Use SVGO option of 'grunt-image' for distribution (Volker E.)
+
+
+## v0.24.4 / 2017-12-20 special release
+### Deprecations
+* [DEPRECATING CHANGE] icons: Flag unused 'bellOn' icon as to be removed (Volker E.)
+* [DEPRECATING CHANGE] icons: Flag unused 'quotesAdd' & 'redirect' as to be removed (Volker E.)
+
+### Features
+* Introduce `OO.ui.getDefaultOverlay` (Bartosz Dziewoński)
+* Put menus/popups of infused PHP widgets into the default overlay (Bartosz Dziewoński)
+
+### Styles
+* icons: Add 'lightbulb' icon (Prateek Saxena)
+* icons: Add 'stop' icon to Apex theme (Volker E.)
+
+### Code
+* ClippableElement: Fix JS error when Floatable is mixed in but disabled (Roan Kattouw)
+* DropdownWidget: Remove stray use of `this.$()` (Bartosz Dziewoński)
+
+
+## v0.24.3 / 2017-11-28
+### Features
+* Allow adding virtual viewport spacing (Bartosz Dziewoński)
+* ClippableElement: Allow clipping with top or left edge (Bartosz Dziewoński)
+* DropdownInputWidget: Generate a hidden `<select>` in JS (Bartosz Dziewoński)
+* FieldsetLayout: Hide header when there is no icon or label (Bartosz Dziewoński)
+* MenuSelectWidget, PopupWidget: Automatically change popup direction if there is no space (Bartosz Dziewoński)
+* PopupToolGroup: Set clipping edges to fix clipping edge (heh) cases (Bartosz Dziewoński)
+* TextInputWidget: support spellcheck attribute (David Lynch)
+
+### Styles
+* themes: Fix PHP ComboboxInputWidget indicator position (Volker E.)
+* WikimediaUI theme: Restore `:hover:focus` border color on TextInputWidgets (Volker E.)
+* oo-ui-background-image: Drop `-o-linear-gradient` fallback (James D. Forrester)
+* oo-ui-background-image: Drop `-webkit-linear-gradient` fallback (James D. Forrester)
+
+### Code
+* PHP DropdownInputWidget: Workaround for Firefox 57 ignoring attr selector with whitespace (Volker E.)
+* DraggableGroupElement: Don't try to access non-existent property (Bartosz Dziewoński)
+* DropdownInputWidget: Remove duplicate TitledElement mixin (Bartosz Dziewoński)
+* README: Add "Community" section (Prateek Saxena)
+* README: Re-arrange intro section (Prateek Saxena)
+* build: Bump wikimedia-ui-base (Volker E.)
+* git.wikimedia.org -> phab (Zach)
+
+
+## v0.24.2 / 2017-11-07
+### Deprecations
+* [DEPRECATING CHANGE] Use en-US spelling for icon names for consistency (Ed Sanders)
+
+### Code
+* README: Consistently refer to OOUI as library (Volker E.)
+* README: Fix Doxygen rendering (Volker E.)
+* README: Simplify “Quick start” and “Contributing” section (Volker E.)
+* demos: Correct and simplify SimpleWidget styles (Bartosz Dziewoński)
+* docs: onMenuToggle: `isVisible` is the state of the menu (Prateek Saxena)
+
+
+## v0.24.1 / 2017-10-31
+### Features
+* DropdownWidget: Allow pressing Space to close the widget, as well as open (Bartosz Dziewoński)
+
+### Styles
+* WikimediaUI theme: Visually improve MenuSectionOptionWidget MenuOptions (Volker E.)
+
+### Code
+* ComboBoxInputWidget: Add `.oo-ui-comboBoxInputWidget-open` class to widget (Volker E.)
+* Generate clover.xml with code coverage results (Kunal Mehta)
+* WikimediaUI theme: Use child selectors for styling toolbar action buttons (Bartosz Dziewoński)
+* README: Simplify and move “Versioning” section (Volker E.)
+* README: Simplify “Contributing” section slightly and add LESS lint hint (Volker E.)
+* build: Bump stylelint devDependencies (James D. Forrester)
+* build: Bump various devDependencies to latest (James D. Forrester)
+* build: Downgrade 'grunt-exec' to 1.0.1 (again) (Bartosz Dziewoński)
+* build: Update grunt-image to version 4.0.0 (Ed Sanders)
+* build: Update mediawiki/mediawiki-codesniffer to 14.1.0 (libraryupgrader)
+* icons: Unify SVG markup (Volker E.)
+
+
+## v0.24.0 / 2017-10-17
+### Breaking changes
+* [BREAKING CHANGE] Drop 'MediaWiki' backwards-compatibility theme (James D. Forrester)
+* [BREAKING CHANGE] icons: Drop 'stripeSideMenu', renamed in v0.22.2 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'eye'/'eyeClosed' icons, deprecated in v0.23.0 (Volker E.)
+* [BREAKING CHANGE] icons: Remove 'signature' icon, deprecated in v0.23.0 (Volker E.)
+* [BREAKING CHANGE] icons: Remove 'sun', deprecated in v0.23.0 (James D. Forrester)
+
+### Styles
+* themes: Unify icon/indicator visibility (Volker E.)
+* WikimediaUI theme: Ensure hover feedback on TextInputWidget & descendants (Volker E.)
+
+### Code
+* Fix `.oo-ui-selectable()` mixin to actually undo `.oo-ui-unselectable()` (Bartosz Dziewoński)
+* WikimediaUI theme: Fix selector in PopupWidget styles (Bartosz Dziewoński)
+
+
+## v0.23.5 / 2017-10-12
+### Code
+* PHP MultilineTextInputWidget, SearchInputWidget: Remove duplicate `use` statements (Bartosz Dziewoński)
+* PHP Theme: Fix check for IconElement/IndicatorElement for inherited traits (Bartosz Dziewoński)
+
+
+## v0.23.4 / 2017-10-11
+### Styles
+* IndexLayout: Handle long lists of tabs (Bartosz Dziewoński)
+* icons: Provide a 'reload' icon in the 'interactions' pack (Ed Sanders)
+* Apex theme: Fix PopupToolGroup active box size (Volker E.)
+* Apex theme: Fix SelectFileWidget (no browser support)‎ `padding` (Volker E.)
+* Generalize icon and indicator positioning & visibility (Volker E.)
+* WikimediaUI theme: Reduce Checkbox*- & RadioSelectInputWidget vertical space (Volker E.)
+* WikimediaUI theme: Reduce FieldLayout `margin-top` slightly (Volker E.)
+* WikimediaUI theme: Streamlining icon/indicator visibility (Volker E.)
+
+### Code
+* Only store initialConfig in demo mode (Ed Sanders)
+* SearchInputWidget: Prevent extra `oo-ui-textInputWidget-type-text` class (Bartosz Dziewoński)
+* TextInputWidget: Use child selector for icons/indicators/labels (Ed Sanders)
+* Do not call `.offset()` on `$( 'html' )` (Bartosz Dziewoński)
+* PHP: Implement MultilineTextInputWidget, deprecate multiline option (Prateek Saxena)
+* PHP: Implement SearchInputWidget, deprecate search option (Bartosz Dziewoński)
+* build: Downgrade 'grunt-exec' to 1.0.1 (Bartosz Dziewoński)
+* demos: Adding missing `:hover` (Volker E.)
+
+
+## v0.23.3 / 2017-10-03
+### Styles
+* PopupToolGroup: Move accelerator keys `padding` to themes (Volker E.)
+* WikimediaUI theme: Align PopupToolGroup header styles (Volker E.)
+* WikimediaUI theme: Fix border on narrow bottom toolbars (Volker E.)
+* WikimediaUI theme: Fix flagged elements' icon `opacity` (Volker E.)
+* WikimediaUI theme: Improve PopupToolGroup's indicator vertical alignment (Volker E.)
+* WikimediaUI theme: Make toolbar active element highlights visually equal (Volker E.)
+* WikimediaUI theme: Remove `box-shadow` not in design (Volker E.)
+* WikimediaUI theme: Replace BookletLayout menu `border-color` (Volker E.)
+* WikimediaUI theme: Unify positioning and sizing of tools, toolgroups and menus (Volker E.)
+* WindowManager: Remove `overflow: hidden` to enhance styling flexibility (Volker E.)
+
+### Code
+* Follow-up I576f3175: highlightQuery: Handle case when query is not found (Ed Sanders)
+* IndexLayout, BookletLayout: Don't scroll panels if not scrollable (Bartosz Dziewoński)
+* LabelElement: Add tests for setHighlightedQuery (Ed Sanders)
+* SelectWidget: Allow focussing things inside OptionWidget labels (Bartosz Dziewoński)
+* WikimediaUI theme: Simplify action toolbar buttons selectors (Volker E.)
+* demos: Remove unnecessary button demo widgets (Volker E.)
+
+
+## v0.23.2 / 2017-09-26
+### Deprecations
+* [DEPRECATING CHANGE]: Apex theme: Begin killing `constructive` flag (James D. Forrester)
+
+### Features
+* LabelElement#highlightQuery: Support locale comparison (Ed Sanders)
+* MenuLayout, BookletLayout, IndexLayout: Support `expanded: false` (Bartosz Dziewoński)
+* WindowManager: Set `aria-hidden` by default and change toggleAriaIsolation behavior (Prateek Saxena)
+
+### Code
+* MenuLayout: Rewrite support for `expanded: false` (Bartosz Dziewoński)
+* TextInputWidget: Reduce CSS output by enhancing unselectable behaviour (Volker E.)
+* themes: Align DropdownWidget `&-handle` selectors for code hygiene (Volker E.)
+* Apex theme: Simplify Radio- & Checkbox*optionWidget label rules (Volker E.)
+* Remove duplicated `outline` property (Volker E.)
+* Remove LESS vars covered by WikimediaUI Base (Volker E.)
+* demos: Expand long dialog title to actually test things (James D. Forrester)
+* demos: Restrict `opacity` to non-flagged icons only (Volker E.)
+
+
+## v0.23.1 / 2017-09-19
+### Deprecations
+* [DEPRECATING CHANGE] SelectWidget: Rename `getFirstSelectableItem` to `findFirstSelectableItem` (Prateek Saxena)
+* [DEPRECATING CHANGE] SelectWidget: Rename `getHighlightedItem` to `findHighlightedItem` (Prateek Saxena)
+* [DEPRECATING CHANGE] SelectWidget: Rename `getRelativeSelectableItem` to `findRelativeSelectableItem` (Prateek Saxena)
+* [DEPRECATING CHANGE] icons: Flag unused 'watchlist' icon as to be removed (Volker E.)
+
+### Styles
+* RadioOptionWidget, CheckboxMultioptionWidget: Support very long labels (Bartosz Dziewoński)
+* WikimediaUI theme: Harmonize toolbar icon/indicator opacity (Volker E.)
+* WikimediaUI theme: Improve ListToolGroup's color and opacity handling (Volker E.)
+* WikimediaUI theme: Simplify disabled tool opacity rules (Volker E.)
+
+### Code
+* BookletLayout#getClosestPage: Fix version number of deprecation (Prateek Saxena)
+* HtmlSnippet: Throw exception if given non-string content (Bartosz Dziewoński)
+* Use `findFirstSelectableItem` instead of `getFirstSelectableItem` (Prateek Saxena)
+* Use `findHighlightedItem` instead of `getHighlightedItem` (Prateek Saxena)
+* Use `findRelativeSelectableItem` instead of `getRelativeSelectableItem` (Prateek Saxena)
+* WikimediaUI theme: Concatenate constructive & progressive selectors (Volker E.)
+* WikimediaUI theme: Remove unnecessary properties (Volker E.)
+* demos: Add examples of FieldLayout with very long labels (Bartosz Dziewoński)
+* demos: Avoid menu's `box-shadow` from lurkin into toolbar (Volker E.)
+
+
+## v0.23.0 / 2017-09-05
+### Breaking changes
+* [BREAKING CHANGE] Remove CardLayout and references in IndexLayout (Volker E.)
+* [BREAKING CHANGE] Remove FloatingMenuSelectWidget (Volker E.)
+* [BREAKING CHANGE] Remove back-compat `OO.ui` prefix assumption in infusion code (Prateek Saxena)
+* [BREAKING CHANGE] icons: Remove 'caret' icons, deprecated in v0.21.3 (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove 'wikitrail' icon, renamed in v0.20.1 (James D. Forrester)
+
+### Deprecations
+* [DEPRECATING CHANGE] BookletLayout: Rename `getClosestPage()` to `findClosestPage()` (Prateek Saxena)
+* [DEPRECATING CHANGE] icons: Flag unused 'sun' icon as to be removed (James D. Forrester)
+* [DEPRECATING CHANGE] icons: Move 'eye'/'eyeClosed' to 'accessibility' (Volker E.)
+* [DEPRECATING CHANGE] icons: Move 'signature' to 'editing-advanced' (Volker E.)
+
+### Features
+* Element: Improve error message when the widget being infused is missing (Bartosz Dziewoński)
+
+### Styles
+* Apex theme: Only apply `margin` to label if visible (Ed Sanders)
+* WikimediaUI theme: Fix frameless indicator combination buttons' appearance (Volker E.)
+* ButtonInputWidget: Fix Safari-specific intrinsic `margin` (Volker E.)
+
+### Code
+* Ensure only options belonging to the SelectWidget can be clicked (Ed Sanders)
+* SelectFileWidget: Rename `getTargetItem()` to `findTargetItem()` (Prateek Saxena)
+* Toolgroup: Rename `getTargetTool()` to `findTargetTool()` (Prateek Saxena)
+* WikimediaUI theme: Simplify `transition` code and remove obsolete (Volker E.)
+* build: Add 'accessibility' icon pack in Apex to build module definition (Volker E.)
+* build: Update eslint-config-wikimedia 0.4->0.5 (Ed Sanders)
+* build: Updating mediawiki/mediawiki-codesniffer to 0.12.0 (libraryupgrader)
+* tests: Make MockWidget filename match class name (Kunal Mehta)
+
+
+## v0.22.5 / 2017-08-22
+### Features
+* Add `title` attribute to the 'remove' button in TagItemWidget (Moriel Schottlender)
+
+### Styles
+* WikimediaUI theme: Fix regression on disabled border (Volker E.)
+
+### Code
+* Align vars to WikimediaUI Base and remove them as OOjs UI vars (Volker E.)
+* DraggableElement: Make toggling draggability consistent (Bartosz Dziewoński)
+* Follow-up 022f532: Don't crash if TitledElement initializes before AccessKeyedElement (Roan Kattouw)
+* WikimediaUI theme: Make checkbox/radio code leaner (Volker E.)
+* WikimediaUI theme: Remove unnecessary selector in CheckboxInputWidget (Volker E.)
+* docs: Align code comment references to Phabricator tasks (Volker E.)
+* build: Upgrade devDependencies to latest and make pass (James D. Forrester)
+* build: Update mediawiki-codesniffer to v0.10.1 and fix issues (WMDE-Fisch)
+* build: Update mediawiki-codesniffer to v0.11.0 and fix issues (WMDE-Fisch)
+* tests: Prepare for qunit 2.x (James D. Forrester)
+
+
+## v0.22.4 / 2017-08-01
+### Features
+* CheckboxMultiselectInputWidget: setValue when CheckboxMultiselect changes (Prateek Saxena)
+* FieldLayout: Show widget's accesskey in our title (Bartosz Dziewoński)
+* TextInputWidget: When positioning label, don't clear padding if we will set it again (Bartosz Dziewoński)
+* TitledElement: When an AccessKeyedElement, show access key in the title (Bartosz Dziewoński)
+
+### Styles
+* icons: Vertically align 'play' & 'stop' icons (Volker E.)
+* Apex theme: Add focus styles to Tag-/CapsuleMultiselectWidget (Volker E.)
+* Apex theme: Add focus styles to frameless buttons (Volker E.)
+* Apex theme: Add play icon (copied from WikimediaUI theme) (Roan Kattouw)
+* Apex theme: Align ButtonGroup-/ButtonSelectWidget focus logic to WikimediaUI (Volker E.)
+* Apex theme: Align Dropdown*Widget's focus state with other widgets (Volker E.)
+* Apex theme: Align TextInputWidget focus to variablized way (Volker E.)
+* Apex theme: Align ToggleSwitchWidget focus style to other widgets (Volker E.)
+* Apex theme: Improve alignment of TextInputWidget and its elements (Volker E.)
+* Apex theme: Introduce framed button focus indication (Volker E.)
+* Apex theme: Replace and unify `border-radius` with variables (Volker E.)
+* WikimediaUI theme: Set ButtonElement's height per default (Volker E.)
+* WikimediaUI theme: Work around a Firefox rendering bug for checkboxes and radios (Bartosz Dziewoński)
+
+### Code
+* DraggableGroupElement: Remove ARIA roles & attributes (Volker E.)
+* FieldsetLayout: Use `<legend>` now that Chrome 55 bug is less important (James D. Forrester)
+* Apex theme: Align remaining values to coding convention (Volker E.)
+* WikimediaUI theme: Align `*-fallback` var with notation elsewhere (Volker E.)
+* WikimediaUI theme: Code comment hygiene (Volker E.)
+* WikimediaUI theme: Directly use the Less values rather than via copy-paste (James D. Forrester)
+* demos: Add examples of TextInputWidget with dynamic label (Bartosz Dziewoński)
+* demos: Demo.DraggableItemWidget should not inherit from OO.ui.OptionWidget (Bartosz Dziewoński)
+* demos: Show example link on `:focus` (Volker E.)
+* docs: Fix some PHPDoc `@return` tags (Ricordisamoa)
+* build: Add a script to print the dependency tree of everything (Bartosz Dziewoński)
+
+
+## v0.22.3 / 2017-07-11
+### Features
+* Tag-/CapsuleMultiselectWidget: Avoid visual focusTrap feedback (Volker E.)
+* WindowManager: Avoid inconsistent state due to asynchronous promise resolution (Bartosz Dziewoński)
+* WindowManager: fix closing promise state check (David Lynch)
+
+### Styles
+* icons: Align ongoingConversation to grid (Ed Sanders)
+* icons: Replace the puzzle icon, using the one from VisualEditor (James D. Forrester)
+* icons: Vertically center mapPin icon (Volker E.)
+* Apex theme: Add 'article' icon, copied from WikimediaUI (Moriel Schottlender)
+
+### Code
+* DropdownWidget, MenuSelectWidget: Set `aria-expanded` attribute (Prateek Saxena)
+* FieldLayout: Add `role='alert'` for error messages (Prateek Saxena)
+* FieldLayout: Set `aria-describedby` on the fieldWidget (Prateek Saxena)
+* PopupWidget: Update function name in a comment (Bartosz Dziewoński)
+* TagMultiselectWidget: Skip `updateInputSize()` for invisible inputs (Roan Kattouw)
+* Toolbar: Add comment for greppability of dynamic CSS classes (Bartosz Dziewoński)
+* themes: Align read-only variable names to pseudo-class selector scheme (Volker E.)
+* themes: Align variable names to WikimediaUI Base scheme (Volker E.)
+* WikimediaUI theme: Align `@opacity-icon*` variable names to WikimediaUI Base (Volker E.)
+* WikimediaUI theme: Align checked variable names to pseudo-class scheme (Volker E.)
+* WikimediaUI theme: Align disabled variable names to pseudo-class scheme (Volker E.)
+* WikimediaUI theme: Align variable pseudo classes names to WikimediaUI Base (Volker E.)
+* WikimediaUI theme: Replace `@color-base-light` with `@color-base--inverted` (Volker E.)
+* WikimediaUI theme: Variablize PopupWidget values (Volker E.)
+* WikimediaUI theme: Pull in the upstream WikimediaUI package (James D. Forrester)
+* build: Updating mediawiki/mediawiki-codesniffer to 0.10.0 (Kunal Mehta)
+* phpcs: Enable more rules, or document why they are disabled (Bartosz Dziewoński)
+* testsuitegenerator: Blacklist deprecated `multiline` config option (Bartosz Dziewoński)
+
+
+## v0.22.2 / 2017-06-28
+### Deprecations
+* [DEPRECATING CHANGE] TextInputWidget: Move multi-line support out (Prateek Saxena)
+* [DEPRECATING CHANGE] icons: Move and rename 'stripeSideMenu' to 'draggable' (Volker E.)
+
+### Features
+* DropdownInputWidget: Unbreak setting 'value' via config options (Bartosz Dziewoński)
+* Element: Work around browsers that set fractional scrollTop values (Roan Kattouw)
+
+### Styles
+* BookletLayout: Workaround for horizontal scrollbars on menu when editable (Bartosz Dziewoński)
+* icons: Let's stop referring to removed icons, hmm? (James D. Forrester)
+* Rewrite all styling for "outline controls" (Bartosz Dziewoński)
+* Apex theme: Align appearance of tags' close icon to WikimediaUI theme (Volker E.)
+* Apex theme: Fix HorizontalLayout containing FieldLayouts (Bartosz Dziewoński)
+* WikimediaUI theme: Remove default DraggableElement styling (Ed Sanders)
+* WikimediaUI theme: Use icon instead of indicator in Tag-/CapsuleItemWidget (Volker E.)
+* WikimediaUI: Strengthen Radio*Widget's `:checked` state (Volker E.)
+
+### Code
+* MenuSelectWidget: Fix item hiding when menu contents change (Roan Kattouw)
+* MultilineTextInputWidget: Fix autosizing (Bartosz Dziewoński)
+* PopupWidget: Replace CSS with Less comments for smaller dist (Volker E.)
+* SearchInputWidget: Fix ability to clear the input (Bartosz Dziewoński)
+* TabIndexedElement: Fix validation and make consistent in PHP and JS (Bartosz Dziewoński)
+* Use javascript-stringify instead of JSON.stringify (Ed Sanders)
+* Apex theme: Fix order of selectors for :first-child FieldLayout (Bartosz Dziewoński)
+* demos: Add links to documentation from code examples (Prateek Saxena)
+* demos: Allow linking to specific widgets (Bartosz Dziewoński)
+* demos: Indicate code toggle clearer (Volker E.)
+* demos: Pull out all links to docs/sources to the top of the code (Bartosz Dziewoński)
+* demos: Simplify code generation, now that we use javascript-stringify (Bartosz Dziewoński)
+* demos: Use URL 'query' part for linking to demo sections rather than URL 'fragment' (Bartosz Dziewoński)
+* docs: Fix some typos in documentation (Bartosz Dziewoński)
+* docparser: Fix handling for fake trait constructors (Bartosz Dziewoński)
+* docparser: Make matching '(default: ...)' case-insensitive (Bartosz Dziewoński)
+* docparser: Tighter check for 'use' statements in PHP (Bartosz Dziewoński)
+
+
+## v0.22.1 / 2017-05-31
+### Code
+* WindowManager: Do not use return value of `#closeWindow` as promise (Bartosz Dziewoński)
+* WindowManager: Fix check for a window already closing (Bartosz Dziewoński)
+* WindowManager: Fix error handling for `#openWindow` with string argument (Bartosz Dziewoński)
+* WindowManager: Fix important typo in deprecation warning (Bartosz Dziewoński)
+* WindowManager: Fix incorrect checks for promise state (Bartosz Dziewoński)
+* WindowManager: Provide other `jQuery.Promise` methods on the b/c promise too (Bartosz Dziewoński)
+* demos: Clarify code comment (Bartosz Dziewoński)
+* demos: Clean up the global window manager too when destroying (Bartosz Dziewoński)
+* demos: Load icon packs in the PHP demo (Bartosz Dziewoński)
+* demos: Replace abandoned icon name 'remove' to current one 'trash' (Volker E.)
+
+## v0.22.0 / 2017-05-30
+### Breaking changes
+* [BREAKING CHANGE] TextInputWidget: Remove search related methods (Prateek Saxena)
+* [BREAKING CHANGE] icons: Drop the core icon pack (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove unused 'bookmark' icon (Volker E.)
+* [BREAKING CHANGE] Depend on OOjs v2.1.0, up from v2.0.0 (James D. Forrester)
+
+### Deprecations
+* [DEPRECATING CHANGE] Rename the 'MediaWiki' theme to 'WikimediaUI' (James D. Forrester)
+* [DEPRECATING CHANGE] WindowManager: Deprecate using `openWindow`/`closeWindow` returns as promises (Bartosz Dziewoński)
+
+### Features
+* Add HiddenInputWidget to generate hidden input (Victor Barbu)
+* InputWidget: Introduce `#setInputId` and `inputId` config option (Bartosz Dziewoński)
+* MenuTagMultiselectWidget: Clear text field after adding an item from it (Bartosz Dziewoński)
+* MenuTagMultiselectWidget: Handle the 'selected' config option (Bartosz Dziewoński)
+* NumberInputWidget: Use icons instead of labels (Volker E.)
+* PopupButtonWidget: Handle empty configuration (Bartosz Dziewoński)
+* PopupWidget: Position close button in head absolutely (David Lynch)
+* PopupWidget: Sensibly position anchor-less popups (Roan Kattouw)
+* WindowManager: Add `WindowInstance` - a Promise-based lifecycle object (Timo Tijhof)
+* WindowManager: Handle errors better in `#closeWindow` (Bartosz Dziewoński)
+
+* Allow *even more* widgets to be focussed programatically (Bartosz Dziewoński)
+* Only cancel mouse down event if tool in toolgroup clicked on (Ed Sanders)
+* Re-introduce `.simulateLabelClick()` as a separate method from .focus() (Bartosz Dziewoński)
+
+### Styles
+* themes: Field*Layout help position perfectly aligned (Volker E.)
+* themes: Improve frameless button in size and behaviour (Volker E.)
+* themes: Increase FieldsetLayout header's `font-size` (Volker E.)
+* Apex theme: Ensure vertical centering of ButtonElement's icon (Volker E.)
+* Apex theme: Make OptionWidget icon override more specific (Moriel Schottlender)
+* Apex theme: Start Apex's 'user' icon pack, with just 'userAvatar' for now (Ed Sanders)
+* WikimediaUI theme: Align `@background-color-destructive` to WikimediaUI Base (Volker E.)
+* WikimediaUI theme: Align ButtonInputWidget's `line-height` to ButtonWidget (Volker E.)
+* WikimediaUI theme: Align inline label's position (Volker E.)
+* WikimediaUI theme: Ensure icon aligns in dropdown menu (Volker E.)
+* WikimediaUI theme: Remove incorrect comments (Volker E.)
+
+### Code
+* MenuTagMultiselectWidget: Add test for 'selected' config option (Bartosz Dziewoński)
+* windows: Add tests for OO.ui.alert/confirm/prompt (Timo Tijhof)
+* AUTHORS: Update for the past two years' work (James D. Forrester)
+* build: Add the README/AUTHORS/LICENCE files to dist (James D. Forrester)
+* demos: Add TextInputWidget examples with inline labels but no indicators (Ed Sanders)
+* demos: Add viewport meta tag to PHP demo too (Volker E.)
+* demos: Avoid inline CSS for the overlay (Bartosz Dziewoński)
+* demos: Fix code generation for more complicated cases (Bartosz Dziewoński)
+* demos: Fix up a couple of minor things in demo widgets (Bartosz Dziewoński)
+* demos: Fix `z-index` with fixed demo header (Volker E.)
+* demos: Increase and strengthen responsive support (Volker E.)
+* demos: Indicate widgets clearer by sections (Volker E.)
+* demos: Make disabled progress bar in demo determinate (Ed Sanders)
+* demos: Show code that can be used to create the widget (Prateek Saxena)
+* testsuitegenerator: Handle classes with no constructor (Bartosz Dziewoński)
+
+
+## v0.21.4 / 2017-05-16
+### Features
+* Allow more widgets to be focussed programatically (Bartosz Dziewoński)
+* Generalize `.getInputId()` for all widgets (Bartosz Dziewoński)
+* Use `.focus()` method when possible instead of looking inside widgets (Bartosz Dziewoński)
+* TagMultiselectWidget: Fix `Ctrl`+`Backspace` to delete last item (Bartosz Dziewoński)
+* TagMultiselectWidget: Fix order of checks for `allowArbitrary`/`allowDuplicates` (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Separate two active ToggleButton siblings visually (Volker E)
+
+### Code
+* LabelWidget: Fix label click handling (Bartosz Dziewoński)
+* RadioSelectInputWidget: When generating a unique 'name', don't make it random (Bartosz Dziewoński)
+* Use glaringly wrong tags for elements that are supposed to be unused (Bartosz Dziewoński)
+* README: Clarify and simplify descriptions (Volker E)
+* build: Upgrade eslint-config-wikimedia from 0.3.0 to 0.4.0 and make pass (James D. Forrester)
+* demos: Add ARIA roles (Volker E)
+* demos: Clean up the window manager when destroying the dialogs demo (Bartosz Dziewoński)
+* demos: Preserve scroll position when changing non-page options (Bartosz Dziewoński)
+* demos: Rename deprecated Card to current TabPanel (Volker E)
+* demos: Tame buggy mobile browser behaviour on `position: fixed` (Volker E)
+* demos: Turn the menu into a fixed header (Bartosz Dziewoński)
+* docs: Fix `OO.ui.IndexLayout` example (Volker E)
+* tests: Order the `attributes` object keys, for less noisy diffs (Bartosz Dziewoński)
+
+
+## v0.21.3 / 2017-05-09
+### Deprecations
+* [DEPRECATING CHANGE] Merge functionality of FloatingMenuSelectWidget into MenuSelectWidget (Bartosz Dziewoński)
+* [DEPRECATING CHANGE] Rename CardLayout to TabPanelLayout (Prateek Saxena)
+* [DEPRECATING CHANGE] icons: Deprecate 'bookmark' icon (Volker E)
+* [DEPRECATING CHANGE] icons: Merge 'caret' into regular movement icons (James D. Forrester)
+
+### Styles
+* OptionWidget: Use parent selector for icon/indicator/label styles (Roan Kattouw)
+* Apex theme: Follow same FieldLayout `margin` logic as MediaWiki theme (Volker E)
+* MediaWiki theme: Bring styling to design spec in Safari/iOS (Volker E)
+* MediaWiki theme: Fix ButtonInputWidget appearance in Saf/iOS (Volker E)
+* MediaWiki theme: Fix `padding` for frameless buttons in ProcessDialogs (Ed Sanders)
+* MediaWiki theme: Provide focus indicator to TagMultiselectWidget (Volker E)
+* MediaWiki theme: Unify and harmonize `padding`/position of Tag*Widgets (Volker E)
+
+### Code
+* Fix some errors flagged by ESLint's 'valid-jsdoc' option (Bartosz Dziewoński)
+* NumberInputWidget: Followup db801c55f0 – clean up backward compat vars (Moriel Schottlender)
+* MenuSectionOptionWidget: Remove unsupported ARIA attribute (Volker E)
+* MenuSelectWidget: Scroll to the top if filtering and no exact match (David Lynch)
+* MenuSelectWidgets: Don't unconditionally hide all descendant inputs (Roan Kattouw)
+* TagMultiselectWidget: Actually use the focus trapping element (Bartosz Dziewoński)
+* TagMultiselectWidget: Fix `#addTag` return value to match docs (Bartosz Dziewoński)
+* TagMultiselectWidget: Fix keyboard navigation between items (Bartosz Dziewoński)
+* ToggleButtonWidget: Remove misleading `aria-checked` attribute (Volker E)
+* Unbreak FloatingMenuSelectWidget when `$container` is not given (Bartosz Dziewoński)
+* build: Fix invalid ecmaVersion setting (Timo Tijhof)
+* build: Use source maps in coverage report (James D. Forrester)
+* icons: Add first/last to complement previous/next in movement pack (Ed Sanders)
+* icons: Provide 'clip', 'unClip', and 'pushPin' in moderation (James D. Forrester)
+* tests: Do not set `QUnit.config.requireExpects = true` (Bartosz Dziewoński)
+
+
+## v0.21.2 / 2017-04-25
+### Features
+* Element: New method `#getElementId` (Bartosz Dziewoński)
+* NumberInputWidget: Remake as an actual TextInputWidget child (Moriel Schottlender)
+
+### Styles
+* ProgressBarWidget: Switch to `box-sizing: border-box` (Volker E)
+* TabOptionWidget: Cleanup & align paddings/position to dialog environment (Volker E)
+* MediaWiki theme: Decrease selector specificity and fix invalid appearance (Volker E)
+* MediaWiki theme: Fix IE 7 oversized buttons (Volker E)
+* MediaWiki theme: Improve SearchWidget design (Volker E)
+
+### Code
+* Do not use `role=menu`/`menuitem` for MenuSelectWidget/MenuOptionWidget (Bartosz Dziewoński)
+* PopupTagMultiselectWidget: Update popup position on resize (Prateek Saxena)
+* ProcessDialog: Display error messages on top of footer action buttons (Bartosz Dziewoński)
+* SelectWidget/MenuSelectWidget: Maintain `aria-activedescendant` attribute on focus owner (Bartosz Dziewoński)
+* Set ARIA `role=combobox` on DropdownWidget and LookupElement too (Bartosz Dziewoński)
+* Set `aria-owns` for everything with a dropdown list (ARIA `role=combobox`) (Bartosz Dziewoński)
+* Follow-up d22d23311: Don't reference OO.ui.ToolGroup blindly (James D. Forrester)
+* build: Bump grunt-stylelint, bring in stylelint explicitly (James D. Forrester)
+* demos: Add some more examples with 'accessKey' (Bartosz Dziewoński)
+* docs: Document Window#$overlay property (Bartosz Dziewoński)
+* tests: Drop unnecessary hints to qunit about the number of tests (James D. Forrester)
+
+
+## v0.21.1 / 2017-04-18
+### Styles
+* PopupWidget: Do not leave space for anchor if there's no anchor (Bartosz Dziewoński)
+* MediaWiki theme: Ensure WCAG level AA contrast on unsupported SelectFileWidget (Volker E)
+* MediaWiki theme: Fit icon/indicator & label in DecoratedOptionWidget (Volker E)
+* MediaWiki theme: Fix standalone, disabled sibling ButtonWidgets (Volker E)
+* MediaWiki theme: Fix white `border-color` of frameless buttons (Volker E)
+* MediaWiki theme: Make readonly TextInputWidget appearance clearer (Volker E)
+* MediaWiki theme: TagMultiselectWidget outlined UI improvements (Volker E)
+* MenuOptionWidget: Remove theme-independent 'check' icon (Prateek Saxena)
+
+### Code
+* environment: Upgrade jQuery from 1.11.3 to 3.2.1 (James D. Forrester)
+* DropdownInput-/RadioSelectInputWidget: Remove unnecessary ARIA attributes (Volker E)
+* Element: Use `JSON.parse` rather than the deprecated `$.parseJSON` (James D. Forrester)
+* Fix typo in frameless button mixin (David Lynch)
+* FloatingMenuSelectWidget: Add 'ready' event after menu is clipped (Moriel Schottlender)
+* MediaWiki theme: Clarify `@min-height-widget-default` usage (Volker E)
+* PopupToolGroup: Mixin flaggable (David Lynch)
+* TagMultiselectWidget: Allow preset InputWidget (Moriel Schottlender)
+* TagMultiselectWidget: Redo data validation for Tag* and Menu* (Moriel Schottlender)
+* themes: Align `@size-*-min` variable to naming scheme and rename (Volker E)
+* build: Drop the csscomb task (James D. Forrester)
+* docs: Fix numbering in Quick start (Kartik Mistry)
+* demos: Polish demo labels, styles and add frameless button tests (Volker E)
+* tests: Update OO.ui.Process tests for jQuery 3 compatibility (Bartosz Dziewoński)
+
+
+## v0.21.0 / 2017-04-11
+### Breaking changes
+* [BREAKING CHANGE] ActionWidget: Remove resize event (IvanFon)
+* [BREAKING CHANGE] dependencies: Drop support for ES3 browsers via es5-shim (James D. Forrester)
+
+### Features
+* Create a TagMultiselectWidget (Moriel Schottlender)
+* FloatingMenuSelectWidget: Add `width` config option (Moriel Schottlender)
+* MenuSelectWidget: Add `config.$autoCloseIgnore` (Roan Kattouw)
+
+### Styles
+* PopupWidget: Center the anchor for vertical (above/below) popups too (Bartosz Dziewoński)
+* MediaWiki theme: Add separator when toolbar items break on narrow (Volker E)
+* MediaWiki theme: Fix IE < 11 icon/indicator position in SelectFileWidget (Volker E)
+* MediaWiki theme: Fix overflow ellipsis on small DropdownWidget sizes (Volker E)
+* MediaWiki theme: Fix selector regression on DraggableElement (Volker E)
+* MediaWiki theme: Fix Toolbars containing ButtonGroups (David Lynch)
+* MediaWiki theme: Replace arrows with chevrons and increase contrast (Volker E)
+* MediaWiki theme: Unify `padding` across widgets and variablize (Volker E)
+* MediaWiki theme: Unify `padding` on ButtonElement (Volker E)
+* MediaWiki theme: Unify `padding` on DecoratedOptionWidget and descendants (Volker E)
+* Follow-up eceb6f20: MediaWiki theme: Remove unused indicator flags (Volker E)
+
+### Code
+* Remove remnants of PHP-5.3-style `array()` literals (Bartosz Dziewoński)
+* ClippableElement: Fix progressive width loss bug (Roan Kattouw)
+* ComboBoxInputWidget: Fix minor JS/PHP differences (Bartosz Dziewoński)
+* ComboBoxInputWidget: Redo the 'down' indicator in PHP (Bartosz Dziewoński)
+* DraggableElement: Only apply focus when widget is not disabled (Moriel Schottlender)
+* DraggableElement: Toggle style on `$handle`, not `$element` (Andrew Green)
+* DropdownInputWidget: Only allow setting values actually in the dropdown (Bartosz Dziewoński)
+* MenuSelectWidget: Highlight the first result when searching (Moriel Schottlender)
+* MessageDialog: Accept proposed size dialog on `getSetupProcess` (Ebrahim Byagowi)
+* TextInputWidget: Reduce unnecessary duplicated CSS output (Volker E)
+* TextInputWidget: Use `.prop()` rather than `.attr()` for 'required' (Bartosz Dziewoński)
+* Apex theme: Align coding style to conventions (Volker E)
+* Apex theme: Simplify color usage through Less variables (Volker E)
+* demos: Remove scaling restrictions (Volker E)
+* docparser: Improve trait/mixin handling (Bartosz Dziewoński)
+* docparser: Properly handle default values in PHP (Bartosz Dziewoński)
+* docs: Add detail to documentation of core.js utilities (Ed Sanders)
+* docs: Minor documentation tweaks (Bartosz Dziewoński)
+* tests: Comparison tests for infusing previously untestable classes (Bartosz Dziewoński)
+
+
+## v0.20.2 / 2017-03-30
+### Styles
+* DraggableElement: Fix regression on selectors (Volker E)
+
+### Code
+* GroupElement: Fix insertion bugs (Bartosz Dziewoński)
+* icons: Drop unused 'invert' variant from Apex 'icons-interactions' pack (Bartosz Dziewoński)
+* build: Add exec:composer and add it to `_ci` (Prateek Saxena)
+
+
+## v0.20.1 / 2017-03-28
+### Deprecations
+* [DEPRECATING CHANGE] icons: Deprecate and/or move all the core icons (James D. Forrester)
+* [DEPRECATING CHANGE] icons: Rename 'wikitrail' to 'mapTrail' (Volker E)
+* Follow-up b12205ac: Add deprecation notices to icons moved in v0.16.2 (James D. Forrester)
+* Follow-up da8d99af: Add deprecation notice to icon moved in v0.14.0 (James D. Forrester)
+
+### Features
+* DraggableGroupElement: Make draggable conditional (Moriel Schottlender)
+* build: Implement `grunt add-theme` task to ease theme creation (Bartosz Dziewoński)
+
+### Styles
+* ButtonElement: Normalize appearance in Firefox (Volker E)
+* Blank theme: Fix up the 'blank' theme (Bartosz Dziewoński)
+* MediaWiki theme: Position PopupToolGroup indicator similar to other widgets (Volker E)
+
+### Code
+* Element: Add special case for document root in getClosestScrollableContainer (Bartosz Dziewoński)
+* FloatableElement: Abort positioning if no longer attached (David Lynch)
+* GroupElement: Transform to be an OO.EmitterList mixin (Moriel Schottlender)
+* MenuOptionWidget: Remove inherited, duplicated property (Volker E)
+* OO.ui.isFocusableElement: Update for jQuery 3 deprecations (Bartosz Dziewoński)
+* PopupWidget: Add 'ready' event when the popup is ready (Moriel Schottlender)
+* Use Node.DOCUMENT_NODE rather than magic number (Bartosz Dziewoński)
+* Follow-up 4bc67351c5: Unbreak FloatableElement positioning (Roan Kattouw)
+* Follow-up Iaa7dffc13: *Actually* allow `$returnFocusTo` to be `null` (Ed Sanders)
+* themes: Reorder Less rules alphabetically (Volker E)
+* MediaWiki theme: Remove obsolete ButtonOptionWidget styles (Volker E)
+* MediaWiki theme: Remove unnecessary OptionWiget `border` property (Volker E)
+* build: Add a new jenkins script (Prateek Saxena)
+* build: Bump grunt-cssjanus to master (Volker E)
+* build: Match file order between tests/index and karma (Timo Tijhof)
+* build/demos: Generalize demos and build so that it's easier to add new themes (Bartosz Dziewoński)
+
+
+## v0.20.0 / 2017-03-15
+### Breaking changes
+* [BREAKING CHANGE] Element#scrollIntoView: Drop `complete` config option (James D. Forrester)
+* [BREAKING CHANGE] Element#scrollIntoView: Remove deprecated `complete` config parameter (James D. Forrester)
+* [BREAKING CHANGE] LabelElement: Remove deprecated `fitLabel` function (James D. Forrester)
+* [BREAKING CHANGE] MessageDialog: Drop the deprecated '`verbose`' flag (James D. Forrester)
+* [BREAKING CHANGE] PopupWidget#setAlignment: Remove backwards-compatibility (James D. Forrester)
+* [BREAKING CHANGE] Remove CapsuleMultiSelectWidget (James D. Forrester)
+* [BREAKING CHANGE] Remove TextInputMenuSelectWidget (James D. Forrester)
+* [BREAKING CHANGE] TextInputWidget: Remove `type=date`/`month` support (Geoffrey Mon)
+* [BREAKING CHANGE] icons: Drop '…Undo' icons, deprecated in 0.18.3 (James D. Forrester)
+* [BREAKING CHANGE] icons: Drop 'beta' and 'ribbonPrize', deprecated in 0.18.3 (James D. Forrester)
+* [BREAKING CHANGE] icons: Drop 'betaLaunch', deprecated in 0.18.3 (James D. Forrester)
+* [BREAKING CHANGE] icons: Drop status flags from Wikimedia (logos) icon pack (Volker E)
+
+### Deprecations
+* [DEPRECATING CHANGE] ActionWidget/Set: Warn for methods using the `resize` event (Prateek Saxena)
+
+### Features
+* Use `<span>` rather than `<div>` for inline-ish widgets (Bartosz Dziewoński)
+* CapsuleMultiselectWidget: Call `updateInputSize` when adding, removing items (Prateek Saxena)
+* DropdownInputWidget: Add support for `optgroup` (Prateek Saxena)
+* FieldLayout: Use `<span>` rather than `<div>` when possible (Bartosz Dziewoński)
+
+### Styles
+* DropdownInputWidget: Tweak PHP widget's disabled styling (Bartosz Dziewoński)
+* NumberInputWidget: Set input to 100% height (Volker E)
+* MediaWiki theme: Add unit to `line-height` for Chrome (Volker E)
+* MediaWiki theme: Align “framed” ButtonWidgets cross-browser (Volker E)
+* MediaWiki theme: Ensure theme color in disabled TextInputWidget on Safari (Volker E)
+* MediaWiki theme: Ensure vertical alignment of dialog top bar items (Volker E)
+* MediaWiki theme: Fix TextInputWidget's IconElement `max-height` (Volker E)
+* MediaWiki theme: Fix appearance of ComboBoxInputWidget PHP (Volker E)
+* MediaWiki theme: Use color palette color for dialog top bar (Volker E)
+* MediaWiki theme: Vertically align label in SelectFileWidget (Volker E)
+
+### Code
+* DropdownInputWidget: Remove accidental patterned background in PHP (Bartosz Dziewoński)
+* MediaWiki theme: Align WindowManager to CSS Coding Guidelines (Volker E)
+* MediaWiki theme: Indicators shouldn't provide global `progressive` flag (Volker E)
+* MediaWiki theme: Simplify Radio- & Checkbox…optionWidget label rules (Volker E)
+* build: Bump various devDependencies to master (James D. Forrester)
+* build: Exclude demos/vendor from composer test too (James D. Forrester)
+* demos: Add ButtonGroupWidget (icon and text) demo (Volker E)
+* demos: Add disabled DropdownInputWidget demo (Bartosz Dziewoński)
+
+
+## v0.19.5 / 2017-03-07
+### Deprecations
+* [DEPRECATING CHANGE] icons: Move 'add' from core to 'interactions' pack (James D. Forrester)
+
+### Features
+* FloatableElement: Add config for `hideWhenOutOfView` (Moriel Schottlender)
+
+### Styles
+* MediaWiki theme: Add visual feedback on focussed Outlined Booklet Dialog (Volker E)
+* OutlinedBookletDialog: Bring visual order into levels (Volker E)
+* icons: Add 'highlight' to 'editing-styling' pack (Moriel Schottlender)
+* icons: Add 'substract' icon, in interactions pack (Volker E)
+* icons: Fix vertical alignment of 'journal' (Volker E)
+* icons: Remove 'teardrop' from MediaWiki theme 'close' icon (Volker E)
+
+### Code
+* CapsuleMultiselectWidget: Update popup position if height changed (Prateek Saxena)
+* ComboBoxInputWidget: Improve documentation example (Bartosz Dziewoński)
+* ListToolGroup: Re-clip when expanding/collapsing (Roan Kattouw)
+* MenuSelectWidget#filterFromInput: Clear MenuSectionOptionWidgets if empty (Roan Kattouw)
+* PopupElement: Set `$floatableContainer` to `this.$element` by default (Roan Kattouw)
+* PopupTool: For bottom toolbars, make the popup go up, like toolgroups (Bartosz Dziewoński)
+* PopupWidget: Make popups able to actually pop *up*, as well as sideways (Roan Kattouw)
+* PopupWidget: Position anchor relative to popup, not popup relative to anchor (Roan Kattouw)
+* TextInputWidget: Fix documentation for 'maxRows' type (Bartosz Dziewoński)
+* Use `options` in ComboBoxInputWidget demo (Moriel Schottlender)
+* Follow-up 442ffe73, 7f21350d, 9dfa5dd5: Mention in icon definitions they're deprecated (James D. Forrester)
+* demos: Make demo consoles LTR, even in the RTL demo (Roan Kattouw)
+* demos: Add demo/test for PopupWidget/PopupButtonWidget placements (Bartosz Dziewoński)
+* demos: Add sections to dialogs demo (Bartosz Dziewoński)
+* demos: Extract widgets, dialogs and layouts from dialogs.js (Bartosz Dziewoński)
+* demos: Reuse some widgets in the dialogs demo (Bartosz Dziewoński)
+* styles: Replace stylelint block with inline comments everywhere (Volker E)
+
+
+## v0.19.4 / 2017-02-28
+### Features
+* Add `OO.ui.Element.static.getScrollLeft` (Bartosz Dziewoński)
+* FloatableElement: Support positioning relative to all edges (Roan Kattouw)
+
+### Styles
+* MediaWiki theme: Align DraggableElement focus with standard appearance (Volker E)
+* MediaWiki theme: Align appearance of PHP DropdownInputWidget to JS (Volker E)
+* MediaWiki theme: Fix TextInputWidget inline label misalignment (Volker E)
+* MediaWiki theme: Fix ToolGroupTool's label alignment (Volker E)
+* MediaWiki theme: Fix button layout in ButtonGroup-/SelectWidgets in IE 9 (Volker E)
+* MediaWiki theme: Fix styling for FieldLayout inside HorizontalLayout (Bartosz Dziewoński)
+* styles: Improve vertical alignment of elements' & widgets' icons (Ed Sanders/Volker E)
+* icons: Add 'feedback' icon, in interactions pack (Roan Kattouw)
+* icons: Add 'searchDiacritic' icon, in editing-advanced pack (Ed Sanders)
+
+### Code
+* Make generic placeholder pseudo-class browser-prefix mixin (Ed Sanders)
+* BookletLayout: When continuous, properly make the inner PageLayouts non-scrollable (Bartosz Dziewoński)
+* Element: Fix `scrollLeft()` for body/html/window (Roan Kattouw)
+* OutlineOptionWidget: Remove unused and misplaced values (Volker E)
+* PopupWidget: Remove `left: 0;` breaking floatable popups (Roan Kattouw)
+* MediaWiki theme: Remove obsolete ComboBoxInputWidget selectors (Volker E)
+* README: Encourage direct release in the instructions (James D. Forrester)
+* build: Test the 'minify' task in CI (James D. Forrester)
+* demos: Add 'label' to ToolGroupTool example (Bartosz Dziewoński)
+* demos: Extract ButtonStyleShowcaseWidget from the demo code (Bartosz Dziewoński)
+* demos: Extract CapsuleNumberPopupMultiselectWidget from the demo code (Bartosz Dziewoński)
+* demos: Extract remaining widgets from widgets.js (Bartosz Dziewoński)
+
+
+## v0.19.3 / 2017-02-21
+### Features
+* FieldLayout, FieldsetLayout: Add support for `$overlay` for help popups (Bartosz Dziewoński)
+* MenuSelectWidget: Add config option to not close on choose (Roan Kattouw)
+
+### Styles
+* MediaWiki theme: Make CapsuleItemWidget behave similar to other widgets (Volker E)
+* MediaWiki theme: SelectFileWidget drop target aligned to UX patterns (Volker E)
+
+### Code
+* BookletLayout: Remove unnecessary overrides (Bartosz Dziewoński)
+* Element#getClosestScrollableContainer: Update code comment (Bartosz Dziewoński)
+* FieldLayout, LabelWidget: If input has no ID, focus on element on label click (Prateek Saxena)
+* PopupWidget (and similar): Document why it is unwise to show unattached widgets, and emit warnings (Bartosz Dziewoński)
+* build: Bump stylelint and make pass (James D. Forrester)
+* demos: Add DropdownWidget (with MenuSectionOptionWidget) (Prateek Saxena)
+* demos: Further improve responsive layout (Volker E)
+* demos: Minor tweaks for button style showcase code (Bartosz Dziewoński)
+* demos: Rename OO.ui.Demo to just Demo (Bartosz Dziewoński)
+* demos: Replace `table` in button style showcase with responsive layout (Volker E)
+* demos: Set the default page in demo.js (Bartosz Dziewoński)
+
+
+## v0.19.2 / 2017-02-14
+### Features
+* CapsuleMultiselectWidget: Make labels work (Prateek Saxena)
+* FloatableElement, PopupWidget: Do positioning from the right in RTL (Roan Kattouw)
+* TextInputWidget: getValidity: Check browser validation first (Prateek Saxena)
+
+### Styles
+* icons: Fix vertical alignment of eye icon (Ed Sanders)
+
+### Code
+* core: Do not clear unrelated flags when clearing 'progressive' (Bartosz Dziewoński)
+* ActionWidget: Remove event listening code for widget's 'resize' event (Prateek Saxena)
+* ClippableElement: Order matters (inexplicably) (Bartosz Dziewoński)
+* demos: Use longer text in popup in $overlay demo (Bartosz Dziewoński)
+
+
+## v0.19.1 / 2017-02-07
+### Features
+* Dialog: Support meta as well as ctrl for modifier on enter key (David Lynch)
+
+### Styles
+* FieldLayout: Fix styling for disabled widgets in PHP (Bartosz Dziewoński)
+* MediaWiki theme: Align tab navigation to color palette (Volker E)
+* MediaWiki theme: Fix RTL version of largerText icon to be, well, RTL (James D. Forrester)
+* MediaWiki theme: Fix direction of shadow on position:bottom toolbars (Ed Sanders)
+* MediaWiki theme: Use correct `border-color` on PopupWidget anchor (Volker E)
+* Mediawiki theme: Fix focus inset to overlap scrollbars (Volker E)
+* icons: Provide a 'halfStar' vertical split star (codynguyen1116)
+
+### Code
+* CheckboxMultiselectInputWidget: Allow disabling specific options (Huji Lee)
+* DraggableGroupElement: Add mandatory ARIA role (Volker E)
+* FieldLayout: Move `<label>` from `$body` to `$label` (Bartosz Dziewoński)
+* FieldLayout: Remove the need for `simulateLabelClick` (Prateek Saxena)
+* InputWidget: Fix 'id' attribute setting for `<label>` (Bartosz Dziewoński)
+* LabelWidget: Remove the need for `simulateLabelClick` (Prateek Saxena)
+* Toolbar: Make toolbar position selectors more specific (Ed Sanders)
+* WindowManager: Clarify `#addWindows` documentation (Bartosz Dziewoński)
+* Windows: Use the "recommended" `WindowManager#addWindows` usage (Bartosz Dziewoński)
+* Apex theme: Get rid of toolbar-shadow div (only used by Apex) (Ed Sanders)
+* MediaWiki theme: Remove unnecessary `font-weight` property (Volker E)
+* build: Bump various dev dependencies to latest (James D. Forrester)
+* colorize-svg: Colorize using a method compatible with rsvg (Bartosz Dziewoński)
+* demos: Load icons stylesheets with correct directionality (LTR/RTL) (Bartosz Dziewoński)
+* demos: Follow-up a02979ad: Load the icons-content pack in the PHP demo (James D. Forrester)
+* demos: Remove 'Constructive' button from the icons page (Prateek Saxena)
+* demos: Add link to documentation (Prateek Saxena)
+* demos: Fix regression on toolbars demo (Volker E)
+* docs: Add quotes around `PROJECT_NAME` setting (Ricordisamoa)
+* docs: Document for JSDuck various overridden inherited properties (Bartosz Dziewoński)
+* docs: Fix `OO.ui.prompt()` documentation (Bartosz Dziewoński)
+* docs: Set `.static.name` in all dialog examples that need it (Bartosz Dziewoński)
+
+
+## v0.19.0 / 2017-01-31
+### Breaking changes
+* [BREAKING CHANGE] ButtonWidget: Switch `box-sizing` over to `border-box` (Volker E)
+* [BREAKING CHANGE] LabelElement: Drop no-op fitLabel() method. (James D. Forrester)
+* [BREAKING CHANGE] WindowManager: Error if `.static.name` is not defined when adding a window (Bartosz Dziewoński)
+
+### Features
+* PopupButtonWidget: Add `$overlay` config option (Bartosz Dziewoński)
+* SelectWidget: Allow OptionWidget subclasses to provide custom match text (Roan Kattouw)
+* Toolbar: Support `position:bottom` (Ed Sanders)
+
+### Styles
+* CapsuleMultiselectWidget: Fix focussing when inside BookletLayout with popup (Bartosz Dziewoński)
+* CapsuleMultiselectWidget: Styling tweaks related to popups (Bartosz Dziewoński)
+* MenuSelectWidget: Override ClippableElement's `min-height` (Bartosz Dziewoński)
+* PopupWidgets: Unify paddings and line-height (Bartosz Dziewoński)
+* TextInputWidget/MediaWiki theme: Revert "Improve Less code and align labels" (Bartosz Dziewoński)
+* PanelLayout/Apex theme: Revert regression (Volker E)
+
+### Code
+* CapsuleMultiSelectWidget: Call correct parent constructor (Ricordisamoa)
+* CapsuleMultiselectWidget: Make popup really work with $overlay (Bartosz Dziewoński)
+* FieldsetLayout: Swap 'max-width' and 'width' (Bartosz Dziewoński)
+* FloatableElement: More correctly decide if we need custom position (Bartosz Dziewoński)
+* MenuSelectWidget: Hide menu if all items are hidden (Bartosz Dziewoński)
+* ProcessDialog: Account for `config.flags` being undefined (Ed Sanders)
+* Follow-up 1dc6a45: {Booklet,Index}Layout: Avoid deprecated `config.complete` (Roan Kattouw)
+* Follow-up d21cf8a: unbreak popups with no $floatableContainer (Roan Kattouw)
+* PHP: Avoid unique ID conflicts between PHP and JS code (Bartosz Dziewoński)
+* demos: Failing demo for DropdownWidget with an overlay (Roan Kattouw)
+* demos: Fix vertical spacing in icons demo (Bartosz Dziewoński)
+* demos: Improve layout on mobile and fix various glitches (Volker E)
+* demos: Make the icon page easier to use (Prateek Saxena)
+* demos: Use longer text in PopupWidgets to showcase line wrapping (Bartosz Dziewoński)
+
+
+## v0.18.4 / 2017-01-17
+### Deprecations
+* [DEPRECATING CHANGE] MessageDialog: Default 'verbose' option to true (James D. Forrester)
+* Follow-up 1dc6a45: Emit deprecations from Element#scrollIntoView callback (James D. Forrester)
+* Follow-up 4518bcf: Emit deprecation warnings for LabelElement#fitLabel (James D. Forrester)
+* Follow-up 574fd34: Emit deprecations for use of CapsuleMultiSelectWidget (James D. Forrester)
+* Follow-up ea9a4ac: Throw deprecation warnings for TextInputMenuSelectWidget (James D. Forrester)
+* Follow-up f69a2ad: Emit deprecations for old PopupWidget#setAlignment values (James D. Forrester)
+
+### Features
+* CapsuleMultiSelectWidget: Add allowDuplicates option (Brad Jorsch)
+* CapsuleMultiSelectWidget: Remove onFocusForPopup, call focus directly (Roan Kattouw)
+* ClippableElement: Add `min-height` for usability in edge cases (Volker E)
+* TextInputWidget: Disable hiding focus when clicking indicator/label (Volker E)
+
+### Styles
+* ActionFieldLayout: Limit the 'max-width: 50em' to align: top (Bartosz Dziewoński)
+* ButtonGroupWidget: Limit default cursor to active ButtonWidgets (Volker E)
+* FieldLayout, FieldsetLayout: Limit width of label+help to 50em (Bartosz Dziewoński)
+* FieldLayout: Correct styling regressions for align: 'inline' (Bartosz Dziewoński)
+* FieldLayout: Fix positioning of 'help' with align: left/right (Bartosz Dziewoński)
+* MediaWiki theme: Unify box-shadows to one visual appearance (Volker E)
+* PanelLayout: Remove 3D appearance of framed panels and harmonise padding (Volker E)
+* PopupWidget: Change margins to prevent click blocking (Ed Sanders)
+
+### Code
+* ClippableElement: Also clean up `maxWidth`, `maxHeight` when turning clipping off (Bartosz Dziewoński)
+* Element#updateThemeClasses: Batch `setTimeout()` calls (Bartosz Dziewoński)
+* MediaWiki theme: Use variable for disabled ProgressBar (Volker E)
+* PopupWidget#setAlignment: Tweak docs to indicate default parameter value (James D. Forrester)
+* PHP: Add method Tag::generateElementId() to match JS OO.ui.generateElementId() (Bartosz Dziewoński)
+* styles: Improve and clarify GPU composite layer mixin (Volker E)
+* demos: Add a LabelWidget that has a corresponding TextInputWidget (Prateek Saxena)
+* demos: Add lots more FieldLayout demos (Bartosz Dziewoński)
+* demos: Add test for ClippableElements at the bottom of their containers (Prateek Saxena)
+* docs: Use 'an' instead of 'a' before 'HTML' (Prateek Saxena)
+* docs: Include an i18n example in OO.ui.msg documentation (David Lynch)
+* tests: Improve ignoring expected differences in JS/PHP comparison tests (Bartosz Dziewoński)
+* tests: Tweaks to the display of failed tests (Bartosz Dziewoński)
+* testsuitegenerator: Allow testing LabelWidget's 'input' (Bartosz Dziewoński)
+* testsuitegenerator: Specify sensible values to test for 'align' (Bartosz Dziewoński)
+* testsuitegenerator: Test FieldLayout etc. also with TextInputWidget (Bartosz Dziewoński)
+
+
+## v0.18.3 / 2017-01-03
+### Deprecations
+* [DEPRECATING CHANGE] icons: Deprecate the 'beta' and 'ribbonPrize' icons (James D. Forrester)
+* [DEPRECATING CHANGE] icons: Rename '*Undo' to 'un*' (James D. Forrester)
+* [DEPRECATING CHANGE] icons: Rename 'betaLaunch' to 'logoWikimediaDiscovery', move pack (James D. Forrester)
+
+### Features
+* ComboBoxInputWidget: Make it impossible to set `multiline` to true (Prateek Saxena)
+* Introduce `OO.ui.isMobile()` (Ed Sanders)
+* Provide `OO.ui.prompt()` method to complement `confirm()`/`alert()` (Ed Sanders)
+
+### Styles
+* FloatableElement: Replace superfluous class with general one (Volker E)
+* MediaWiki theme: Change custom error border color to `destructive` (Volker E)
+* MediaWiki theme: Change error/invalid color to alias of `destructive` (Volker E)
+* MediaWiki theme: Fix PHP CheckboxMultiselectInputWidget/RadioSelectInputWidget option spacing (Bartosz Dziewoński)
+* MediaWiki theme: Indicate normal, flagged ButtonWidgets' `:hover` clearer (Volker E)
+* MediaWiki theme: Set `line-height` explicitly on legends and labels (Volker E)
+
+### Code
+* BarToolGroup: Remove obsolete CSS selectors (Volker E)
+* ClippableElement: Compatibility with jQuery 3 (Bartosz Dziewoński)
+* Element: Do not try to scroll invisible/unattached elements into view (Bartosz Dziewoński)
+* LabelWidget: Properly hide labels if they are set to null (Ed Sanders)
+* NumberInputWidget: Avoid bitwise tricks when checking for integers (Bartosz Dziewoński)
+* PopupButtonWidget: Remove unnecessary CSS property (Volker E)
+* ProgressBarWidget: Use CSS transforms for indeterminate widget (Bartosz Dziewoński)
+* TextInputWidget: Do nothing in `#adjustSize`/`#positionLabel` if not attached (Bartosz Dziewoński)
+* TextInputWidget: Only call `#onElementAttach` on focus if it wasn't called (Bartosz Dziewoński)
+* TextInputWidget: Use `Element#isElementAttached` (Bartosz Dziewoński)
+* styles: Replace `transform` with dedicated mixin (Volker E)
+* MediaWiki theme: Make `box-shadow` LESS vars follow naming scheme (Volker E)
+* MediaWiki theme: Simplify frameless ButtonWidget selectors (Volker E)
+* performance: Apply webkit GPU hack to scrollable panels (Ed Sanders)
+* demos: Add disabled Progress bar (Volker E)
+* demos: Add examples for `OO.ui.alert()`/`confirm()`/`prompt()` (Bartosz Dziewoński)
+* demos: Avoid using 'required' as a test indicator (Ed Sanders)
+* build: Bump file copyright notices for 2017 (James D. Forrester)
+* docs: Fix small typo (Amir Sarabadani)
+
+
+## v0.18.2 / 2016-12-06
+### Styles
+* MediaWiki theme: Address sub-pixel rendering issues of RadioInputWidgets (Volker E)
+* MediaWiki theme: Improve `:active:focus` states on ButtonElements (Volker E)
+* MediaWiki theme: Reduce MapPin icons' hole for better recognisability (Volker E)
+
+### Code
+* FieldsetLayout: Temporarily remove use of `<legend>` due to Chrome 55 bug (Bartosz Dziewoński)
+* TextInputWidget/MediaWiki theme: Improve Less code and align labels (Volker E)
+
+
+## v0.18.1 / 2016-11-29
+### Features
+* PopupElement: Allow $autoCloseIgnore to be overridden (Roan Kattouw)
+* WindowManager: Allow $returnFocusTo to be null (Ed Sanders)
+
+### Styles
+* MediaWiki theme: Reduce, align `margin` and `padding` of form elements (Volker E)
+* MediaWiki theme: Replace color function with palette color (Volker E)
+* MediaWiki theme: Standard placeholder colours for CapsuleMultiselectWidget too (Bartosz Dziewoński)
+* MediaWiki theme: Tweak destructive red for background-independent contrast (Volker E)
+
+### Code
+* Field & Fieldset: Make help popup code consistent (Ed Sanders)
+* PopupWidget: Consistently use OO.ui.contains() for auto-closing (Roan Kattouw)
+* build: Bump eslint-config-wikimedia to v0.3.0 and make pass (James D. Forrester)
+* eslint: Re-enable wrap-iife and partially enable dot-notation (Ed Sanders)
+
+
+## v0.18.0 / 2016-11-08
+### Breaking changes
+* [BREAKING CHANGE] ComboBoxWidget: Remove this deprecated alias for ComboBoxInputWidget (James D. Forrester)
+* [BREAKING CHANGE] core: Remove {add|remove}CaptureEventListener (James D. Forrester)
+* [BREAKING CHANGE] icons: Remove deprecated alias 'photoGallery' (Ed Sanders)
+* [BREAKING CHANGE] InputWidget: Remove deprecated #setRTL function (James D. Forrester)
+* [BREAKING CHANGE] MediaWiki theme: Remove deprecated `constructive` variables (Volker E)
+* [BREAKING CHANGE] TextInputWidget: remove isValid() method, deprecated since v0.12.3 (Ricordisamoa)
+
+### Deprecations
+* [DEPRECATING CHANGE] Break out parts of TextInputWidget into a new SearchInputWidget (Prateek Saxena)
+
+### Features
+* ButtonElement: Add `role="button"` only when needed (Prateek Saxena)
+* ButtonWidget: Remove code to not let the button get focus after clicking (Prateek Saxena)
+* CapsuleMultiselectWidget: Add placeholder option (Prateek Saxena)
+* CapsuleMultiselectWidget: Don't discard current input value when editing an item (Bartosz Dziewoński)
+* ComboBoxInputWidget: Hide dropdown indicator when there is no dropdown (Volker E)
+* TextInputWidget: Add methods #setRequired / #isRequired (Bartosz Dziewoński)
+* TextInputWidget: Allow type="month" (Geoffrey Mon)
+* WindowManager: Add a $returnFocusTo property (Prateek Saxena)
+* Add OO.ui.warnDeprecation method (Prateek Saxena)
+
+### Styles
+* ButtonElement: Normalize `:focus` appearance in Firefox (Volker E)
+* ButtonGroupWidget: Change `cursor` on `.oo-ui-buttonElement-active` (Volker E)
+* CapsuleItemWidget: Make interactivity of label clearer (Volker E)
+* ComboBoxInputWidget: Align to design specification (Volker E)
+* PopupToolGroup: Fix border colour (Ed Sanders)
+* MessageDialog: Improve `-actions` buttons by resetting `border-radius` (Volker E)
+* SelectFileWidget: Don't show action-indicating cursor on empty state (Volker E)
+* MediaWiki theme: Fix border colours in toolbar (Ed Sanders)
+* MediaWiki theme: Address subpixel rendering errors in buttoned widgets (Volker E)
+* MediaWiki theme: Align readonly TextInputWidget to overhauled color palette (Volker E)
+* MediaWiki theme: Fix `:hover` in ComboBoxInput- & CapsuleMultiselectWidget (Volker E)
+* MediaWiki theme: Fix ButtonElement's `:active:focus` state visually (Volker E)
+* MediaWiki theme: Fix FieldsetLayouts' icon position (Volker E)
+* MediaWiki theme: Fix SelectFileWidget's label visibility in IE11 (Volker E)
+* MediaWiki theme: Fix visual glitch CheckboxInputWidget's `:active` state (Volker E)
+* MediaWiki theme: Fix visual glitch on `:active:focus` widgets state (Volker E)
+* MediaWiki theme: Fix wrong colored `box-shadow` on ToggleSwitchWidget (Volker E)
+* MediaWiki theme: Make colors follow color palette (Volker E)
+* MediaWiki theme: Make placeholder follow WCAG 2.0 level AA contrast ratio (Volker E)
+* MediaWiki theme: Replace abandoned color from early palette iteration (Volker E)
+* MediaWiki theme: Use `@color-progressive` for progress bar (Volker E)
+* MediaWiki theme: Use `color-progressive` for switched-on binary inputs (Volker E)
+* icons: Replace bigger/smaller with more obvious forms (Ed Sanders)
+
+### Code
+* CapsuleMultiSelectWidget: Always keep input as wide as placeholder text (Prateek Saxena)
+* CapsuleMultiselectWidget: Fix crash on right-click when no input (Moriel Schottlender)
+* OutlineOptionWidget: Follow-up de9058299f: don't duplicate parent's logic (Roan Kattouw)
+* Toolbar: Defer computation of the narrow threshold (Roan Kattouw)
+* Window: Update `-content` CSS so that child elements can give it focus (Prateek Saxena)
+* Window#withoutSizeTransitions: Build transition property using sub-properties (Prateek Saxena)
+* WindowManager: Warn if .static.name is not defined when adding a window (Bartosz Dziewoński)
+* Tag: Generate valid HTML for self-closing tags (Bartosz Dziewoński)
+* OO.ui.warnDeprecation: Fix how we use getProp (Prateek Saxena)
+* MediaWiki theme: Add W3C Standards Notation for placeholder pseudo class (Volker E)
+* MediaWiki theme: Clarify usage of `@max-width-*` Less variables (Volker E)
+* MediaWiki theme: Refactor z-index inside ButtonSelectWidget/ButtonGroupWidget (Bartosz Dziewoński)
+* demo: Add FieldsetLayout with icon (Bartosz Dziewoński)
+* demo: Align to color palette (Volker E)
+* demo: Fix for IE 9 (Bartosz Dziewoński)
+* demo: Remove deprecated TextInputWidget (type=search) (Volker E)
+* demo: Fix PHP demo directionality (Bartosz Dziewoński)
+* demo: Remove PHP 5.3 compatibility, version check and PHPCS exception (Bartosz Dziewoński)
+* build: Make MediaWiki the default theme in doc live previews (Ed Sanders)
+* build: Remove obsolete csscomb rules (Volker E)
+* build: Remove upstreamed rules and fix documentation (Ed Sanders)
+* build: Update eslint-config-wikimedia to v0.2.0 (Ed Sanders)
+
+## v0.17.10 / 2016-10-03 (special release)
+### Styles
+* FieldsetLayout: Styling fixes for `<legend>` labels (Bartosz Dziewoński)
+* FieldsetLayout: Work around positioning problems in Firefox (Bartosz Dziewoński)
+
+## v0.17.9 / 2016-09-13
+### Features
+* DropdownWidget: Add CSS class to widgets with open dropdown menus (Volker E)
+* SelectFileWidget: Remove MIME type information (Volker E)
+* TextInputWidget: Make disabled fields' inner labels unselectable (Volker E)
+
+### Styles
+* ActionToolGroup: Show left border, instead of right (Ed Sanders)
+* ButtonElement: Centralize styling properties (Volker E)
+* ButtonOptionWidget: Make active state carry default cursor (Volker E)
+* Radio- and CheckboxInputWidget: Fix visual disabled state on labels (Volker E)
+* ToggleButtonWidget: Use inverted variant when initially active (Leszek Manicki)
+
+* MediaWiki theme: Adjust CheckboxInputWidget to match M30 design (Volker E)
+* MediaWiki theme: Adjust RadioInputWidget to match M29 design (Volker E)
+* MediaWiki theme: Align Dropdown- & CapsuleMultiSelectWidget `:focus` state (Volker E)
+* MediaWiki theme: Align disabled text contrast to WCAG compliance (Volker E)
+* MediaWiki theme: Enhance button styles and align them to new color palette (Volker E)
+* MediaWiki theme: Fix ButtonElement-active on flagged & primary buttons (Volker E)
+* MediaWiki theme: Fix `:hover` state of ComboBoxInputWidget (Volker E)
+* MediaWiki theme: Fix regression on `border` of active (selected) buttons (Volker E)
+* MediaWiki theme: Improve appearance of CapsuleMultiselectWidget with child (Volker E)
+* MediaWiki theme: Make ToggleSwitchWidget's disabled state follow enabled (Volker E)
+* MediaWiki theme: Make colors' contrast compliant to WCAG 2.0 level AA (Volker E)
+* MediaWiki theme: Toolbar: Use progressive colors for active and active-hover (Prateek Saxena)
+* MediaWiki theme: Unify `-pressed` and `-emphasized` color var (Volker E)
+* MediaWiki theme: Unify different widgets' selected menu state (Volker E)
+* MediaWiki theme: Use a solid border for disabled SelectFile drop target (Volker E)
+
+### Code
+* FieldsetLayout: Make use of `<fieldset>` and `<legend>` tags (Volker E)
+* NumberInputWidget: Clean-up Less code & remove style properties (Volker E)
+* NumberInputWidget: Simplify CSS selectors & fix button text alignment (Volker E)
+* TextInputWidget: Treat `rows: 0` the same in PHP and in JS (Bartosz Dziewoński)
+* Toolbar: Simplify and concatenate selectors (Volker E)
+* MediaWiki theme: Align tools' variables to common vars naming convention (Volker E)
+* MediaWiki theme: Clean-up unnecessary properties in ToolGroup (Volker E)
+* build: Align csscomb configuration with CSS coding conventions (Volker E)
+* build: Introduce eslint to replace jshint and jscs (James D. Forrester)
+* build: Limit the file list of jsonlint (Ed Sanders)
+* build: Remove jshint and jscs, now done in eslint (James D. Forrester)
+* docs: IndexLayout: Fix ReferenceError in code sample (Prateek Saxena)
+* git: Add .idea directory to .gitignore (Florian)
+* testsuitegenerator: Also support 'int' and 'bool' (Bartosz Dziewoński)
+* testsuitegenerator: Simplify code generating all possible config options (Bartosz Dziewoński)
+
+
+## v0.17.8 / 2016-08-16
+### Features
+* ProgressBarWidget: Do not make zero progress indeterminate (Leszek Manicki)
+* ProgressBarWidget: Add PHP version (Leszek Manicki)
+* TextInputWidget: Show state as valid (no matter the case) on focus (Prateek Saxena)
+
+### Styles
+* ButtonElement: Fix 'active' state icon variants in MediaWiki theme (Bartosz Dziewoński)
+* FieldLayout: Use saner line-height for errors/notices (Bartosz Dziewoński)
+* SelectFileWidget: Improve thumbnail appearance (Volker E)
+* styles: Inherit specific `font` properties, not all (Volker E)
+* MediaWiki theme: Clear border on selected framed buttons (Volker E)
+* MediaWiki theme: Fix ButtonWidget (frameless, indicator) `:focus` appearance (Volker E)
+* MediaWiki theme: Fix ToggleSwitchWidget's sub-pixel rounding errors (Volker E)
+
+
+### Code
+* MediaWiki theme: Improve CapsuleMultiselectWidget Less code and behaviour (Volker E)
+* MediaWiki theme: Improve DropdownWidget Less code and behaviour (Volker E)
+* MediaWiki theme: Removing never applied styles on BarToolGroup (Volker E)
+* MediaWiki theme: Simplify ToolGroup selectors (Volker E)
+* testsuitegenerator: Specify sensible values to test for 'progress' (Bartosz Dziewoński)
+
+
+## v0.17.7 / 2016-08-03
+### Styles
+* MediaWiki theme: Apply `border-color` on `:hover` to textInputWidgets (Volker E)
+* MediaWiki theme: Decrease `margin`/`padding` on `legend` replacement (Volker E)
+* MediaWiki theme: Decrease distance between label and Checkbox*-/Radio*Widget (Volker E)
+* MediaWiki theme: Improve UX on ToggleSwitchWidget (Volker E)
+* icons: Fix vertical alignment of 'bell' by moving up 1px (Ed Sanders)
+* icons: Provide a 'tray' icon in alerts pack (James D. Forrester)
+* icons: Provide the alerts pack for Apex theme too (James D. Forrester)
+
+### Code
+* CheckboxMultiselectWidget: Rewrite Shift-clicking code (Bartosz Dziewoński)
+* NumberInputWidget: Merge object literals being passed as config for buttons (Prateek Saxena)
+* SelectFileWidget: Reduce div soup when 'showDropTarget' is enabled (Prateek Saxena)
+* styles: Replace unprefixed `box-sizing` property with mixin (Volker E)
+* MediaWiki theme: Disable vendor UI extensions on every `type=number` input (Volker E)
+* MediaWiki theme: Remove unnecessary toolGroup selector (Volker E)
+* MediaWiki theme: Replace `border` property values with Less variables (Volker E)
+* MediaWiki theme: Replace static `color` value with Less variable (Volker E)
+* build: Add 'prep-test' task to be run before running tests in the browser (Prateek Saxena)
+* build: Align to stylelint-config-wikimedia for `!important` (James D. Forrester)
+* build: Align to stylelint-config-wikimedia for string quotes (James D. Forrester)
+* build: Bump stylelint-related devDependencies to latest (James D. Forrester)
+* build: Downgrade grunt-jscs to 2.8.0 to avoid cst bug (James D. Forrester)
+* docs: Correct some code comments in PHP mixins (Bartosz Dziewoński)
+* standalone tests: Correct error message (Bartosz Dziewoński)
+
+
+## v0.17.6 / 2016-07-12
+### Features
+* CapsuleMultiselectWidget: Allow ignoring user input for 'allowArbitrary' widgets (Bartosz Dziewoński)
+* Dialog: Set the 'title' attribute on the title LabelWidget (Prateek Saxena)
+* ToolFactory: Allow '\*' as an item in a toolgroup include list (Ed Sanders)
+* Window: make the focus trap smarter (David Lynch)
+
+### Styles
+* Add aria-hidden to several Layouts (David Lynch)
+* Add dialog transition duration to theme JS file (Ed Sanders)
+* ButtonGroupWidget: Fix border on button's CSS states (Volker E)
+* MediaWiki theme: Normalize [placeholder] appearance x-browser and ensure a11y (Volker E)
+* MediaWiki theme: Unify ButtonWidget focus `border-radius` values (Volker E)
+* styles: Set `line-height` to unitless values to follow best practice (Volker E)
+* icons: Give "Stop" a filled background, aligned with others in the pack (Volker E)
+* icons: Unify cross-out lines direction to top-left/bottom-right (Volker E)
+
+### Code
+* README: Replace git.wikimedia.org URL with Phabricator one (Paladox)
+* build: Bump stylelint devDependencies to latest (James D. Forrester)
+* build: Update karma and karma-coverage to latest (Paladox)
+* demo: Dialogs: Removing title from SimpleDialog as it'll never show (Prateek Saxena)
+* docs: Remove self-closing tag syntax in comments and demos (Volker E)
+* docs: LabelWidget: Add TitledElement mixin (Prateek Saxena)
+* package: Replace git.wikimedia.org url with diffusion url (Paladox)
+
+
+## v0.17.5 / 2016-06-19
+### Styles
+* Dropdown,SelectFileWidget: Improve user experience on disabled widgets (Volker E)
+* MediaWiki theme: Fix ToggleSwitchWidget's grip circle shape (Volker E)
+* MediaWiki theme: Fix focus states of ActionWidget's buttons (Volker E)
+* MediaWiki theme: Improve focus states of primary buttons & ToggleSwitchWidget (Volker E)
+
+### Code
+* DraggableGroupWidget: Remove unnecessary `cursor` property (Volker E)
+* GroupElement#removeItems: Fix to actually unbind events (Ed Sanders)
+* ProcessDialog: Change DOM ordering of actions (David Lynch)
+* MediaWiki theme: Remove `line-height` from TextInputWidget `input` (Volker E)
+* MediaWiki theme: Remove obsolete `color` property, which never gets applied (Volker E)
+* build: Bump devDependencies to latest and make pass (James D. Forrester)
+* composer: Exclude copied demo PHP from phpcs test (James D. Forrester)
+* demos: Add descriptive hints on navigation types to dialog names (Volker E)
+
+
+## v0.17.4 / 2016-05-31
+### Features
+* DropdownWidget: Handle type-to-search when menu is not expanded (Bartosz Dziewoński)
+* Implement MultiselectWidget, CheckboxMultiselectWidget and CheckboxMultiselectInputWidget (Bartosz Dziewoński)
+* SelectWidget: Improve focus behaviour (Bartosz Dziewoński)
+
+### Styles
+* icons: Use B/I/S/U icons for British and Candian English variants (Ed Sanders)
+* MediaWiki theme: Provide an adjacent disabled ButtonGroup/SelectWidget button border (Volker E)
+* MediaWiki theme: Make iconed and non-iconed buttons have the same height (Roan Kattouw)
+
+### Code
+* ButtonElement: Remove unnecessary inheritance duplication of `display` (Volker E)
+* GroupWidget: Mix in GroupElement, rather than inherit from it (Bartosz Dziewoński)
+* LookupElement: Add missing `@mixins` documentation (Bartosz Dziewoński)
+* SelectWidget: Implement `#getFirstSelectableItem` in terms of `#getRelativeSelectableItem` (Bartosz Dziewoński)
+* SelectWidget: Optimize `#getRelativeSelectableItem` without filter (Bartosz Dziewoński)
+* styles: Remove unnecessary CSS rules on disabled buttons (Volker E)
+* styles: Simplify disabled `.oo-ui-tool-link` rules (Volker E)
+
+
+## v0.17.3 / 2016-05-24
+### Deprecations
+* [DEPRECATING CHANGE] CapsuleMultiSelectWidget: Rename to CapsuleMultiselectWidget (Bartosz Dziewoński)
+
+### Features
+* SelectWidget/OptionWidget: Implement selecting by accesskey (Bartosz Dziewoński)
+* TextInputWidget: Stop returning 'multiline' from 'getSaneType' (Prateek Saxena)
+
+### Styles
+* SelectFileWidget: Improve consistency to other widgets (Volker E)
+* MediaWiki theme: Align styles of normal and not-supported SelectFileWidgets (Volker E)
+
+### Code
+* CapsuleMultiselectWidget: Prefer Array#map to jQuery.map (Bartosz Dziewoński)
+* CapsuleMultiselectWidget: Use OO.ui.findFocusable() (Bartosz Dziewoński)
+* dependencies: Update es5-shim to v4.5.8 (James D. Forrester)
+* build: Bump grunt-stylelint to v0.3.0 (James D. Forrester)
+* build: Bump various devDependencies to latest (James D. Forrester)
+* build: Fix watch path for css (Ed Sanders)
+* build: Remove grunt-cli (Ed Sanders)
+* build: Upgrade stylelint-config-wikimedia to 0.2.0 and make pass (James D. Forrester)
+* build: Use stylelint instead of csslint (Volker E)
+* docs: Add some missing @mixins documentation (Bartosz Dziewoński)
+* stylelint: Add `@` whitespace and name case rules (Volker E)
+* stylelint: Add `@media` whitespace rules (Volker E)
+* stylelint: Add block formatting rules (Volker E)
+* stylelint: Add font rules (Volker E)
+* stylelint: Add no duplicate property rule (Volker E)
+* stylelint: Add selector whitespace (Volker E)
+* stylelint: Add whitespace rules (Volker E)
+* stylelint: Change to use central Wikimedia configuration (Volker E)
+* stylelint: Use null instead of false to disable rules (Ed Sanders)
+
+
+## v0.17.2 / 2016-05-10
+### Features
+* ButtonWidget: Implement, document and demonstrate the 'active' config option (Bartosz Dziewoński)
+
+### Styles
+* ToggleSwitchWidget: Align focus state with other widgets (Volker E)
+* MediaWiki theme: Remove `border-radius` from disabled numberInputWidget buttons (Volker E)
+
+### Code
+* TextInputWidget: Remove proprietary `<input results>` attribute styles (Volker E)
+* MediaWiki theme: Align `input` & `textarea` coding style to Less way (Volker E)
+
+
+## v0.17.1 / 2016-05-03
+### Styles
+* CapsuleMultiSelectWidget: Fix cross-browser inconsistencies and improve UX (Volker E)
+* SelectFileWidget: Add `no-drop` cursor where it belongs (Volker E)
+* MediaWiki theme: Align focus state of capsuleItemWidget with other widgets (Volker E)
+* MediaWiki theme: Custom `:focus` state for SelectWidgets (Bartosz Dziewoński)
+* MediaWiki theme: Standardize `:focus` states of ButtonWidgets (Volker E)
+
+### Code
+* DraggableGroupElement: Simplify and improve drag logic (Ed Sanders)
+
+
+## v0.17.0 / 2016-04-26
+### Breaking changes
+* [BREAKING CHANGE] PHP: Use traits instead of custom mixin system (Kunal Mehta)
+* [BREAKING CHANGE] TitledElement.php: Remove $element::$title fallback (Kunal Mehta)
+
+### Styles
+* MenuToolGroup: Correct display of checkmarks (Bartosz Dziewoński)
+* OutlineOptionWidget: Correct the size of the icons (David Lynch)
+* OutlineOptionWidget: Don't apply italics to "placeholder" status (James D. Forrester)
+* SelectFileWidget: Fix UI glitches on over-long filenames (Volker E)
+* TabOptionWidget: Disabled OptionWidget should receive default cursor (Volker E)
+* styles: Add fullScreen icon to media group (Ed Sanders)
+
+### Code
+* ButtonElement.php: Fix toggleFramed() to actually be chainable (Bartosz Dziewoński)
+* GroupElement::$targetPropertyName: Remove, no longer needed (Kunal Mehta)
+* IconElement.php: Rename protected "icon" property (Kunal Mehta)
+* IndicatorElement.php: Rename protected "indicator" property (Kunal Mehta)
+* LabelElement.php: Rename protected "label" property (Kunal Mehta)
+* build: Update grunt-svg2png to v0.2.7-wmf.1 (Paladox)
+* demos: Split off demos.php from widgets.php (Bartosz Dziewoński)
+* docparser: Remove commented-out line of code (Bartosz Dziewoński)
+* styles: Factor out `max-width-input-default` variable (Volker E)
+
+
+## v0.16.6 / 2016-04-19
+### Features
+* ButtonOptionWidget: Inherit OptionWidget, not DecoratedOptionWidget (Bartosz Dziewoński)
+* ClippableElement: Gracefully handle failure to call clip() after natural height change (Roan Kattouw)
+* NumberInputWidget: Disable onWheel action unless the widget has focus (Bartosz Dziewoński)
+* NumberInputWidget: Disable onWheel action when the widget is disabled (Prateek Saxena)
+* NumberInputWidget: Use input type="number" (Prateek Saxena)
+* TextInputWidget: Allow type="number" (Prateek Saxena)
+* TextInputWidget: Set step to 'any' if the type is set to 'number' (Prateek Saxena)
+* styles: Give icons, indicators `min-width/-height` for cross-browser support (Volker E)
+
+### Styles
+* Apex, MediaWiki themes: Properly center PopupButtonWidget anchors (Roan Kattouw)
+* MediaWiki theme: Use disabled color variable for disabled label (Volker E)
+* styles: Use transparent rather than white in icons (Bartosz Dziewoński)
+
+### Code
+* SelectFileWidget: Merge identical CSS rules (Volker E)
+* SelectFileWidget: Simplify CSS selector specificity (Volker E)
+* TextInputWidget: Clarify comment about affected browsers (Volker E)
+* TextInputWidget: Consolidate selectors with the same property rules (Volker E)
+* TextInputWidget: Stop claiming to fire non existent events in the documentation (Prateek Saxena)
+* styles: Centralise the width/height properties of icons and indicators (Volker E)
+* Apex theme: Change variable names to match MediaWiki theme (Bartosz Dziewoński)
+* README: Update with new build process (Matthew Flaschen)
+* typo: texfield -> textfield (Derk-Jan Hartman)
+
+
+## v0.16.5 / 2016-04-07
+### Styles
+* Prevent modal windows from exceeding available height on Firefox (Bartosz Dziewoński)
+* Apex, MediaWiki themes: Add "articles" icon (Marc A. Pelletier)
+* DropdownInputWidget: Give un-infused widget cursor:pointer (Ed Sanders)
+* RadioSelectInputWidget: Match PHP styling to JS (Bartosz Dziewoński)
+
+### Code
+* ComboBoxInputWidget: Disable autocomplete by default (James D. Forrester)
+* GroupElement: Add change event (Prateek Saxena)
+* GroupElement.php: Use strict mode in array_search (James D. Forrester)
+* styles: Lower specifity of CSS type attribute selectors (Volker E)
+* styles: Minor cleanup and unification of values and comments (Volker E)
+* styles: Remove unnecessary `resize` property from `select` (Volker E)
+* MediaWiki theme: Exchange `rgba()` with hex CSS colors to support IE 8 (Volker E)
+* MediaWiki theme: Replace fixed CSS property values with variables (Volker E)
+* RadioSelectInputWidget: Don't try to reuse DOM when infusing (Bartosz Dziewoński)
+* TextInputWidget: Use getValidity in demos (Ricordisamoa)
+* Window: Correct documentation (Bartosz Dziewoński)
+* build: Add browserNoActivityTimeout to karma (Paladox)
+* build: For grunt-svg2png use a tag instead of git hash (Paladox)
+* build: Update demos script to also run grunt publish-build (Paladox)
+* build: Use a version of grunt-svg2png without a rate-limited CDN (Paladox)
+
+
+## v0.16.4 / 2016-03-22
+### Features
+* NumberInputWidget: Optionally don't show the increment buttons (Thalia Chan)
+
+### Styles
+* NumberInputWidget: Fix rounded corners when showButtons=false (Ed Sanders)
+
+### Code
+* core: Add tests for throttle (David Lynch)
+* Tag: Allow appendContent and prependContent to accept an array (Moriel Schottlender)
+* LabelElement: Cast label to string before check if it is empty (Florian)
+* README.md: Add note about needing composer, clean up more generally (James D. Forrester)
+* build: Bump grunt-karma to 0.12.2 (Paladox)
+* build: Drop the 'npm prepublish' task which runs pre-install as well (James D. Forrester)
+* demos: Restore constructive widgets (James D. Forrester)
+* rubocop: Re-run todos, upgrade to newer rule names (James D. Forrester)
+* rubocop: Review todos (Bartosz Dziewoński)
+
+
+## v0.16.3 / 2016-03-16
+### Features
+* core: Add `#throttle` to complement `#debounce` (David Lynch)
+* ClippableElement: Never exceed the dimensions of the browser viewport (Bartosz Dziewoński)
+* FloatableElement: Hide if the anchor element is outside viewport (Bartosz Dziewoński)
+
+### Styles
+* Apex, MediaWiki themes: Fix vertical alignment of close icon (Ed Sanders)
+* MediaWiki theme: Disabled ButtonElement icon should not be colored (Bartosz Dziewoński)
+
+### Code
+* ButtonInputWidget: Actually disallow non-plaintext labels in 'useInputTag' mode (Bartosz Dziewoński)
+* Element: Preserve `OOUI\HtmlSnippet( '' )` when infusing (Bartosz Dziewoński)
+* InputWidget: Actually reuse parts of the DOM when infusing (Bartosz Dziewoński)
+* MediaWiki theme: Remove broken remnant of d6b05bc0 (Bartosz Dziewoński)
+* TextInputWidget: Treat empty placeholder the same in PHP and JS (Bartosz Dziewoński)
+* TitledElement: Treat empty title the same in PHP and JS (Bartosz Dziewoński)
+* build: Bump devDependencies to latest (James D. Forrester)
+* build: Bump devDependencies to latest (Paladox)
+* build: Update grunt-svg2png to commit 2fe1dad07eaec4b655263f8b487a672df4b668b4 (Paladox)
+* demo: Expand the dialog $overlay demo for testing scrolling things off-screen (Bartosz Dziewoński)
+* tests: Emulated setTimeout for unit testing (David Chan)
+* testsuitegenerator: Always test empty values for 'string' type, not just for 'label' (Bartosz Dziewoński)
+* testsuitegenerator: Change values tested for 'flags' config options (Bartosz Dziewoński)
+* testsuitegenerator: Test 'HtmlSnippet' type (mostly for labels) (Bartosz Dziewoński)
+
+
+## v0.16.2 / 2016-03-08
+### Deprecations
+* [DEPRECATING CHANGE] MediaWiki theme: Scrap `constructive` flag (Volker E)
+* [DEPRECATING CHANGE] Move some editing icons from core to editing-* (James D. Forrester)
+
+### Features
+* Dialog: trigger the primary action with ctrl-enter (David Lynch)
+* TextInputWidget: Allow type="date" (Geoffrey Mon)
+
+### Styles
+* Apex, MediaWiki themes: Add markup '<>' icon in editing-advanced (Ed Sanders)
+* Apex, MediaWiki themes: Drop padding from buttons in MessageDialogs (James D. Forrester)
+* editing-styling pack: Have uk fallback to use ru bold and italic icons (Paladox)
+* styles: Remove superflous pseudo-class and unitize comments (Volker E)
+
+### Code
+* CapsuleMultiSelectWidget: Emit 'resize' when widget height changes (Bartosz Dziewoński)
+* TextInputWidget: Prevent uncaught errors when using #selectRange in IE (Ed Sanders)
+* TextInputWidget: Update comment about Blink height miscalculation (Bartosz Dziewoński)
+* Follow-up I0667fbc: Fix draggable element CSS (Ed Sanders)
+* Add Element::configFromHtmlAttributes() helper method (Bartosz Dziewoński)
+* Clean-up duplicate properties across widgets (Volker E)
+* docs: Clarify the lack of `.oo-ui-box-shadow()` mixin (Volker E)
+
+
+## v0.16.1 / 2016-03-01
+### Styles
+* CapsuleItemWidget: Revert regression on "remove" button in Firefox (Volker E)
+
+### Code
+* ActionFieldLayout: Add max-width: 50em; (Florian)
+* DraggableGroupElement: Don't emit reorder event when action is a no-op (Ed Sanders)
+* Element: Fix #gatherPreInfuseState called incorrectly, causing TypeErrors (Thiemo Mättig)
+* NumberInputWidget: fix example (Ricordisamoa)
+* SelectWidget: fix incorrect `@return` that should be `@param` (Ricordisamoa)
+* build: Compress PNGs with Zopfli etc. after they are built (James D. Forrester)
+* build: Enable all passing jscs jsDoc rules (Ricordisamoa)
+* build: Enable jscs jsDoc rule 'checkAnnotations' and make pass (Ricordisamoa)
+* build: Enable jscs jsDoc rule 'checkParamNames' and make pass (Ricordisamoa)
+* build: Enable jscs jsDoc rule 'checkTypes' and make pass (Ricordisamoa)
+* build: Enable jscs jsDoc rule 'requireNewlineAfterDescription' and make pass (Ricordisamoa)
+* build: Enable jscs jsDoc rule 'requireReturnTypes' and make pass (Ricordisamoa)
+* demos: Display a nicer error message on old PHP versions (Kunal Mehta)
+
+
+## v0.16.0 / 2016-02-22
+### Breaking changes
+* [BREAKING CHANGE] DraggableGroupElement: Add default implementation of reorder (Ed Sanders)
+* [BREAKING CHANGE] Remove 'noimages' distribution (Bartosz Dziewoński)
+* [BREAKING CHANGE] Require PHP 5.5.9+; drop old array syntax (James D. Forrester)
+* [BREAKING CHANGE] SelectFileWidget: Remove deprecated config 'dragDropUI' (Prateek Saxena)
+
+### Deprecations
+* [DEPRECATING CHANGE] MenuOptionsWidgets: Drop jQuery autoEllipsis support (Bartosz Dziewoński)
+
+### Features
+* core#debounce: If an immediate timeout is already waiting, don't re-set it (Bartosz Dziewoński)
+* LabelElement: Bring in highlightQuery method from VE (Ed Sanders)
+* DraggableElement: Defer adding of -dragging class so it isn't applied to copy (Ed Sanders)
+* DraggableElement: Introduce $handle config option (Ed Sanders)
+* DraggableGroupElement: Live reorder list while dragging (Ed Sanders)
+* DraggableGroupElement: Only show meaningful drop positions (Ed Sanders)
+
+### Styles
+* CapsuleItemWidget: Tweak styles for the "remove" button (Bartosz Dziewoński)
+* MenuSelectWidget: Bring some sanity styling when inside different widgets (Bartosz Dziewoński)
+* NumberInputWidget: Apex: Round the correct corners in the disabled state (Prateek Saxena)
+* styles: Use block rather than inline-block to avoid line height issues (Bartosz Dziewoński)
+* MediaWiki theme: Restore non-broken version of eye.svg (Bartosz Dziewoński)
+
+### Code
+* Avoid parsing HTML when creating <input> nodes (Bartosz Dziewoński)
+* tests: Actually run core test suite in standalone mode (Bartosz Dziewoński)
+* Compress PNGs with zopflipng (Ori Livneh)
+* DraggableGroupElement: Cache directionality (Ed Sanders)
+* DraggableGroupElement: Fix offset calculation (Ed Sanders)
+* DraggableGroupElement: Reduce flicker when dragging (Ed Sanders)
+* TextInputWidget: Don't call #updatePosition if there's no label to position (Bartosz Dziewoński)
+* PHP: Take advantage of PHP 5.5 understanding ( new Foo )->foo (Bartosz Dziewoński)
+* README: Update Phabricator URL broken by upgrade (James D. Forrester)
+* build: Bump grunt-svg2png to a newer (still personal) version; lots faster (James D. Forrester)
+
+## v0.15.4 / 2016-02-16
+### Deprecations
+* [DEPRECATING CHANGE] Element#scrollIntoView: Replace callback with promise (Ed Sanders)
+
+### Features
+* SelectWidget: Prevent mouse highlighting while typing-to-select (Bartosz Dziewoński)
+
+### Styles
+* PHP DropdownInputWidget: Match height of <option> to JS MenuOptionWidget (Bartosz Dziewoński)
+
+### Code
+* DraggableElement: Remove 'HACK' comment, this isn't a hack (Bartosz Dziewoński)
+* Element: Expand variable names in scrollIntoView (Ed Sanders)
+* Element, ListToolGroup: Add some missing documentation (Ed Sanders)
+* Element#scrollIntoView: Make the promise version actually work (Bartosz Dziewoński)
+* PopupWidget: Only build head and footer if we're going to use it (Bartosz Dziewoński)
+* PopupWidget: Tweak some comments (Bartosz Dziewoński)
+* styles: Remove initial value `ease` from `transition` (Volker E)
+
+## v0.15.3 / 2016-02-09
+### Features
+* CapsuleItemWidget: Let user tab through items, edit and delete them (Prateek Saxena)
+* CapsuleMultiSelectWidget: Edit instead of remove on backspace (Prateek Saxena)
+* CapsuleWidgets: Edit on click and remove on Ctrl+Backspace (Prateek Saxena)
+* CapsuleWidgets: Toggle through capsules and the input with arrow keys (Prateek Saxena)
+* DropdownWidget: Open menu on up and down arrow keys (Prateek Saxena)
+* MenuSelectWidget: Ensure currently selected element is visible when menu opens (Bartosz Dziewoński)
+* SelectFileWidget: Show thumbnail when dropTarget is shown (Prateek Saxena)
+* Really preserve dynamic state of widgets when infusing (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki, Apex themes: Replace 'language' icon with tweaked version (Mun May Tee)
+
+### Code
+* CapsuleItemWidget: Use Button instead of an Indicator (Prateek Saxena)
+* CapsuleMultiSelectWidget: Extend config instead of when setting property (Prateek Saxena)
+* InputWidget: Remove the 'setAccessKey' method (Prateek Saxena)
+* SelectWidget: Really prevent default action during type-to-select (Bartosz Dziewoński)
+* Put '@keyframes' rules inside a mixin to avoid duplicating them (Bartosz Dziewoński)
+* Apex theme: Remove unnecessary '@keyframes' prefixing (Bartosz Dziewoński)
+* Mediawiki theme: Align button mixins/states to CSS guidelines/standard (Volker E)
+* Correct code using plain DOM events documented as jQuery events (Bartosz Dziewoński)
+* demo: Add a long DropdownInputWidget demo (Bartosz Dziewoński)
+* demo: In PHP demo, load oojs-ui-core only instead of whole oojs-ui (Bartosz Dziewoński)
+* demo: Measure time needed to construct the demo (Bartosz Dziewoński)
+* demo: widgets: OO.ui.CapsuleMultiSelectWidget: Remove non-existent 'values' config (Prateek Saxena)
+* docparser: Recognize and ignore '@uses' (Bartosz Dziewoński)
+* docs: OO.ui.CapsuleMultiSelectWidget: Config options (Prateek Saxena)
+* docs: OO.ui.CapsuleMultiSelectWidget: Link to the widget it uses (Prateek Saxena)
+* docs: OO.ui.SelectFileWidget: Minor language change (Prateek Saxena)
+
+
+## v0.15.2 / 2016-02-02
+### Features
+* DropdownWidget: Prevent label from overflowing the handle (Bartosz Dziewoński)
+
+### Styles
+* Ensure gradient filter rendering on IE 8&9 (Bartosz Dziewoński)
+* Remove unused CSS classes .oo-ui-ltr and .oo-ui-rtl (Bartosz Dziewoński)
+* Update `.oo-ui-vertical-gradient` mixin to modern times (Volker E)
+
+### Code
+* Unify SVG icon color values to CSS/Less coding standards (Volker E)
+* ComboBoxInputWidget: Don't make the 'datalist' infusable (Bartosz Dziewoński)
+* Move OO.ui.alert and OO.ui.confirm methods to separate file (Bartosz Dziewoński)
+* README: Add "Loading the library" wherein we apologise for the mess that is the dist/ directory (Bartosz Dziewoński)
+* build: Actually check that all required files are not missing (Bartosz Dziewoński)
+* build: Add intro.js.txt and outro.js.txt to all distribution JS files (Bartosz Dziewoński)
+* build: De-duplicate per-theme modules lists (Bartosz Dziewoński)
+* build: Only define one 'less' task, not one per-distribution (Bartosz Dziewoński)
+* build: Remove unused 'ieCompat' options from 'less' (Bartosz Dziewoński)
+* build: Remove unused 'report' options from 'less' (Bartosz Dziewoński)
+* build: Small modules.yaml tweaks (Bartosz Dziewoński)
+* build: Split the library into four parts (Bartosz Dziewoński)
+* build: Switch modules.json to YAML to document some of the weird stuff we've put in there (Bartosz Dziewoński)
+* build: Unbreak `grunt build --graphics=vector` (Bartosz Dziewoński)
+* build: Update phpunit/phpunit to 4.8 (Paladox)
+* docparser: Parse '@class Foo' annotations, not just '@class' (Bartosz Dziewoński)
+
+
+## v0.15.1 / 2016-01-26
+### Features
+* Really filter out unsafe URLs, but don't throw silly exceptions (Bartosz Dziewoński)
+* ClippableElement: Try to prevent unnecessary scrollbars (Bartosz Dziewoński)
+* Dialog: Don't set `overflow:hidden;` on `.oo-ui-window-body` elements (Alex Monk)
+* TextInputWidget: Don't fail if 'validate' function returns null (Bartosz Dziewoński)
+
+### Styles
+* WindowManager: Only apply `top: 1em; bottom: 1em;` to non-fullscreen windows (Bartosz Dziewoński)
+* Align mixin whitespace to CSS/Less coding guidelines (Volker E)
+* Enable `cursor: pointer` just on enabled widgets (Volker E)
+* Apex, MediaWiki themes: Fix size of templateAdd icon (Ed Sanders)
+* Apex, MediaWiki themes: Quotes icon fixes (Ed Sanders)
+* Apex, MediaWiki themes: Re-crush SVGs, removing useless ID values and empty groups (James D. Forrester)
+* Apex theme: Fix FieldLayout padding in inline mode (Ed Sanders)
+* Apex theme: NumberInputWidget: Fix width of +/- buttons (Ed Sanders)
+* MediaWiki theme: Add invert variant to 'accessibility' icon pack icons (Bartosz Dziewoński)
+* MediaWiki theme: Align `@input-*` vars to coding guidelines (Volker E)
+* MediaWiki theme: Align `rgba()` values to CSS/Less guidelines (Volker E)
+* MediaWiki theme: Align size variables to CSS/Less guidelines (Volker E)
+* MediaWiki theme: Consolidate emphasized color values into variable (Volker E)
+* MediaWiki theme: Establish new `@border-default` variable (Volker E)
+* MediaWiki theme: Make icon variants actually work for all icons (Bartosz Dziewoński)
+* MediaWiki theme: Make transition of text input fields smoother (Volker E)
+* MediaWiki theme: Merge `@oo-ui-toolbar-bar-text` & `@color-default` vars (Volker E)
+* MediaWiki theme: Replace fixed & consolidate disabled values with vars (Volker E)
+* MediaWiki theme: Update avatar icon (Pau Giner)
+
+### Code
+* NumberInputWidget: Replace `box-sizing` property with mixin as anywhere else (Volker E)
+* SelectFileWidget: Order name and type spans in the order they are shown (Prateek Saxena)
+* TextInputWidget: Simplify `#getValidity` (Bartosz Dziewoński)
+* README: Add a 'Contributing' section (James D. Forrester)
+* build: Don't generate .min.js and .min.css files by default (Bartosz Dziewoński)
+* build: Only build one graphics distribution (mixed/vector/raster), not all (Bartosz Dziewoński)
+* build: Update jakub-onderka/php-parallel-lint to 0.9.2 (Paladox)
+* build: Update mediawiki/mediawiki-codesniffer to 0.5.1 (Paladox)
+* demo: Extend compounded form in widget.js demo (Volker E)
+
+## v0.15.0 / 2016-01-12
+### Breaking changes
+* [BREAKING CHANGE] Drop Internet Explorer 8 support from JavaScript code (Ricordisamoa)
+* [BREAKING CHANGE] Delete deprecated aliases 'picture' and 'insert' (Ed Sanders)
+
+### Deprecations
+* [DEPRECATING CHANGE] Create single icon for language/translation (Ed Sanders)
+* [DEPRECATING CHANGE] Move 'redirect' icon to 'articleRedirect' and cleanup (Ed Sanders)
+* [DEPRECATING CHANGE] core: Deprecate add/removeCaptureEventListener (Bartosz Dziewoński)
+
+### Features
+* Send escape key cancel events through action handler (Alex Monk)
+
+### Styles
+* MediaWiki theme: Align variable values & properties to CSS/Less guidelines (Volker E)
+* MediaWiki theme: Align `@neutral-button-border` to CSS/Less guidelines (Volker E)
+* MediaWiki theme: Align `transition` variables with coding guidelines (Volker E)
+* MediaWiki theme: Change color value to Less variable (Volker E)
+* MediaWiki theme: Clarify `@active` variable by renaming it (Volker E)
+* MediaWiki theme: Clarify `@background` var by renaming it (Volker E)
+* MediaWiki theme: Clarify `@select` variable by renaming it (Volker E)
+* MediaWiki theme: Clarify `@text` variable by renaming it (Volker E)
+* MediaWiki theme: Consolidate stray `margin` and `padding` properties (Volker E)
+* MediaWiki theme: Remove unnecessary `@-ms-keyframes` vendor rule (Volker E)
+* MediaWiki theme: Replace fixed `invalid` color value with variable (Volker E)
+* MediaWiki theme: Unify `border` property values (Volker E)
+* MediaWiki theme: Unify `border-radius` values (Volker E)
+* MediaWiki theme: Unify `-disabled` variables usage (Volker E)
+
+### Code
+* core: Add constants for MouseEvent.which button codes (Ed Sanders)
+* demo: Remove IE 8 support (Bartosz Dziewoński)
+* build: Fix typos ("overridden") (Ed Sanders)
+* build: Bump file copyright notices for 2016 (James D. Forrester)
+* build: Update most devDependencies to latest (James D. Forrester)
+* build: Updating development dependencies (Kunal Mehta)
+
+## v0.14.1 / 2015-12-08
+
+### Features
+* Implement OO.ui.alert() and OO.ui.confirm() (Bartosz Dziewoński)
+
+### Styles
+* CapsuleMultiSelectWidget: Interface tweaks (Bartosz Dziewoński)
+* CapsuleMultiSelectWidget: Make the text field span all available area (Bartosz Dziewoński)
+* CapsuleMultiSelectWidget: Update menu position when typing (Bartosz Dziewoński)
+* HorizontalLayout: Synchronise behaviour between themes (Bartosz Dziewoński)
+* Apex theme: Enlarge 'search' icon (Bartosz Dziewoński)
+* MediaWiki theme: Correct text color in MessageDialog, TabOptionWidget (Volker E)
+
+### Code
+* Tool*: Consolidate and cross-link some documentation (Bartosz Dziewoński)
+* Tool*: Expand, correct docs for #onUpdateState and the related event (Bartosz Dziewoński)
+* core.js: Extract a large chunk of the file incorrectly in a closure (Bartosz Dziewoński)
+* Apex, MediaWiki themes: Standardize XML structure for various 'search' images (Bartosz Dziewoński)
+* MediaWiki theme: Add missing theme mixin placeholder (no-op) (Bartosz Dziewoński)
+* build: Test PHP documentation with Doxygen via composer and make pass (James D. Forrester)
+* demo: Quit using the 'image' icon in documentation examples (Bartosz Dziewoński)
+
+## v0.14.0 / 2015-11-24
+### Breaking changes
+* [BREAKING CHANGE] Depend on OOjs v1.1.10, up from v1.1.9 (James D. Forrester)
+* [BREAKING CHANGE] TextInputWidget: Remove old deprecated alias #setPosition (Ed Sanders)
+
+### Deprecations
+* [DEPRECATING CHANGE] De-duplicate 'trash' and 'remove' icons (James D. Forrester)
+
+### Features
+* TextInputWidget: Add insertContent method (Thalia Chan)
+* TextInputWidget: Add encapsulateContent method to insert new content around a selection (Thalia Chan)
+
+### Styles
+* Apex theme: Provide the 'interactions' icon pack (James D. Forrester)
+* MediaWiki theme: Make dialog and panel box-shadows outset rather than inset (Ed Sanders)
+
+### Code
+* FlaggedElement.php: Fix type hint (Reedy)
+* SelectFileWidget: Remove sometimes-incorrect 'title' on the <input> (Bartosz Dziewoński)
+* SelectFileWidget: Use i18n string for button label (Ed Sanders)
+* TextInputWidget: Fix documentation of insertContent method (Thalia Chan)
+* \*.php: Replace `@chainable` jsduck-ism with `@return` $this (Reedy)
+* .gitattributes: Ignore both `/doc` and `/docs` directories (James D. Forrester)
+* AUTHORS: Update for the past few months' work (James D. Forrester)
+* build: Added Rakefile (Željko Filipin)
+
+## v0.13.3 / 2015-11-17
+### Deprecations
+* [DEPRECATING CHANGE] Duplicate icons: Unify 'picture' and 'image' (Ed Sanders)
+
+### Features
+* RequestManager: Introduce a mixin for widgets that need to do API calls (David Lynch)
+* TextInputWidget: Add getRange method (Ed Sanders)
+* WindowManager: Allow getSetup/ReadyProcess to reject (Ed Sanders)
+* WindowManager: Fade in overlay after 'setup' not 'ready' (Ed Sanders)
+
+### Styles
+* MediaWiki, Apex themes: Remove small 0.1em vertical margin from buttons (Bartosz Dziewoński)
+* MediaWiki theme: Add destructive variant to the 'cancel' icon (James D. Forrester)
+* MediaWiki theme: Reduce whitespace between FieldLayouts (Bartosz Dziewoński)
+
+### Code
+* TitledElement: Behave like its docs say it should (David Lynch)
+* Use null for abstract methods and correct documentation (Ed Sanders)
+* demo: Make button style showcase a table (Bartosz Dziewoński)
+
+## v0.13.2 / 2015-11-10
+### Deprecations
+* [DEPRECATING CHANGE] ComboBoxWidget: Refactor into ComboBoxInputWidget (Bartosz Dziewoński)
+* [DEPRECATING CHANGE] MediaWiki, Apex themes: Unify add/insert icons (Ed Sanders)
+
+### Features
+* ComboBoxInputWidget: Implement PHP version (Bartosz Dziewoński)
+* LookupElement: Make auto-highlighting the first term configurable (Florian)
+
+### Styles
+* Add some missing white backgrounds and use variables when possible (Bartosz Dziewoński)
+* MediaWiki theme: Make the menu icon identical to Apex's (Ed Sanders)
+* MediaWiki theme: Specify 'line-height' for DropdownWidget's handle (Bartosz Dziewoński)
+* WikiText icon: Make slightly narrower (Ed Sanders)
+
+### Code
+* Apex theme: Remove dead styles for ComboBoxWidget (Bartosz Dziewoński)
+* build: Make copy:fastcomposerdemos work again (Bartosz Dziewoński)
+
+## v0.13.1 / 2015-11-03
+### Deprecations
+* [DEPRECATING CHANGE] InputWidget: Replace `#setRTL` with `#setDir` (Ed Sanders)
+
+### Features
+* Allow widgets to re-use parts of the DOM when infusing; use for InputWidget's `$input` (Bartosz Dziewoński)
+* FieldLayout: Allow setting errors and notices dynamically (Bartosz Dziewoński)
+* InputWidget: Add '`dir`' to config (Ed Sanders)
+
+### Styles
+* TextInputWidget: Account for scroll bar width when positioning indicators/labels (Ed Sanders)
+* TextInputWidget: Ensure icon+indicator+label are top aligned in multi-line mode (Ed Sanders)
+
+### Code
+* FieldLayout: Mark `#makeMessage` as `@protected` (Bartosz Dziewoński)
+* History.md: wrap `<select>` tag in backticks (Ricordisamoa)
+* tests: Refactor property->attribute copying (Ed Sanders)
+
+## v0.13.0 / 2015-10-27
+### Breaking changes
+* [BREAKING CHANGE] Remove aliases for OO.ui.mixins, deprecated in 0.11.4 (C. Scott Ananian)
+* [BREAKING CHANGE] Turn Element#gatherPreInfuseState into a static method (Bartosz Dziewoński)
+
+### Features
+* Update outline widget when current item is scrolled out of view (Ed Sanders)
+* TextInputWidget: Emit 'resize' events (Ed Sanders)
+* TextInputWidget: Fix scrollbars in `<textarea>`s in IE8-11 (Ed Sanders)
+* TextInputWidget: Improve selection API (Ed Sanders)
+
+### Styles
+* MediaWiki theme: Adjust ToggleSwitchWidget to match M61 design (Volker E)
+* Follow-up I54f1e3c92: Fix placement of cursors on checkbox/radio widgets (Volker E)
+* Follow-up I598e7b25a: Apply MenuToolGroup missing styles fix to Apex theme (Ed Sanders)
+
+### Code
+* Consistently use '`//`' rather than '`/* */`' for Less comments (Bartosz Dziewoński)
+* Remove obsolete Opera<12.1 vendor prefixes (Volker E)
+* Remove unnecessary IE10beta vendor-prefixes from OOjs UI (Volker E)
+* build: Switch back to upstream version of grunt-contrib-concat (Timo Tijhof)
+* build: Updating development dependencies (Kunal Mehta)
+* build: Use my Gmail address for attribution (Timo Tijhof)
+
+## v0.12.12 / 2015-10-13
+### Features
+* CapsuleMultiSelectWidget: When 'allowArbitrary' is true, don't require 'Enter' to confirm (Bartosz Dziewoński)
+* SelectFileWidget: Add a focus method (Ed Sanders)
+
+### Styles
+* CapsuleMultiSelectWidget: Set 'background-color' rather than 'background' (Bartosz Dziewoński)
+* DropdownWidget: Fix vertical alignment of handle's text (Volker E)
+* MediaWiki theme: Get transitions on ButtonWidget's `:hover` states in sync (Volker E)
+* MediaWiki theme: Unbreak checkbox/radio 'cursor: pointer' (Bartosz Dziewoński)
+* MediaWiki theme: Use inverted icon for 'active' buttons (Ed Sanders)
+
+### Code
+* ButtonElement: Actually use 'active' property and add getter (Ed Sanders)
+* Element: Document $element config option (Thalia)
+* composer.json: Add author names & e-mails (Alangi Derick)
+* demo: Correct some typos (Bartosz Dziewoński)
+
+## v0.12.11 / 2015-10-06
+### Styles
+* MediaWiki theme: Make shadows translucent black instead of light grey (Ed Sanders)
+* MediaWiki theme: Make PHP DropdownInputWidget look closer to JS version (Bartosz Dziewoński)
+
+### Code
+* Follow-up I4acbe69420: BookletLayout: Fix focus of page switching (Ed Sanders)
+* IndexLayout: Fix focus of panel switching (Ed Sanders)
+* TextInputWidget: Remove 'autocomplete' attribute on page navigation (Bartosz Dziewoński)
+* build: Bump es5-shim and various devDependencies to master (James D. Forrester)
+
+## v0.12.10 / 2015-09-29
+### Styles
+* Fix icon/indicator padding on TextInputWidget/SelectFileWidget (Ed Sanders)
+
+### Code
+* CapsuleItemWidget: Remove 'click' event preventing (Bartosz Dziewoński)
+* FloatableElement: Don't try unbinding events before we bind them (Bartosz Dziewoński)
+* SelectWidget: Ensure 'choose' never emits null (Ed Sanders)
+* Remove old textInputWidget-decorated classes (Ed Sanders)
+* build: Upgrade MediaWiki-Codesniffer to 0.4.0 (Kunal Mehta)
+
+## v0.12.9 / 2015-09-22
+### Features
+* BookletLayout, IndexLayout: Make autoFocus and focussing more reliable (Bartosz Dziewoński)
+* CapsuleMultiSelectWidget: Allow using CapsuleItemWidget subclasses (Bartosz Dziewoński)
+* CardLayout: Add a 'label' config option (Ed Sanders)
+* FloatableElement: Introduce mixin (Bartosz Dziewoński)
+* FloatingMenuSelectWidget: Update position of menus within overlay while scrolling (Bartosz Dziewoński)
+* IndexLayout: Add 'expanded' option, passed through to StackLayout (Ed Sanders)
+* MenuLayout: Use child selectors to allow nesting menus (Ed Sanders)
+* Re-attempt I31ab2bace4: Try to stop user from tabbing outside of open dialog box (Ed Sanders)
+
+### Styles
+* SelectFileWidget: Move file type over to the right in secondary text colour (Ed Sanders)
+* Fix focus styles on disabled widgets (Volker E)
+* Apex, MediaWiki themes: Make most borders on table icon thinner (Ed Sanders)
+* Apex, MediaWiki themes: Make picture icon border thinner (Ed Sanders)
+* MediaWiki theme: Alter buttons' padding and position icons absolutely (nirzar)
+* MediaWiki theme: Fix height of IndexLayout tab widget (Ed Sanders)
+* MediaWiki theme: Unify box-shadows for PopupWidget and DropdownWidget (Volker E)
+
+### Code
+* #isFocusableElement: Rewrite for performance and correctness (Ed Sanders)
+* BookletLayout: Remove unnecessary JSHint override (Bartosz Dziewoński)
+* DropdownWidget: Update example doc to show #getMenu usage (Ed Sanders)
+* Follow-up bf1497be: Fix PopupToolGroup use of renamed Clippable property (Ed Sanders)
+* PopupWidget: Add missing `@mixins` doc entry (Bartosz Dziewoński)
+* SelectFileWidget: Fix DOM order of file type label (Ed Sanders)
+* Widget: Fix docs for disable event (Ed Sanders)
+* docs: Remove excess empty lines in comments (Bartosz Dziewoński)
+* docs: Add quotes around PROJECT_BRIEF setting (Timo Tijhof)
+
+## v0.12.8.1 / 2015-09-18 (special release)
+### Code
+* build: Update version requirement for mediawiki/at-ease: 1.0.0 → 1.1.0 (Ori Livneh)
+
+## v0.12.8 / 2015-09-08
+### Styles
+* SelectFileWidget: Overflow and ellipsis for label (Ed Sanders)
+* Apex theme: Move transition timing to common variables (Prateek Saxena)
+* MediaWiki theme: Move window transition to `@medium-ease` variable (Prateek Saxena)
+* MediaWiki theme: Add missing `width` and `height` attributes to icons (Ed Sanders)
+* Clean up CSS values in .oo-ui-transition calls (Timo Tijhof)
+* Use 'ease' instead of 'ease-in-out' for CSS transitions (Timo Tijhof)
+
+### Code
+* Toolbar: Prevent double initialization (Roan Kattouw)
+* build: Bump grunt-contrib-jshint from 0.11.2 to 0.11.3 to fix upstream issue (James D. Forrester)
+* build: Upgrade grunt-banana-checker to v0.3.0 (James D. Forrester)
+
+## v0.12.7 / 2015-09-01
+### Deprecations
+* [DEPRECATING CHANGE] SelectFileWidget: Re-design to use a clearly clickable button (Ed Sanders)
+
+### Styles
+* FieldLayout: Don't add `margin-bottom` when in a HorizontalLayout (Florian)
+* SelectFileWidget: Use gray for hover and `@progressive-fade` for drop active (Prateek Saxena)
+* Apex, MediaWiki themes: Fix scale of external link icon (Ed Sanders)
+* Apex, MediaWiki themes: Re-crush all SVG files with SVGO (James D. Forrester)
+* Apex, MediaWiki themes: Reduce size of 'close' icon by 1px (Ed Sanders)
+* Apex, MediaWiki themes: Remove Inkscape-ism from SVG files (James D. Forrester)
+* Apex, MediaWiki themes: Standardise XML prolog for SVG files (Bartosz Dziewoński)
+* MediaWiki theme: Fix viewBox of arrow indicators (Ed Sanders)
+* MediaWiki theme: Fix viewBox of several icons (James D. Forrester)
+
+### Code
+* LookupElement: Really disallow editing of `readOnly` TextInputWidgets (Bartosz Dziewoński)
+* SelectFileWidget: Fix drop and drop hover exception in Firefox (Ed Sanders)
+* SelectFileWidget: Improve type checking (Ed Sanders)
+
+## v0.12.6 / 2015-08-25
+### Features
+* AccessKeyedElement: Introduce (Florian)
+* ButtonOptionWidget: Mixin TitledElement (Bartosz Dziewoński)
+* ClippableElement: Allow $clippableContainer to be different from $clippable (Roan Kattouw)
+* Dialog: Listen for Escape key on $element, not document (Roan Kattouw)
+* InputWidget: Add TitledElement and AccessKeyedElement mixins (Florian)
+* PopupWidget: Make it possible to add static footers (Moriel Schottlender)
+* SelectFileWidget: Add drag drop UI as a config (Prateek Saxena)
+* TextInputWidget: Add moveCursorToEnd() (Roan Kattouw)
+
+### Styles
+* MenuToolGroup: Add some missing styles for tools' 'check' icons (Bartosz Dziewoński)
+* PopupWidget: don't apply header styles to footer (Roan Kattouw)
+* SelectFileWidget: Mute the drag and drop design (Ed Sanders)
+* Add colour to neutral state of MW frameless buttons (Ed Sanders)
+* Editing-advanced icon pack: Add 'calendar' (Bartosz Dziewoński)
+
+### Code
+* DropdownInputWidget: Allow users to pass config options to DropdownWidget (Alex Monk)
+* Theme: Add theme classes to $icon and $indicator only (Bartosz Dziewoński)
+* Use OO.ui.debounce() for Element#updateThemeClasses (Roan Kattouw)
+* Document browser-specific code with support comments (Timo Tijhof)
+* Update OOjs to v1.1.9 (James D. Forrester)
+* Fix file permissions (Southparkfan)
+* Fix inArray test in drag handler (Ed Sanders)
+* Prefer ES5 over jQuery methods (Bartosz Dziewoński)
+* build: Enable jscs rule 'requireSpacesInsideBrackets' and make pass (James D. Forrester)
+* build: Enable jscs rule 'requireVarDeclFirst' and make pass (James D. Forrester)
+* build: Make `quick-build` build the 'mixed' distribution (James D. Forrester)
+* build: Update jscs devDependency from 1.8.0 to 2.1.0 (James D. Forrester)
+* build: Update various devDependencies to latest (James D. Forrester)
+* core: Remove spurious "[description]" placeholder from documentation (Timo Tijhof)
+* demos, tests: Use es5-shim for IE8 compatibility (Bartosz Dziewoński)
+* phpcs.xml: Ignore JS demo files in the PHP distribution (James D. Forrester)
+* testsuitegenerator: Do not generate nonsensical tests for 'maxLength' (Bartosz Dziewoński)
+
+## v0.12.5 / 2015-08-18
+### Features
+* CapsuleMultiSelectWidget: Unbreak $overlay config option (Bartosz Dziewoński)
+* FloatingMenuSelectWidget: Introduce, based on TextInputMenuSelectWidget (Bartosz Dziewoński)
+* FieldLayout: Throw an error if no widget is provided (Prateek Saxena)
+* MessageDialog: Focus primary action button when the dialog opens (Prateek Saxena)
+
+### Styles
+* DropdownWidget: Remove additional vertical margin, for consistency (Bartosz Dziewoński)
+* FieldLayout: Correct rendering of multiline messages in MediaWiki theme (Bartosz Dziewoński)
+* Move base icon/indicator styles out of themes (Roan Kattouw)
+* MediaWiki theme: Correct styling of nested buttons (Bartosz Dziewoński)
+
+### Code
+* DropdownWidget: Add $overlay config option (Bartosz Dziewoński)
+* IconElement, IndicatorElement: Apply base styles to the right selector (Bartosz Dziewoński)
+* Add background-repeat: no-repeat; to default icon/indicator styles (Roan Kattouw)
+* Remove redundant background rules for icons/indicators (Roan Kattouw)
+* Revert "TextInputWidget: Update doc'ed requirements for validate function" (Prtksxna)
+* Don't directly use #addEventListener for compatibility with IE 8 (Bartosz Dziewoński)
+* demos: Add a demo of the $overlay config option of various widgets (Bartosz Dziewoński)
+
+## v0.12.4 / 2015-08-13
+### Styles
+* CapsuleMultiSelectWidget: Style tweaks (Ed Sanders)
+
+### Code
+* MenuSelectWidget: Call #updateItemVisibility in more cases (Bartosz Dziewoński)
+* PopupWidget: Remove 'focusout' handling again, limit to CapsuleMultiSelectWidget (Bartosz Dziewoński)
+
+## v0.12.3 / 2015-08-11
+### Deprecations
+* [DEPRECATING CHANGE] TextInputWidget: Add getValidity function, deprecate isValid (Prateek Saxena)
+
+### Features
+* Add OO.ui.isSafeUrl() to make sure url targets are safe client-side (Kunal Mehta)
+* CapsuleMultiSelectWidget: Introduce (Brad Jorsch)
+* FieldLayout: Allow displaying errors or notices next to fields (Bartosz Dziewoński)
+* HorizontalLayout: Introduce (Bartosz Dziewoński)
+* If ProcessDialog#fitLabel is called before dialog is open, defer (Ed Sanders)
+* Mixin TitledElement into DropdownInputWidget and FieldLayout (Florian)
+* Preserve dynamic state of widgets when infusing (Bartosz Dziewoński)
+* TextInputWidget: Don't forget to positionLabel() after it's been unset (Bartosz Dziewoński)
+
+### Styles
+* FieldLayout: Kill 'list-style-image' too for messages list (Bartosz Dziewoński)
+* PopupToolGroup: Handle popup position on very narrow screens (Ed Sanders)
+* ToggleSwitchWidget: Update according to spec (Prateek Saxena)
+* MediaWiki, Apex themes: Fix height of frameless toolbar button (Ed Sanders)
+* Apex theme: Correct disabled iconed button tool's text colour (Ed Sanders)
+* Revert "Dialog: Increase z-index of .oo-ui-dialog to 1000+" (Ed Sanders)
+
+### Code
+* ButtonOptionWidget: Make it more difficult to set an inappropriate 'tabIndex' (Bartosz Dziewoński)
+* TextInputWidget: Update doc'ed requirements for validate function (Prateek Saxena)
+* TextInputWidget: Use getValidity in setValidityFlag (Prateek Saxena)
+* Element: DWIM when repeatedly infusing the same node (Bartosz Dziewoński)
+* Element: Preserve 'classes' config option through infusion (Bartosz Dziewoński)
+* demo: Make compatible with IE 8 (Bartosz Dziewoński)
+* build: Exclude irrelevant files from Composer PHP package (Timo Tijhof)
+* build: Move phpcs config from composer.json to phpcs.xml (Timo Tijhof)
+* build: Output doxygen to "doc" for consistency with other PHP libraries (Kunal Mehta)
+* build: Switch svg2png to personal build which fixes long lines (James D. Forrester)
+* demos, tests: Use `.parent` instead of `.super` (Bartosz Dziewoński)
+* docparser: Add rudimentary error handling (Bartosz Dziewoński)
+* doxygen: Use default directory for HTML_OUTPUT (Kunal Mehta)
+* tests: Twist the time in comparison tests in a different manner (Bartosz Dziewoński)
+* testsuitegenerator: Output the number of generated test cases (Bartosz Dziewoński)
+
+## v0.12.2 / 2015-07-28
+
+### Styles
+* Dialog: Increase z-index of .oo-ui-dialog to 1000+ (Prateek Saxena)
+* MediaWiki theme: Create new 'accessibility' icon pack (Violetto)
+
+### Code
+* SelectWidget: Fix @mixins documentation (Roan Kattouw)
+* Update OOjs to v1.1.8 (James D. Forrester)
+
+## v0.12.1 / 2015-07-22
+
+### Features
+* PendingElement: Make this actually useful (Roan Kattouw)
+* TextInputWidget: Handle required: true better (Bartosz Dziewoński)
+* TextInputWidget: Handle type: 'search' better (Bartosz Dziewoński)
+
+### Styles
+* PanelLayout: Add some vertical margin when 'padded' and 'framed' (Bartosz Dziewoński)
+* MediaWiki, Apex themes: Add 'clear' indicator (Bartosz Dziewoński)
+* MediaWiki theme: Align colour of toolbar and dropdown buttons (Prateek Saxena)
+
+### Code
+* Window: Compute directionality only when needed (Roan Kattouw)
+* Standardise some common comments (Bartosz Dziewoński)
+* build: Add clean:demos task (Bartosz Dziewoński)
+* build: Add clean:tests task (Bartosz Dziewoński)
+* build: Have copyright header reference "OOjs UI" team (Kunal Mehta)
+* build: Use new grunt-tyops package rather than local original (James D. Forrester)
+* Gruntfile: Fix 'pgk' to 'pkg' and add to typos list (James D. Forrester)
+* package.json: Use proper SPDX license notation (Derk-Jan Hartman)
+
+## v0.12.0 / 2015-07-13
+### Breaking changes
+* [BREAKING CHANGE] SearchWidget: Remove deprecated event re-emission (Ed Sanders)
+
+### Features
+* Allow infusion of widgets in other namespaces (Kunal Mehta)
+* Only allow construction of classes that extend OO.ui.Element in infusion (Kunal Mehta)
+* ButtonInputWidget: Disable generating `<label>` elements (Bartosz Dziewoński)
+* FieldLayout: Support HTML help messages through HtmlSnippet (Kunal Mehta)
+* RadioSelectWidget: Improve accessibility (Bartosz Dziewoński)
+* SelectWidget: Call #chooseItem instead of #selectItem when enter is pressed (Ed Sanders)
+
+### Styles
+* MediaWiki, Apex themes: Add a 'notice' icon, same as the 'alert' indicator (James D. Forrester)
+* MediaWiki, Apex themes: Re-crush with svgo 0.5.3 (James D. Forrester)
+* PopupWidget: Use child selectors to apply rules correctly (Ed Sanders)
+* TextInputWidget: Use 'text' cursor for icon/indicator rather than 'pointer' (Bartosz Dziewoński)
+* Set Scots to use bold-b and italic-i (baud/italeec) (Ed Sanders)
+
+### Code
+* ClippableElement: Fix horizontal clipping in nested scrollable elements (Roan Kattouw)
+* ClippableElement: Only call reconsiderScrollbars() if we actually *stopped* clipping (Roan Kattouw)
+* Follow-up 3ddb3603: unbreak nesting of autosizing or labeled TextInputWidgets (Roan Kattouw)
+* InputWidget: Add additional `<span/>` only for subclasses that need it (Bartosz Dziewoński)
+* LookupElement: Disallow editing of readOnly TextInputWidgets (Bartosz Dziewoński)
+* History: Re-write into new B/D/F/S/C format and clean up (James D. Forrester)
+* build: Don't run phpcs over demos/php (Kunal Mehta)
+* build: Update development dependencies (James D. Forrester)
+* build: Update watch rules (Kunal Mehta)
+
+## v0.11.8 / 2015-07-07
+### Features
+* DropdownInputWidget, RadioSelectInputWidget: Consistently call `#cleanUpValue` (Bartosz Dziewoński)
+* TextInputWidget: Allow setting the HTML autocomplete attribute (Florian)
+* TextInputWidget: Support `rows` option when in multiline mode (Kunal Mehta)
+* Make scroll into view work in scrollable divs in Firefox (Roan Kattouw)
+
+### Styles
+* MediaWiki theme: Remove support for frameless primary buttons (Bartosz Dziewoński)
+
+### Code
+* Use at-ease instead of PHP's @ (Kunal Mehta)
+* Use composer's autoloader in exec:phpGenerateJSPHPForKarma (Kunal Mehta)
+* build: Don't lint demos/{dist,node_modules,vendor} (Kunal Mehta)
+* build: Build demos as part of `grunt build` too (Kunal Mehta)
+* build: Build demos as part of `grunt quick-build` (Kunal Mehta)
+* build: Only build test files (`build-tests` task) when going to run tests (Bartosz Dziewoński)
+* demos: Make self-contained in demos/ directory (Kunal Mehta)
+* tests: Provide better output when running infusion test under Karma (Bartosz Dziewoński)
+
+## v0.11.7 / 2015-07-01
+### Features
+* Element.php: Strip all namespaces from infused PHP widgets (Kunal Mehta)
+* OptionWidget: Explicitly set aria-selected to `false` on init (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Add support for frameless primary buttons (Ed Sanders)
+* MediaWiki theme: Align and center the advanced icon (Roan Kattouw)
+* MediaWiki, Apex themes: Fix styling for frameless process dialog actions (Ed Sanders)
+
+### Code
+* Element.php: Add test case to verify class name in infused widgets (Kunal Mehta)
+* Element.php: Only variables may be passed by reference (Kunal Mehta)
+* Theme.php: Actually make abstract in PHP (Kunal Mehta)
+* Theme.php: Add missing doc comments (Kunal Mehta)
+* documentation: Use bold in comments instead of h4 (Ed Sanders)
+
+## v0.11.6 / 2015-06-23
+### Features
+* NumberInputWidget: Don't use `Math.sign()` (Brad Jorsch)
+* SelectWidget: Fix invalid escape sequence `\s` (Roan Kattouw)
+
+### Styles
+* DropdownWidget: Add white background in MediaWiki theme (Prateek Saxena)
+* SelectFileWidget: Add white background in MediaWiki theme (Prateek Saxena)
+* MediaWiki theme: Add constructive variants for star and unStar icons (Roan Kattouw)
+* MediaWiki theme: Add invert variant to all icons (Roan Kattouw)
+* MediaWiki theme: Add progressive variant to ongoingConversation icon (Stephane Bisson)
+
+### Code
+* Use `.parent` instead of `.super` (Stephane Bisson)
+* build: Updating development dependencies (Kunal Mehta)
+
+## v0.11.5 / 2015-06-16
+### Features
+* ButtonInputWidget: Render frameless button correctly (Bartosz Dziewoński)
+* ComboBoxWidget: Add a getter method for text inputs (Mr. Stradivarius)
+* FieldsetLayout: Make rule for disabled label color more precise (Bartosz Dziewoński)
+* MenuSelectWidget: Explain what the widget config option is for (Roan Kattouw)
+* RadioSelectInputWidget: Unbreak form submission in JS version (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Add destructive variant to check icon (Matthew Flaschen)
+* MediaWiki, Apex themes: Add ongoingConversation icon (Matthew Flaschen)
+
+### Code
+* build: Configure jsonlint (Kunal Mehta)
+
+## v0.11.4 / 2015-06-09
+### Deprecations
+* [DEPRECATING CHANGE] Introduce oo.ui.mixin namespace for mixins, and put them src/mixins (C. Scott Ananian)
+
+### Features
+* ActionFieldLayout: Add PHP version (Bartosz Dziewoński)
+* ButtonWidget: Fix not having tabindex updated when enabled/disabled (Brad Jorsch)
+* ClippableElement: Fix behavior of clippables in nested scrollables (Bartosz Dziewoński)
+* ClippableElement: Fix behavior of long clippables (Bartosz Dziewoński)
+* Dialog: Label in aria terms (Prateek Saxena)
+* DropdownWidget: Adjust height to other widgets (Bartosz Dziewoński)
+* DropdownWidget: Blank widget when no item is selected (Brad Jorsch)
+* Element#reconsiderScrollbars: Preserve scroll position (Bartosz Dziewoński)
+* GroupElement: pass correct event name to disconnect() from aggregate() (Roan Kattouw)
+* NumberInputWidget: Create, for numeric input (Brad Jorsch)
+* NumberInputWidget: Use keydown, not keypress (Brad Jorsch)
+* ProcessDialog: Don't center the title label if there's not enough space (Bartosz Dziewoński)
+* RadioOptionWidget: Control focus more strictly (Bartosz Dziewoński)
+* RadioSelectInputWidget: Create (Bartosz Dziewoński)
+* SelectFileWidget: Create (Brad Jorsch)
+* SelectWidget: Listen to keypresses and jump to matching items (Brad Jorsch)
+* TextInputWidget: Adjust height to other widgets (Bartosz Dziewoński)
+* Widget: Add `#supportsSimpleLabel` static property to control `<label>` usage (Bartosz Dziewoński)
+* Window: Clear margins for actions in horizontal/vertical groups (Ed Sanders)
+* `OOUI\Tag`: Avoid 'Potentially unsafe "href" attribute value' exceptions for relative URLs (Bartosz Dziewoński)
+
+### Styles
+* MessageDialog: Remove unintentional action button margin (Bartosz Dziewoński)
+* styles: Change gradient mixin syntax to W3C standards' syntax (Volker E)
+* styles: Remove obsolete "-ms-linear-gradient" declaration (Volker E)
+* Apex theme: Use matching 'lock' and 'unLock' icons (Bartosz Dziewoński)
+* MediaWiki and Apex themes: Force background color of `<select>` to white (Ed Sanders)
+* MediaWiki and Apex themes: Re-crush SVG files (James D. Forrester)
+
+### Code
+* ActionFieldLayout: Dead code removal and cleanup (Bartosz Dziewoński)
+* BarToolGroup: Add description and example (Kirsten Menger-Anderson)
+* ButtonInputWidget and TextInputWidget: Document and enforce allowed types (Bartosz Dziewoński)
+* DropdownInputWidget: Tweak documentation (Bartosz Dziewoński)
+* InputWidget#getInputElement: Mark as `@protected`, not `@private` (Bartosz Dziewoński)
+* ListToolGroup: Add description and example (Kirsten Menger-Anderson)
+* MenuToolGroup: Add description, example and mark private method (Kirsten Menger-Anderson)
+* PendingElement: Add description (Kirsten Menger-Anderson)
+* PopupTool: Add description and example (Kirsten Menger-Anderson)
+* PopupToolGroup: Add description and mark protected methods (Kirsten Menger-Anderson)
+* Tool: Add description (Kirsten Menger-Anderson)
+* ToolFactory: Add description (Kirsten Menger-Anderson)
+* ToolGroup: Add description and mark protected methods (Kirsten Menger-Anderson)
+* ToolGroupFactory: Add description (Kirsten Menger-Anderson)
+* ToolGroupTool: Add description and example (Kirsten Menger-Anderson)
+* Toolbar: Add description (Kirsten Menger-Anderson)
+* `OOUI\Element::mixins`: Improve doc comment (Kunal Mehta)
+* `OOUI\Tag`: Add basic phpunit tests (Kunal Mehta)
+* build: Update MediaWiki codesniffer to 0.2.0 (Kunal Mehta)
+* build: Updating development dependencies (James D. Forrester)
+* demo: Add 'layout' variable to the consoles (Bartosz Dziewoński)
+* demo: Link JS and PHP demos (Bartosz Dziewoński)
+* docs: Update name of upstream OOjs project in jsduck documentation (C. Scott Ananian)
+* mailmap: Add an additional e-mail for Bartosz per request (James D. Forrester)
+* test: Use -p option to phpcs instead of -v (Kunal Mehta)
+
+## v0.11.3 / 2015-05-12
+### Features
+* BarToolGroup: Don't use "pointer" cursor for disabled tools in enabled toolgroups (Bartosz Dziewoński)
+* Tool: Support icon+label in bar tool groups (Bartosz Dziewoński)
+* ToolGroupTool: Correct opacity of disabled nested tool group handle (Bartosz Dziewoński)
+* ToolGroupTool: Synchronize inner ToolGroup disabledness state (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Add a powerful default text color for tools (Trevor Parscal)
+* MediaWiki theme: Adjust quotes icon to match other icons (nirzar)
+* MediaWiki theme: Give names to some more toolbar colours (Bartosz Dziewoński)
+* MediaWiki theme: Provide all variants of the 'tag' icon (James D. Forrester)
+* MediaWiki theme: Rejigger some toolbar coloring (Bartosz Dziewoński)
+* MediaWiki theme: Remove box-shadow from nested toolbars (Bartosz Dziewoński)
+* MediaWiki theme: Remove unusued toolbar shadow (Trevor Parscal)
+* MediaWiki theme: Update button specification (nirzar)
+
+## v0.11.2 / 2015-05-11
+### Features
+* Don't select lookup items on initialize (Ed Sanders)
+* ListToolGroup, MenuToolGroup: Set accelTooltips = false (Bartosz Dziewoński)
+* PopupWidget: Add setAlignment (Moriel Schottlender)
+* Simplify default action prevention in buttons and forms (Bartosz Dziewoński)
+* TextInputWidget: Allow override of #setValidityFlag (Ed Sanders)
+* TextInputWidget: Use aria-required along with the required attribute (Prateek Saxena)
+
+### Styles
+* TabOptionWidget: Fix disabled styles to not react to hover/select (Ed Sanders)
+* Toolbar: Fix shadow styling (Bartosz Dziewoński)
+* Toolbar: Remove some useless code from the example (Bartosz Dziewoński)
+* Toolbar: Rework example and add 'menu' tool group example (Bartosz Dziewoński)
+* MediaWiki theme: Change highlight color for selected menu option (nirzar)
+* MediaWiki theme: Polish the toolbar design (nirzar)
+* MediaWiki theme: Remove accidentally duplicated styles for SelectWidget (Bartosz Dziewoński)
+
+### Code
+* SelectWidget: Mark as @abstract, which it is (Bartosz Dziewoński)
+* Toolbar: Move some tweaks from demo to actual implementation (Bartosz Dziewoński)
+
+## v0.11.1 / 2015-05-04
+### Features
+* Add IndexLayout (Trevor Parscal)
+* SelectWidget: Add #selectItemByData method (Moriel Schottlender)
+* TextInputWidget: Annotate input validation with aria-invalid (Prateek Saxena)
+* TextInputWidget: Don't set 'invalid' flag on first focus, even if invalid (Bartosz Dziewoński)
+* TextInputWidget: Support 'required' config option in PHP (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Add 'destructive' variant to block icon (Moriel Schottlender)
+* MediaWiki theme: Better vertical alignment of 'search' icon (Ed Sanders)
+* MediaWiki theme: Tweak 'search' icon size (Ed Sanders)
+* MediaWiki theme: Use variable for transition time and easing function (Prateek Saxena)
+* MediaWiki theme: input: Use variable for transition time and easing function (Prateek Saxena)
+* MediaWiki theme: radio/checkbox: Use variable for transition time and easing function (Prateek Saxena)
+* MediaWiki, Apex themes: Switch icons: clear → cancel, closeInput → clear (Bartosz Dziewoński)
+* MediaWiki, Apex themes: Switch over 'magnifyingGlass' icon to be 'search' (James D. Forrester)
+
+### Code
+* CardLayout: Fix typo (Kirsten Menger-Anderson)
+* LabelElement: Document that label config option can take an HtmlSnippet (Roan Kattouw)
+* PopupButtonWidget: Update align config in example (Kirsten Menger-Anderson)
+* Remove GridLayout remnants (Bartosz Dziewoński)
+* TabOptionWidget: Change link to card layout (Kirsten Menger-Anderson)
+* build: Add clean:doc task (Bartosz Dziewoński)
+* build: Bump grunt-jscs to latest version (James D. Forrester)
+* core: Add OO.ui.debounce() utility (Roan Kattouw)
+* demo: Add icons with variants to icons demo (Bartosz Dziewoński)
+
+## v0.11.0 / 2015-04-29
+### Breaking changes
+* [BREAKING CHANGE] Do not set font-size: 0.8em anywhere in the library (Bartosz Dziewoński)
+
+### Deprecations
+* [DEPRECATING CHANGE] Create rtl-ready alignments in PopupWidget (Moriel Schottlender)
+
+### Features
+* MediaWiki theme: Adding variants to several icons (Moriel Schottlender)
+* TextInputWidget: Allow functions to be passed as 'validate' config option (Bartosz Dziewoński)
+
+### Styles
+* TextInputWidget: Styles for 'invalid' flag (Bartosz Dziewoński)
+
+### Code
+* Update OOjs to v1.1.7 (James D. Forrester)
+* Update jQuery from v1.11.1 to v1.11.3 (James D. Forrester)
+* build: Use jquery and oojs from npm instead of embedded lib (Timo Tijhof)
+
+## v0.10.1 / 2015-04-27
+### Features
+* Correct `tabindex` attribute setting (Bartosz Dziewoński)
+* Make toolbars keyboard-accessible (Bartosz Dziewoński)
+
+### Code
+* ToggleButtonWidget: Unbreak horizontal alignment (Bartosz Dziewoński)
+
+## v0.10.0 / 2015-04-22
+### Breaking changes
+* [BREAKING CHANGE] ButtonWidget: remove deprecated `nofollow` option alias (C. Scott Ananian)
+* [BREAKING CHANGE] Convert ToggleWidget from a mixin to an abstract class (Bartosz Dziewoński)
+* [BREAKING CHANGE] MenuLayout: Reimplement without inline styles (Bartosz Dziewoński)
+
+### Deprecations
+
+### Features
+* BarToolGroup: Allow tools with labels instead of icons (Bartosz Dziewoński)
+* BookletLayout: Find first focusable element and add focusable utility (Moriel Schottlender)
+* ButtonWidget: Remove href to make unclickable when disabled (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki, Apex themes: Add viewCompact, viewDetails, visionSimulator icons (Mun May Tee)
+
+### Code
+* ButtonInputWidget: Don't double-mixin FlaggedElement (Bartosz Dziewoński)
+* ButtonWidget: Remove pointless #isHyperlink property (Bartosz Dziewoński)
+* FormLayout: Better document how this works with InputWidgets (Bartosz Dziewoński)
+* MenuLayout: Add example (Kirsten Menger-Anderson)
+* MenuLayout: Fix initialization order (Bartosz Dziewoński)
+* PHP: More useful debugging information on unsafe tag attributes (Chad Horohoe)
+* SelectWidget#getTargetItem: Simplify (Ed Sanders)
+* Toolbar: Add example (Bartosz Dziewoński)
+* demo: Remove VisualEditor references from toolbar demo, use generic icons (Ed Sanders)
+* demo: Remove outline controls from outlined BookletLayout demo (Bartosz Dziewoński)
+* demo: Simplify ButtonGroupWidget and ButtonSelectWidget examples (Bartosz Dziewoński)
+
+## v0.9.8 / 2015-04-12
+### Features
+* BookletLayout: Allow focus on any item (Moriel Schottlender)
+
+### Styles
+* Apex theme: Correctly position popups in RTL; follows-up v0.9.5 (Moriel Schottlender)
+* Apex, MediaWiki themes: Correct or delete unused SVG files (James D. Forrester)
+
+### Code
+* Error: Add description (Kirsten Menger-Anderson)
+* ProcessDialog: Remove stray `this.$` from documentation code example (Roan Kattouw)
+* ProgressBarWidget: Remove spurious styles from CSS output (Bartosz Dziewoński)
+
+* build: Add explicit dependency upon grunt-cli (Kunal Mehta)
+* build: Move coverage output from "/dist/coverage" to "/coverage" (Timo Tijhof)
+* build: Run lint before build in grunt-test (Timo Tijhof)
+* colorize-svg: Generate language-specific rules for images even if equal to default ones (Bartosz Dziewoński)
+* colorize-svg: Sprinkle `/* @noflip */` on language-specific rules (Bartosz Dziewoński)
+* demo: Change html dir property when direction changes (Moriel Schottlender)
+
+## v0.9.7 / 2015-04-03
+### Code
+* build: Generate correct paths to fallback images (Bartosz Dziewoński)
+
+## v0.9.5 / 2015-04-02
+### Deprecations
+* [DEPRECATING CHANGE] Deprecate search widget event re-emission (Ed Sanders)
+
+### Features
+* Process: Allow rejecting with single Error (Matthew Flaschen)
+* Correctly position popups in RTL (Moriel Schottlender)
+
+### Styles
+* ButtonElement: Increase specificity of icon and indicator styles (Bartosz Dziewoński)
+* DecoratedOptionWidget: Fix opacity of icons/indicators when disabled (Ed Sanders)
+
+* Balance padding now that focus highlight is balanced (Ed Sanders)
+* Remove line height reset for windows (Ed Sanders)
+* Restore font family definitions to form elements (Ed Sanders)
+
+* Apex theme: Tweak `check.svg` syntax (Bartosz Dziewoński)
+* MediaWiki, Apex themes: Bring in remaining VisualEditor icons (James D. Forrester)
+* MediaWiki, Apex themes: Provide an RTL variant for the help icon (James D. Forrester)
+* MediaWiki theme: Add vertical spacing to RadioSelectWidget (Ed Sanders)
+* MediaWiki theme: Allow intention flags for non-buttons (Andrew Garrett)
+* MediaWiki theme: Fix icon opacity for disabled ButtonOptionWidgets (Bartosz Dziewoński)
+* MediaWiki theme: Revert "Syncing some button styles with MediaWiki UI" (Bartosz Dziewoński)
+* MediaWiki theme: Use checkbox icon per mockups (Bartosz Dziewoński)
+
+### Code
+* ActionFieldLayout: Add description and example (Kirsten Menger-Anderson)
+* BookletLayout: Add description and example (Kirsten Menger-Anderson)
+* IconWidget: Mix in FlaggedElement (Bartosz Dziewoński)
+* MenuLayout: Correct documentation (Bartosz Dziewoński)
+* OutlineOption: Add description (Kirsten Menger-Anderson)
+* PageLayout: Add description (Kirsten Menger-Anderson)
+* Process: Add description (Kirsten Menger-Anderson)
+* StackLayout: Add description and example (Kirsten Menger-Anderson)
+* Choose can't emit with a null item (Ed Sanders)
+* Refactor icon handling again (Bartosz Dziewoński)
+* build: Add a 'generated automatically' banner to demo.rtl.css (Bartosz Dziewoński)
+* build: Generate prettier task names for 'colorizeSvg' (Bartosz Dziewoński)
+* build: Have separate 'cssjanus' target for demo.rtl.css (Bartosz Dziewoński)
+* build: Make colorize-svg.js actually work more often (Bartosz Dziewoński)
+* build: Properly support LTR/RTL icon versions in colorize-svg.js (Bartosz Dziewoński)
+* build: Simplify 'fileExists' task configuration (Bartosz Dziewoński)
+* build: Support (poorly) per-language icon versions in colorize-svg.js (Bartosz Dziewoński)
+* build: Update grunt-banana-checker to v0.2.1 (James D. Forrester)
+
+## v0.9.4 / 2015-03-25
+### Breaking changes
+
+### Deprecations
+
+### Features
+* ProcessDialog#executeAction: Don't eat parent's return value (Roan Kattouw)
+* Compensate for loss of margin when opening modals (Ed Sanders)
+* Make outline controls' abilities configurable (Trevor Parscal)
+
+### Styles
+* MediaWiki theme: Reduce thickness of toolbar border (Ed Sanders)
+
+### Code
+* ButtonElement: Clarify description (Kirsten Menger-Anderson)
+* ButtonElement: Disable line wrapping on buttons (Ed Sanders)
+* FieldLayout: Clarify description and mark private methods (Kirsten Menger-Anderson)
+* FieldsetLayout: Add description and example (Kirsten Menger-Anderson)
+* FormLayout: Add description, example, and mark private method (Kirsten Menger-Anderson)
+* Layout: Add description (Kirsten Menger-Anderson)
+* LookupElement: Add description and mark private and protected methods (Kirsten Menger-Anderson)
+* LookupElement: Fix typo in docs (Bartosz Dziewoński)
+* MenuLayout: Reorder styles (Bartosz Dziewoński)
+* MenuSectionOptionWidget: Add description and example (Kirsten Menger-Anderson)
+* PanelLayout: Add description and example (Kirsten Menger-Anderson)
+* SearchWidget: Add description and mark private methods (Kirsten Menger-Anderson)
+* TabIndexElement: Mark private method (Kirsten Menger-Anderson)
+
+## v0.9.3 / 2015-03-19
+### Features
+* LookupElement: Add optional config field for suggestions when empty (Matthew Flaschen)
+* ProcessDialog: send an array to showErrors in failed executeAction (Moriel Schottlender)
+
+### Code
+* Dialog: Fix links to static properties (Kirsten Menger-Anderson)
+* DraggableGroupElement: Clarify description and mark private methods (Kirsten Menger-Anderson)
+* Fix code style in `@examples` (Ed Sanders)
+* FlaggedElement: Add example and clarify description (Kirsten Menger-Anderson)
+* GroupElement: Clarify description (Kirsten Menger-Anderson)
+* IndicatorElement: Clarify description (Kirsten Menger-Anderson)
+* MenuSelectWidget: Clarify description (Kirsten Menger-Anderson)
+* TabIndexedElement: Clarify description (Kirsten Menger-Anderson)
+* TitledElement: Clarify description (Kirsten Menger-Anderson)
+* Widget: Clarify description (Kirsten Menger-Anderson)
+* Window: Clarify description of setDimensions method (Kirsten Menger-Anderson)
+* WindowManager: Clarify description and mark private methods (Kirsten Menger-Anderson)
+* Update OOjs to v1.1.6 (James D. Forrester)
+* Add .mailmap file (Roan Kattouw)
+* Add Kirsten to AUTHORS.txt (Roan Kattouw)
+* demo: Add one more toolbars demo (Bartosz Dziewoński)
+
+## v0.9.2 / 2015-03-12
+### Styles
+* Toolbar: Be less aggressive with `white-space: nowrap` (Bartosz Dziewoński)
+
+### Code
+* Window: Revert changes from 521061dd (Bartosz Dziewoński)
+
+## v0.9.1 / 2015-03-11
+### Features
+* PanelLayout: Add `framed` config option (Bartosz Dziewoński)
+* TextInputWidget: Use MutationObserver for #onElementAttach support (Bartosz Dziewoński)
+* Only prevent default for handled keypresses (Brad Jorsch)
+
+### Styles
+* Toolbar: Tighten whitespace on narrow displays (Bartosz Dziewoński)
+* MediaWiki theme: Add the progressive variant to the check icon (Prateek Saxena)
+* MediaWiki theme: Add warning variant to icon set (Mark Holmquist)
+* MediaWiki theme: Add "Wikicon" icons (Mun May Tee)
+* MediaWiki theme: Synchronise button styles between OOJS and MW (nirzar)
+* MediaWiki theme: Syncing some button styles with MediaWiki UI (kaldari)
+* MediaWiki theme: textInputWidget: Update focus state (Prateek Saxena)
+
+### Code
+* ActionSet: Add description for events and clarify method descriptions (Kirsten Menger-Anderson)
+* ActionSet: Clarify description (Kirsten Menger-Anderson)
+* ActionWidget: Clarify description and mark private method (Kirsten Menger-Anderson)
+* ActionWidget: Fix bad copy-paste in documentation (Bartosz Dziewoński)
+* ButtonElement: Use #setButtonElement correctly (Bartosz Dziewoński)
+* ButtonInputWidget: Clarify description of configs and methods (Kirsten Menger-Anderson)
+* Dialog: Mark private methods and add description of methods and configs (Kirsten Menger-Anderson)
+* InputWidget: Clarify description (Kirsten Menger-Anderson)
+* MessageDialog: Add description, example, and mark private methods (Kirsten Menger-Anderson)
+* OutlineControlsWidget: Add description (Kirsten Menger-Anderson)
+* OutlineSelectWidget: Add description (Kirsten Menger-Anderson)
+* ProcessDialog: Add description and example and mark private methods (Kirsten Menger-Anderson)
+* TextInputMenuSelectWidget: Add description and mark private methods (Kirsten Menger-Anderson)
+* TextInputWidget: Adjust size and label on first focus, too (Bartosz Dziewoński)
+* Window: Clarify descriptions of methods and configs (Kirsten Menger-Anderson)
+* WindowManager: Documentation typo (Ed Sanders)
+* Icon width should only be applied if there is an icon (Moriel Schottlender)
+* Remove half-baked touch event handling (Bartosz Dziewoński)
+* Remove remnants of window isolation (Bartosz Dziewoński)
+* AUTHORS: Add Derk-Jan Hartman (Derk-Jan Hartman)
+* build: Implement basic image flipping support in colorize-svg (Bartosz Dziewoński)
+* build: Move pre/post 'doc' task into package.json (Timo Tijhof)
+* build: Remove obsolete 'build' task from grunt-doc (Timo Tijhof)
+* build: Set 'generateExactDuplicates: true' for CSSJanus (Bartosz Dziewoński)
+* demo: Fix typo in toolbars demo (Bartosz Dziewoński)
+* demo: Load styles before building demo widgets (not asynchronously) (Bartosz Dziewoński)
+* demo: Simplify `@media` styles (Bartosz Dziewoński)
+* demo: Use popup with head in the toolbars demo (Bartosz Dziewoński)
+* jsduck: Add MouseEvent and KeyboardEvent to externals (Timo Tijhof)
+* jsduck: Set --processes=0 to fix warnings-exit-nonzero (Timo Tijhof)
+* package.json: Bump grunt-svg2png to 0.2.7 (Bartosz Dziewoński)
+
+## v0.9.0 / 2015-03-04
+### Breaking changes
+* [BREAKING CHANGE] Remove innerOverlay (Ed Sanders)
+* [BREAKING CHANGE] TextInputWidget: Remove `icon` and `indicator` events (Bartosz Dziewoński)
+* [BREAKING CHANGE] Remove deprecated LookupInputWidget (Bartosz Dziewoński)
+* [BREAKING CHANGE] Remove deprecated GridLayout (Bartosz Dziewoński)
+
+### Features
+* Move `OO.ui.infuse` to `OO.ui.Element.static.infuse`. (C. Scott Ananian)
+* Fake toolbar group nesting (Bartosz Dziewoński)
+* Infer retry button action flags from symbolic name (Trevor Parscal)
+* InputWidget: Focus checkboxes and radios, too, when the label is clicked (Bartosz Dziewoński)
+* ProcessDialog: Dismiss errors on teardown (Moriel Schottlender)
+
+### Styles
+* Make icon and indicator container sizes consistent (Ed Sanders)
+* Restore previous toolbar items margins and padding (Bartosz Dziewoński)
+* Use the correct color for gray buttons (Prateek Saxena)
+
+### Code
+* CheckboxInputWidget: Add description and example (Kirsten Menger-Anderson)
+* ComboBoxWidget: Add description, example, and mark private methods (Kirsten Menger-Anderson)
+* DecoratedOptionWidget: Add description and example (Kirsten Menger-Anderson)
+* DropdownInputWidget: Add description, example, and mark private method (Kirsten Menger-Anderson)
+* FieldLayout: Fix display of documentation's bulleted list (Kirsten Menger-Anderson)
+* GroupWidget and ItemWidget: Mark `private` (Kirsten Menger-Anderson)
+* IndicatorWidget: Add description and example (Kirsten Menger-Anderson)
+* LabelElement: Don't call constructor twice for ActionFieldLayouts (Roan Kattouw)
+* LabelWidget: Add description, example, and mark private method (Kirsten Menger-Anderson)
+* PopupElement: Add description (Kirsten Menger-Anderson)
+* PopupTool: Tool constructor takes a toolGroup, not a toolbar (Bartosz Dziewoński)
+* PopupWidget: Add description, example, and mark private methods (Kirsten Menger-Anderson)
+* PopupWidget: Add keydown listener and hide popup on ESC (Prateek Saxena)
+* ProgressBar: Add description and example (Kirsten Menger-Anderson)
+* RadioInputWidget: Add description and example (Kirsten Menger-Anderson)
+* SelectWidget: Add example and link to decorated option widget (Kirsten Menger-Anderson)
+* SelectWidget: Marked protected methods and clarified choose/press descriptions (Kirsten Menger-Anderson)
+* TextInputWidget: Add description, example, and mark private methods (Kirsten Menger-Anderson)
+* ToggleButtonWidget: Add description, example, and mark private method (Kirsten Menger-Anderson)
+* ToggleSwitchWidget: Add description, example, and mark private methods (Kirsten Menger-Anderson)
+* ToggleWidget: Add description (Kirsten Menger-Anderson)
+* Fix invalid use of border shorthand syntax (Timo Tijhof)
+* Only modify body class when first/last window opens/closes (Ed Sanders)
+* Use only two variables each for each semantic color (Prateek Saxena)
+* build: Add disconnect tolerance to karma config (James D. Forrester)
+* build: Remove footer override from jsduck (Timo Tijhof)
+* demo: Add PopupTool to toolbar demo (Bartosz Dziewoński)
+* demo: Call Toolbar#initialize in toolbar demo (Bartosz Dziewoński)
+* tests: Add infusion tests (Bartosz Dziewoński)
+* tests: Run JS/PHP tests for widgets with required parameters, too (Bartosz Dziewoński)
+
+## v0.8.3 / 2015-02-26
+### Features
+* Revert "Unbreak form submission in JavaScript" (Bartosz Dziewoński)
+
+## v0.8.2 / 2015-02-26
+### Features
+* PHP TitledElement: Actually set $this->title (Bartosz Dziewoński)
+* PHP PanelLayout: Fix getConfig() for `expanded` config option (Bartosz Dziewoński)
+
+### Code
+* testsuitegenerator: Exclude 'text' parameter from tests, like 'content' (Bartosz Dziewoński)
+* WindowManager: Don't pass `this` to window factory method (Bartosz Dziewoński)
+
+## v0.8.1 / 2015-02-25
+### Deprecations
+* [DEPRECATING CHANGE] Rename setPosition to setLabelPosition (Ed Sanders)
+
+### Features
+* Allow passing positional parameters inside the config object (Bartosz Dziewoński)
+* ComboBox: Use combobox role (Derk-Jan Hartman)
+* Element.php: Add "data" property (C. Scott Ananian)
+* Element.php: Add "text" configuration option (C. Scott Ananian)
+* Element: Add `content` config option, matching PHP side. (C. Scott Ananian)
+* FormLayout: Allow adding child layouts via config (Bartosz Dziewoński)
+* Implement OO.ui.infuse to reconstitute PHP widgets in client-side JS (C. Scott Ananian)
+* Serialize PHP widget state into data-ooui attribute (C. Scott Ananian)
+* TextInputWidget: Fix appearance of icons and labels when disabled (Ed Sanders)
+* Unbreak form submission in JavaScript (Bartosz Dziewoński)
+
+### Styles
+* Set proper spacing between interleaved FieldsetLayouts and FormLayouts (Bartosz Dziewoński)
+* MediaWiki theme: Drop unnecessary pseudo-element of CheckboxInputWidget (Timo Tijhof)
+* MediaWiki theme: Drop unnecessary pseudo-element of RadioInputWidget (Timo Tijhof)
+* MediaWiki theme: Simplify spacing of checkboxes/radios in FieldLayouts (Bartosz Dziewoński)
+
+### Code
+* ButtonOptionWidget: Add description (Kirsten Menger-Anderson)
+* ButtonSelectWidget: Add description and example (Kirsten Menger-Anderson)
+* DraggableElement: Mark private methods and add description to events (Kirsten Menger-Anderson)
+* Element.php: Tweak docs (Bartosz Dziewoński)
+* Element: Add description for configs and static property (Kirsten Menger-Anderson)
+* Error: Fix function name (Bartosz Dziewoński)
+* Fix typo: contian → contain (Bartosz Dziewoński)
+* FlaggedElement: Add description of event and config option (Kirsten Menger-Anderson)
+* Follow-up bade83bfdfc: actually remove ../ (Roan Kattouw)
+* IconElement: Add description for config options (Kirsten Menger-Anderson)
+* IconElement: Add description of methods (Kirsten Menger-Anderson)
+* IndicatorElement: Add description for configs and static properties (Kirsten Menger-Anderson)
+* LabelElement: Add description, config description, static property description (Kirsten Menger-Anderson)
+* MenuOptionWidget: Add description (Kirsten Menger-Anderson)
+* MenuSelectWidget: Add description and mark protected method (Kirsten Menger-Anderson)
+* Move toggle() from Widget to Element (Moriel Schottlender)
+* OptionWidget: Add description and descriptions of methods (Kirsten Menger-Anderson)
+* PopupButtonWidget: Add description and example and mark private method (Kirsten Menger-Anderson)
+* Prefer OO.isPlainObject to $.isPlainObject (Bartosz Dziewoński)
+* RadioOptionWidget: Add description (Kirsten Menger-Anderson)
+* RadioOptionWidget: Make disabling single options work (Bartosz Dziewoński)
+* RadioSelectWidget: Add description and example (Kirsten Menger-Anderson)
+* Remove '$: this.$' from code examples (Bartosz Dziewoński)
+* Remove loop length check (Ed Sanders)
+* SelectWidget: Add description for config, methods, events (Kirsten Menger-Anderson)
+* TabIndexelement: Add description, example, and mark private method (Kirsten Menger-Anderson)
+* TitledElement: Add description and config and static descriptions (Kirsten Menger-Anderson)
+* Update OOjs to v1.1.5 (James D. Forrester)
+* Work around Safari 8 mis-rendering checkboxes in SVG-only distribution (Bartosz Dziewoński)
+* build: Give docparser.rb Ruby 1.9.3 compatibility (Bartosz Dziewoński)
+* build: Include 'lib' and 'dist' in jsduck output (Timo Tijhof)
+* build: Teach docparser about `@member`, `@see`, and PHP pass-by-reference (`&$foo`). (C. Scott Ananian)
+* build: Unbreak docparser.rb (Bartosz Dziewoński)
+* build: Use grunt-contrib-copy instead of custom 'copy' task (Timo Tijhof)
+* composer.json: Add description field (Kunal Mehta)
+* demo: Add disabled RadioInputWidget to demo (Bartosz Dziewoński)
+* tests: Add "composer test" command to lint PHP files and run phpcs (Kunal Mehta)
+* tests: Reduce timeout in Process test from 100 to 10 (Timo Tijhof)
+* tests: Run JS/PHP comparison tests using karma (Bartosz Dziewoński)
+
+## v0.8.0 / 2015-02-18
+### Breaking changes
+* [BREAKING CHANGE] Make default distribution provide SVG with PNG fallback (Bartosz Dziewoński)
+
+### Deprecations
+* [DEPRECATING CHANGE] ButtonWidget: Rename nofollow config option to noFollow (C. Scott Ananian)
+* [DEPRECATING CHANGE] TextInputWidget: Deprecate `icon` and `indicator` events (Bartosz Dziewoński)
+
+### Features
+* TabIndexedElement: Allow tabIndex property to be null (C. Scott Ananian)
+* TextInputWidget: Allow maxLength of 0 in JS (matching PHP) (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Add focus state for frameless button (Prateek Saxena)
+* MediaWiki theme: Fix border width for frameless buttons' focus state (Prateek Saxena)
+* MediaWiki theme: Resynchronize PHP with JS (Bartosz Dziewoński)
+* MediaWiki theme: Use white icons for disabled buttons (Bartosz Dziewoński)
+
+### Code
+* ActionSet: Add `@private` to onActionChange method (Kirsten Menger-Anderson)
+* ActionSet: Add description and example (Kirsten Menger-Anderson)
+* ActionSet: Add description for specialFlags property (Kirsten Menger-Anderson)
+* ActionWidget: Add description (Kirsten Menger-Anderson)
+* Add missing ButtonInputWidget.less and corresponding mixin (Bartosz Dziewoński)
+* ButtonElement: Add description (Kirsten Menger-Anderson)
+* ButtonElement: add `protected` to event handlers (Kirsten Menger-Anderson)
+* ButtonGroupWidget: Add description and example (Kirsten Menger-Anderson)
+* ButtonInputWidget: Add description and example (Kirsten Menger-Anderson)
+* ButtonWidget: Add example and link (Kirsten Menger-Anderson)
+* Dialog: Add description and example (Kirsten Menger-Anderson)
+* DraggableElement: Add description (Kirsten Menger-Anderson)
+* DraggableGroupElement: Add description (Kirsten Menger-Anderson)
+* DropdownWidget: Add `@private` to private methods (Kirsten Menger-Anderson)
+* DropdownWidget: Add description and example (Kirsten Menger-Anderson)
+* DropdownWidget: Simplify redundant code (Bartosz Dziewoński)
+* Element: Add description (Kirsten Menger-Anderson)
+* FieldLayout: Add description (Kirsten Menger-Anderson)
+* FieldLayout: Clean up and remove lies (Bartosz Dziewoński)
+* FlaggedElement: Add description (Kirsten Menger-Anderson)
+* Follow-up 6a6bb90ab: Update CSS file path in eg-iframe.html (Roan Kattouw)
+* Follow-up c762da42: fix ProcessDialog error handling (Roan Kattouw)
+* GroupElement: Add description (Kirsten Menger-Anderson)
+* IconElement: Add description (Kirsten Menger-Anderson)
+* IconElement: Add description and fix display of static properties (Kirsten Menger-Anderson)
+* IconWidget: Add description and example (Kirsten Menger-Anderson)
+* IndicatorElement: Add description (Kirsten Menger-Anderson)
+* InputWidget: Add description (Kirsten Menger-Anderson)
+* PHP: Remove redundant documentation for getInputElement() (Bartosz Dziewoński)
+* Refactor keyboard accessibility of SelectWidgets (Bartosz Dziewoński)
+* SelectWidget: Add description (Kirsten Menger-Anderson)
+* Some documentation tweaks (Bartosz Dziewoński)
+* TextInputWidget: Add missing LabelElement mixin documentation (Ed Sanders)
+* TextInputWidget: Don't add label position classes when there's no label (Bartosz Dziewoński)
+* TextInputWidget: Hide mixin components when unused (Ed Sanders)
+* TextInputWidget: Only put $label in the DOM if needed (Bartosz Dziewoński)
+* TextInputWidget: Use margins for moving the label (Ed Sanders)
+* Update PHP widgets for accessibility-related changes in JS widgets (Bartosz Dziewoński)
+* Use Array.isArray instead of $.isArray (C. Scott Ananian)
+* Various fixes to the PHP implementation (C. Scott Ananian)
+* Widget: Add description (Kirsten Menger-Anderson)
+* Window: Add description (Kirsten Menger-Anderson)
+* WindowManager: Add description (Kirsten Menger-Anderson)
+* build: Pass RuboCop, customize settings (Bartosz Dziewoński)
+* demo: Add horizontal alignment test (Bartosz Dziewoński)
+* PHP demo: Correct path to CSS files (Bartosz Dziewoński)
+* tests: Update JS/PHP comparison test suite (Bartosz Dziewoński)
+* docparser: Add support for `protected` methods (Bartosz Dziewoński)
+* docs: Make `@example` documentation tag work (Roan Kattouw)
+* tests: Fix the check for properties (Bartosz Dziewoński)
+* testsuitegenerator: Only test every pair of config options rather than every triple (Bartosz Dziewoński)
+
+## v0.7.0 / 2015-02-11
+### Breaking changes
+* [BREAKING CHANGE] Remove window isolation (Trevor Parscal)
+
+### Deprecations
+* [DEPRECATING CHANGE] GridLayout should no longer be used, instead use MenuLayout (Bartosz Dziewoński)
+
+### Features
+* ButtonWidget: Add `nofollow` option (C. Scott Ananian)
+* ButtonWidget: Better handle non-string parameters in setHref/setTarget (C. Scott Ananian)
+* PopupWidget: Set $clippable only once, correctly (Bartosz Dziewoński)
+* SelectWidget: `listbox` wrapper role, `aria-selected` state on contents (Derk-Jan Hartman)
+* TabIndexedElement: Actually allow tabIndex of -1 (Bartosz Dziewoński)
+* TextInputWidget: Add required attribute on the basis of required config (Prateek Saxena)
+* TextInputWidget: Use aria-hidden for extra autosize textarea (Prateek Saxena)
+* ToggleSwitchWidget: Accessibility improvements (Bartosz Dziewoński)
+
+### Styles
+* FieldsetLayout: Tweak positioning of help icon (Bartosz Dziewoński)
+* Fade in window frames separately from window overlays (Ed Sanders)
+* MediaWiki theme: Consistent toggle button `active` state (Bartosz Dziewoński)
+* MediaWiki theme: Correct flagged primary button text color when pressed (Bartosz Dziewoński)
+* MediaWiki theme: Fix background color for disabled buttons (Prateek Saxena)
+* MediaWiki theme: Fix non-clickability of radios and checkboxes (Bartosz Dziewoński)
+* MediaWiki theme: Rename `@active` to `@pressed` in button mixins (Prateek Saxena)
+* MediaWiki theme: Rename `@highlight` to `@active` (Prateek Saxena)
+* MediaWiki theme: Rename active-* variables to pressed-* (Prateek Saxena)
+* MediaWiki theme: Use darker color for frameless buttons (Prateek Saxena)
+* MediaWiki theme: Use distribution's image type for backgrounds (Bartosz Dziewoński)
+
+### Code
+* ButtonWidget: Add documentation (Kirsten Menger-Anderson)
+* {Checkbox,Radio}InputWidget: Add missing configuration initialization (Bartosz Dziewoński)
+* DraggableGroupElement: Cleanup unreachable code (Moriel Schottlender)
+* DraggableGroupElement: Make sure it supports button widgets (Moriel Schottlender)
+* DraggableGroupElement: Unset dragged item when dropped (Moriel Schottlender)
+* Delete unused src/themes/apex/{raster,vector}.less (Bartosz Dziewoński)
+* DropdownInputWidget: Fix undefined variable in PHP (Bartosz Dziewoński)
+* DropdownWidget, ComboBoxWidget: Make keyboard-accessible (Bartosz Dziewoński)
+* Fix initialisation of window visible (Ed Sanders)
+* Fix text input auto-height calculation (Ed Sanders)
+* ListToolGroup: Remove hack for jQuery's .show()/.hide() (Bartosz Dziewoński)
+* MenuSelectWidget: Codify current behavior of Tab closing the menu (Bartosz Dziewoński)
+* MenuSelectWidget: Don't clobber other events when unbinding (Bartosz Dziewoński)
+* MenuSelectWidget: Remove dead code (Bartosz Dziewoński)
+* OptionWidgets: Make better use of `scrollIntoViewOnSelect` (Bartosz Dziewoński)
+* PopupElement: Correct documentation (Bartosz Dziewoński)
+* RadioOptionWidget: Make it a `<label />` (Bartosz Dziewoński)
+* Refactor clickability of buttons (Bartosz Dziewoński)
+* Remove usage of `this.$` and `config.$` (Trevor Parscal)
+* Stop treating ApexTheme class unfairly and make it proper (Bartosz Dziewoński)
+* TextInputMenuSelectWidget: Correct documentation (Bartosz Dziewoński)
+* build: Bump various devDependencies (James D. Forrester)
+* demo: Add button style showcase from PHP demo (Bartosz Dziewoński)
+* demo: Reorder widgets into somewhat logical groupings (Bartosz Dziewoński)
+* demo: Stop inline consoles from generating white space (Bartosz Dziewoński)
+* demo: Use properties instead of attributes for `<link>` (Timo Tijhof)
+* PHP demo: Add Vector/Raster and MediaWiki/Apex controls (Bartosz Dziewoński)
+* PHP demo: Just echo the autoload error message, don't trigger_error() (Bartosz Dziewoński)
+* PHP demo: Resynchronize with JS demo (Bartosz Dziewoński)
+* History: Fix date typos (James D. Forrester)
+* tests: Just echo the autoload error message, don't trigger_error() (Bartosz Dziewoński)
+* tools.less: Use distribution's image type and path for background (Prateek Saxena)
+
+## v0.6.6 / 2015-02-04
+### Features
+* BookletLayout#toggleOutline: Fix to use MenuLayout method (Ed Sanders)
+* Remove disabled elements from keyboard navigation flow (Derk-Jan Hartman)
+* TextInputWidget: Mostly revert "Don't try adjusting size when detached" (Bartosz Dziewoński)
+* Use CSS overriding trick to support RTL in menu layouts (Ed Sanders)
+
+### Styles
+* Use standard border colours for progress bars (Ed Sanders)
+
+### Code
+* Use css class instead of jQuery .show()/hide()/toggle() (Moriel Schottlender)
+* build: Use karma to v0.12.31 (Timo Tijhof)
+
+## v0.6.5 / 2015-02-01
+### Code
+* ButtonElement: Unbreak 'pressed' state (Bartosz Dziewoński)
+* Make BookletLayout inherit from MenuLayout instead of embedding a GridLayout (Ed Sanders)
+
+## v0.6.4 / 2015-01-30
+### Features
+* Add inline labels to text widgets (Ed Sanders)
+* BookletLayout: Make sure there is a page before focusing (Moriel Schottlender)
+* DropdownInputWidget: Introduce (Bartosz Dziewoński)
+* InputWidget: Resynchronize our internal .value with DOM .value in #getValue (eranroz)
+* Seriously work around the Chromium scrollbar bug for good this time (Bartosz Dziewoński)
+* TabIndexedElement: Introduce and use (Bartosz Dziewoński)
+* TextInputWidget: Accept `maxLength` configuration option (Bartosz Dziewoński)
+* MenuLayout: Introduce (Ed Sanders)
+* Window#updateSize: Add simpler API (Ed Sanders)
+
+### Styles
+* ActionFieldLayout: Add `nowrap` to the button (Moriel Schottlender)
+* FieldsetLayout: Add help icon (Moriel Schottlender)
+* Fix opening/closing animation on windows (Roan Kattouw)
+* OptionWidget: Unbreak 'pressed' state (Bartosz Dziewoński)
+* Provide default margins for buttons and other widgets (Bartosz Dziewoński)
+* MenuSelectWidget and OptionWidget: Remove the 'flash' feature (Bartosz Dziewoński)
+* MediaWiki theme: Adjust ButtonSelectWidget, ButtonGroupWidget highlights (Prateek Saxena)
+* MediaWiki theme: Adjust MenuOptionWidget selected state (Bartosz Dziewoński)
+* MediaWiki theme: Fix background issues with disabled buttons (Roan Kattouw)
+* MediaWiki theme: Reduce size of checkboxes and radio buttons by 20% (Ed Sanders)
+* MediaWiki theme: Remove SearchWidget's border now dialogs have outline (Ed Sanders)
+* MediaWiki theme: Tweak some more border-radii (Bartosz Dziewoński)
+* MediaWiki theme: Unbreak disabled buttons (Bartosz Dziewoński)
+
+### Code
+* ButtonOptionWidget: Add the TabIndexedElement mixin (Derk-Jan Hartman)
+* InputWidget: Clarify documentation of #getInputElement (Bartosz Dziewoński)
+* PopupButtonWidget: Set aria-haspopup to true (Prateek Saxena)
+* Remove labelPosition check (Ed Sanders)
+* Set input direction in html prop rather than css rule (Moriel Schottlender)
+* TextInputWidget: Don't try adjusting size when detached (Bartosz Dziewoński)
+* TextInputWidget: Remove superfluous role=textbox (Derk-Jan Hartman)
+* ToggleButtonWidget: Set aria-pressed when changing value (Derk-Jan Hartman)
+* ToggleWidget: Use aria-checked (Prateek Saxena)
+* Twiddle things (Ed Sanders)
+* Update OOjs to v1.1.4 and switch to the jQuery-optimised version (James D. Forrester)
+* Widget: Set aria-disabled too in #setDisabled (Derk-Jan Hartman)
+* AUTHORS: Update for the last six months' work (James D. Forrester)
+* build: Bump devDependencies and fix up (James D. Forrester)
+* demo: Have multiline text in multiline widgets (Bartosz Dziewoński)
+* demo: Remove nonexistent 'align' config option for a DropdownWidget (Bartosz Dziewoński)
+
+## v0.6.3 / 2015-01-14
+### Deprecations
+* [DEPRECATING CHANGE] LookupInputWidget should no longer be used, instead use LookupElement
+
+### Features
+* Add an ActionFieldLayout (Moriel Schottlender)
+* Replace old&busted LookupInputWidget with new&hot LookupElement (Bartosz Dziewoński)
+
+### Styles
+* dialog: Provide a 'larger' size for things for which 'large' isn't enough (James D. Forrester)
+* Synchronize ComboBoxWidget and DropdownWidget styles (Bartosz Dziewoński)
+* MediaWiki theme: Adjust toolbar popups' border and shadows (Bartosz Dziewoński)
+* MediaWiki theme: Don't use 'box-shadow' to produce thin grey lines in dialogs (Bartosz Dziewoński)
+
+### Code
+* Toolbar: Update #initialize docs (Bartosz Dziewoński)
+* demo: Switch the default theme from 'Apex' to 'MediaWiki' (Ricordisamoa)
+
+## v0.6.2 / 2015-01-09
+### Features
+* Clear windows when destroying window manager (Ed Sanders)
+* Element: Add support for 'id' config option (Bartosz Dziewoński)
+* TextInputWidget: Add support for 'autofocus' config option (Bartosz Dziewoński)
+
+### Styles
+* Add 'lock' icon (Trevor Parscal)
+* Make `@anchor-size` a LESS variable and calculate borders from it (Ed Sanders)
+* MediaWiki theme: Slightly reduce size of indicator arrows (Ed Sanders)
+* MediaWiki theme: Remove text-shadow on  button (Prateek Saxena)
+* MediaWiki theme: Fix focus state for buttons (Prateek Saxena)
+* MediaWiki theme: Add state change transition to checkbox (Prateek Saxena)
+* MediaWiki theme: Fix disabled state of buttons (Prateek Saxena)
+* MediaWiki theme: Fix overlap between hover and active states (Prateek Saxena)
+
+### Code
+* Don't test abstract classes (Bartosz Dziewoński)
+* PHP LabelElement: Actually allow non-plaintext labels (Bartosz Dziewoński)
+* Synchronize `@abstract` class annotations between PHP and JS (Bartosz Dziewoński)
+* WindowManager#removeWindows: Documentation fix (Ed Sanders)
+* tests: Don't overwrite 'id' attribute (Bartosz Dziewoński)
+* testsuitegenerator.rb: Handle inheritance chains (Bartosz Dziewoński)
+
+## v0.6.1 / 2015-01-05
+### Styles
+* FieldsetLayout: Shrink size of label and bump the weight to compensate (James D. Forrester)
+
+### Code
+* Remove use of `Math.round()` for offset and position pixel values (Bartosz Dziewoński)
+* ButtonElement: Inherit all 'font' styles, not only 'font-family' (Bartosz Dziewoński)
+* IndicatorElement: Fix 'indicatorTitle' config option (Bartosz Dziewoński)
+* Error: Unmark as `@abstract` (Bartosz Dziewoński)
+* JSPHP-suite.json: Update (Bartosz Dziewoński)
+* build: Update various devDependencies (James D. Forrester)
+* readme: Update badges (Timo Tijhof)
+* readme: No need to put the same heading in twice (James D. Forrester)
+
+## v0.6.0 / 2014-12-16
+### Breaking changes
+* [BREAKING CHANGE] PopupToolGroup and friends: Pay off technical debt (Bartosz Dziewoński)
+
+### Features
+* Prevent parent window scroll in modal mode using overflow hidden (Ed Sanders)
+* ClippableElement: Handle clipping with left edge (Bartosz Dziewoński)
+
+### Styles
+* ButtonGroupWidget: Remove weird margin-bottom: -1px; from theme styles (Bartosz Dziewoński)
+* MediaWiki theme: RadioInputWidget tweaks (Bartosz Dziewoński)
+
+### Code
+* Sprinkle some child selectors around in BookletLayout styles (Roan Kattouw)
+
+## v0.5.0 / 2014-12-12
+### Breaking changes
+* [BREAKING CHANGE] FieldLayout: Handle 'inline' alignment better (Bartosz Dziewoński)
+* [BREAKING CHANGE] Split primary flag into primary and progressive (Trevor Parscal)
+* [BREAKING CHANGE] CheckboxInputWidget: Allow setting HTML 'value' attribute (Bartosz Dziewoński)
+
+### Features
+* Element.getClosestScrollableContainer: Use 'body' or 'documentElement' based on browser (Prateek Saxena)
+* Give non-isolated windows a tabIndex for selection holding (Ed Sanders)
+* Call .off() correctly in setButtonElement() (Roan Kattouw)
+
+### Styles
+* FieldLayout: In styles, don't assume that label is given (Bartosz Dziewoński)
+* PopupWidget: Remove box-shadow rule that generates invisible shadow (Bartosz Dziewoński)
+* TextInputWidget: Set vertical-align: middle, like buttons (Bartosz Dziewoński)
+* MediaWiki theme: Add hover state to listToolGroup (Trevor Parscal)
+* MediaWiki theme: Add radio buttons (Prateek Saxena)
+* MediaWiki theme: Add state transition to radio buttons (Prateek Saxena)
+* MediaWiki theme: Add thematic border to the bottom of toolbars (Bartosz Dziewoński)
+* MediaWiki theme: Copy .theme-oo-ui-outline{Controls,Option}Widget from Apex (Bartosz Dziewoński)
+* MediaWiki theme: Extract @active-color variable (Bartosz Dziewoński)
+* MediaWiki theme: Improve search widget styling (Trevor Parscal)
+* MediaWiki theme: Make button sizes match Apex (Trevor Parscal)
+* MediaWiki theme: Use gray instead of blue for select and highlight (Trevor Parscal)
+* MediaWiki theme: checkbox: Fix states according to spec (Prateek Saxena)
+
+### Code
+* Account for `<html>` rather than `<body>` being the scrollable root in Chrome (Bartosz Dziewoński)
+* ClippableElement: 7 is a better number than 10 (Bartosz Dziewoński)
+* Don't set line-height of unset button labels (Bartosz Dziewoński)
+* FieldLayout: Synchronise PHP with JS (Bartosz Dziewoński)
+* FieldLayout: Use `<label>` for this.$body, not this.$element (Bartosz Dziewoński)
+* Fix primary button description text (Niklas Laxström)
+* GridLayout: Don't round to 1% (Bartosz Dziewoński)
+* Kill the escape keydown event after handling a window close (Ed Sanders)
+* RadioInputWidget: Remove documentation lies (Bartosz Dziewoński)
+* Temporarily remove position:absolute on body when resizing (Ed Sanders)
+* build: Use String#slice instead of discouraged String#substr (Timo Tijhof)
+* testsuitegenerator: Actually filter out non-unique combinations (Bartosz Dziewoński)
+* README.md: Drop localisation update auto-commits from release notes (James D. Forrester)
+* README.md: Point to Phabricator, not Bugzilla (James D. Forrester)
+
+## v0.4.0 / 2014-12-05
+### Breaking changes
+* [BREAKING CHANGE] Remove deprecated Element#onDOMEvent and #offDOMEvent (Bartosz Dziewoński)
+* [BREAKING CHANGE] Make a number of Element getters static (Bartosz Dziewoński)
+* [BREAKING CHANGE] Rename BookletLayout#getPageName → #getCurrentPageName (Bartosz Dziewoński)
+
+### Features
+* IconElement: Add missing #getIconTitle (Bartosz Dziewoński)
+
+### Styles
+* Follow-up I859ff276e: Add cursor files to repo (Trevor Parscal)
+
+### Code
+* SelectWidget: Rewrite #getRelativeSelectableItem (Bartosz Dziewoński)
+* demo: Don't put buttons in a FieldsetLayout without FieldLayouts around them (Bartosz Dziewoński)
+
+## v0.3.0 / 2014-12-04
+### Breaking changes
+* [BREAKING CHANGE] ButtonWidget: Don't default 'target' to 'blank' (Bartosz Dziewoński)
+
+### Features
+* InputWidget: Update DOM value before firing 'change' event (Bartosz Dziewoński)
+
+### Styles
+* MediaWiki theme: Reduce indentation in theme-oo-ui-checkboxInputWidget (Prateek Saxena)
+
+### Code
+* Adding DraggableGroupElement and DraggableElement mixins (Moriel Schottlender)
+* Remove window even if closing promise rejects (Ed Sanders)
+* TextInputWidget: Reuse a single clone instead of appending and removing new ones (Prateek Saxena)
+* Fix lies in documentation (Trevor Parscal)
+* build: Have grunt watch run 'quick-build' instead of 'build' (Prateek Saxena)
+
+## v0.2.4 / 2014-12-02
+### Features
+* MessageDialog: Fit actions again when the dialog is resized (Bartosz Dziewoński)
+* Window: Avoid height flickering when resizing dialogs (Bartosz Dziewoński)
+
+### Code
+* TextInputWidget: Use .css( propertyName, value ) instead of .css( properties) for single property (Prateek Saxena)
+* TextInputWidget: Stop adjustSize if the value of the textarea is the same (Prateek Saxena)
+
+## v0.2.3 / 2014-11-26
+### Features
+* BookletLayout: Make #focus not crash when there are zero pages or when there is no outline (Roan Kattouw)
+* Dialog: Only handle escape events when open (Alex Monk)
+* Pass original event with TextInputWidget#enter (Ed Sanders)
+* MessageDialog: Add Firefox hack for scrollbars when sizing dialogs (Bartosz Dziewoński)
+* MessageDialog: Actually correctly calculate and set height (Bartosz Dziewoński)
+* Window: Disable transitions when changing window height to calculate content height (Bartosz Dziewoński)
+
+### Code
+* Add missing documentation to ToolFactory (Ed Sanders)
+* Fix RadioOptionWidget demos (Trevor Parscal)
+* RadioOptionWidget: Remove lies from documentation (Trevor Parscal)
+* RadioOptionWidget: Increase rule specificity to match OptionWidget (Bartosz Dziewoński)
+
+## v0.2.2 / 2014-11-25
+### Features
+* MessageDialog: Fit actions after updating window size, not before (Bartosz Dziewoński)
+* ProcessDialog, MessageDialog: Support iconed actions (Bartosz Dziewoński)
+
+### Styles
+* Remove padding from undecorated option widgets (Ed Sanders)
+
+### Code
+* LabelWidget: Add missing documentation for input configuration option (Ed Sanders)
+* MessageDialog: Use the right superclass (Bartosz Dziewoński)
+* build: Add .npmignore (Timo Tijhof)
+
+## v0.2.1 / 2014-11-24
+
+### Features
+* Add focus method to BookletLayout (Roan Kattouw)
+* Start the window opening transition before ready, not after (Roan Kattouw)
+
+### Code
+* LabelElement: Kill inline styles (Bartosz Dziewoński)
+* Add missing History.md file now we're a proper repo (James D. Forrester)
+* readme: Update introduction, badges, advice (James D. Forrester)
+* composer: Rename package to 'oojs-ui' and require php 5.3.3 (Timo Tijhof)
+
+## v0.2.0 / 2014-11-17
+* First versioned release
+
+## v0.1.0 / 2013-11-13
+* Initial export of repo
diff --git a/resources/lib/oojs-ui/LICENSE-MIT b/resources/lib/oojs-ui/LICENSE-MIT
new file mode 100644 (file)
index 0000000..8f0984c
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright 2011-2018 OOUI Team and other 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.
diff --git a/resources/lib/oojs-ui/README.md b/resources/lib/oojs-ui/README.md
new file mode 100644 (file)
index 0000000..6e98d42
--- /dev/null
@@ -0,0 +1,152 @@
+[![npm](https://img.shields.io/npm/v/oojs-ui.svg?style=flat)](https://www.npmjs.com/package/oojs-ui) [![Packagist](https://img.shields.io/packagist/v/oojs/oojs-ui.svg?style=flat)](https://packagist.org/packages/oojs/oojs-ui) [![David](https://img.shields.io/david/dev/wikimedia/oojs-ui.svg?style=flat)](https://david-dm.org/wikimedia/oojs-ui#info=devDependencies)
+
+OOUI
+=================
+
+OOUI is a component-based JavaScript UI library. Key features:
+
+* Common widgets, layouts, and dialogs
+* Classes, elements, and mixins to create custom interfaces
+* Internationalization and localization, like right-to-left (RTL) languages support
+* Theme-ability
+* Built-in icons
+* Accessibility features
+
+It is the standard library for Web products at the Wikimedia Foundation, having been originally created for use by [VisualEditor](https://www.mediawiki.org/wiki/VisualEditor).
+
+
+Quick start
+----------
+
+The library is available on [npm](https://www.npmjs.com/package/oojs-ui). To install:
+
+<pre lang="bash">
+$ npm install oojs-ui
+</pre>
+
+Once installed, include the following scripts and styles to get started:
+
+<pre lang="html">
+<script src="node_modules/jquery/dist/jquery.min.js"></script>
+<script src="node_modules/oojs/dist/oojs.min.js"></script>
+
+<script src="node_modules/oojs-ui/dist/oojs-ui.min.js"></script>
+<script src="node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js"></script>
+<link rel="stylesheet" href="node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css">
+</pre>
+
+
+Loading the library
+-------------------
+
+While the distribution directory is chock-full of files, you will normally load only the following three:
+
+* `oojs-ui.js`, containing the full library;
+* One of `oojs-ui-wikimediaui.css` or `oojs-ui-apex.css`, containing theme-specific styles; and
+* One of `oojs-ui-wikimediaui.js` or  `oojs-ui-apex.js`, containing theme-specific code
+
+You can load additional icon packs from files named `oojs-ui-wikimediaui-icons-*.css` or `oojs-ui-apex-icons-*.css`.
+
+The remaining files make it possible to load only parts of the whole library.
+
+Furthermore, every CSS file has a right-to-left (RTL) version available, to be used on pages using right-to-left languages if your environment doesn't automatically flip them as needed.
+
+
+Issue tracker
+-------------
+
+Found a bug or missing feature? Please report it in our [issue tracker Phabricator](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5)!
+
+
+Contributing
+------------
+
+We are always delighted when people contribute patches. To setup your development environment:
+
+
+1. Clone the repo: `$ git clone https://phabricator.wikimedia.org/diffusion/GOJU/oojs-ui.git oojs-ui`
+
+2. Move into the library directory:<br>`$ cd oojs-ui`
+
+3. Install [composer](https://getcomposer.org/download/) and make sure running `composer` will execute it (*e.g.* add it to `$PATH` in POSIX environments).
+
+4. Install dev dependencies:<br>`$ npm install`
+
+5. Build the library (you can alternatively use `grunt quick-build` if you don't need to rebuild the PNGs):<br>`$ grunt build`
+
+6. You can see a suite of demos in `/demos` by executing:<br>`$ npm run-script demos`
+
+7. You can also copy the distribution files from the dist directory into your project.
+
+
+We use [Gerrit](https://gerrit.wikimedia.org/) for code review, and [Phabricator](https://phabricator.wikimedia.org) to track issues. To contribute patches or join discussions all you need is a [developer account](https://wikitech.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Help%3AGetting+Started).
+
+* If you've found a bug, or wish to request a feature [raise a ticket on Phabricator](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5).
+* To submit your patch, follow [the "getting started" quick-guide](https://www.mediawiki.org/wiki/Gerrit/Getting_started). We try to review patches within a week.
+* We automatically lint and style-check changes to JavaScript, PHP, LESS/CSS, Ruby and JSON files. You can test these yourself with `npm test` and `composer test` locally before pushing changes. SVG files should be squashed in advance of committing with [SVGO](https://github.com/svg/svgo) using `svgo --pretty --disable=removeXMLProcInst --disable=cleanupIDs <filename>`.
+
+A new version of the library is released most weeks on Tuesdays.
+
+Community
+---------
+
+Get updates, ask questions and join the discussion with maintainers and contributors:
+
+* Join the Wikimedia Developers mailing list, [wikitech-l](https://lists.wikimedia.org/mailman/listinfo/wikitech-l).
+* Chat with the maintainers on `#wikimedia-dev` on `irc.freenode.net`.
+* Ask questions on [StackOverflow](https://stackoverflow.com/tags/oojs-ui/info).
+* Watchlist the [documentation](https://www.mediawiki.org/wiki/OOUI) on MediaWiki to stay updated.
+
+
+Versioning
+----------
+
+We use the [Semantic Versioning guidelines](http://semver.org/).
+
+Releases will be numbered in the following format:
+
+`<major>.<minor>.<patch>`
+
+
+Release
+----------
+
+Release process:
+<pre lang="bash">
+
+    $ cd path/to/oojs-ui/
+    $ git remote update
+    $ git checkout -B release -t origin/master
+
+    # Ensure tests pass
+    $ npm install && composer update && npm test && composer test
+
+    # Avoid using "npm version patch" because that creates
+    # both a commit and a tag, and we shouldn't tag until after
+    # the commit is merged.
+
+    # Update release notes
+    # Copy the resulting list into a new section at the top of History.md and edit
+    # into five sub-sections, in order:
+    # * Breaking changes
+    # * Deprecations
+    # * Features
+    # * Styles
+    # * Code
+    $ git log --format='* %s (%aN)' --no-merges --reverse v$(node -e 'console.log(require("./package.json").version);')...HEAD | grep -v "Localisation updates from" | sort
+    $ edit History.md
+
+    # Update the version number
+    $ edit package.json
+
+    $ git add -p
+    $ git commit -m "Tag vX.X.X"
+    $ git review
+
+    # After merging:
+    $ git remote update
+    $ git checkout origin/master
+    $ git tag "vX.X.X"
+    $ npm run publish-build && git push --tags && npm publish
+
+</pre>
index 5b2e8b5..acbb6ea 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index fdba426..bb7f81c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 .oo-ui-element-hidden {
   display: none !important;
index 7bd45ff..697389a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 /**
  * WikimediaUI Base v0.10.0
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
   right: 1.07142857em;
 }
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button {
   padding-right: 2.28571429em;
 }
 .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button {
index 0b1b8db..68f2098 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index 495a6c6..1e4c07d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
index 682ce9a..47d3d1b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 /**
  * WikimediaUI Base v0.10.0
@@ -25,6 +25,9 @@
   padding-top: 3em;
   padding-left: 3em;
 }
+.oo-ui-toolbar-narrow .oo-ui-tool .oo-ui-tool-link {
+  padding-left: 2.85714286em;
+}
 .oo-ui-tool-with-label .oo-ui-tool-link {
   padding: 1em 0.85714286em 0.92857143em 2.64285714em;
 }
@@ -32,6 +35,9 @@
   display: block;
   left: 0.78571429em;
 }
+.oo-ui-toolbar-narrow .oo-ui-tool.oo-ui-iconElement .oo-ui-iconElement-icon {
+  left: 0.71428571em;
+}
 .oo-ui-tool .oo-ui-tool-title {
   line-height: 1.07142857em;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.iconElement > .oo-ui-tool-link > .oo-ui-iconElement-icon {
   display: block;
 }
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool + .oo-ui-tool {
+  margin-left: -2px;
+}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool:not( .oo-ui-toolGroupTool ).oo-ui-widget-enabled:hover {
   background-color: #eaecf0;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
   text-align: right;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup {
+  min-width: 2.85714286em;
+}
 .oo-ui-popupToolGroup.oo-ui-indicatorElement:not( .oo-ui-labelElement ):not( .oo-ui-iconElement ) {
   min-width: 1.85714286em;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
   left: 0.78571429em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+  left: 0.71428571em;
+}
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
   background-position: center 52%;
   right: 0.57142857em;
 .oo-ui-popupToolGroup.oo-ui-iconElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle {
   padding-left: 3em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle {
+  padding-left: 2.85714286em;
+}
 .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle {
   padding: 1em 0.85714286em 0.92857143em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
   line-height: 1.07142857em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle {
+  padding-left: 0.71428571em;
+  padding-right: 0.71428571em;
+}
 .oo-ui-popupToolGroup.oo-ui-iconElement.oo-ui-labelElement .oo-ui-popupToolGroup-handle {
   padding-left: 2.64285714em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement.oo-ui-labelElement .oo-ui-popupToolGroup-handle {
+  padding-left: 2.5em;
+}
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle {
   padding-right: 1.85714286em;
 }
   font-weight: bold;
   line-height: 2.28571429em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-header {
+  padding: 0 0.71428571em;
+}
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
   margin: 0 -1px;
   border: 1px solid #c8ccd1;
 .oo-ui-popupToolGroup .oo-ui-tool-link {
   padding: 1em 0.85714286em 0.92857143em 2.64285714em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup .oo-ui-tool-link {
+  padding-left: 0.71428571em;
+  padding-right: 2.5em;
+}
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
   color: #222;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
   padding-left: 1.28571429em;
 }
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
+  padding-left: 1.14285714em;
+}
 .oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle {
   -webkit-transition: background-color 100ms, box-shadow 100ms;
   -moz-transition: background-color 100ms, box-shadow 100ms;
   display: block;
 }
 .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 10em;
+  min-width: 140px;
 }
 .oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8.125em;
+  min-width: 100px;
 }
 .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
   left: 0.78571429em;
 }
+.oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
+  left: 0.71428571em;
+}
 .oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
   background-image: url('themes/wikimediaui/images/icons/check-progressive.png');
   background-image: linear-gradient(transparent, transparent), /* @embed */ url('themes/wikimediaui/images/icons/check-progressive.svg');
index d7648e1..ee544f4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index 9e993fa..1a70415 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 .oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
   cursor: move;
index c624b7f..a2a68f0 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 /**
  * WikimediaUI Base v0.10.0
index fd0bdb7..851ab78 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index 6390d24..a0ef60e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index ed76bab..6dbb690 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
   background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
index 3072cd4..f7a8889 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:57Z
+ * Date: 2018-03-23T23:42:37Z
  */
 /**
  * WikimediaUI Base v0.10.0
index ea54286..3deb893 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOUI v0.26.0
+ * OOUI v0.26.1
  * https://www.mediawiki.org/wiki/OOUI
  *
  * Copyright 2011–2018 OOUI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2018-03-21T00:00:53Z
+ * Date: 2018-03-23T23:42:32Z
  */
 ( function ( OO ) {
 
index 9da9a9a..ac82608 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/add.png and b/resources/lib/oojs-ui/themes/apex/images/icons/add.png differ
index 16bbc99..5b4150c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png differ
index 8304ec7..edf80c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/alert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/alert.png differ
index 1be58bf..b09651c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/align-center.png and b/resources/lib/oojs-ui/themes/apex/images/icons/align-center.png differ
index ad9bbe4..f0dd447 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/align-float-left.png and b/resources/lib/oojs-ui/themes/apex/images/icons/align-float-left.png differ
index 883bb15..d6fb51e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/align-float-right.png and b/resources/lib/oojs-ui/themes/apex/images/icons/align-float-right.png differ
index f575047..a7af684 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png differ
index eae0120..0ccf493 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-rtl.png differ
index d6d16e3..d91da8a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/arrow-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/arrow-ltr.png differ
index 92ba994..e44dcc0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/arrow-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/arrow-rtl.png differ
index 6070cfe..107e87d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/article-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/article-ltr.png differ
index 8906a9e..feed7df 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/article-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/article-rtl.png differ
index 3adc30c..95442fb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-ltr.png differ
index 0052a61..d6eac19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png differ
index 52bb7e6..52cd354 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/articles-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/articles-ltr.png differ
index 6a99ad3..20763c6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/articles-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/articles-rtl.png differ
index 46737dd..8edd8f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/attachment-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/attachment-ltr.png differ
index 5295f44..e2d4c9a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/attachment-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/attachment-rtl.png differ
index 00794d0..82a3a1e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bell.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bell.png differ
index 35928c4..cbc59a3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png differ
index c9d575f..094c113 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png differ
index b8a4489..0f245a3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/block.png and b/resources/lib/oojs-ui/themes/apex/images/icons/block.png differ
index 1e1ab9b..a2ace06 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-a.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-a.png differ
index a00c977..bddf4ad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png differ
index 2337956..01f712b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png differ
index 6f3cb87..9c5873d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png differ
index dbbd6fc..56c6096 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-b.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-b.png differ
index 752b4b6..7485d5e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-be.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-be.png differ
index e57ee31..fbd5eff 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-te.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-te.png differ
index 756a2cd..b0a464d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png differ
index 215d9c1..01d61c8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-f.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-f.png differ
index 208fdab..cb80bae 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png differ
index cd4c0f2..37305e9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-geor-man.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-geor-man.png differ
index 516cc6b..13a6226 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-l.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-l.png differ
index 65cebd3..ac6e9a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-n.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-n.png differ
index 4b15fdb..4dbbded 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-v.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-v.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark.png
new file mode 100644 (file)
index 0000000..9399069
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark.svg
new file mode 100644 (file)
index 0000000..db34702
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="2 2 20 20"><path fill-rule="evenodd" d="M5 21l7-6 7 6V3H5z"/></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.png
new file mode 100644 (file)
index 0000000..3539af0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmarkOutline.svg
new file mode 100644 (file)
index 0000000..87a5f46
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="2 2 20 20"><path fill-rule="evenodd" d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z"/></svg>
\ No newline at end of file
index 83c52af..3d35657 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bright-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bright-invert.png differ
index 830e81c..49d185e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bright.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bright.png differ
index 06d1ff1..240b0f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr.png differ
index c6f69d9..4d14c0a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl.png differ
index 80b49ef..3af0708 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.png differ
index 3db0958..45ec775 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.png differ
index ec179e4..f0a891b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/cancel.png and b/resources/lib/oojs-ui/themes/apex/images/icons/cancel.png differ
index c2f1a17..cfa0007 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png and b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png differ
index 8d6aecb..d8dd554 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/check.png and b/resources/lib/oojs-ui/themes/apex/images/icons/check.png differ
index c97990d..75b26c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clear.png and b/resources/lib/oojs-ui/themes/apex/images/icons/clear.png differ
index f660f04..c8ce717 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clock.png and b/resources/lib/oojs-ui/themes/apex/images/icons/clock.png differ
index f2a05fa..6591baa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/close.png and b/resources/lib/oojs-ui/themes/apex/images/icons/close.png differ
index 7682bde..0c8ffd3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/code.png and b/resources/lib/oojs-ui/themes/apex/images/icons/code.png differ
index b323d41..26af9f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/collapse.png and b/resources/lib/oojs-ui/themes/apex/images/icons/collapse.png differ
index 2994127..8e5af06 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/comment.png and b/resources/lib/oojs-ui/themes/apex/images/icons/comment.png differ
index cb31939..c76552e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png and b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png differ
index 4acde31..2c0c94e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/downTriangle.png and b/resources/lib/oojs-ui/themes/apex/images/icons/downTriangle.png differ
index 0fa8b43..470c757 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/draggable.png and b/resources/lib/oojs-ui/themes/apex/images/icons/draggable.png differ
index 4f22816..a4d57ee 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/edit-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/edit-ltr.png differ
index 76a228e..1c0271b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/edit-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/edit-rtl.png differ
index 73527ae..cec6b0a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/editLock-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/editLock-ltr.png differ
index 0f232d2..2884813 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/editLock-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/editLock-rtl.png differ
index 9aa9f36..d526899 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/editUndo-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/editUndo-ltr.png differ
index 1b76aff..56cb523 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/editUndo-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/editUndo-rtl.png differ
index aa39110..2a1ae2f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis.png and b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis.png differ
index a65e1f1..5d7661c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/expand.png and b/resources/lib/oojs-ui/themes/apex/images/icons/expand.png differ
index 858f334..8c24cb9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png differ
index 1ac8895..b1304ca 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png differ
index f5e9317..3bbcaef 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/eye-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/eye-invert.png differ
index ff32725..fda76ba 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/eye.png and b/resources/lib/oojs-ui/themes/apex/images/icons/eye.png differ
index b0fcbf4..45ad80b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed-invert.png differ
index 72afb14..5c49e1f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed.png and b/resources/lib/oojs-ui/themes/apex/images/icons/eyeClosed.png differ
index 8988177..978f483 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png differ
index 60dda1d..d2645f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png differ
index bf3ce49..bb5fa19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png differ
index 0b6f28c..78c69a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png differ
index 46ea625..1098123 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/flag-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/flag-ltr.png differ
index b37fde7..a2f54f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/flag-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/flag-rtl.png differ
index b600ed2..a3cebae 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/fullScreen.png and b/resources/lib/oojs-ui/themes/apex/images/icons/fullScreen.png differ
index b0f8896..d3aa6fc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr.png differ
index 44b127f..3937572 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl.png differ
index c42e502..cba532e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/halfBright-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/halfBright-invert.png differ
index 58681b2..848b00c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/halfBright.png and b/resources/lib/oojs-ui/themes/apex/images/icons/halfBright.png differ
index d31906d..c2661e4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png differ
index 93d1852..81542e7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png differ
index 262b6aa..10af28e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/heart.png and b/resources/lib/oojs-ui/themes/apex/images/icons/heart.png differ
index da07de7..11b15f6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr.png differ
index 194a8a4..88cb8d8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl.png differ
index af5b274..64e14e1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png differ
index 97d8875..57ac82c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png differ
index 559a12b..930febe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/history.png and b/resources/lib/oojs-ui/themes/apex/images/icons/history.png differ
index b8e9e53..1496edc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/image.png and b/resources/lib/oojs-ui/themes/apex/images/icons/image.png differ
index 6510626..d8a8dd7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-ltr.png differ
index 1eac6bd..d885f3e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-rtl.png differ
index fcaef8c..b0246e7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png differ
index 87d6c81..69f5384 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/indent-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/indent-rtl.png differ
index d4d3f22..b7b265f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/info.png and b/resources/lib/oojs-ui/themes/apex/images/icons/info.png differ
index bec33a9..819a103 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-a.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-a.png differ
index 3125a37..e4b244c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png differ
index 1e8c009..b4d0719 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png differ
index 8add002..0ac6142 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png differ
index 39d642e..9a9f486 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png differ
index fa6fac5..5e629d2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png differ
index 47db347..f13c78e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-e.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-e.png differ
index e43f042..adfab04 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png differ
index 46c0d3d..450159f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-i.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-i.png differ
index 5638210..8829461 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-k.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-k.png differ
index 540586c..7f2b983 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png differ
index 6cd1634..f8448eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png differ
index 7887a98..00817a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png differ
index 7dd6c73..0047a10 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr.png differ
index 8cd2872..2f6199e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl.png differ
index f132572..f90e611 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr.png differ
index 87ab1fd..50f43ee 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl.png differ
index 5451a3e..d5d7b27 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png differ
index 45d0876..b55fd2e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png differ
index 8b480b3..5cba2b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr-invert.png differ
index 37adfac..8ec00b7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/largerText-ltr.png differ
index 1667bfb..0d2d5ac 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl-invert.png differ
index 9a0a118..c37d0f9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/largerText-rtl.png differ
index 867a4af..fed0c7c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/layout-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/layout-ltr.png differ
index 48dec87..ad393be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/layout-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/layout-rtl.png differ
index 435b4fb..1364e81 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/lightbulb.png and b/resources/lib/oojs-ui/themes/apex/images/icons/lightbulb.png differ
index b61c64d..f7b291b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/link.png and b/resources/lib/oojs-ui/themes/apex/images/icons/link.png differ
index ec32a03..67b934f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png differ
index 53cca9f..5c9958c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-rtl.png differ
index 2d7e789..489d330 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png differ
index 3f88e3b..f4d6d4d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-rtl.png differ
index 4b85d92..2c31d8e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/lock.png and b/resources/lib/oojs-ui/themes/apex/images/icons/lock.png differ
index b8471f5..2dcceb7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr.png differ
index ea09d2c..97f3d66 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl.png differ
index f193df0..d78fe76 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/markup.png and b/resources/lib/oojs-ui/themes/apex/images/icons/markup.png differ
index 7ec166f..6b362cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/menu.png and b/resources/lib/oojs-ui/themes/apex/images/icons/menu.png differ
index 87bfadb..0414b24 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/message-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/message-ltr.png differ
index b9c41ce..04ae71c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/message-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/message-rtl.png differ
index 37132cf..f3e8f0c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/moon-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/moon-invert.png differ
index 50c8f22..78ba58d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/moon.png and b/resources/lib/oojs-ui/themes/apex/images/icons/moon.png differ
index aee0d5a..440e463 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png differ
index abe2561..3d6d860 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png differ
index 35266e3..60f8e55 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/move-ltr.png differ
index 3b4a6fb..ed6bb4b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.png differ
index 019db2d..eafcf89 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/move.png and b/resources/lib/oojs-ui/themes/apex/images/icons/move.png differ
index bd0a0f0..b7c84ae 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr.png differ
index 19a5781..e176822 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl.png differ
index 1481519..7c2f8c3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newline-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/newline-ltr.png differ
index f372ea6..0af44f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newline-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/newline-rtl.png differ
index 196404f..ddb93f1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-ltr.png differ
index 269c1d2..546b3ed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-rtl.png differ
index 710e104..bcacd39 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/notBright-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/notBright-invert.png differ
index 63c8b4b..2335bf1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/notBright.png and b/resources/lib/oojs-ui/themes/apex/images/icons/notBright.png differ
index f896f16..c6f14a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/notice.png and b/resources/lib/oojs-ui/themes/apex/images/icons/notice.png differ
index d72507c..2d58a18 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-ltr.png differ
index 1762fee..7a2b204 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/ongoingConversation-rtl.png differ
index 88c2fe8..f388d6c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png differ
index b7dc3a5..b79163e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/outdent-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/outdent-rtl.png differ
index d338647..97da340 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/outline-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/outline-ltr.png differ
index d95c5c2..b9cbc71 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/outline-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/outline-rtl.png differ
index 4ef70aa..b9b63bb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/play-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/play-ltr.png differ
index 8668215..e2326ff 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/play-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/play-rtl.png differ
index be5d342..28f4549 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr.png differ
index 4e45a21..095002a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl.png differ
index ee16cbd..930ed72 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png and b/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png differ
index 830fb61..2239d84 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/puzzle.png and b/resources/lib/oojs-ui/themes/apex/images/icons/puzzle.png differ
index d2900db..cade753 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png differ
index d38c58e..40e2e08 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png differ
index a667da3..026e720 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png and b/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png differ
index b328ee1..8a79896 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/reload-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/reload-ltr.png differ
index 5f9e8f0..4a78c5c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/reload-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/reload-rtl.png differ
index 4a3dd25..06db1e5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png differ
index f4beac3..2af7c70 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png differ
index 8a44a92..316d765 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png and b/resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png differ
index 8417273..a1623dc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/settings.png and b/resources/lib/oojs-ui/themes/apex/images/icons/settings.png differ
index c573a1d..4c14d32 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/signature-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/signature-ltr.png differ
index fa8a8ba..aa48bd4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/signature-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/signature-rtl.png differ
index b171606..a50e408 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png differ
index 37519e1..6852c92 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png differ
index 6d92dd1..5025f4d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr-invert.png differ
index 7f0dc40..7beb441 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-ltr.png differ
index a37da91..14e568b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl-invert.png differ
index ebede2b..1be8282 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smallerText-rtl.png differ
index 3f840ca..cd5dadf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png differ
index 6f1668d..95273a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-ltr.png differ
index a0d12ff..d1472f1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubble-rtl.png differ
index c648b59..6a93d9f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-ltr.png differ
index 87a3037..22d9a67 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbleAdd-rtl.png differ
index 0021c1e..dd11de0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-ltr.png differ
index 1ded7a1..97988a8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/speechBubbles-rtl.png differ
index 19978c6..b2c3df7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/star.png and b/resources/lib/oojs-ui/themes/apex/images/icons/star.png differ
index 9ea464e..8035917 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stop.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stop.png differ
index d998bd4..0673e00 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-a.png and b/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-a.png differ
index df0ac61..9345049 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png and b/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png differ
index 0265330..82f17cb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-y.png and b/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-y.png differ
index e08b863..0f088bb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png differ
index e20589a..5a28b1b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png differ
index 9a4150f..4f3767d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png differ
index a422187..713a501 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png differ
index 3789e25..42cbfc7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png differ
index 2bf0bb5..5877ddd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png differ
index 1d90efa..d6aa4e6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/subscript-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/subscript-ltr.png differ
index 1e85b9a..cab01b2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/subscript-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/subscript-rtl.png differ
index ed25d15..9b07a86 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/subtract.png and b/resources/lib/oojs-ui/themes/apex/images/icons/subtract.png differ
index 7f2200d..9c33986 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/superscript-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/superscript-ltr.png differ
index d4022fb..1442f50 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/superscript-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/superscript-rtl.png differ
index 9881c61..615814a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-caption.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-caption.png differ
index 9f97be7..a344992 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-ltr.png differ
index ccb5f2b..173fd4e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-column-rtl.png differ
index 11b7b4c..08617e8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-after.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-after.png differ
index 4d5922b..75bc199 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-before.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-insert-row-before.png differ
index 2ce4e3e..59280bc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table-merge-cells.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table-merge-cells.png differ
index 00a9e1d..12c49ce 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table.png differ
index ee5d8bb..184914b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/tag.png and b/resources/lib/oojs-ui/themes/apex/images/icons/tag.png differ
index 3f17558..e968902 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png differ
index 913709a..c17f9c5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png differ
index c98b88a..6584981 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/text-dir-lefttoright.png and b/resources/lib/oojs-ui/themes/apex/images/icons/text-dir-lefttoright.png differ
index d801273..74cbb00 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/text-dir-righttoleft.png and b/resources/lib/oojs-ui/themes/apex/images/icons/text-dir-righttoleft.png differ
index 994313b..cec1231 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/text-style.png and b/resources/lib/oojs-ui/themes/apex/images/icons/text-style.png differ
index a441b60..80726d9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/trash.png and b/resources/lib/oojs-ui/themes/apex/images/icons/trash.png differ
index 0a8b576..9dd3c69 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/tray.png and b/resources/lib/oojs-ui/themes/apex/images/icons/tray.png differ
index 7ec88c6..0768be7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unBlock-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unBlock-ltr.png differ
index 6e7ce98..45ae753 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unBlock-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unBlock-rtl.png differ
index 18acc19..3bad28e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unFlag-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unFlag-ltr.png differ
index 932af30..1a151bd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unFlag-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unFlag-rtl.png differ
index c427183..f8fb458 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png differ
index 94b980f..0d18de2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unLock-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unLock-rtl.png differ
index fd692c5..718b9f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unStar.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unStar.png differ
index 724bb1c..ff19fad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unTrash-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unTrash-ltr.png differ
index 790681f..6e10107 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unTrash-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unTrash-rtl.png differ
index 52b79be..19004b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/underline-a.png and b/resources/lib/oojs-ui/themes/apex/images/icons/underline-a.png differ
index 1a4fc86..a9d8cbd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/underline-u.png and b/resources/lib/oojs-ui/themes/apex/images/icons/underline-u.png differ
index 0867667..12a62b4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/upTriangle.png and b/resources/lib/oojs-ui/themes/apex/images/icons/upTriangle.png differ
index 2bcb06e..1a279c5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/upload-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/upload-ltr.png differ
index 510e6e8..4758b6b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/upload-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/upload-rtl.png differ
index 23ba63e..872ee5b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png and b/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png differ
index 1f0779d..ec990dd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png and b/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png differ
index c7bf632..64bed10 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png differ
index ba06d8b..b5fc77c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png differ
index ebbaa5c..10a8a70 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator-invert.png differ
index f7ba1d8..0646566 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator.png and b/resources/lib/oojs-ui/themes/apex/images/icons/visionSimulator.png differ
index 1c1bdf8..abefeb2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/wikiText.png and b/resources/lib/oojs-ui/themes/apex/images/icons/wikiText.png differ
index d06fdd3..217575e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/window.png and b/resources/lib/oojs-ui/themes/apex/images/icons/window.png differ
index 9d25a24..f7353ff 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png differ
index f6ff705..db44118 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-down.png differ
index 5b2081c..1564615 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/arrow-up.png differ
index a858a03..5b18cf8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/clear.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/clear.png differ
index aca9239..03f6d63 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/required.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/required.png differ
index 123fbfa..8a3faa0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png differ
index db74061..0925194 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png differ
index 8844417..d650da8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png differ
index 9013733..fc4e7f9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png differ
index 9da9a9a..ac82608 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png differ
index ba66188..d0ea817 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png differ
index ac3605f..61087eb 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>advanced</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>advanced</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></g></svg>
\ No newline at end of file
index 4e6c2d5..ba7944e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png differ
index f0befda..f9023ca 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>advanced</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>advanced</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></g></svg>
\ No newline at end of file
index e07229d..c0379e8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png differ
index b593863..2fc2689 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>advanced</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>advanced</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></svg>
\ No newline at end of file
index 378d6fa..87bf141 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png differ
index f6ed983..db2154d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png differ
index f25e8e4..cc31bff 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png differ
index c870034..3019a1e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png differ
index 76f8ce2..11fad13 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-invert.png differ
index f99ad5d..1f942a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter-progressive.png differ
index 5e4226a..229393b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignCenter.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.png
new file mode 100644 (file)
index 0000000..c0e90ae
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-invert.svg
new file mode 100644 (file)
index 0000000..2b39790
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>align left</title><path d="M1 15h18v2H1zm11-8h7v2h-7zm0 4h7v2h-7zM1 3h18v2H1z"/><rect width="8" height="6" x="1" y="7" rx="1" ry="1"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.png
new file mode 100644 (file)
index 0000000..1ba739d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft-progressive.svg
new file mode 100644 (file)
index 0000000..8f51b58
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>align left</title><path d="M1 15h18v2H1zm11-8h7v2h-7zm0 4h7v2h-7zM1 3h18v2H1z"/><rect width="8" height="6" x="1" y="7" rx="1" ry="1"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.png
new file mode 100644 (file)
index 0000000..c181873
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignLeft.svg
new file mode 100644 (file)
index 0000000..c116ab8
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>align left</title><path d="M1 15h18v2H1zm11-8h7v2h-7zm0 4h7v2h-7zM1 3h18v2H1z"/><rect width="8" height="6" x="1" y="7" rx="1" ry="1"/></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.png
new file mode 100644 (file)
index 0000000..fa2e966
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-invert.svg
new file mode 100644 (file)
index 0000000..879be78
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>align right</title><path d="M1 15h18v2H1zm0-8h7v2H1zm0 4h7v2H1zm0-8h18v2H1z"/><rect width="8" height="6" x="11" y="7" rx="1" ry="1"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.png
new file mode 100644 (file)
index 0000000..fffb267
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight-progressive.svg
new file mode 100644 (file)
index 0000000..3a2488e
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>align right</title><path d="M1 15h18v2H1zm0-8h7v2H1zm0 4h7v2H1zm0-8h18v2H1z"/><rect width="8" height="6" x="11" y="7" rx="1" ry="1"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.png
new file mode 100644 (file)
index 0000000..9d04733
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alignRight.svg
new file mode 100644 (file)
index 0000000..b6f747e
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>align right</title><path d="M1 15h18v2H1zm0-8h7v2H1zm0 4h7v2H1zm0-8h18v2H1z"/><rect width="8" height="6" x="11" y="7" rx="1" ry="1"/></svg>
\ No newline at end of file
index 2bf835b..0ccf7c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-invert.png differ
index 30e4121..85032a3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr-progressive.png differ
index fbace9f..6b9ea3d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-ltr.png differ
index 2b675f1..b6c6622 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-invert.png differ
index 439dc3d..cb1cdfc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl-progressive.png differ
index e634ce8..dbc77f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowNext-rtl.png differ
index 208e6e2..f7b46b7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-invert.png differ
index 9f13c40..155582d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr-progressive.png differ
index 8402c75..d3c39ce 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-ltr.png differ
index a840145..6248ca7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-invert.png differ
index 1ec66f0..76fe703 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl-progressive.png differ
index 37cd5ee..979a01b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrowPrevious-rtl.png differ
index 09a85ac..f161068 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png differ
index 2d0104b..7a82baf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png differ
index 35fa43f..aa63663 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png
new file mode 100644 (file)
index 0000000..b2ee4d3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg
new file mode 100644 (file)
index 0000000..51c4fb5
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>article</title><path d="M3 3v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2zm12 2h-5V4h5zm0 2h-5V6h5zm0 2h-5V8h5zM5 14h10v1H5zm0-2h10v1H5zm0-2h10v1H5zm0-6h4v5H5z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png
new file mode 100644 (file)
index 0000000..8585b14
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..ab248d8
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>article</title><path d="M3 3v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2zm12 2h-5V4h5zm0 2h-5V6h5zm0 2h-5V8h5zM5 14h10v1H5zm0-2h10v1H5zm0-2h10v1H5zm0-6h4v5H5z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png
new file mode 100644 (file)
index 0000000..8b06dd8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg
new file mode 100644 (file)
index 0000000..1ef6e18
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>article</title><path d="M3 3v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2zm12 2h-5V4h5zm0 2h-5V6h5zm0 2h-5V8h5zM5 14h10v1H5zm0-2h10v1H5zm0-2h10v1H5zm0-6h4v5H5z"/></svg>
\ No newline at end of file
index 7d5132c..c2186e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-invert.png differ
index 5105243..890a8f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-progressive.png differ
index 2b7eb65..48581b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck.png differ
index 5ea5191..7ae6435 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png differ
index d72e73a..5f0e0d7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png differ
index bc58229..28a431b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png differ
index fe35633..fd45441 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png differ
index b1e582c..8f3509b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png differ
index 33d1ba2..2954f69 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png differ
index b776bfd..e4d81df 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-invert.png differ
index faf022e..30245e7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-progressive.png differ
index 091c878..45f729d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch.png differ
index 3d9aea9..9efb90d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png differ
index ffd70c1..a6be4cb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png differ
index a2d9c8b..eb9a4c2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png differ
index 71ad97d..47cf8b7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png differ
index 9deb389..70f8ad7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png differ
index e3e70b8..3f9acf1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png differ
index 0298cae..2d07f48 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-invert.png differ
index 58ea0ba..f75ebed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-progressive.png differ
index b177405..056f1de 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment.png differ
index dec4e37..db3f924 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png differ
index 6133fc8..a13445a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png differ
index 9bd0a72..580ac6b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png differ
index 8437fdf..8f7244a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-invert.png differ
index 3b41bd8..8f519a5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-progressive.png differ
index 3d255f3..00f25df 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger.png differ
index 1209762..5912926 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png differ
index 6e23414..bdb7ced 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png differ
index fda85ea..0ceef65 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png differ
index a2814ea..79c8202 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png differ
index 8d769dc..8532cd7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png differ
index f94b970..a517792 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png differ
index 4a7b548..e4b3373 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png differ
index 832914d..32158b7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png differ
index 3e36dbc..4e46261 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png differ
index 16329ba..d902467 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png differ
index 0dd632f..87c0934 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png differ
index 0ed890a..47c376f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png differ
index 7d59297..9858e47 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png differ
index 2e5bc28..eacacfb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png differ
index 72d229c..fc8ff8d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png differ
index 71fe3db..270ead7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png differ
index af45c58..e0f9a03 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png differ
index 21ced2c..8f053f1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png differ
index f847581..de799b3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png differ
index 5d17309..827ec7e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png differ
index 414f57e..a396c65 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png differ
index a9b06d8..b56ce37 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png differ
index 415225e..3daa124 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png differ
index bfd328a..b11fb51 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png differ
index bb913da..1573444 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png differ
index 57dbb53..5a3ff7a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png differ
index e1b703b..ecbc1bb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png differ
index dbbee3a..519035e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png differ
index 06a734b..955c555 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png differ
index 923a65d..88c4b70 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png differ
index a6d98f9..28709b9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png differ
index f12e44e..1a309e0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png differ
index 8641e9b..3fc72b6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png differ
index 42c00a5..c4f638d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png differ
index d9de648..e2c1e32 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png differ
index 9e9b609..a15b685 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png differ
index 6eb7bcd..1d6bea4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png differ
index 708330b..912976e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png differ
index a380478..9e9f12d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png differ
index 33113b7..611d29b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png differ
index ffd5138..468cfa3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png differ
index 2327f85..5dbbf8f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png differ
index eb4ebd9..1c1096b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png differ
index a63fe7b..0c61ecb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png differ
index 358babe..1b92b19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png differ
index 44f6eef..8067fcb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png differ
index a1caef6..f6f04fc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png differ
index 18d39ff..8d9d78d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png differ
index ccc6a58..160726b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png differ
index 17518de..14bd401 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png differ
index 3563e97..0a512d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png differ
index 3c7f917..1580e00 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.png
new file mode 100644 (file)
index 0000000..a628a39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-invert.svg
new file mode 100644 (file)
index 0000000..38551d0
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>bookmark</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.png
new file mode 100644 (file)
index 0000000..9ebf248
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark-progressive.svg
new file mode 100644 (file)
index 0000000..ef6badc
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>bookmark</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.png
new file mode 100644 (file)
index 0000000..ace5d8c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmark.svg
new file mode 100644 (file)
index 0000000..d5d0797
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>bookmark</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2z"/></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.png
new file mode 100644 (file)
index 0000000..4f047b1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-invert.svg
new file mode 100644 (file)
index 0000000..04e07b5
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>bookmark outlined</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2zm0 14.25l-5-3.5-5 3.5V3h10z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.png
new file mode 100644 (file)
index 0000000..dfcdfe5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline-progressive.svg
new file mode 100644 (file)
index 0000000..6fd6dd6
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>bookmark outlined</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2zm0 14.25l-5-3.5-5 3.5V3h10z"/></g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.png
new file mode 100644 (file)
index 0000000..232ca46
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bookmarkOutline.svg
new file mode 100644 (file)
index 0000000..04d8d28
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>bookmark outlined</title><path d="M15 1H5a2 2 0 0 0-2 2v16l7-5 7 5V3a2 2 0 0 0-2-2zm0 14.25l-5-3.5-5 3.5V3h10z"/></svg>
\ No newline at end of file
index 836a039..6c8c9d3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png differ
index 69dbdbd..ba9e59d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-progressive.png differ
index e2ca5de..433f59c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png differ
index 938ef88..1cc9427 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png differ
index f2c8baf..3e3b91b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png differ
index 473e33e..624a897 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png differ
index c91824e..bb04d76 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png differ
index d825b5f..7d65568 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png differ
index 29a252f..d3f9453 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png differ
index a6bc6b5..ddab182 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-invert.png differ
index 0a39c12..af3306b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-progressive.png differ
index 0f489c6..bfc5f98 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar.png differ
index 9d30fc2..570f409 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-invert.png differ
index f05a320..659a26c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera-progressive.png differ
index 01c6660..09e702a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/camera.png differ
index f0f77d9..c230d1a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png differ
index 9054de2..2e068e9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png differ
index 284cc37..ad8a4e6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png differ
index f7ed98f..354365e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png differ
index 738440f..9b192fc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png differ
index a868516..dc85bfb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png differ
index 019a228..d82b967 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png differ
index 0c33c62..109c85e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png differ
index a994364..94bbd85 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-invert.png differ
index b345c82..e1d0e93 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll-progressive.png differ
index f9aa066..f5505f0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/checkAll.png differ
index 2362afb..9642546 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-invert.png differ
index 70738d2..e46556b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-progressive.png differ
index d30a339..95f8dcd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle.png differ
index 37374a5..e3f1ea0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png differ
index 6723417..7c904c2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png differ
index 2849b44..dc8c7e0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png differ
index 15e2333..205a9dc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png differ
index 4d32fba..66280aa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png differ
index 46c2872..5e12f53 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png differ
index 43cd1f7..c76724a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png differ
index 61f6c69..3cc2a53 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png differ
index 9d6cee7..a3708f3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png differ
index 3c3bcae..edda550 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png differ
index 768fc8f..fb29ed2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png differ
index 79c6945..02bde42 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png differ
index 3270c53..be86bd9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png differ
index 7b6ff25..d549c8f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png differ
index 3650b1e..aad3498 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png differ
index e46e29e..ebae499 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-invert.png differ
index 858593e..6d38f70 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-progressive.png differ
index e2a9da0..d52000c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die.png differ
index 57c94c9..8fdacba 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png differ
index 8be0f58..5d358f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png differ
index f347e3d..bb6b0a6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png differ
index 0d2d60f..d817244 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-invert.png differ
index a3dadae..a8d86e5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-progressive.png differ
index 1933050..69a0bde 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download.png differ
index e691611..e6d4d41 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-invert.png differ
index 673a390..991413f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable-progressive.png differ
index c5a540a..3ee5fad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/draggable.png differ
index f2c3bf9..6e2e1ba 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-invert.png differ
index e172770..26a779c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-progressive.png differ
index 75a0e89..3fb8c12 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit.png differ
index 2762956..634ae6d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-invert.png differ
index 9226309..efe691e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-progressive.png differ
index 969fc95..db1ff4e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock.png differ
index 11da52c..a5f07d1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png differ
index b14dd54..fa48120 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png differ
index d1b012b..a798c0b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png differ
index c627ccb..f37add5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png differ
index 2b48ba2..a4e3c00 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png differ
index 1083581..51b35cf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png differ
index 2f3b341..776634f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png differ
index d5e7321..9a1cdda 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png differ
index 8542f41..90e3270 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png differ
index 22f76b3..f3ca5c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-invert.png differ
index ec405b5..05e1df0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen-progressive.png differ
index 3cc00db..5ec1f58 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/exitFullscreen.png differ
index 77c6739..2b4a678 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png differ
index b00e90e..37848e1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png differ
index ba5b374..4496478 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png differ
index 590aad4..78d0f3a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png differ
index 5612516..a62e85d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png differ
index 7147ab2..153beb5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png differ
index f899c09..df60737 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png differ
index 6d90fbd..2a6756e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png differ
index e7a0e6f..d6f4c72 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png differ
index 1dfe88b..0f8e493 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png differ
index 07a98cd..770c140 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png differ
index 80f1322..c6bfc7d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png differ
index acc567b..ddfd6bc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png differ
index 356a531..5a4f522 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png differ
index e40f878..641a0ac 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png differ
index d419517..f7881fa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png differ
index c4a38c2..d9d3d5a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png differ
index 37b4391..6fdc061 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png differ
index ecaa796..bcab507 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png differ
index b7f0663..f48dc6b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png differ
index fba4689..c1df6f0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png differ
index 7389853..cc6e054 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png differ
index 58ff252..b963fe8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png differ
index badfd89..7a5de55 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png differ
index 38f227c..52ada78 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png differ
index 1e15b80..7667dc5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png differ
index 7a39121..7ed6508 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png differ
index a6bcb75..631d284 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png differ
index 4521974..820c5e8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png differ
index 2955b01..52c5a5c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png differ
index 1c7acf8..1905b0b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png differ
index 2d24577..78ef5fe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png differ
index a661b13..96a3755 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png differ
index 66cd99f..9365f4e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png differ
index 42a2137..e393fca 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png differ
index e659484..5fac08b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png differ
index b2a101f..d04a503 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-invert.png differ
index ca2412c..e322e7e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr-progressive.png differ
index 5eab7a2..734ea3d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-ltr.png differ
index 37a5c72..5440b17 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-invert.png differ
index 215dd1e..067c94d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl-progressive.png differ
index 88b6d71..797a870 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-rtl.png differ
index c28af0a..a566d99 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png differ
index a6467c7..45d98a6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png differ
index dee308c..dec2db0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png differ
index c00bcd1..b9a8300 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png differ
index 38ddcbf..598c895 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png differ
index bd8d2d0..09580ec 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png differ
index de8ce2d..6e03775 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png differ
index 2e614e5..45dd198 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png differ
index 6738734..3693ab3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png differ
index bb76063..967525a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-invert.png differ
index 0a3b773..5a18a63 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>help</title><path d="M10 0a10 10 0 1 0 10 10A10 10 0 0 0 10 0zm1 16H9v-2h2zm2.71-7.6a2.63 2.63 0 0 1-.34.74 3.06 3.06 0 0 1-.48.55l-.54.48c-.21.18-.41.35-.59.52a3 3 0 0 0-.47.56A2.49 2.49 0 0 0 11 12a4.12 4.12 0 0 0-.11 1H9.08a8.68 8.68 0 0 1 .08-1.25 3.54 3.54 0 0 1 .24-.9 2.81 2.81 0 0 1 .41-.68 4.63 4.63 0 0 1 .58-.58l.51-.44a3 3 0 0 0 .44-.45 1.92 1.92 0 0 0 .3-.54 2.13 2.13 0 0 0 .11-.72 1.94 1.94 0 0 0-.18-.86 1.79 1.79 0 0 0-.43-.58 1.69 1.69 0 0 0-.54-.32 1.55 1.55 0 0 0-.5-.1 1.77 1.77 0 0 0-1.53.68 3 3 0 0 0-.49 1.82H6.16a4.84 4.84 0 0 1 .28-1.68 3.57 3.57 0 0 1 .8-1.29 3.62 3.62 0 0 1 1.27-.83A4.52 4.52 0 0 1 10.18 4a4.42 4.42 0 0 1 1.43.23 3.48 3.48 0 0 1 1.16.65 3 3 0 0 1 .78 1.06 3.49 3.49 0 0 1 .28 1.44 3.63 3.63 0 0 1-.12 1.02z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>help</title><path d="M10.06 1C13 1 15 2.89 15 5.53a4.59 4.59 0 0 1-2.29 4.08c-1.42.92-1.82 1.53-1.82 2.71V13H8.38v-.81a3.84 3.84 0 0 1 2-3.84c1.34-.9 1.79-1.53 1.79-2.71a2.1 2.1 0 0 0-2.08-2.14h-.17a2.3 2.3 0 0 0-2.38 2.22v.17H5A4.71 4.71 0 0 1 9.51 1a5 5 0 0 1 .55 0zM8 17a1.89 1.89 0 0 1 1.77-2H10a1.87 1.87 0 0 1 2 1.73 1.22 1.22 0 0 1 0 .27 1.87 1.87 0 0 1-1.73 2 1.22 1.22 0 0 1-.27 0 1.88 1.88 0 0 1-2-1.75A1 1 0 0 1 8 17z"/></g></svg>
\ No newline at end of file
index 3746c73..51feab8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-progressive.png differ
index c418e49..dfc1709 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>help</title><path d="M10 0a10 10 0 1 0 10 10A10 10 0 0 0 10 0zm1 16H9v-2h2zm2.71-7.6a2.63 2.63 0 0 1-.34.74 3.06 3.06 0 0 1-.48.55l-.54.48c-.21.18-.41.35-.59.52a3 3 0 0 0-.47.56A2.49 2.49 0 0 0 11 12a4.12 4.12 0 0 0-.11 1H9.08a8.68 8.68 0 0 1 .08-1.25 3.54 3.54 0 0 1 .24-.9 2.81 2.81 0 0 1 .41-.68 4.63 4.63 0 0 1 .58-.58l.51-.44a3 3 0 0 0 .44-.45 1.92 1.92 0 0 0 .3-.54 2.13 2.13 0 0 0 .11-.72 1.94 1.94 0 0 0-.18-.86 1.79 1.79 0 0 0-.43-.58 1.69 1.69 0 0 0-.54-.32 1.55 1.55 0 0 0-.5-.1 1.77 1.77 0 0 0-1.53.68 3 3 0 0 0-.49 1.82H6.16a4.84 4.84 0 0 1 .28-1.68 3.57 3.57 0 0 1 .8-1.29 3.62 3.62 0 0 1 1.27-.83A4.52 4.52 0 0 1 10.18 4a4.42 4.42 0 0 1 1.43.23 3.48 3.48 0 0 1 1.16.65 3 3 0 0 1 .78 1.06 3.49 3.49 0 0 1 .28 1.44 3.63 3.63 0 0 1-.12 1.02z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>help</title><path d="M10.06 1C13 1 15 2.89 15 5.53a4.59 4.59 0 0 1-2.29 4.08c-1.42.92-1.82 1.53-1.82 2.71V13H8.38v-.81a3.84 3.84 0 0 1 2-3.84c1.34-.9 1.79-1.53 1.79-2.71a2.1 2.1 0 0 0-2.08-2.14h-.17a2.3 2.3 0 0 0-2.38 2.22v.17H5A4.71 4.71 0 0 1 9.51 1a5 5 0 0 1 .55 0zM8 17a1.89 1.89 0 0 1 1.77-2H10a1.87 1.87 0 0 1 2 1.73 1.22 1.22 0 0 1 0 .27 1.87 1.87 0 0 1-1.73 2 1.22 1.22 0 0 1-.27 0 1.88 1.88 0 0 1-2-1.75A1 1 0 0 1 8 17z"/></g></svg>
\ No newline at end of file
index b3d9801..3731019 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help.png differ
index 3cad4d0..6172357 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>help</title><path d="M10 0a10 10 0 1 0 10 10A10 10 0 0 0 10 0zm1 16H9v-2h2zm2.71-7.6a2.63 2.63 0 0 1-.34.74 3.06 3.06 0 0 1-.48.55l-.54.48c-.21.18-.41.35-.59.52a3 3 0 0 0-.47.56A2.49 2.49 0 0 0 11 12a4.12 4.12 0 0 0-.11 1H9.08a8.68 8.68 0 0 1 .08-1.25 3.54 3.54 0 0 1 .24-.9 2.81 2.81 0 0 1 .41-.68 4.63 4.63 0 0 1 .58-.58l.51-.44a3 3 0 0 0 .44-.45 1.92 1.92 0 0 0 .3-.54 2.13 2.13 0 0 0 .11-.72 1.94 1.94 0 0 0-.18-.86 1.79 1.79 0 0 0-.43-.58 1.69 1.69 0 0 0-.54-.32 1.55 1.55 0 0 0-.5-.1 1.77 1.77 0 0 0-1.53.68 3 3 0 0 0-.49 1.82H6.16a4.84 4.84 0 0 1 .28-1.68 3.57 3.57 0 0 1 .8-1.29 3.62 3.62 0 0 1 1.27-.83A4.52 4.52 0 0 1 10.18 4a4.42 4.42 0 0 1 1.43.23 3.48 3.48 0 0 1 1.16.65 3 3 0 0 1 .78 1.06 3.49 3.49 0 0 1 .28 1.44 3.63 3.63 0 0 1-.12 1.02z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>help</title><path d="M10.06 1C13 1 15 2.89 15 5.53a4.59 4.59 0 0 1-2.29 4.08c-1.42.92-1.82 1.53-1.82 2.71V13H8.38v-.81a3.84 3.84 0 0 1 2-3.84c1.34-.9 1.79-1.53 1.79-2.71a2.1 2.1 0 0 0-2.08-2.14h-.17a2.3 2.3 0 0 0-2.38 2.22v.17H5A4.71 4.71 0 0 1 9.51 1a5 5 0 0 1 .55 0zM8 17a1.89 1.89 0 0 1 1.77-2H10a1.87 1.87 0 0 1 2 1.73 1.22 1.22 0 0 1 0 .27 1.87 1.87 0 0 1-1.73 2 1.22 1.22 0 0 1-.27 0 1.88 1.88 0 0 1-2-1.75A1 1 0 0 1 8 17z"/></svg>
\ No newline at end of file
index 093a892..239d187 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-invert.png differ
index 70c8220..273e054 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-progressive.png differ
index 7a2bc42..92ba183 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight.png differ
index 6939e40..d9c79b5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png differ
index 270d4dd..40d4df1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png differ
index ce9f9fd..2a345f6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png differ
index 46cab9a..268561f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-invert.png differ
index 1916494..259bba4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-progressive.png differ
index 7e3037a..76ad2db 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image.png differ
index 43172da..d646757 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png differ
index c338cc9..886d9f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png differ
index 6b786c6..295a70d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png differ
index 3278b0f..a8e341a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png differ
index b62e286..a073fdf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png differ
index 69b80a8..8c47e19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png differ
index 1f7fdec..6675454 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-invert.png differ
index 7be7e1d..20b6bc0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken-progressive.png differ
index 4b445da..002707f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageBroken.png differ
index 513431c..801ce96 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-invert.png differ
index e2844d1..92da0b2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-progressive.png differ
index 84dbaeb..790cd29 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery.png differ
index a11cd66..fbc9d82 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png differ
index 4eb25ad..f17dce2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png differ
index a9526ee..838bd9c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png differ
index 94c47a8..3206847 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png differ
index 04f040f..119219e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png differ
index 08b7df9..2c584b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png differ
index 9e604c5..467259e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png differ
index bf2bba9..d01185f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png differ
index f673104..4812920 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png differ
index ad0d909..03b4174 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png differ
index 3522cb4..c9e4465 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png differ
index 4f8384b..b991583 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png differ
index d526110..7510cc9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png differ
index f944210..fd15ab1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png differ
index 441e6c7..c3da6db 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png differ
index 1196b28..1fc7dfb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png differ
index 03259e3..bef025b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png differ
index cde5329..0ffd0cb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png differ
index 9820a70..b85b8f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png differ
index 584bbdf..a967c85 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png differ
index 64e2d4e..d603446 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png differ
index 1becef1..b79a79f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png differ
index 3b635ce..8dda299 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png differ
index 882bc3e..d85b80e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png differ
index 76a7246..e44743e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png differ
index c1b33e6..22af1f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png differ
index 23f1421..fc7d28e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png differ
index 41af65b..f689fbc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png differ
index f4dd0a1..c0587b9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png differ
index 0b6c444..ce44fcc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png differ
index eadaa80..d03efc5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png differ
index f16e140..b8636b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png differ
index f7026ad..6da93ce 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png differ
index 93626ab..14d3ca3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png differ
index 0c28050..9b6b782 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png differ
index dac2ec2..13ec5a8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png differ
index 01bcc2c..1479118 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png differ
index 4b7fb08..3dc5317 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png differ
index 59b9535..510ba20 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png differ
index 54b0014..5897d5e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png differ
index a7bc486..c3b0da2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png differ
index a8e7c7f..3762341 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png differ
index 8ff1293..af91251 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png differ
index 1cc9e72..590d26f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png differ
index 22c06fe..d3c89f5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png differ
index c9cee54..6f06ed2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png differ
index a6d8793..639b7bf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png differ
index 4a12341..d48d100 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png differ
index 80b85c9..93263bc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png differ
index 36d3a78..77dc84e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png differ
index a507e9c..6c8d905 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png differ
index 8894173..0e79818 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png differ
index 8683db7..3a377cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png differ
index 500a95a..5760e60 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png differ
index 7b21118..1e9875d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-invert.png differ
index bea9c28..8a874ff 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-progressive.png differ
index 010aa84..8522187 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key.png differ
index bb15a85..ab3fa60 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-invert.png differ
index 6f0d9f8..01d04c7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-progressive.png differ
index ae0f84d..82819fa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard.png differ
index 1fc9ad9..36566c1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-invert.png differ
index 0cd8aad..4db871a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-progressive.png differ
index d6173b7..9de3301 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language.png differ
index 87ed1b8..0f43324 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-invert.png differ
index 8070214..9f019f3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-progressive.png differ
index 7e3ce9b..590a450 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText.png differ
index 5d3fd5c..ac8235d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png differ
index fcd09af..55b390e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png differ
index f825f25..268e5ef 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png differ
index 25a1ba4..2939db8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png differ
index 4f4212d..7f55b1e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png differ
index 81b4df9..ac3d519 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png differ
index bf0faa5..c976789 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-invert.png differ
index 8f98a7f..2de4429 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb-progressive.png differ
index 34e4aac..cefcd16 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lightbulb.png differ
index c0e2b2a..39770cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-invert.png differ
index c0501ea..bfd6677 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-progressive.png differ
index 1d75436..bfc6936 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link.png differ
index 44793b3..b2c62a5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-invert.png differ
index 30cd36d..4832408 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr-progressive.png differ
index adfab35..f51c501 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-ltr.png differ
index 243ef94..866c7e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-invert.png differ
index c03b5d7..ad486c4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl-progressive.png differ
index 9bc565e..c5493d2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkExternal-rtl.png differ
index 2dd6e80..1e247a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-invert.png differ
index df3af2d..dd7fb48 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure-progressive.png differ
index 6f69cd0..8ade157 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/linkSecure.png differ
index 620d542..a40b12e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png differ
index d2f1839..9ec7b0e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png differ
index b8741e4..60dfe52 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png differ
index 9f57c46..ed1d3ee 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png differ
index 458bc9c..68681e4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png differ
index a1eeef8..cd6c52e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png differ
index 31f3e7e..7d12572 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png differ
index 6ad8823..4f6f5b6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png differ
index d8585f8..ba72137 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png differ
index a8a8a16..4e9e7fb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png differ
index f6711ab..7e4d8be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png differ
index 1c009ce..c668441 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png differ
index a4d73f3..a2741e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-destructive.png differ
index 2dd6e80..1e247a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-invert.png differ
index df3af2d..dd7fb48 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-progressive.png differ
index 6f69cd0..8ade157 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock.png differ
index d10d2f6..d2288de 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png differ
index a3766d5..b324ee3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png differ
index 4d88cad..f275937 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png differ
index 4bdb681..1a7e26e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png differ
index 15b8e39..5bcf368 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png differ
index d1e5b45..6baca66 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png differ
index 2d84c78..61a745e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC-invert.png differ
index d3dcdae..45ac76d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-CC.png differ
index 4125922..ffabbf4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons-invert.png differ
index b84e605..82a0211 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Commons.png differ
index 8a54820..4932faa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery-invert.png differ
index 57b5c72..70061aa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikimedia-Discovery.png differ
index 94ddfc1..33d6696 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia-invert.png differ
index 18f1edd..3e70e2c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-Wikipedia.png differ
index 8a39524..41fab87 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png differ
index cb60f83..7609978 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png differ
index 12d5d5b..dae2b89 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png differ
index 479a67b..e4bc311 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png differ
index 31c5fe2..45dc6d1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png differ
index 37198a5..e621d20 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png differ
index 8acc4aa..b555bda 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png differ
index ff50002..b42f935 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png differ
index c3e433d..7cb142c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png differ
index be2e292..9dfc373 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-invert.png differ
index 4edc01f..83fd3fa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-progressive.png differ
index 8b26f3a..72312b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd.png differ
index 6791af9..4238a56 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-invert.png differ
index 93e888d..9e55791 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-progressive.png differ
index c1d95c1..7acd145 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail.png differ
index 02c8a50..172ccfb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png differ
index 40554a9..2ed3664 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png differ
index a5e6cb5..7b873fa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png differ
index 99ea2b1..dd344df 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png differ
index ca54a0c..419e8f9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png differ
index 19b27ac..9fcb3be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png differ
index 508a8cc..276ba02 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-invert.png differ
index 49ae118..ecf02f0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-progressive.png differ
index 5e4a797..d2b4d2b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message.png differ
index 7cf0e13..8bc33ae 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png differ
index fe7cd69..1bfbf51 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-progressive.png differ
index fde1042..6936506 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png differ
index 2c0da28..85f6293 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png differ
index 5b835e8..e4fb619 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png differ
index 0f657fc..f5471a9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png differ
index f215217..d07f436 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-invert.png differ
index 92c937d..a262b95 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr-progressive.png differ
index 59e647d..9509568 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-ltr.png differ
index 2c93e80..64e36be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-invert.png differ
index dbc9d9b..320855a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl-progressive.png differ
index 81c49cf..f30b318 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveFirst-rtl.png differ
index 2c93e80..64e36be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-invert.png differ
index dbc9d9b..320855a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr-progressive.png differ
index 81c49cf..f30b318 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-ltr.png differ
index f215217..d07f436 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-invert.png differ
index 92c937d..a262b95 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl-progressive.png differ
index 59e647d..9509568 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moveLast-rtl.png differ
index 44793b3..b2c62a5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png differ
index 30cd36d..4832408 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png differ
index adfab35..f51c501 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png differ
index 243ef94..866c7e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png differ
index c03b5d7..ad486c4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png differ
index 9bc565e..c5493d2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png differ
index 4bea90d..26b5912 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png differ
index 92584c5..f50b74c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png differ
index 8dd1490..fea69c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png differ
index 14841ad..77d0dca 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png differ
index 6eb7308..8646a3a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png differ
index 3b8d62f..343b271 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png differ
index 6480ba1..4ce2b0f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png differ
index abae07f..2dbdc63 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png differ
index b0eb3cf..3865644 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png differ
index 9cdfcdf..1cf9576 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png differ
index f63e400..ea93979 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png differ
index c184963..4abde64 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png differ
index 39ad51a..8911565 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-invert.png differ
index fbe763f..43dbec6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr-progressive.png differ
index 8a83f60..b085d97 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-ltr.png differ
index 0cb401d..1def3c5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-invert.png differ
index 45a210e..88e5bd6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl-progressive.png differ
index 1ad8b3a..69a5dc2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/next-rtl.png differ
index d892ee4..02c44e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-invert.png differ
index ab9f1cf..8c08646 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-progressive.png differ
index 5076101..ebac502 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText.png differ
index 0461f0f..b405b7f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png differ
index 7d1d699..6aa2ace 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-progressive.png differ
index da0d354..f56a820 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png differ
index f59f595..6f1b8eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png differ
index 9fcd31f..1d8def4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png differ
index 4700a45..f845ec1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png differ
index d2755e0..061581e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png differ
index 5a3741d..b166d06 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png differ
index a0b2f95..5bbfe3a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png differ
index 4e339e4..5e14856 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png differ
index 9254569..780b286 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png differ
index 35674b6..4f2c8f0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png differ
index ac93a73..506a955 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png differ
index 8598e75..c9be16c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png differ
index 79dc977..05c6681 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png differ
index cb8d06b..1a652dc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png differ
index 2a058e7..e207bb6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png differ
index 97814c6..f883d13 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png differ
index 2aa68af..9047337 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png differ
index a9a88c7..cfb6d5b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png differ
index 0ffcb7d..673fcf6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png differ
index 7060311..813ecb6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png differ
index 9d5a491..216c30e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png differ
index 6103e02..1e38852 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png differ
index 63fb2fe..7173cae 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-invert.png differ
index 3c19d2a..be58e54 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause-progressive.png differ
index 8ddae3e..fe6efdf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pause.png differ
index f04a857..47be562 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-invert.png differ
index 5c4d6df..32c3f79 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-progressive.png differ
index d1bde1b..63d2912 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play.png differ
index 0cb401d..1def3c5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-invert.png differ
index 45a210e..88e5bd6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr-progressive.png differ
index 1ad8b3a..69a5dc2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-ltr.png differ
index 39ad51a..8911565 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-invert.png differ
index fbe763f..43dbec6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl-progressive.png differ
index 8a83f60..b085d97 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/previous-rtl.png differ
index 437d317..27e843c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-invert.png differ
index 5b9daab..f3dcc57 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-progressive.png differ
index 6dc387a..8a62ebb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer.png differ
index 53ac0ec..07eb257 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png differ
index 5822db8..0013d28 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png differ
index cbf4a11..87c7141 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png differ
index ad1d523..ff817b5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png differ
index 294ca64..a23c395 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png differ
index 753cb80..8369ec3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png differ
index f347789..21e0a5d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png differ
index 0136435..a753fe0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png differ
index 6efe2ad..a63b567 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png differ
index d3251bc..1d237d1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png differ
index 6925051..ae008c6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png differ
index e6f4492..e461bed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png differ
index 787e1ef..798d4d0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png differ
index 1a1cd5a..9d6ed9b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png differ
index ff0af38..7d1c4e2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png differ
index 1ada6c7..80194f8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-invert.png differ
index 2d71bb0..4bc30ed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr-progressive.png differ
index 7764867..a197ca4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-ltr.png differ
index 462d1ad..de3c8f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-invert.png differ
index 1683f4b..fef8673 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl-progressive.png differ
index e4967f1..3fdb6f7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/redo-rtl.png differ
index aa792a7..688a062 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-invert.png differ
index 46c94fe..bd83b71 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload-progressive.png differ
index ebbe2d7..eb01f0f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/reload.png differ
index 034dadf..5201eb1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-invert.png differ
index 0731884..e410eca 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-progressive.png differ
index 161933f..b2ae15b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search.png differ
index 572169e..004d9cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-invert.png differ
index 649d055..b52715c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive-progressive.png differ
index de390fa..485a899 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchCaseSensitive.png differ
index d2291ab..85d87d3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-invert.png differ
index 6de7470..0fa3486 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics-progressive.png differ
index 55f9a48..35007eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchDiacritics.png differ
index 6bf1a76..ffbc420 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-invert.png differ
index 8cd661a..6f7af96 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression-progressive.png differ
index f498b60..7be8f3d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/searchRegularExpression.png differ
index 42464cf..701c523 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png differ
index 37da6bb..d4e2f7f 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>settings</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>settings</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></g></svg>
\ No newline at end of file
index 1f5e590..4e32bb1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png differ
index 583c61c..0319e0f 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>settings</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>settings</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></g></svg>
\ No newline at end of file
index 429d36f..9ed701f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png differ
index bdc37cf..5c327b6 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>settings</title><path d="M10 2.5a7.5 7.5 0 1 0 7.5 7.5A7.5 7.5 0 0 0 10 2.5zm0 11a3.5 3.5 0 1 1 3.5-3.5 3.5 3.5 0 0 1-3.5 3.5z"/><path d="M12 3.29L11.5 0h-3L8 3.29a7 7 0 0 1 4 0zM8 16.71L8.5 20h3l.5-3.29a7 7 0 0 1-4 0zm8.16-10.04l2-2.68L16 1.87l-2.68 2a7 7 0 0 1 2.83 2.83zM3.84 13.33L1.87 16 4 18.13l2.68-2a7 7 0 0 1-2.83-2.83zM16.71 12l3.29-.5v-3L16.71 8a7 7 0 0 1 0 4zM3.29 8L0 8.5v3l3.29.5a7 7 0 0 1 0-4zm10.04 8.16l2.68 2L18.13 16l-2-2.68a7 7 0 0 1-2.83 2.83zM6.67 3.84L4 1.87 1.87 4l2 2.68a7 7 0 0 1 2.8-2.84z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>settings</title><circle cx="10" cy="10" r="1.75"/><path d="M15 1H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 9.75l-1.37.25a3.73 3.73 0 0 1-.38.93l.82 1.07L13 14.07l-1.12-.82a3.73 3.73 0 0 1-.93.38l-.2 1.37h-1.5L9 13.63a3.73 3.73 0 0 1-.93-.38L7 14.07 5.93 13l.82-1.12a3.73 3.73 0 0 1-.38-.88L5 10.75v-1.5L6.37 9a3.72 3.72 0 0 1 .38-.93L5.93 7 7 5.93l1.12.82A3.73 3.73 0 0 1 9 6.37L9.25 5h1.5L11 6.37a3.74 3.74 0 0 1 .93.38L13 5.93 14.07 7l-.82 1.12a3.73 3.73 0 0 1 .38.93l1.37.2z"/></svg>
\ No newline at end of file
index 715d1dd..cbf867a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png differ
index 6a68144..c37fc61 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png differ
index 719d805..c53ad5d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png differ
index bd6b470..6f9ea07 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png differ
index ed221a9..1de7923 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png differ
index 35b5d7f..4fa395f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png differ
index 0243905..7be944b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-invert.png differ
index 41dae20..391a9fd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-progressive.png differ
index e059172..bb5a8db 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller.png differ
index aa1ef60..e00ab01 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-invert.png differ
index 59755c1..66f8a78 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-progressive.png differ
index a4d6f0d..997b4de 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText.png differ
index 94b2fca..e1954ce 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png differ
index 5bf5295..73a2654 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png differ
index e2d9857..9137cac 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png differ
index 00df99a..13360c1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png differ
index ca8469f..9b60865 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png differ
index 35f8caf..87bc57d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png differ
index 20fc7c3..86171f1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png differ
index 12c8811..c5019da 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png differ
index 491abac..e8f187c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png differ
index da340bb..bf72832 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png differ
index a2a56fb..1a2c30a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png differ
index 4a26d2f..a361f49 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png differ
index 0d507fa..39271e1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png differ
index 99427d1..d04f9f1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png differ
index 6d2b594..9d5bb21 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png differ
index afc8a5e..83aa9da 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png differ
index 1093d61..6bbba42 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>speech bubbles</title><path d="M17 1H3a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>speech bubbles</title><path d="M18 4h-1v7a2 2 0 0 1-2 2H4v1a2 2 0 0 0 2 2h10l4 4V6a2 2 0 0 0-2-2z"/><path d="M14 0H2a2 2 0 0 0-2 2v14l4-4h10a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
index 9634f44..3a8911c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png differ
index d65c8e0..4f3cf33 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>speech bubbles</title><path d="M17 1H3a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>speech bubbles</title><path d="M18 4h-1v7a2 2 0 0 1-2 2H4v1a2 2 0 0 0 2 2h10l4 4V6a2 2 0 0 0-2-2z"/><path d="M14 0H2a2 2 0 0 0-2 2v14l4-4h10a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></g></svg>
\ No newline at end of file
index a4ac576..148e525 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png differ
index 15f1d23..eb1a817 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>speech bubbles</title><path d="M17 1H3a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>speech bubbles</title><path d="M18 4h-1v7a2 2 0 0 1-2 2H4v1a2 2 0 0 0 2 2h10l4 4V6a2 2 0 0 0-2-2z"/><path d="M14 0H2a2 2 0 0 0-2 2v14l4-4h10a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></svg>
\ No newline at end of file
index 5c06641..c175602 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png differ
index 5d5b74b..88c0864 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>speech bubbles</title><path d="M1 3v10c0 1.1.9 2 2 2h12l4 4V3c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>speech bubbles</title><path d="M0 6v14l4-4h10c1.1 0 2-.9 2-2v-1H5c-1.1 0-2-.9-2-2V4H2C.9 4 0 4.9 0 6z"/><path d="M4 2v8c0 1.1.9 2 2 2h10l4 4V2c0-1.1-.9-2-2-2H6C4.9 0 4 .9 4 2z"/></g></svg>
\ No newline at end of file
index 9484d8c..de49d4a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png differ
index cbbf31a..1f2a1b0 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>speech bubbles</title><path d="M1 3v10c0 1.1.9 2 2 2h12l4 4V3c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>speech bubbles</title><path d="M0 6v14l4-4h10c1.1 0 2-.9 2-2v-1H5c-1.1 0-2-.9-2-2V4H2C.9 4 0 4.9 0 6z"/><path d="M4 2v8c0 1.1.9 2 2 2h10l4 4V2c0-1.1-.9-2-2-2H6C4.9 0 4 .9 4 2z"/></g></svg>
\ No newline at end of file
index 06d460f..6ac7730 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png differ
index b93d55d..a816817 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>speech bubbles</title><path d="M1 3v10c0 1.1.9 2 2 2h12l4 4V3c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>speech bubbles</title><path d="M0 6v14l4-4h10c1.1 0 2-.9 2-2v-1H5c-1.1 0-2-.9-2-2V4H2C.9 4 0 4.9 0 6z"/><path d="M4 2v8c0 1.1.9 2 2 2h10l4 4V2c0-1.1-.9-2-2-2H6C4.9 0 4 .9 4 2z"/></svg>
\ No newline at end of file
index af1e24c..ac66cd5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png differ
index 5a1476f..325af0c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png differ
index 7a5f606..4bcc0dd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png differ
index 2711597..486a53b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png differ
index 96a21b0..958b866 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png differ
index 1c7a57a..90294bb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png differ
index 04fbfb4..0ea4dfe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png differ
index b199f83..62b3c94 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png differ
index 6268cfe..3bad145 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png differ
index 04fbfb4..0ea4dfe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png differ
index b199f83..62b3c94 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png differ
index 6268cfe..3bad145 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png differ
index 6b251dd..56da443 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png differ
index 7d6b80e..ae3dbb5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png differ
index 81109ab..7f0fe3c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png differ
index f39ad85..149a728 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png differ
index b3c81d2..1337075 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png differ
index bb1379a..499a46a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png differ
index 05decb7..1ab79e6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png differ
index 89a0dc1..90ed9a8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png differ
index bb0e95a..33b9eed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png differ
index 2b16949..15e0b33 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png differ
index 8bad3fe..a7b2400 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png differ
index 05123b3..48f0fe8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png differ
index b45efa0..1f7bbb9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png differ
index 551e36e..6eeef48 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png differ
index d082ed6..320acf8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png differ
index d79dc9b..304b520 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png differ
index af0d196..50d335b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png differ
index 819871e..bdf0abb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png differ
index cf33429..48f6b18 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png differ
index 78e7389..ba56edd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png differ
index 64c3008..92883cb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png differ
index c50ac5b..c8d2ad9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png differ
index 206e328..c7de06c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png differ
index 152d29c..0e20332 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png differ
index 8b5c884..fcfa7f7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png differ
index ac06962..114426c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png differ
index 4e8527a..8d9618f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png differ
index 0e86cc9..d9f3725 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png differ
index 9c1b53d..baddb03 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png differ
index ed25d15..9b07a86 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png differ
index 4b76f76..4b080d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png differ
index 05cc000..ef1728a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png differ
index 2569764..d1894ce 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png differ
index 5ff11a1..7ca6eca 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png differ
index 1506993..dafba9b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png differ
index 9ff2bb3..2a3f15c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png differ
index ef7edc8..63b265b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png differ
index 37d8cc1..897b9d3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png differ
index f5833d7..218308d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png differ
index 72d5611..0040a4d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-invert.png differ
index 761208b..82e64e4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter-progressive.png differ
index e09cb1f..9b0a24f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnAfter.png differ
index 8e9dd3c..e2b76db 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-invert.png differ
index 539dc58..6ad0d12 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore-progressive.png differ
index f7b1862..643ff90 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddColumnBefore.png differ
index 4f56668..3862c2f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-invert.png differ
index 4f07fd4..5f02122 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter-progressive.png differ
index f067b88..c4f6944 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowAfter.png differ
index c61bf10..0660aeb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-invert.png differ
index 268e38d..55f3007 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore-progressive.png differ
index ef5e114..e3e551a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableAddRowBefore.png differ
index 3e6c8a2..7a8736f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-invert.png differ
index 3917fad..f21c3d2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption-progressive.png differ
index 7289fd1..cfcea42 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableCaption.png differ
index 44977f7..4ad0e91 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-invert.png differ
index d3ab0e4..0b15757 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells-progressive.png differ
index 97629e4..0ba51dd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tableMergeCells.png differ
index 39ab038..3716589 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-destructive.png differ
index cdae806..7d0bcbf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-invert.png differ
index 09bdb00..815a430 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-progressive.png differ
index 13c6266..a02fb4d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-warning.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr-warning.png differ
index 0070366..3afb23f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-ltr.png differ
index 03a8932..99a786b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-destructive.png differ
index 3b0a198..5e8b4e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-invert.png differ
index 7ee1d91..d4a0989 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-progressive.png differ
index 9c5002c..7f562c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-warning.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl-warning.png differ
index 4b956c8..888f8c8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-rtl.png differ
index 7cdf41c..298f821 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png differ
index affddce..5c588d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png differ
index ed72202..902326d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png differ
index c2d7266..2a49ffd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png differ
index 9bfcd84..71b24a7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png differ
index 7f8c778..785fac0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png differ
index ace9f7a..a056831 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-invert.png differ
index f66c237..7def128 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR-progressive.png differ
index 7195e16..87bd416 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirLTR.png differ
index 5f530e4..a70fa52 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-invert.png differ
index c13cf51..acbd1e8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL-progressive.png differ
index 1ae4151..280dc77 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textDirRTL.png differ
index 0b08b90..eac54c8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-invert.png differ
index c3969bf..8b4d1d0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle-progressive.png differ
index 08cfc89..b959d6c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/textStyle.png differ
index 7cdd05d..f5d6ffc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png differ
index 2fc7d6f..1a5d50c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png differ
index d94236c..50c7d62 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png differ
index 4cf8eaa..d5db2ec 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png differ
index a6699a4..32f3af3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png differ
index 7dedb55..549b96b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png differ
index f847b41..b3340be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png differ
index 1d7da8d..a9e733a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-invert.png differ
index 534c185..ca6adcf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-progressive.png differ
index a158998..1621170 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock.png differ
index b1b5cab..a00d836 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png differ
index 19a3da3..3de43ad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png differ
index 5e875ab..08aeb57 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png differ
index a520cf9..083a719 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png differ
index 203c80d..135fdc4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png differ
index 415a5a8..3e552d3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png differ
index 1c7b345..be28ddd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-destructive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-destructive.png differ
index 80cddd2..5ac7f9b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-invert.png differ
index e583097..8010d06 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-progressive.png differ
index d10eb52..fb22138 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock.png differ
index 00eba0c..4f27750 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png differ
index ad6055e..e7a7c0e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png differ
index 416764f..8c91074 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png differ
index f9232b3..890d029 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-invert.png differ
index ec25af0..c385295 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-progressive.png differ
index 5fe3411..8dd4395 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash.png differ
index 56cb556..ecf5e73 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png differ
index 11f2f0a..1cbcabe 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>underline</title><path d="M3 18h14v2H3zm7-4.1a4.92 4.92 0 0 0 2-.37 4.09 4.09 0 0 0 1.45-1 4.51 4.51 0 0 0 .91-1.58 6.25 6.25 0 0 0 .31-2V1H17v7.9a8 8 0 0 1-.48 2.82A6.56 6.56 0 0 1 15.13 14a6.34 6.34 0 0 1-2.2 1.49A7.56 7.56 0 0 1 10 16a7.56 7.56 0 0 1-2.92-.54A6.4 6.4 0 0 1 4.88 14a6.5 6.5 0 0 1-1.39-2.25A8 8 0 0 1 3 8.9V1h2.37v7.88a6.27 6.27 0 0 0 .31 2 4.51 4.51 0 0 0 .91 1.58 4.15 4.15 0 0 0 1.46 1 4.89 4.89 0 0 0 1.95.44z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#fff"><title>underline</title><path d="M3 17h14v2H3zM7.704 10.274L10 3.731l2.296 6.543zM14.322 16H17L11.5 2h-3L3 16h2.678l1.418-3.995h5.808z"/></g></svg>
\ No newline at end of file
index 59bd78f..f3ee84b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png differ
index 02062a6..0e39a75 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>underline</title><path d="M3 18h14v2H3zm7-4.1a4.92 4.92 0 0 0 2-.37 4.09 4.09 0 0 0 1.45-1 4.51 4.51 0 0 0 .91-1.58 6.25 6.25 0 0 0 .31-2V1H17v7.9a8 8 0 0 1-.48 2.82A6.56 6.56 0 0 1 15.13 14a6.34 6.34 0 0 1-2.2 1.49A7.56 7.56 0 0 1 10 16a7.56 7.56 0 0 1-2.92-.54A6.4 6.4 0 0 1 4.88 14a6.5 6.5 0 0 1-1.39-2.25A8 8 0 0 1 3 8.9V1h2.37v7.88a6.27 6.27 0 0 0 .31 2 4.51 4.51 0 0 0 .91 1.58 4.15 4.15 0 0 0 1.46 1 4.89 4.89 0 0 0 1.95.44z"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g fill="#36c"><title>underline</title><path d="M3 17h14v2H3zM7.704 10.274L10 3.731l2.296 6.543zM14.322 16H17L11.5 2h-3L3 16h2.678l1.418-3.995h5.808z"/></g></svg>
\ No newline at end of file
index 4260aef..e229f3b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png differ
index fdfc91e..c8446ac 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>underline</title><path d="M3 18h14v2H3zm7-4.1a4.92 4.92 0 0 0 2-.37 4.09 4.09 0 0 0 1.45-1 4.51 4.51 0 0 0 .91-1.58 6.25 6.25 0 0 0 .31-2V1H17v7.9a8 8 0 0 1-.48 2.82A6.56 6.56 0 0 1 15.13 14a6.34 6.34 0 0 1-2.2 1.49A7.56 7.56 0 0 1 10 16a7.56 7.56 0 0 1-2.92-.54A6.4 6.4 0 0 1 4.88 14a6.5 6.5 0 0 1-1.39-2.25A8 8 0 0 1 3 8.9V1h2.37v7.88a6.27 6.27 0 0 0 .31 2 4.51 4.51 0 0 0 .91 1.58 4.15 4.15 0 0 0 1.46 1 4.89 4.89 0 0 0 1.95.44z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title>underline</title><path d="M3 17h14v2H3zM7.704 10.274L10 3.731l2.296 6.543zM14.322 16H17L11.5 2h-3L3 16h2.678l1.418-3.995h5.808z"/></svg>
\ No newline at end of file
index a521bdb..80e283c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png differ
index 244981f..1a97983 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png differ
index 20b285c..e4290b1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png differ
index 462d1ad..de3c8f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-invert.png differ
index 1683f4b..fef8673 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr-progressive.png differ
index e4967f1..3fdb6f7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-ltr.png differ
index 1ada6c7..80194f8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-invert.png differ
index 2d71bb0..4bc30ed 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl-progressive.png differ
index 7764867..a197ca4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/undo-rtl.png differ
index 8045bc7..cff2fa9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png differ
index 0ce545c..ece30f0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png differ
index 1bfe777..e2aff97 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png differ
index 2708c44..3c75235 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-invert.png differ
index 7f3cd3b..6b79f37 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-progressive.png differ
index ca7e642..17983b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload.png differ
index e8c6783..3d65edf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-invert.png differ
index 72c3220..6c6f0f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-progressive.png differ
index 35ddb30..b718d6e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive.png differ
index e8c6783..3d65edf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png differ
index 72c3220..6c6f0f4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png differ
index 35ddb30..b718d6e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png differ
index db34f59..b61fba8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png differ
index 176cd57..7fa1291 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png differ
index 05170e1..062c664 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png differ
index 8fe830a..932f682 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png differ
index 2170c6c..f3902dc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png differ
index bf953f1..7cfcdb4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png differ
index 48ee0a1..f698db4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png differ
index 3c1cb67..f199fbd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png differ
index ae9c590..36bb713 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png differ
index 6f18728..cf65243 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png differ
index 497b434..70abe3f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png differ
index 3aef11b..73cd17f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png differ
index b705b3e..1c52ff4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png differ
index 5d7d680..ca12975 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png differ
index 8140661..d625efa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png differ
index 1b1e0fd..bdb5750 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png differ
index 5ae46f0..2d60283 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png differ
index 8cabc8a..3670abc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png differ
index e90c3fd..aa3323a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png differ
index 8c175d7..b050dd5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png differ
index 110d39f..9ac8e73 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png differ
index d898ca7..a0a0daa 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png differ
index 00e1e17..903a5d4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-progressive.png differ
index 340dab7..3dab87d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png differ
index 25cc6f8..3643adf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png differ
index 038c121..b46d7ab 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png differ
index c6ef965..6c5a696 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png differ
index 46f4802..efb1fd5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png differ
index 0d63918..690250d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png differ
index ab9812d..e0f1d7b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png differ
index f59f595..6f1b8eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png differ
index 4700a45..f845ec1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png differ
index 37374a5..e3f1ea0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png differ
index 2849b44..dc8c7e0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png differ
index ae66af4..fb4140a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down-invert.png differ
index 34f5041..acb40d9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/down.png differ
index ad3d414..ee70c03 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png differ
index 572c09c..b7f517d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png differ
index 034dadf..5201eb1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-invert.png differ
index 161933f..b2ae15b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search.png differ
index 56eeea4..c5e320d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up-invert.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up-invert.png differ
index 672b7f3..046a247 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up.png and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/up.png differ
index ebd1ebc..35f948e 100644 (file)
@@ -3,11 +3,12 @@
  * When the user right-clicks in a heading, it will open the
  * edit screen.
  */
-jQuery( function ( $ ) {
-       // Select all h1-h6 elements that contain editsection links
-       // Don't use the ":has:(.mw-editsection a)" selector because it performs very bad.
-       // http://jsperf.com/jq-1-7-2-vs-jq-1-8-1-performance-of-mw-has/2
+( function ( $ ) {
+       // Trigger this when a contextmenu click on the page targets an h1-h6 element.
+       // This uses a delegate handler which 1) starts immediately instead of blocking
+       // response on dom-ready, and 2) selects and binds once instead of N times.
        $( document ).on( 'contextmenu', 'h1, h2, h3, h4, h5, h6', function ( e ) {
+               // Don't use ":has:(.mw-editsection a)" in the selector because it's slow.
                var $edit = $( this ).find( '.mw-editsection a' );
                if ( !$edit.length ) {
                        return;
@@ -23,4 +24,4 @@ jQuery( function ( $ ) {
                        $edit.get( 0 ).click();
                }
        } );
-} );
+}( jQuery ) );
index 4e04068..a9c2096 100644 (file)
                position: absolute;
                top: 50%;
                .transform( translateY( -50% ) );
-
-               // HACK: Following overrides help icon size and centers it
-               &.oo-ui-widget.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-                       box-sizing: content-box;
-                       padding: 0;
-
-                       .oo-ui-icon-help {
-                               min-width: initial;
-                               min-height: initial;
-                               width: 1.4em;
-                               height: 1.4em;
-                               margin-top: 0.2375em;
-                       }
-               }
        }
 
        &-header {
index 1508510..8c349e5 100644 (file)
                $label.append(
                        $( '<div>' )
                                .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-title' )
-                               .append( this.$label )
+                               .append( $( '<bdi>' ).append( this.$label ) )
                );
                if ( this.itemModel.getDescription() ) {
                        $label.append(
                                $( '<div>' )
                                        .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-desc' )
-                                       .text( this.itemModel.getDescription() )
+                                       .append( $( '<bdi>' ).text( this.itemModel.getDescription() ) )
                        );
                }
 
index f546d97..89ad382 100644 (file)
@@ -25,7 +25,7 @@
                // Parent
                mw.rcfilters.ui.SaveFiltersPopupButtonWidget.parent.call( this, $.extend( {
                        framed: false,
-                       icon: 'unClip',
+                       icon: 'bookmark',
                        title: mw.msg( 'rcfilters-savedqueries-add-new-title' ),
                        popup: {
                                classes: [ 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup' ],
@@ -36,7 +36,7 @@
                        }
                }, config ) );
                // // HACK: Add an icon to the popup head label
-               this.popup.$head.prepend( ( new OO.ui.IconWidget( { icon: 'unClip' } ) ).$element );
+               this.popup.$head.prepend( ( new OO.ui.IconWidget( { icon: 'bookmark' } ) ).$element );
 
                this.input = new OO.ui.TextInputWidget( {
                        placeholder: mw.msg( 'rcfilters-savedqueries-new-name-placeholder' )
index 7077434..088aa5b 100644 (file)
@@ -34,7 +34,7 @@
                this.placeholderItem = new OO.ui.DecoratedOptionWidget( {
                        classes: [ 'mw-rcfilters-ui-savedLinksListWidget-placeholder' ],
                        label: $labelNoEntries,
-                       icon: 'unClip'
+                       icon: 'bookmark'
                } );
 
                this.menu = new mw.rcfilters.ui.GroupWidget( {
@@ -50,7 +50,7 @@
                this.button = new OO.ui.PopupButtonWidget( {
                        classes: [ 'mw-rcfilters-ui-savedLinksListWidget-button' ],
                        label: mw.msg( 'rcfilters-quickfilters' ),
-                       icon: 'unClip',
+                       icon: 'bookmark',
                        indicator: 'down',
                        $overlay: this.$overlay,
                        popup: {
index 97a013e..61a1c9c 100644 (file)
@@ -1,13 +1,21 @@
+@import 'mediawiki.mixins';
+
 // OOUIHTMLForm styles
+@ooui-font-size-browser: 16; // assumed browser default of `16px`
+@ooui-font-size-base: 0.875em; // equals `14px` at browser default of `16px`
+
+@ooui-spacing-medium: 12 / @ooui-font-size-browser / @ooui-font-size-base; // equals `0.8571429em`≈`12px`
+@ooui-spacing-large: 16 / @ooui-font-size-browser / @ooui-font-size-base; // equals `1.1428571em`≈`16px`
+
 .mw-htmlform-ooui-wrapper.oo-ui-panelLayout-padded {
-       padding: 1em 1.25em 1.25em;
+       padding: @ooui-spacing-medium @ooui-spacing-large @ooui-spacing-large;
 }
 
 .mw-htmlform-ooui {
        line-height: 1.4; // Override MediaWiki's default of `1.6`
 
        .oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-               line-height: 1.143; // equals `16px`
+               line-height: 16 / @ooui-font-size-browser / @ooui-font-size-base;
        }
 
        .mw-htmlform-field-HTMLCheckMatrix {
@@ -19,9 +27,7 @@
 
                td {
                        padding: 0.35em 0.7em;
-                       -webkit-transition: background-color 250ms;
-                       -moz-transition: background-color 250ms;
-                       transition: background-color 250ms;
+                       .transition( background-color 250ms );
                }
 
                tbody tr:nth-child( even ) td {
 .mw-htmlform-flatlist .oo-ui-radioOptionWidget,
 .mw-htmlform-flatlist .oo-ui-checkboxMultioptionWidget {
        display: inline-block;
-       margin-right: 1em;
+       margin-right: @ooui-spacing-medium;
 }
 
 .mw-htmlform-ooui .htmlform-tip,
 .mw-htmlform-ooui .mw-htmlform-submit-buttons {
-       margin-top: 1em;
+       margin-top: @ooui-spacing-medium;
 }
index 65e9e41..5fc1990 100644 (file)
@@ -4,7 +4,7 @@
  */
 /* global Uint32Array */
 ( function ( mw, $ ) {
-       var userInfoPromise;
+       var userInfoPromise, stickyRandomSessionId;
 
        /**
         * Get the current user's groups or rights
@@ -48,7 +48,7 @@
                                // Support: IE 11
                                crypto = window.crypto || window.msCrypto;
 
-                       if ( crypto && crypto.getRandomValues ) {
+                       if ( crypto && crypto.getRandomValues && typeof Uint32Array === 'function' ) {
                                // Fill an array with 2 random values, each of which is 32 bits.
                                // Note that Uint32Array is array-like but does not implement Array.
                                rnds = new Uint32Array( 2 );
                        return hexRnds.join( '' );
                },
 
+               /**
+                * A sticky generateRandomSessionId for the current JS execution context,
+                * cached within this class.
+                *
+                * @return {string} 64 bit integer in hex format, padded
+                */
+               stickyRandomId: function () {
+                       if ( !stickyRandomSessionId ) {
+                               stickyRandomSessionId = mw.user.generateRandomSessionId();
+                       }
+
+                       return stickyRandomSessionId;
+               },
+
                /**
                 * Get the current user's database id
                 *
index b994f8a..1173e1c 100644 (file)
@@ -96,6 +96,8 @@ $wgAutoloadClasses += [
        'DummyContentForTesting' => "$testDir/phpunit/mocks/content/DummyContentForTesting.php",
        'DummyNonTextContentHandler' => "$testDir/phpunit/mocks/content/DummyNonTextContentHandler.php",
        'DummyNonTextContent' => "$testDir/phpunit/mocks/content/DummyNonTextContent.php",
+       'DummySerializeErrorContentHandler' =>
+               "$testDir/phpunit/mocks/content/DummySerializeErrorContentHandler.php",
        'ContentHandlerTest' => "$testDir/phpunit/includes/content/ContentHandlerTest.php",
        'JavaScriptContentTest' => "$testDir/phpunit/includes/content/JavaScriptContentTest.php",
        'TextContentTest' => "$testDir/phpunit/includes/content/TextContentTest.php",
@@ -175,6 +177,7 @@ $wgAutoloadClasses += [
        'MediaWiki\\Session\\DummySessionBackend'
                => "$testDir/phpunit/mocks/session/DummySessionBackend.php",
        'DummySessionProvider' => "$testDir/phpunit/mocks/session/DummySessionProvider.php",
+       'MockMessageLocalizer' => "$testDir/phpunit/mocks/MockMessageLocalizer.php",
 
        # tests/suites
        'ParserTestFileSuite' => "$testDir/phpunit/suites/ParserTestFileSuite.php",
index 48a78d3..c1884b8 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @large
+ * @group large
  * @covers CurlHttpRequest
  */
 class CurlHttpRequestTest extends MWHttpRequestTestCase {
index 90bf532..8c461f3 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @large
+ * @group large
  * @covers PhpHttpRequest
  */
 class PhpHttpRequestTest extends MWHttpRequestTestCase {
index 9ee157b..1e008ee 100644 (file)
@@ -8,7 +8,7 @@ use MediaWiki\Shell\Shell;
  * Meant to run on vagrant, although will probably work on other setups
  * as long as firejail and sudo has similar config.
  *
- * @large
+ * @group large
  * @group Shell
  * @covers FirejailCommand
  */
index f0c815f..28335ec 100644 (file)
@@ -1108,6 +1108,7 @@ class ParserTestRunner {
 
                // Set content language. This invalidates the magic word cache and title services
                $lang = Language::factory( $langCode );
+               $lang->resetNamespaces();
                $setup['wgContLang'] = $lang;
                $reset = function () {
                        MagicWord::clearCache();
index e67ad66..0641e0b 100644 (file)
@@ -1257,6 +1257,7 @@ Ruby markup (W3C-style)
 :<ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby>
 ;Double-sided ruby
 :<ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby>
+
 <ruby>
 <rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
 <rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
@@ -3869,6 +3870,7 @@ Definition and unordered list using wiki syntax nested in unordered list using h
 Definition list with empty definition and following paragraph
 !! wikitext
 ;term:
+
 Paragraph text
 !! html
 <dl><dt>term</dt>
@@ -3957,6 +3959,29 @@ should be left alone
 </p>
 !! end
 
+!! test
+Definition Lists: Hacky use to indent tables (with content following table)
+!! wikitext
+:{|
+|foo
+|bar
+|} <!--c1--> this text should be part of the dl
+!! html/php+tidy
+<dl><dd><table>
+<tbody><tr>
+<td>foo
+</td>
+<td>bar
+</td></tr></tbody></table>  this text should be part of the dl</dd></dl>
+!! html/parsoid
+<dl><dd><table>
+<tbody><tr>
+<td>foo
+</td>
+<td>bar
+</td></tr></tbody></table> <!--c1--> this text should be part of the dl</dd></dl>
+!! end
+
 !! test
 Definition Lists: Hacky use to indent tables, with comments (T65979)
 !! wikitext
@@ -4050,9 +4075,11 @@ Table / list interaction: indented table with lists in table contents
 :{|
 |-
 |a
+
 *b
 |-
 |c
+
 *d
 |}
 !! html
@@ -5543,6 +5570,7 @@ IPv6 urls, autolink format (T23261)
 http://[2404:130:0:1000::187:2]/index.php
 
 Examples from RFC 2373, section 2.2:
+
 *http://[1080::8:800:200C:417A]/unicast
 *http://[FF01::101]/multicast
 *http://[::1]/loopback
@@ -5551,6 +5579,7 @@ Examples from RFC 2373, section 2.2:
 *http://[::FFFF:129.144.52.38]/ipv4compat
 
 Examples from RFC 2732, section 2:
+
 *http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
 *http://[1080:0:0:0:8:800:200C:417A]/index.html
 *http://[3ffe:2a00:100:7031::1]
@@ -5558,7 +5587,6 @@ Examples from RFC 2732, section 2:
 *http://[::192.9.5.5]/ipng
 *http://[::FFFF:129.144.52.38]:80/index.html
 *http://[2010:836B:4179::836B:4179]
-
 !! html/php
 <p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
@@ -5606,6 +5634,7 @@ IPv6 urls, bracketed format (T23261)
 [http://[2404:130:0:1000::187:2]/index.php test]
 
 Examples from RFC 2373, section 2.2:
+
 *[http://[1080::8:800:200C:417A] unicast]
 *[http://[FF01::101] multicast]
 *[http://[::1]/ loopback]
@@ -5614,6 +5643,7 @@ Examples from RFC 2373, section 2.2:
 *[http://[::FFFF:129.144.52.38] ipv4compat]
 
 Examples from RFC 2732, section 2:
+
 *[http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 1]
 *[http://[1080:0:0:0:8:800:200C:417A]/index.html 2]
 *[http://[3ffe:2a00:100:7031::1] 3]
@@ -5621,7 +5651,6 @@ Examples from RFC 2732, section 2:
 *[http://[::192.9.5.5]/ipng 5]
 *[http://[::FFFF:129.144.52.38]:80/index.html 6]
 *[http://[2010:836B:4179::836B:4179] 7]
-
 !! html/php
 <p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
@@ -9229,6 +9258,7 @@ language=is
 Redirect syntax under text isn't considered a redirect
 !! wikitext
 some text
+
 #redirect [[Main Page]]
 !! html/parsoid
 <p>some text</p>
@@ -9502,6 +9532,7 @@ Numbered list
 
 !! end
 
+# the switch from level 3 to ordered should not introduce a newline between
 !! test
 Mixed list
 !! wikitext
@@ -9864,8 +9895,10 @@ parsoid
 !! wikitext
 #foo
 ##bar
+
 *foo
 **bar
+
 :foo
 ::bar
 !! html
@@ -16482,10 +16515,10 @@ parsoid=wt2html
 <h4 id="Level_4_Heading" data-parsoid='{}'>Level 4 Heading</h4>
 <h5 id="Level_5_Heading" data-parsoid='{}'>Level 5 Heading</h5>
 <h6 id="Level_6_Heading" data-parsoid='{}'>Level 6 Heading</h6>
-<h6 id="=Level_7_Heading=" data-parsoid='{}'><span id=".3D_Level_7_Heading.3D" typeof="mw:FallbackId"></span>=Level 7 Heading=</h6>
-<h6 id="==Level_8_Heading==" data-parsoid='{}'><span id=".3D.3D_Level_8_Heading.3D.3D" typeof="mw:FallbackId"></span>==Level 8 Heading==</h6>
-<h6 id="===Level_9_Heading===" data-parsoid='{}'><span id=".3D.3D.3D_Level_9_Heading.3D.3D.3D" typeof="mw:FallbackId"></span>===Level 9 Heading===</h6>
-<h6 id="====Level_10_Heading====" data-parsoid='{}'><span id=".3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D" typeof="mw:FallbackId"></span>====Level 10 Heading====</h6>
+<h6 id="=Level_7_Heading=" data-parsoid='{}'><span id=".3DLevel_7_Heading.3D" typeof="mw:FallbackId"></span>=Level 7 Heading=</h6>
+<h6 id="==Level_8_Heading==" data-parsoid='{}'><span id=".3D.3DLevel_8_Heading.3D.3D" typeof="mw:FallbackId"></span>==Level 8 Heading==</h6>
+<h6 id="===Level_9_Heading===" data-parsoid='{}'><span id=".3D.3D.3DLevel_9_Heading.3D.3D.3D" typeof="mw:FallbackId"></span>===Level 9 Heading===</h6>
+<h6 id="====Level_10_Heading====" data-parsoid='{}'><span id=".3D.3D.3D.3DLevel_10_Heading.3D.3D.3D.3D" typeof="mw:FallbackId"></span>====Level 10 Heading====</h6>
 !! end
 
 !! test
@@ -16967,7 +17000,8 @@ __NOEDITSECTION__
 <h1><span class="mw-headline" id="Header_1">Header 1</span></h1>
 <h2><span class="mw-headline" id="Header_1.1">Header 1.1</span></h2>
 <h2><span class="mw-headline" id="Header_1.2">Header 1.2</span></h2>
-<h1><span class="mw-headline" id="Header_2">Header 2</span></h1>
+<h1><span class="mw-headline" id="Header_2">Header 2
+</span></h1>
 <h2><span class="mw-headline" id="Header_2.1">Header 2.1</span></h2>
 <h2><span class="mw-headline" id="Header_2.2">Header 2.2</span></h2>
 
@@ -24754,6 +24788,7 @@ Empty LI and TR nodes should not be stripped from top-level content
 * a
 *
 * b
+
 {|
 |-
 |-
 }}
 !! end
 
+!! test
+New list is serialized on newlines
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p>The quick brown fox jumps over the lazy dog.</p><ul>
+<li>Yesterday</li>
+<li>Today</li>
+<li>Tomorrow</li>
+</ul><p>The quick onyx goblin jumps over the lazy dwarf.</p>
+!! wikitext
+The quick brown fox jumps over the lazy dog.
+
+* Yesterday
+* Today
+* Tomorrow
+
+The quick onyx goblin jumps over the lazy dwarf.
+!! end
+
+!! test
+New lists in formatting elements serialized w/o newlines
+!! options
+parsoid=html2wt
+!! html/parsoid
+<small>
+
+<ul>
+<li>123</li>
+</ul>
+
+</small>
+
+<small><ul><li>hi</li></ul></small>
+!! wikitext
+<small>
+* 123
+</small>
+
+<small>
+* hi
+</small>
+!! end
+
+!! test
+New list in table doesn't need newlines
+!! options
+parsoid=html2wt
+!! html/parsoid
+<table><tr><td><ul><li>test</li><li>123</li></td></tr></table>
+!! wikitext
+{|
+|
+* test
+* 123
+|}
+!! end
+
 # ---------------------------------------------------
 # End of tests spec'ing wikitext serialization norms |
 # ---------------------------------------------------
@@ -30511,7 +30604,8 @@ headings, and cells. HTML versions of the same should preserve whitespace.
 Trim whitespace in wikitext headings, list items, table captions, headings, and cells
 !! wikitext
 __NOTOC__
-==    <!--c1-->   <!--c2--> Heading    <!--c3--> <!--c4-->  ==
+==    <!--c1-->  <!--c2--> Spaces   <!--c3--> <!--c4-->  ==
+==             <!--c2-->       <!--c2--> Tabs          <!--c3--><!--c4-->      ==
 *     <!--c1-->   <!--c2-->  List item <!--c3--> <!--c4-->
 ; <!--term to define--> term : <!--term's definition--> definition
 {|
@@ -30529,7 +30623,8 @@ __NOTOC__
   |  <!--c1--> <!--c2--> Table Cell 1 <!--c3--> <!--c4--> ||   Table Cell 2 <!--c5-->
   |} foo   <!--c1-->
 !! html/php+tidy
-<h2><span class="mw-headline" id="Heading">Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Spaces">Spaces</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Spaces">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Tabs">Tabs</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Tabs">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <ul><li>List item</li></ul>
 <dl><dt>term&#160;</dt>
 <dd>definition</dd></dl>
@@ -30563,20 +30658,19 @@ __NOTOC__
 Do not trim whitespace in HTML headings, list items, table captions, headings, and cells
 !! wikitext
 __NOTOC__
-<h2>    <!--c1-->   <!--c2--> Heading    <!--c3--> <!--c4-->  <h2>
+<h2>    <!--c1-->   <!--c2--> Heading    <!--c3--> <!--c4-->  </h2>
 <ul><li>     <!--c1-->   <!--c2-->  List item <!--c3--> <!--c4-->  </li></ul>
 <table>
 <tr><th> <!--c1--> <!--c2--> Table Heading <!--c3--> <!--c4--> <th></tr>
 <tr><td> <!--c1--> <!--c2--> Table Cell <!--c3--> <!--c4--> <th></tr>
 </table>
 !! html/php+tidy
-<h2>        Heading       </h2><h2>
+<h2><span class="mw-headline" id="Heading">        Heading       </span></h2>
 <ul><li>          List item    </li></ul>
 <table>
 <tbody><tr><th>   Table Heading   </th><th></th></tr>
 <tr><td>   Table Cell   </td><th></th></tr>
 </tbody></table>
-</h2>
 !! end
 
 !! test
@@ -30589,3 +30683,110 @@ foo ''  <!--c1--> italic <!--c2-->   '' and '''  <!--c3-->  bold  <!--c4-->  '''
 <a href="/wiki/Foo" title="Foo">  some text  </a>
 </p>
 !! end
+
+!! test
+Remove p tags surrounding a single element in a figcaption
+!! options
+parsoid=html2wt
+!! wikitext
+[[File:Foobar.jpg|right|200x200px|Caption]]
+!! html/parsoid
+<figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption><p>Caption</p></figcaption></figure>
+!! end
+
+!! test
+Selser preserves lack of newline before list and allows newline after the list
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "ul", "after", "<p>footer</p>" ]
+  ]
+}
+!! wikitext
+header
+*foo
+*bar
+!! wikitext/edited
+header
+*foo
+*bar
+
+footer
+!! end
+
+
+!! test
+Selser does not introduce newlines between unedited paragraph preceding the list
+!! options
+parsoid={
+  "modes": ["selser"],
+  "changes": [
+    [ "table tbody tr td p:last-child", "empty" ]
+  ]
+}
+!! wikitext
+{|
+|
+header
+*foo
+*bar
+footer
+|}
+!! wikitext/edited
+{|
+|
+header
+*foo
+*bar
+
+|}
+!! end
+
+!! test
+Selser does not introduce newlines between unedited paragraph following the list
+!! options
+parsoid={
+  "modes": ["selser"],
+  "changes": [
+    [ "table tbody tr td p:first-child", "empty" ]
+  ]
+}
+!! wikitext
+{|
+|
+header
+*foo
+*bar
+footer
+|}
+!! wikitext/edited
+{|
+|
+
+*foo
+*bar
+footer
+|}
+!! end
+
+!! test
+Remove a list item but do not insert newline above list
+!! options
+parsoid={
+  "modes": ["selser"],
+  "changes": [
+     [ "ul li:last-child", "remove" ]
+  ]
+}
+!! wikitext
+header
+*foo
+*bar
+footer
+!! wikitext/edited
+header
+*foo
+footer
+!! end
index 92c0714..0d2b788 100644 (file)
@@ -1313,57 +1313,113 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                }
        }
 
+       private static $schemaOverrideDefaults = [
+               'scripts' => [],
+               'create' => [],
+               'drop' => [],
+               'alter' => [],
+       ];
+
        /**
         * Stub. If a test suite needs to test against a specific database schema, it should
         * override this method and return the appropriate information from it.
         *
-        * @return [ $tables, $scripts ] A tuple of two lists, with $tables being a list of tables
-        *         that will be re-created by the scripts, and $scripts being a list of SQL script
-        *         files for creating the tables listed.
+        * @param IMaintainableDatabase $db The DB connection to use for the mock schema.
+        *        May be used to check the current state of the schema, to determine what
+        *        overrides are needed.
+        *
+        * @return array An associative array with the following fields:
+        *  - 'scripts': any SQL scripts to run. If empty or not present, schema overrides are skipped.
+        * - 'create': A list of tables created (may or may not exist in the original schema).
+        * - 'drop': A list of tables dropped (expected to be present in the original schema).
+        * - 'alter': A list of tables altered (expected to be present in the original schema).
         */
-       protected function getSchemaOverrides() {
-               return [ [], [] ];
+       protected function getSchemaOverrides( IMaintainableDatabase $db ) {
+               return [];
+       }
+
+       /**
+        * Undoes the dpecified schema overrides..
+        * Called once per test class, just before addDataOnce().
+        *
+        * @param IMaintainableDatabase $db
+        * @param array $oldOverrides
+        */
+       private function undoSchemaOverrides( IMaintainableDatabase $db, $oldOverrides ) {
+               $this->ensureMockDatabaseConnection( $db );
+
+               $oldOverrides = $oldOverrides + self::$schemaOverrideDefaults;
+               $originalTables = $this->listOriginalTables( $db );
+
+               // Drop tables that need to be restored or removed.
+               $tablesToDrop = array_merge( $oldOverrides['create'], $oldOverrides['alter'] );
+
+               // Restore tables that have been dropped or created or altered,
+               // if they exist in the original schema.
+               $tablesToRestore = array_merge( $tablesToDrop, $oldOverrides['drop'] );
+               $tablesToRestore = array_intersect( $originalTables, $tablesToRestore );
+
+               if ( $tablesToDrop ) {
+                       $this->dropMockTables( $db, $tablesToDrop );
+               }
+
+               if ( $tablesToRestore ) {
+                       $this->recloneMockTables( $db, $tablesToRestore );
+               }
        }
 
        /**
-        * Applies any schema changes requested by calling setDbSchema().
+        * Applies the schema overrides returned by getSchemaOverrides(),
+        * after undoing any previously applied schema overrides.
         * Called once per test class, just before addDataOnce().
         */
        private function setUpSchema( IMaintainableDatabase $db ) {
-               list( $tablesToAlter, $scriptsToRun ) = $this->getSchemaOverrides();
+               // Undo any active overrides.
+               $oldOverrides = isset( $db->_schemaOverrides ) ? $db->_schemaOverrides
+                       : self::$schemaOverrideDefaults;
+
+               if ( $oldOverrides['alter'] || $oldOverrides['create'] || $oldOverrides['drop'] ) {
+                       $this->undoSchemaOverrides( $db, $oldOverrides );
+               }
+
+               // Determine new overrides.
+               $overrides = $this->getSchemaOverrides( $db ) + self::$schemaOverrideDefaults;
+
+               $extraKeys = array_diff(
+                       array_keys( $overrides ),
+                       array_keys( self::$schemaOverrideDefaults )
+               );
 
-               if ( $tablesToAlter && !$scriptsToRun ) {
+               if ( $extraKeys ) {
                        throw new InvalidArgumentException(
-                               'No scripts supplied for applying the database schema.'
+                               'Schema override contains extra keys: ' . var_export( $extraKeys, true )
                        );
                }
 
-               if ( !$tablesToAlter && $scriptsToRun ) {
+               if ( !$overrides['scripts'] ) {
+                       // no scripts to run
+                       return;
+               }
+
+               if ( !$overrides['create'] && !$overrides['drop'] && !$overrides['alter'] ) {
                        throw new InvalidArgumentException(
-                               'No tables declared to be altered by schema scripts.'
+                               'Schema override scripts given, but no tables are declared to be '
+                               . 'created, dropped or altered.'
                        );
                }
 
                $this->ensureMockDatabaseConnection( $db );
 
-               $previouslyAlteredTables = isset( $db->_alteredMockTables ) ? $db->_alteredMockTables : [];
-
-               if ( !$tablesToAlter && !$previouslyAlteredTables ) {
-                       return; // nothing to do
-               }
-
-               $tablesToDrop = array_merge( $previouslyAlteredTables, $tablesToAlter );
-               $tablesToRestore = array_diff( $previouslyAlteredTables, $tablesToAlter );
+               // Drop the tables that will be created by the schema scripts.
+               $originalTables = $this->listOriginalTables( $db );
+               $tablesToDrop = array_intersect( $originalTables, $overrides['create'] );
 
                if ( $tablesToDrop ) {
                        $this->dropMockTables( $db, $tablesToDrop );
                }
 
-               if ( $tablesToRestore ) {
-                       $this->recloneMockTables( $db, $tablesToRestore );
-               }
-
-               foreach ( $scriptsToRun as $script ) {
+               // Run schema override scripts.
+               foreach ( $overrides['scripts'] as $script ) {
                        $db->sourceFile(
                                $script,
                                null,
@@ -1375,7 +1431,7 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                        );
                }
 
-               $db->_alteredMockTables = $tablesToAlter;
+               $db->_schemaOverrides = $overrides;
        }
 
        private function mungeSchemaUpdateQuery( $cmd ) {
@@ -1405,8 +1461,25 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                }
        }
 
+       /**
+        * Lists all tables in the live database schema.
+        *
+        * @param IMaintainableDatabase $db
+        * @return array
+        */
+       private function listOriginalTables( IMaintainableDatabase $db ) {
+               if ( !isset( $db->_originalTablePrefix ) ) {
+                       throw new LogicException( 'No original table prefix know, cannot list tables!' );
+               }
+
+               $originalTables = $db->listTables( $db->_originalTablePrefix, __METHOD__ );
+               return $originalTables;
+       }
+
        /**
         * Re-clones the given mock tables to restore them based on the live database schema.
+        * The tables listed in $tables are expected to currently not exist, so dropMockTables()
+        * should be called first.
         *
         * @param IMaintainableDatabase $db
         * @param array $tables
@@ -1418,7 +1491,7 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                        throw new LogicException( 'No original table prefix know, cannot restore tables!' );
                }
 
-               $originalTables = $db->listTables( $db->_originalTablePrefix, __METHOD__ );
+               $originalTables = $this->listOriginalTables( $db );
                $tables = array_intersect( $tables, $originalTables );
 
                $dbClone = new CloneDatabase( $db, $tables, $db->tablePrefix(), $db->_originalTablePrefix );
@@ -1456,6 +1529,10 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                                        continue;
                                }
 
+                               if ( !$db->tableExists( $tbl ) ) {
+                                       continue;
+                               }
+
                                if ( $truncate ) {
                                        $db->query( 'TRUNCATE TABLE ' . $db->tableName( $tbl ), __METHOD__ );
                                } else {
index 3976995..09f5675 100644 (file)
@@ -679,10 +679,6 @@ class RevisionStoreRecordTest extends MediaWikiTestCase {
                );
        }
 
-       private function getSlotRecord( $role, $contentString ) {
-               return SlotRecord::newUnsaved( $role, new TextContent( $contentString ) );
-       }
-
        public function provideHasSameContent() {
                /**
                 * @param SlotRecord[] $slots
index 9ae84d9..4032b3a 100644 (file)
@@ -172,15 +172,19 @@ class TitleMethodsTest extends MediaWikiLangTestCase {
                        [ 'User:Foo', false ],
                        [ 'User:Foo.js', false ],
                        [ 'User:Foo/bar.js', false ],
+                       [ 'User:Foo/bar.json', false ],
                        [ 'User:Foo/bar.css', false ],
                        [ 'User:Foo/bar.JS', false ],
+                       [ 'User:Foo/bar.JSON', false ],
                        [ 'User:Foo/bar.CSS', false ],
                        [ 'User talk:Foo/bar.css', false ],
                        [ 'User:Foo/bar.js.xxx', false ],
                        [ 'User:Foo/bar.xxx', false ],
                        [ 'MediaWiki:Foo.js', true ],
+                       [ 'MediaWiki:Foo.json', true ],
                        [ 'MediaWiki:Foo.css', true ],
                        [ 'MediaWiki:Foo.JS', false ],
+                       [ 'MediaWiki:Foo.JSON', false ],
                        [ 'MediaWiki:Foo.CSS', false ],
                        [ 'MediaWiki:Foo/bar.css', true ],
                        [ 'MediaWiki:Foo.css.xxx', false ],
@@ -207,14 +211,18 @@ class TitleMethodsTest extends MediaWikiLangTestCase {
                        [ 'User:Foo.js', false ],
                        [ 'User:Foo/bar.js', true ],
                        [ 'User:Foo/bar.JS', false ],
+                       [ 'User:Foo/bar.json', true ],
+                       [ 'User:Foo/bar.JSON', false ],
                        [ 'User:Foo/bar.css', true ],
                        [ 'User:Foo/bar.CSS', false ],
                        [ 'User talk:Foo/bar.css', false ],
                        [ 'User:Foo/bar.js.xxx', false ],
                        [ 'User:Foo/bar.xxx', false ],
                        [ 'MediaWiki:Foo.js', false ],
+                       [ 'MediaWiki:Foo.json', false ],
                        [ 'MediaWiki:Foo.css', false ],
                        [ 'MediaWiki:Foo.JS', false ],
+                       [ 'MediaWiki:Foo.JSON', false ],
                        [ 'MediaWiki:Foo.CSS', false ],
                        [ 'MediaWiki:Foo.css.xxx', false ],
                        [ 'TEST-JS:Foo', false ],
@@ -237,8 +245,10 @@ class TitleMethodsTest extends MediaWikiLangTestCase {
                        [ 'Help:Foo.css', false ],
                        [ 'User:Foo', false ],
                        [ 'User:Foo.js', false ],
+                       [ 'User:Foo.json', false ],
                        [ 'User:Foo.css', false ],
                        [ 'User:Foo/bar.js', false ],
+                       [ 'User:Foo/bar.json', false ],
                        [ 'User:Foo/bar.css', true ],
                ];
        }
@@ -283,15 +293,19 @@ class TitleMethodsTest extends MediaWikiLangTestCase {
                        [ 'User:Foo', true ],
                        [ 'User:Foo.js', true ],
                        [ 'User:Foo/bar.js', false ],
+                       [ 'User:Foo/bar.json', false ],
                        [ 'User:Foo/bar.css', false ],
                        [ 'User talk:Foo/bar.css', true ],
                        [ 'User:Foo/bar.js.xxx', true ],
                        [ 'User:Foo/bar.xxx', true ],
                        [ 'MediaWiki:Foo.js', false ],
                        [ 'User:Foo/bar.JS', true ],
+                       [ 'User:Foo/bar.JSON', true ],
                        [ 'User:Foo/bar.CSS', true ],
+                       [ 'MediaWiki:Foo.json', false ],
                        [ 'MediaWiki:Foo.css', false ],
                        [ 'MediaWiki:Foo.JS', true ],
+                       [ 'MediaWiki:Foo.JSON', true ],
                        [ 'MediaWiki:Foo.CSS', true ],
                        [ 'MediaWiki:Foo.css.xxx', true ],
                        [ 'TEST-JS:Foo', false ],
index 7dfb735..4e34244 100644 (file)
@@ -453,14 +453,38 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->runConfigEditPermissions(
                        [ [ 'badaccess-group0' ], [ 'mycustomjsprotected', 'bogus' ] ],
 
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'mycustomjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ] ],
 
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'mycustomjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ] ]
                );
        }
 
+       /**
+        * @todo This test method should be split up into separate test methods and
+        * data providers
+        * @covers Title::checkUserConfigPermissions
+        */
+       public function testJsonConfigEditPermissions() {
+               $this->setUser( $this->userName );
+
+               $this->setTitle( NS_USER, $this->userName . '/test.json' );
+               $this->runConfigEditPermissions(
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsonprotected', 'bogus' ] ],
+
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsonprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ] ],
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsonprotected', 'bogus' ] ],
+
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsonprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ] ],
+                       [ [ 'badaccess-group0' ], [ 'mycustomjsonprotected', 'bogus' ] ]
+               );
+       }
+
        /**
         * @todo This test method should be split up into separate test methods and
         * data providers
@@ -475,8 +499,10 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                        [ [ 'badaccess-group0' ] ],
                        [ [ 'badaccess-group0' ], [ 'mycustomcssprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ], [ 'mycustomcssprotected', 'bogus' ] ],
 
                        [ [ 'badaccess-group0' ] ],
+                       [ [ 'badaccess-group0' ], [ 'mycustomcssprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'mycustomcssprotected', 'bogus' ] ]
                );
        }
@@ -493,14 +519,38 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->runConfigEditPermissions(
                        [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
 
+                       [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
 
+                       [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customjsprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ] ]
                );
        }
 
+       /**
+        * @todo This test method should be split up into separate test methods and
+        * data providers
+        * @covers Title::checkUserConfigPermissions
+        */
+       public function testOtherJsonConfigEditPermissions() {
+               $this->setUser( $this->userName );
+
+               $this->setTitle( NS_USER, $this->altUserName . '/test.json' );
+               $this->runConfigEditPermissions(
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ],
+
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ],
+
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ],
+                       [ [ 'badaccess-group0' ] ],
+                       [ [ 'badaccess-group0' ], [ 'customjsonprotected', 'bogus' ] ]
+               );
+       }
+
        /**
         * @todo This test method should be split up into separate test methods and
         * data providers
@@ -513,10 +563,12 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->runConfigEditPermissions(
                        [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ],
 
+                       [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ],
 
                        [ [ 'badaccess-group0' ] ],
+                       [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ],
                        [ [ 'badaccess-group0' ], [ 'customcssprotected', 'bogus' ] ]
                );
        }
@@ -533,9 +585,11 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->runConfigEditPermissions(
                        [ [ 'badaccess-group0' ] ],
 
+                       [ [ 'badaccess-group0' ] ],
                        [ [ 'badaccess-group0' ] ],
                        [ [ 'badaccess-group0' ] ],
 
+                       [ [ 'badaccess-group0' ] ],
                        [ [ 'badaccess-group0' ] ],
                        [ [ 'badaccess-group0' ] ]
                );
@@ -544,8 +598,10 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
        protected function runConfigEditPermissions(
                $resultNone,
                $resultMyCss,
+               $resultMyJson,
                $resultMyJs,
                $resultUserCss,
+               $resultUserJson,
                $resultUserJs
        ) {
                $this->setUserPerm( '' );
@@ -556,6 +612,10 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
                $this->assertEquals( $resultMyCss, $result );
 
+               $this->setUserPerm( 'editmyuserjson' );
+               $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
+               $this->assertEquals( $resultMyJson, $result );
+
                $this->setUserPerm( 'editmyuserjs' );
                $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
                $this->assertEquals( $resultMyJs, $result );
@@ -564,11 +624,15 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
                $this->assertEquals( $resultUserCss, $result );
 
+               $this->setUserPerm( 'edituserjson' );
+               $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
+               $this->assertEquals( $resultUserJson, $result );
+
                $this->setUserPerm( 'edituserjs' );
                $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
                $this->assertEquals( $resultUserJs, $result );
 
-               $this->setUserPerm( [ 'edituserjs', 'editusercss' ] );
+               $this->setUserPerm( [ 'edituserjs', 'edituserjson', 'editusercss' ] );
                $result = $this->title->getUserPermissionsErrors( 'bogus', $this->user );
                $this->assertEquals( [ [ 'badaccess-group0' ] ], $result );
        }
index 4d54334..b96b491 100644 (file)
@@ -6,7 +6,7 @@
  * @group Action
  * @group Database
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Thiemo Kreuz
  */
 class ActionTest extends MediaWikiTestCase {
index 832a113..c456e9a 100644 (file)
@@ -8,13 +8,17 @@
  * @covers ApiBlock
  */
 class ApiBlockTest extends ApiTestCase {
+       protected $mUser = null;
+
        protected function setUp() {
                parent::setUp();
                $this->doLogin();
+
+               $this->mUser = $this->getMutableTestUser()->getUser();
        }
 
        protected function tearDown() {
-               $block = Block::newFromTarget( 'UTApiBlockee' );
+               $block = Block::newFromTarget( $this->mUser->getName() );
                if ( !is_null( $block ) ) {
                        $block->delete();
                }
@@ -25,80 +29,192 @@ class ApiBlockTest extends ApiTestCase {
                return $this->getTokenList( self::$users['sysop'] );
        }
 
-       function addDBDataOnce() {
-               $user = User::newFromName( 'UTApiBlockee' );
-
-               if ( $user->getId() == 0 ) {
-                       $user->addToDatabase();
-                       TestUser::setPasswordForUser( $user, 'UTApiBlockeePassword' );
-
-                       $user->saveSettings();
-               }
-       }
-
        /**
-        * This test has probably always been broken and use an invalid token
-        * Bug tracking brokenness is https://phabricator.wikimedia.org/T37646
-        *
-        * Root cause is https://gerrit.wikimedia.org/r/3434
-        * Which made the Block/Unblock API to actually verify the token
-        * previously always considered valid (T36212).
+        * @param array $extraParams Extra API parameters to pass to doApiRequest
+        * @param User  $blocker     User to do the blocking, null to pick
+        *                           arbitrarily
         */
-       public function testMakeNormalBlock() {
-               $tokens = $this->getTokens();
+       private function doBlock( array $extraParams = [], User $blocker = null ) {
+               if ( $blocker === null ) {
+                       $blocker = self::$users['sysop']->getUser();
+               }
 
-               $user = User::newFromName( 'UTApiBlockee' );
+               $tokens = $this->getTokens();
 
-               if ( !$user->getId() ) {
-                       $this->markTestIncomplete( "The user UTApiBlockee does not exist" );
-               }
+               $this->assertNotNull( $this->mUser, 'Sanity check' );
+               $this->assertNotSame( 0, $this->mUser->getId(), 'Sanity check' );
 
-               if ( !array_key_exists( 'blocktoken', $tokens ) ) {
-                       $this->markTestIncomplete( "No block token found" );
-               }
+               $this->assertArrayHasKey( 'blocktoken', $tokens, 'Sanity check' );
 
-               $this->doApiRequest( [
+               $params = [
                        'action' => 'block',
-                       'user' => 'UTApiBlockee',
+                       'user' => $this->mUser->getName(),
                        'reason' => 'Some reason',
-                       'token' => $tokens['blocktoken'] ], null, false, self::$users['sysop']->getUser() );
+                       'token' => $tokens['blocktoken'],
+               ];
+               if ( array_key_exists( 'userid', $extraParams ) ) {
+                       // Make sure we don't have both user and userid
+                       unset( $params['user'] );
+               }
+               $ret = $this->doApiRequest( array_merge( $params, $extraParams ), null,
+                       false, $blocker );
 
-               $block = Block::newFromTarget( 'UTApiBlockee' );
+               $block = Block::newFromTarget( $this->mUser->getName() );
 
                $this->assertTrue( !is_null( $block ), 'Block is valid' );
 
-               $this->assertEquals( 'UTApiBlockee', (string)$block->getTarget() );
-               $this->assertEquals( 'Some reason', $block->mReason );
-               $this->assertEquals( 'infinity', $block->mExpiry );
+               $this->assertSame( $this->mUser->getName(), (string)$block->getTarget() );
+               $this->assertSame( 'Some reason', $block->mReason );
+
+               return $ret;
+       }
+
+       /**
+        * Block by username
+        */
+       public function testNormalBlock() {
+               $this->doBlock();
        }
 
        /**
         * Block by user ID
         */
-       public function testMakeNormalBlockId() {
-               $tokens = $this->getTokens();
-               $user = User::newFromName( 'UTApiBlockee' );
+       public function testBlockById() {
+               $this->doBlock( [ 'userid' => $this->mUser->getId() ] );
+       }
 
-               if ( !$user->getId() ) {
-                       $this->markTestIncomplete( "The user UTApiBlockee does not exist." );
-               }
+       /**
+        * A blocked user can't block
+        */
+       public function testBlockByBlockedUser() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'You cannot block or unblock other users because you are yourself blocked.' );
+
+               $blocked = $this->getMutableTestUser( [ 'sysop' ] )->getUser();
+               $block = new Block( [
+                       'address' => $blocked->getName(),
+                       'by' => self::$users['sysop']->getUser()->getId(),
+                       'reason' => 'Capriciousness',
+                       'timestamp' => '19370101000000',
+                       'expiry' => 'infinity',
+               ] );
+               $block->insert();
+
+               $this->doBlock( [], $blocked );
+       }
 
-               if ( !array_key_exists( 'blocktoken', $tokens ) ) {
-                       $this->markTestIncomplete( "No block token found" );
-               }
+       public function testBlockOfNonexistentUser() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'There is no user by the name "Nonexistent". Check your spelling.' );
 
-               $data = $this->doApiRequest( [
-                       'action' => 'block',
-                       'userid' => $user->getId(),
-                       'reason' => 'Some reason',
-                       'token' => $tokens['blocktoken'] ], null, false, self::$users['sysop']->getUser() );
+               $this->doBlock( [ 'user' => 'Nonexistent' ] );
+       }
+
+       public function testBlockOfNonexistentUserId() {
+               $id = 948206325;
+               $this->setExpectedException( ApiUsageException::class,
+                       "There is no user with ID $id." );
+
+               $this->assertFalse( User::whoIs( $id ), 'Sanity check' );
+
+               $this->doBlock( [ 'userid' => $id ] );
+       }
+
+       public function testBlockWithTag() {
+               ChangeTags::defineTag( 'custom tag' );
+
+               $this->doBlock( [ 'tags' => 'custom tag' ] );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $this->assertSame( 'custom tag', $dbw->selectField(
+                       [ 'change_tag', 'logging' ],
+                       'ct_tag',
+                       [ 'log_type' => 'block' ],
+                       __METHOD__,
+                       [],
+                       [ 'change_tag' => [ 'INNER JOIN', 'ct_log_id = log_id' ] ]
+               ) );
+       }
+
+       public function testBlockWithProhibitedTag() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'You do not have permission to apply change tags along with your changes.' );
+
+               ChangeTags::defineTag( 'custom tag' );
+
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'user' => [ 'applychangetags' => true ] ] );
+
+               $this->doBlock( [ 'tags' => 'custom tag' ] );
+       }
+
+       public function testBlockWithHide() {
+               global $wgGroupPermissions;
+               $newPermissions = $wgGroupPermissions['sysop'];
+               $newPermissions['hideuser'] = true;
+               $this->mergeMwGlobalArrayValue( 'wgGroupPermissions',
+                       [ 'sysop' => $newPermissions ] );
+
+               $res = $this->doBlock( [ 'hidename' => '' ] );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $this->assertSame( '1', $dbw->selectField(
+                       'ipblocks',
+                       'ipb_deleted',
+                       [ 'ipb_id' => $res[0]['block']['id'] ],
+                       __METHOD__
+               ) );
+       }
+
+       public function testBlockWithProhibitedHide() {
+               $this->setExpectedException( ApiUsageException::class,
+                       "You don't have permission to hide user names from the block log." );
+
+               $this->doBlock( [ 'hidename' => '' ] );
+       }
+
+       public function testBlockWithEmailBlock() {
+               $res = $this->doBlock( [ 'noemail' => '' ] );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $this->assertSame( '1', $dbw->selectField(
+                       'ipblocks',
+                       'ipb_block_email',
+                       [ 'ipb_id' => $res[0]['block']['id'] ],
+                       __METHOD__
+               ) );
+       }
+
+       public function testBlockWithProhibitedEmailBlock() {
+               $this->setExpectedException( ApiUsageException::class,
+                       "You don't have permission to block users from sending email through the wiki." );
+
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'sysop' => [ 'blockemail' => true ] ] );
+
+               $this->doBlock( [ 'noemail' => '' ] );
+       }
+
+       public function testBlockWithExpiry() {
+               $res = $this->doBlock( [ 'expiry' => '1 day' ] );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $expiry = $dbw->selectField(
+                       'ipblocks',
+                       'ipb_expiry',
+                       [ 'ipb_id' => $res[0]['block']['id'] ],
+                       __METHOD__
+               );
+
+               // Allow flakiness up to one second
+               $this->assertLessThanOrEqual( 1,
+                       abs( wfTimestamp( TS_UNIX, $expiry ) - ( time() + 86400 ) ) );
+       }
 
-               $block = Block::newFromTarget( 'UTApiBlockee' );
+       public function testBlockWithInvalidExpiry() {
+               $this->setExpectedException( ApiUsageException::class, "Expiry time invalid." );
 
-               $this->assertTrue( !is_null( $block ), 'Block is valid.' );
-               $this->assertEquals( 'UTApiBlockee', (string)$block->getTarget() );
-               $this->assertEquals( 'Some reason', $block->mReason );
-               $this->assertEquals( 'infinity', $block->mExpiry );
+               $this->doBlock( [ 'expiry' => '' ] );
        }
 
        /**
@@ -109,7 +225,7 @@ class ApiBlockTest extends ApiTestCase {
                $this->doApiRequest(
                        [
                                'action' => 'block',
-                               'user' => 'UTApiBlockee',
+                               'user' => $this->mUser->getName(),
                                'reason' => 'Some reason',
                        ],
                        null,
index 87167f0..c9ce28e 100644 (file)
@@ -20,18 +20,7 @@ class ApiDeleteTest extends ApiTestCase {
        }
 
        public function testDelete() {
-               $name = 'Help:ApiDeleteTest_testDelete';
-
-               // test non-existing page
-               try {
-                       $this->doApiRequestWithToken( [
-                               'action' => 'delete',
-                               'title' => $name,
-                       ] );
-                       $this->fail( "Should have raised an ApiUsageException" );
-               } catch ( ApiUsageException $e ) {
-                       $this->assertTrue( self::apiExceptionHasCode( $e, 'missingtitle' ) );
-               }
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
 
                // create new page
                $this->editPage( $name, 'Some text' );
@@ -40,23 +29,31 @@ class ApiDeleteTest extends ApiTestCase {
                $apiResult = $this->doApiRequestWithToken( [
                        'action' => 'delete',
                        'title' => $name,
-               ] );
-               $apiResult = $apiResult[0];
+               ] )[0];
 
                $this->assertArrayHasKey( 'delete', $apiResult );
                $this->assertArrayHasKey( 'title', $apiResult['delete'] );
-               // Normalized $name is used
-               $this->assertSame(
-                       'Help:ApiDeleteTest testDelete',
-                       $apiResult['delete']['title']
-               );
+               $this->assertSame( $name, $apiResult['delete']['title'] );
                $this->assertArrayHasKey( 'logid', $apiResult['delete'] );
 
                $this->assertFalse( Title::newFromText( $name )->exists() );
        }
 
+       public function testDeleteNonexistent() {
+               $this->setExpectedException( ApiUsageException::class,
+                       "The page you specified doesn't exist." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'delete',
+                       'title' => 'This page deliberately left nonexistent',
+               ] );
+       }
+
        public function testDeletionWithoutPermission() {
-               $name = 'Help:ApiDeleteTest_testDeleteWithoutPermission';
+               $this->setExpectedException( ApiUsageException::class,
+                       'The action you have requested is limited to users in the group:' );
+
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
 
                // create new page
                $this->editPage( $name, 'Some text' );
@@ -69,11 +66,110 @@ class ApiDeleteTest extends ApiTestCase {
                                'title' => $name,
                                'token' => $user->getEditToken(),
                        ], null, null, $user );
-                       $this->fail( "Should have raised an ApiUsageException" );
-               } catch ( ApiUsageException $e ) {
-                       $this->assertTrue( self::apiExceptionHasCode( $e, 'permissiondenied' ) );
+               } finally {
+                       $this->assertTrue( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testDeleteWithTag() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               ChangeTags::defineTag( 'custom tag' );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'delete',
+                       'title' => $name,
+                       'tags' => 'custom tag',
+               ] );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $this->assertSame( 'custom tag', $dbw->selectField(
+                       [ 'change_tag', 'logging' ],
+                       'ct_tag',
+                       [
+                               'log_namespace' => NS_HELP,
+                               'log_title' => ucfirst( __FUNCTION__ ),
+                       ],
+                       __METHOD__,
+                       [],
+                       [ 'change_tag' => [ 'INNER JOIN', 'ct_log_id = log_id' ] ]
+               ) );
+       }
+
+       public function testDeleteWithoutTagPermission() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'You do not have permission to apply change tags along with your changes.' );
+
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               ChangeTags::defineTag( 'custom tag' );
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'user' => [ 'applychangetags' => true ] ] );
+
+               $this->editPage( $name, 'Some text' );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'delete',
+                               'title' => $name,
+                               'tags' => 'custom tag',
+                       ] );
+               } finally {
+                       $this->assertTrue( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testDeleteAbortedByHook() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'Deletion aborted by hook. It gave no explanation.' );
+
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->setTemporaryHook( 'ArticleDelete',
+                       function () {
+                               return false;
+                       }
+               );
+
+               try {
+                       $this->doApiRequestWithToken( [ 'action' => 'delete', 'title' => $name ] );
+               } finally {
+                       $this->assertTrue( Title::newFromText( $name )->exists() );
                }
+       }
+
+       public function testDeleteWatch() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $user = self::$users['sysop']->getUser();
+
+               $this->editPage( $name, 'Some text' );
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+               $this->assertFalse( $user->isWatched( Title::newFromText( $name ) ) );
+
+               $this->doApiRequestWithToken( [ 'action' => 'delete', 'title' => $name, 'watch' => '' ] );
 
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+               $this->assertTrue( $user->isWatched( Title::newFromText( $name ) ) );
+       }
+
+       public function testDeleteUnwatch() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $user = self::$users['sysop']->getUser();
+
+               $this->editPage( $name, 'Some text' );
                $this->assertTrue( Title::newFromText( $name )->exists() );
+               $user->addWatch( Title::newFromText( $name ) );
+               $this->assertTrue( $user->isWatched( Title::newFromText( $name ) ) );
+
+               $this->doApiRequestWithToken( [ 'action' => 'delete', 'title' => $name, 'unwatch' => '' ] );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+               $this->assertFalse( $user->isWatched( Title::newFromText( $name ) ) );
        }
 }
index 7eac559..9486f88 100644 (file)
@@ -35,6 +35,8 @@ class ApiEditPageTest extends ApiTestCase {
 
                $wgContentHandlers["testing"] = 'DummyContentHandlerForTesting';
                $wgContentHandlers["testing-nontext"] = 'DummyNonTextContentHandler';
+               $wgContentHandlers["testing-serialize-error"] =
+                       'DummySerializeErrorContentHandler';
 
                MWNamespace::clearCaches();
                $wgContLang->resetNamespaces(); # reset namespace cache
@@ -65,7 +67,7 @@ class ApiEditPageTest extends ApiTestCase {
                // Validate API result data
                $this->assertArrayHasKey( 'edit', $apiResult );
                $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+               $this->assertSame( 'Success', $apiResult['edit']['result'] );
 
                $this->assertArrayHasKey( 'new', $apiResult['edit'] );
                $this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
@@ -79,7 +81,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'text' => 'some text',
                ] );
 
-               $this->assertEquals( 'Success', $data[0]['edit']['result'] );
+               $this->assertSame( 'Success', $data[0]['edit']['result'] );
 
                $this->assertArrayNotHasKey( 'new', $data[0]['edit'] );
                $this->assertArrayHasKey( 'nochange', $data[0]['edit'] );
@@ -91,7 +93,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'text' => 'different text'
                ] );
 
-               $this->assertEquals( 'Success', $data[0]['edit']['result'] );
+               $this->assertSame( 'Success', $data[0]['edit']['result'] );
 
                $this->assertArrayNotHasKey( 'new', $data[0]['edit'] );
                $this->assertArrayNotHasKey( 'nochange', $data[0]['edit'] );
@@ -148,7 +150,7 @@ class ApiEditPageTest extends ApiTestCase {
                                'title' => $name,
                                'text' => $text, ] );
 
-                       $this->assertEquals( 'Success', $re['edit']['result'] ); // sanity
+                       $this->assertSame( 'Success', $re['edit']['result'] ); // sanity
                }
 
                // -- try append/prepend --------------------------------------------
@@ -157,7 +159,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'title' => $name,
                        $op . 'text' => $append, ] );
 
-               $this->assertEquals( 'Success', $re['edit']['result'] );
+               $this->assertSame( 'Success', $re['edit']['result'] );
 
                // -- validate -----------------------------------------------------
                $page = new WikiPage( Title::newFromText( $name ) );
@@ -166,7 +168,7 @@ class ApiEditPageTest extends ApiTestCase {
 
                $text = $content->getNativeData();
 
-               $this->assertEquals( $expected, $text );
+               $this->assertSame( $expected, $text );
        }
 
        /**
@@ -185,11 +187,11 @@ class ApiEditPageTest extends ApiTestCase {
                        'section' => '1',
                        'text' => "==section 1==\nnew content 1",
                ] );
-               $this->assertEquals( 'Success', $re['edit']['result'] );
+               $this->assertSame( 'Success', $re['edit']['result'] );
                $newtext = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
                        ->getNativeData();
-               $this->assertEquals( "==section 1==\nnew content 1\n\n==section 2==\ncontent2", $newtext );
+               $this->assertSame( "==section 1==\nnew content 1\n\n==section 2==\ncontent2", $newtext );
 
                // Test that we raise a 'nosuchsection' error
                try {
@@ -224,12 +226,12 @@ class ApiEditPageTest extends ApiTestCase {
                        'summary' => 'header',
                ] );
 
-               $this->assertEquals( 'Success', $re['edit']['result'] );
+               $this->assertSame( 'Success', $re['edit']['result'] );
                // Check the page text is correct
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
                        ->getNativeData();
-               $this->assertEquals( "== header ==\n\ntest", $text );
+               $this->assertSame( "== header ==\n\ntest", $text );
 
                // Now on one that does
                $this->assertTrue( Title::newFromText( $name )->exists() );
@@ -241,11 +243,11 @@ class ApiEditPageTest extends ApiTestCase {
                        'summary' => 'header',
                ] );
 
-               $this->assertEquals( 'Success', $re2['edit']['result'] );
+               $this->assertSame( 'Success', $re2['edit']['result'] );
                $text = WikiPage::factory( Title::newFromText( $name ) )
                        ->getContent( Revision::RAW )
                        ->getNativeData();
-               $this->assertEquals( "== header ==\n\ntest\n\n== header ==\n\ntest", $text );
+               $this->assertSame( "== header ==\n\ntest\n\n== header ==\n\ntest", $text );
        }
 
        /**
@@ -290,7 +292,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'redirect' => true,
                ], null, self::$users['sysop']->getUser() );
 
-               $this->assertEquals( 'Success', $re['edit']['result'],
+               $this->assertSame( 'Success', $re['edit']['result'],
                        "no problems expected when following redirect" );
        }
 
@@ -411,7 +413,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'section' => 'new',
                ], null, self::$users['sysop']->getUser() );
 
-               $this->assertEquals( 'Success', $re['edit']['result'],
+               $this->assertSame( 'Success', $re['edit']['result'],
                        "no edit conflict expected here" );
        }
 
@@ -458,7 +460,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'redirect' => true,
                ], null, self::$users['sysop']->getUser() );
 
-               $this->assertEquals( 'Success', $re['edit']['result'],
+               $this->assertSame( 'Success', $re['edit']['result'],
                        "no edit conflict expected here" );
        }
 
@@ -505,7 +507,7 @@ class ApiEditPageTest extends ApiTestCase {
                // Validate API result data
                $this->assertArrayHasKey( 'edit', $apiResult );
                $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+               $this->assertSame( 'Success', $apiResult['edit']['result'] );
 
                $this->assertArrayHasKey( 'new', $apiResult['edit'] );
                $this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
@@ -514,8 +516,8 @@ class ApiEditPageTest extends ApiTestCase {
 
                // validate resulting revision
                $page = WikiPage::factory( Title::newFromText( $name ) );
-               $this->assertEquals( "testing-nontext", $page->getContentModel() );
-               $this->assertEquals( $data, $page->getContent()->serialize() );
+               $this->assertSame( "testing-nontext", $page->getContentModel() );
+               $this->assertSame( $data, $page->getContent()->serialize() );
        }
 
        /**
@@ -536,10 +538,10 @@ class ApiEditPageTest extends ApiTestCase {
                // Check success
                $this->assertArrayHasKey( 'edit', $apiResult );
                $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+               $this->assertSame( 'Success', $apiResult['edit']['result'] );
                $this->assertArrayHasKey( 'contentmodel', $apiResult['edit'] );
                // Content model is wikitext
-               $this->assertEquals( 'wikitext', $apiResult['edit']['contentmodel'] );
+               $this->assertSame( 'wikitext', $apiResult['edit']['contentmodel'] );
 
                // Convert the page to JSON
                $apiResult = $this->doApiRequestWithToken( [
@@ -552,9 +554,9 @@ class ApiEditPageTest extends ApiTestCase {
                // Check success
                $this->assertArrayHasKey( 'edit', $apiResult );
                $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+               $this->assertSame( 'Success', $apiResult['edit']['result'] );
                $this->assertArrayHasKey( 'contentmodel', $apiResult['edit'] );
-               $this->assertEquals( 'json', $apiResult['edit']['contentmodel'] );
+               $this->assertSame( 'json', $apiResult['edit']['contentmodel'] );
 
                $apiResult = $this->doApiRequestWithToken( [
                        'action' => 'edit',
@@ -565,9 +567,1051 @@ class ApiEditPageTest extends ApiTestCase {
                // Check success
                $this->assertArrayHasKey( 'edit', $apiResult );
                $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+               $this->assertSame( 'Success', $apiResult['edit']['result'] );
                $this->assertArrayHasKey( 'contentmodel', $apiResult['edit'] );
                // Check that the contentmodel is back to wikitext now.
-               $this->assertEquals( 'wikitext', $apiResult['edit']['contentmodel'] );
+               $this->assertSame( 'wikitext', $apiResult['edit']['contentmodel'] );
+       }
+
+       // The tests below are mostly not commented because they do exactly what
+       // you'd expect from the name.
+
+       public function testCorrectContentFormat() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'some text',
+                       'contentmodel' => 'wikitext',
+                       'contentformat' => 'text/x-wiki',
+               ] );
+
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+       }
+
+       public function testUnsupportedContentFormat() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'Unrecognized value for parameter "contentformat": nonexistent format.' );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'some text',
+                               'contentformat' => 'nonexistent format',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testMismatchedContentFormat() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The requested format text/plain is not supported for content ' .
+                       "model wikitext used by $name." );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'some text',
+                               'contentmodel' => 'wikitext',
+                               'contentformat' => 'text/plain',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testUndoToInvalidRev() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $revId = $this->editPage( $name, 'Some text' )->value['revision']
+                       ->getId();
+               $revId++;
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "There is no revision with ID $revId." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId,
+               ] );
+       }
+
+       /**
+        * Tests what happens if the undo parameter is a valid revision, but
+        * the undoafter parameter doesn't refer to a revision that exists in the
+        * database.
+        */
+       public function testUndoAfterToInvalidRev() {
+               // We can't just pick a large number for undoafter (as in
+               // testUndoToInvalidRev above), because then MediaWiki will helpfully
+               // assume we switched around undo and undoafter and we'll test the code
+               // path for undo being invalid, not undoafter.  So instead we delete
+               // the revision from the database.  In real life this case could come
+               // up if a revision number was skipped, e.g., if two transactions try
+               // to insert new revision rows at once and the first one to succeed
+               // gets rolled back.
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $titleObj = Title::newFromText( $name );
+
+               $revId1 = $this->editPage( $name, '1' )->value['revision']->getId();
+               $revId2 = $this->editPage( $name, '2' )->value['revision']->getId();
+               $revId3 = $this->editPage( $name, '3' )->value['revision']->getId();
+
+               // Make the middle revision disappear
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->delete( 'revision', [ 'rev_id' => $revId2 ], __METHOD__ );
+               $dbw->update( 'revision', [ 'rev_parent_id' => $revId1 ],
+                       [ 'rev_id' => $revId3 ], __METHOD__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "There is no revision with ID $revId2." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId3,
+                       'undoafter' => $revId2,
+               ] );
+       }
+
+       /**
+        * Tests what happens if the undo parameter is a valid revision, but
+        * undoafter is hidden (rev_deleted).
+        */
+       public function testUndoAfterToHiddenRev() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $titleObj = Title::newFromText( $name );
+
+               $this->editPage( $name, '0' );
+
+               $revId1 = $this->editPage( $name, '1' )->value['revision']->getId();
+
+               $revId2 = $this->editPage( $name, '2' )->value['revision']->getId();
+
+               // Hide the middle revision
+               $list = RevisionDeleter::createList( 'revision',
+                       RequestContext::getMain(), $titleObj, [ $revId1 ] );
+               $list->setVisibility( [
+                       'value' => [ Revision::DELETED_TEXT => 1 ],
+                       'comment' => 'Bye-bye',
+               ] );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "There is no revision with ID $revId1." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId2,
+                       'undoafter' => $revId1,
+               ] );
+       }
+
+       /**
+        * Test undo when a revision with a higher id has an earlier timestamp.
+        * This can happen if importing an old revision.
+        */
+       public function testUndoWithSwappedRevisions() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $titleObj = Title::newFromText( $name );
+
+               $this->editPage( $name, '0' );
+
+               $revId2 = $this->editPage( $name, '2' )->value['revision']->getId();
+
+               $revId1 = $this->editPage( $name, '1' )->value['revision']->getId();
+
+               // Now monkey with the timestamp
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update(
+                       'revision',
+                       [ 'rev_timestamp' => wfTimestamp( TS_MW, time() - 86400 ) ],
+                       [ 'rev_id' => $revId1 ],
+                       __METHOD__
+               );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId2,
+                       'undoafter' => $revId1,
+               ] );
+
+               $text = ( new WikiPage( $titleObj ) )->getContent()->getNativeData();
+
+               // This is wrong!  It should be 1.  But let's test for our incorrect
+               // behavior for now, so if someone fixes it they'll fix the test as
+               // well to expect 1.  If we disabled the test, it might stay disabled
+               // even once the bug is fixed, which would be a shame.
+               $this->assertSame( '2', $text );
+       }
+
+       public function testUndoWithConflicts() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The edit could not be undone due to conflicting intermediate edits.' );
+
+               $this->editPage( $name, '1' );
+
+               $revId = $this->editPage( $name, '2' )->value['revision']->getId();
+
+               $this->editPage( $name, '3' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId,
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
+                       ->getNativeData();
+               $this->assertSame( '3', $text );
+       }
+
+       /**
+        * undoafter is supposed to be less than undo.  If not, we reverse their
+        * meaning, so that the two are effectively interchangeable.
+        */
+       public function testReversedUndoAfter() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, '0' );
+               $revId1 = $this->editPage( $name, '1' )->value['revision']->getId();
+               $revId2 = $this->editPage( $name, '2' )->value['revision']->getId();
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'undo' => $revId1,
+                       'undoafter' => $revId2,
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )->getContent()
+                       ->getNativeData();
+               $this->assertSame( '1', $text );
+       }
+
+       public function testUndoToRevFromDifferentPage() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( "$name-1", 'Some text' );
+               $revId = $this->editPage( "$name-1", 'Some more text' )
+                       ->value['revision']->getId();
+
+               $this->editPage( "$name-2", 'Some text' );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "r$revId is not a revision of $name-2." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => "$name-2",
+                       'undo' => $revId,
+               ] );
+       }
+
+       public function testUndoAfterToRevFromDifferentPage() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $revId1 = $this->editPage( "$name-1", 'Some text' )
+                       ->value['revision']->getId();
+
+               $revId2 = $this->editPage( "$name-2", 'Some text' )
+                       ->value['revision']->getId();
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "r$revId1 is not a revision of $name-2." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => "$name-2",
+                       'undo' => $revId2,
+                       'undoafter' => $revId1,
+               ] );
+       }
+
+       public function testMd5Text() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'md5' => md5( 'Some text' ),
+               ] );
+
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+       }
+
+       public function testMd5PrependText() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'prependtext' => 'Alert: ',
+                       'md5' => md5( 'Alert: ' ),
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+               $this->assertSame( 'Alert: Some text', $text );
+       }
+
+       public function testMd5AppendText() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => ' is nice',
+                       'md5' => md5( ' is nice' ),
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+               $this->assertSame( 'Some text is nice', $text );
+       }
+
+       public function testMd5PrependAndAppendText() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'prependtext' => 'Alert: ',
+                       'appendtext' => ' is nice',
+                       'md5' => md5( 'Alert:  is nice' ),
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+               $this->assertSame( 'Alert: Some text is nice', $text );
+       }
+
+       public function testIncorrectMd5Text() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The supplied MD5 hash was incorrect.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'md5' => md5( '' ),
+               ] );
+       }
+
+       public function testIncorrectMd5PrependText() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The supplied MD5 hash was incorrect.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'prependtext' => 'Some ',
+                       'appendtext' => 'text',
+                       'md5' => md5( 'Some ' ),
+               ] );
+       }
+
+       public function testIncorrectMd5AppendText() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The supplied MD5 hash was incorrect.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'prependtext' => 'Some ',
+                       'appendtext' => 'text',
+                       'md5' => md5( 'text' ),
+               ] );
+       }
+
+       public function testCreateOnly() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The article you tried to create has been created already.' );
+
+               $this->editPage( $name, 'Some text' );
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some more text',
+                               'createonly' => '',
+                       ] );
+               } finally {
+                       // Validate that content was not changed
+                       $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                               ->getContent()->getNativeData();
+
+                       $this->assertSame( 'Some text', $text );
+               }
+       }
+
+       public function testNoCreate() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "The page you specified doesn't exist." );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                               'nocreate' => '',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       /**
+        * Appending/prepending is currently only supported for TextContent.  We
+        * test this right now, and when support is added this test should be
+        * replaced by tests that the support is correct.
+        */
+       public function testAppendWithNonTextContentHandler() {
+               $name = 'MediaWiki:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "Can't append to pages using content model testing-nontext." );
+
+               $this->setTemporaryHook( 'ContentHandlerDefaultModelFor',
+                       function ( Title $title, &$model ) use ( $name ) {
+                               if ( $title->getPrefixedText() === $name ) {
+                                       $model = 'testing-nontext';
+                               }
+                               return true;
+                       }
+               );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => 'Some text',
+               ] );
+       }
+
+       public function testAppendInMediaWikiNamespace() {
+               $name = 'MediaWiki:' . ucfirst( __FUNCTION__ );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => 'Some text',
+               ] );
+
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+       }
+
+       public function testAppendInMediaWikiNamespaceWithSerializationError() {
+               $name = 'MediaWiki:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'Content serialization failed: Could not unserialize content' );
+
+               $this->setTemporaryHook( 'ContentHandlerDefaultModelFor',
+                       function ( Title $title, &$model ) use ( $name ) {
+                               if ( $title->getPrefixedText() === $name ) {
+                                       $model = 'testing-serialize-error';
+                               }
+                               return true;
+                       }
+               );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => 'Some text',
+               ] );
+       }
+
+       public function testAppendNewSection() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Initial content' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => '== New section ==',
+                       'section' => 'new',
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+
+               $this->assertSame( "Initial content\n\n== New section ==", $text );
+       }
+
+       public function testAppendNewSectionWithInvalidContentModel() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'Sections are not supported for content model text.' );
+
+               $this->editPage( $name, 'Initial content' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => '== New section ==',
+                       'section' => 'new',
+                       'contentmodel' => 'text',
+               ] );
+       }
+
+       public function testAppendNewSectionWithTitle() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Initial content' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'sectiontitle' => 'My section',
+                       'appendtext' => 'More content',
+                       'section' => 'new',
+               ] );
+
+               $page = new WikiPage( Title::newFromText( $name ) );
+
+               $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
+                       $page->getContent()->getNativeData() );
+               $this->assertSame( '/* My section */ new section',
+                       $page->getRevision()->getComment() );
+       }
+
+       public function testAppendNewSectionWithSummary() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Initial content' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => 'More content',
+                       'section' => 'new',
+                       'summary' => 'Add new section',
+               ] );
+
+               $page = new WikiPage( Title::newFromText( $name ) );
+
+               $this->assertSame( "Initial content\n\n== Add new section ==\n\nMore content",
+                       $page->getContent()->getNativeData() );
+               // EditPage actually assumes the summary is the section name here
+               $this->assertSame( '/* Add new section */ new section',
+                       $page->getRevision()->getComment() );
+       }
+
+       public function testAppendNewSectionWithTitleAndSummary() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Initial content' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'sectiontitle' => 'My section',
+                       'appendtext' => 'More content',
+                       'section' => 'new',
+                       'summary' => 'Add new section',
+               ] );
+
+               $page = new WikiPage( Title::newFromText( $name ) );
+
+               $this->assertSame( "Initial content\n\n== My section ==\n\nMore content",
+                       $page->getContent()->getNativeData() );
+               $this->assertSame( 'Add new section',
+                       $page->getRevision()->getComment() );
+       }
+
+       public function testAppendToSection() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, "== Section 1 ==\n\nContent\n\n" .
+                       "== Section 2 ==\n\nFascinating!" );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => ' and more content',
+                       'section' => '1',
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+
+               $this->assertSame( "== Section 1 ==\n\nContent and more content\n\n" .
+                       "== Section 2 ==\n\nFascinating!", $text );
+       }
+
+       public function testAppendToFirstSection() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, "Content\n\n== Section 1 ==\n\nFascinating!" );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'appendtext' => ' and more content',
+                       'section' => '0',
+               ] );
+
+               $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                       ->getContent()->getNativeData();
+
+               $this->assertSame( "Content and more content\n\n== Section 1 ==\n\n" .
+                       "Fascinating!", $text );
+       }
+
+       public function testAppendToNonexistentSection() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class, 'There is no section 1.' );
+
+               $this->editPage( $name, 'Content' );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'appendtext' => ' and more content',
+                               'section' => '1',
+                       ] );
+               } finally {
+                       $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                               ->getContent()->getNativeData();
+
+                       $this->assertSame( 'Content', $text );
+               }
+       }
+
+       public function testEditMalformedSection() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The "section" parameter must be a valid section ID or "new".' );
+               $this->editPage( $name, 'Content' );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Different content',
+                               'section' => 'It is unlikely that this is valid',
+                       ] );
+               } finally {
+                       $text = ( new WikiPage( Title::newFromText( $name ) ) )
+                               ->getContent()->getNativeData();
+
+                       $this->assertSame( 'Content', $text );
+               }
+       }
+
+       public function testEditWithStartTimestamp() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $this->setExpectedException( ApiUsageException::class,
+                       'The page has been deleted since you fetched its timestamp.' );
+
+               $startTime = MWTimestamp::convert( TS_MW, time() - 1 );
+
+               $this->editPage( $name, 'Some text' );
+
+               $pageObj = new WikiPage( Title::newFromText( $name ) );
+               $pageObj->doDeleteArticle( 'Bye-bye' );
+
+               $this->assertFalse( $pageObj->exists() );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Different text',
+                               'starttimestamp' => $startTime,
+                       ] );
+               } finally {
+                       $this->assertFalse( $pageObj->exists() );
+               }
+       }
+
+       public function testEditMinor() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->editPage( $name, 'Some text' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Different text',
+                       'minor' => '',
+               ] );
+
+               $revisionStore = \MediaWiki\MediaWikiServices::getInstance()->getRevisionStore();
+               $revision = $revisionStore->getRevisionByTitle( Title::newFromText( $name ) );
+               $this->assertTrue( $revision->isMinor() );
+       }
+
+       public function testEditRecreate() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $startTime = MWTimestamp::convert( TS_MW, time() - 1 );
+
+               $this->editPage( $name, 'Some text' );
+
+               $pageObj = new WikiPage( Title::newFromText( $name ) );
+               $pageObj->doDeleteArticle( 'Bye-bye' );
+
+               $this->assertFalse( $pageObj->exists() );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Different text',
+                       'starttimestamp' => $startTime,
+                       'recreate' => '',
+               ] );
+
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+       }
+
+       public function testEditWatch() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $user = self::$users['sysop']->getUser();
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'watch' => '',
+               ] );
+
+               $this->assertTrue( Title::newFromText( $name )->exists() );
+               $this->assertTrue( $user->isWatched( Title::newFromText( $name ) ) );
+       }
+
+       public function testEditUnwatch() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+               $user = self::$users['sysop']->getUser();
+               $titleObj = Title::newFromText( $name );
+
+               $user->addWatch( $titleObj );
+
+               $this->assertFalse( $titleObj->exists() );
+               $this->assertTrue( $user->isWatched( $titleObj ) );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'unwatch' => '',
+               ] );
+
+               $this->assertTrue( $titleObj->exists() );
+               $this->assertFalse( $user->isWatched( $titleObj ) );
+       }
+
+       public function testEditWithTag() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               ChangeTags::defineTag( 'custom tag' );
+
+               $revId = $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'tags' => 'custom tag',
+               ] )[0]['edit']['newrevid'];
+
+               $dbw = wfGetDB( DB_MASTER );
+               $this->assertSame( 'custom tag', $dbw->selectField(
+                       'change_tag', 'ct_tag', [ 'ct_rev_id' => $revId ], __METHOD__ ) );
+       }
+
+       public function testEditWithoutTagPermission() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'You do not have permission to apply change tags along with your changes.' );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+
+               ChangeTags::defineTag( 'custom tag' );
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'user' => [ 'applychangetags' => true ] ] );
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                               'tags' => 'custom tag',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testEditAbortedByHook() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The modification you tried to make was aborted by an extension.' );
+
+               $this->hideDeprecated( 'APIEditBeforeSave hook (used in ' .
+                       'hook-APIEditBeforeSave-closure)' );
+
+               $this->setTemporaryHook( 'APIEditBeforeSave',
+                       function () {
+                               return false;
+                       }
+               );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testEditAbortedByHookWithCustomOutput() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->hideDeprecated( 'APIEditBeforeSave hook (used in ' .
+                       'hook-APIEditBeforeSave-closure)' );
+
+               $this->setTemporaryHook( 'APIEditBeforeSave',
+                       function ( $unused1, $unused2, &$r ) {
+                               $r['msg'] = 'Some message';
+                               return false;
+                       } );
+
+               $result = $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+               ] );
+               Wikimedia\restoreWarnings();
+
+               $this->assertSame( [ 'msg' => 'Some message', 'result' => 'Failure' ],
+                       $result[0]['edit'] );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+       }
+
+       public function testEditAbortedByEditPageHookWithResult() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setTemporaryHook( 'EditFilterMergedContent',
+                       function ( $unused1, $unused2, Status $status ) {
+                               $status->apiHookResult = [ 'msg' => 'A message for you!' ];
+                               return false;
+                       } );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+               ] );
+
+               $this->assertFalse( Title::newFromText( $name )->exists() );
+               $this->assertSame( [ 'edit' => [ 'msg' => 'A message for you!',
+                       'result' => 'Failure' ] ], $res[0] );
+       }
+
+       public function testEditAbortedByEditPageHookWithNoResult() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The modification you tried to make was aborted by an extension.' );
+
+               $this->setTemporaryHook( 'EditFilterMergedContent',
+                       function () {
+                               return false;
+                       }
+               );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                       ] );
+               } finally {
+                       $this->assertFalse( Title::newFromText( $name )->exists() );
+               }
+       }
+
+       public function testEditWhileBlocked() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'You have been blocked from editing.' );
+
+               $block = new Block( [
+                       'address' => self::$users['sysop']->getUser()->getName(),
+                       'by' => self::$users['sysop']->getUser()->getId(),
+                       'reason' => 'Capriciousness',
+                       'timestamp' => '19370101000000',
+                       'expiry' => 'infinity',
+               ] );
+               $block->insert();
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                       ] );
+               } finally {
+                       $block->delete();
+                       self::$users['sysop']->getUser()->clearInstanceCache();
+               }
+       }
+
+       public function testEditWhileReadOnly() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The wiki is currently in read-only mode.' );
+
+               $svc = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $svc->setReason( "Read-only for testing" );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'Some text',
+                       ] );
+               } finally {
+                       $svc->setReason( false );
+               }
+       }
+
+       public function testCreateImageRedirectAnon() {
+               $name = 'File:' . ucfirst( __FUNCTION__ );
+
+               // @todo When ApiTestCase supports anonymous users, this exception
+               // should no longer be thrown, and the test can then be updated to test
+               // for the actual expected behavior.
+               $this->setExpectedException( ApiUsageException::class,
+                       'Invalid CSRF token.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'logout',
+               ] );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => '#REDIRECT [[File:Other file.png]]',
+               ] );
+       }
+
+       public function testCreateImageRedirectLoggedIn() {
+               $name = 'File:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "You don't have permission to create image redirects." );
+
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'user' => [ 'upload' => true ] ] );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => '#REDIRECT [[File:Other file.png]]',
+               ] );
+       }
+
+       public function testTooBigEdit() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       'The content you supplied exceeds the article size limit of 1 kilobyte.' );
+
+               $this->setMwGlobals( 'wgMaxArticleSize', 1 );
+
+               $text = str_repeat( '!', 1025 );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => $text,
+               ] );
+       }
+
+       public function testProhibitedAnonymousEdit() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               // @todo See comment in testCreateImageRedirectAnon
+               $this->setExpectedException( ApiUsageException::class,
+                       'Invalid CSRF token.' );
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ '*' => [ 'edit' => true ] ] );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'logout',
+               ] );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+               ] );
+       }
+
+       public function testProhibitedChangeContentModel() {
+               $name = 'Help:' . ucfirst( __FUNCTION__ );
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "You don't have permission to change the content model of a page." );
+
+               $this->setMwGlobals( 'wgRevokePermissions',
+                       [ 'user' => [ 'editcontentmodel' => true ] ] );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => 'Some text',
+                       'contentmodel' => 'json',
+               ] );
        }
 }
index ed4d683..d382c83 100644 (file)
@@ -282,4 +282,20 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertEquals( 'Success', $a );
        }
 
+       public function testLoginWithNoSameOriginSecurity() {
+               $this->setTemporaryHook( 'RequestHasSameOriginSecurity',
+                       function () {
+                               return false;
+                       }
+               );
+
+               $result = $this->doApiRequest( [
+                       'action' => 'login',
+               ] )[0]['login'];
+
+               $this->assertSame( [
+                       'result' => 'Aborted',
+                       'reason' => 'Cannot log in when the same-origin policy is not applied.',
+               ], $result );
+       }
 }
index 8417f5c..f973281 100644 (file)
@@ -4,7 +4,7 @@ use MediaWiki\Linker\LinkTarget;
 use MediaWiki\MediaWikiServices;
 
 /**
- * @medium
+ * @group medium
  * @group API
  * @group Database
  *
@@ -629,6 +629,7 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
                                        'type' => 'new',
                                        'patrolled' => true,
                                        'unpatrolled' => false,
+                                       'autopatrolled' => false,
                                ]
                        ],
                        $this->getItemsFromApiResponse( $result )
@@ -973,6 +974,7 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
                                        'type' => 'new',
                                        'patrolled' => true,
                                        'unpatrolled' => false,
+                                       'autopatrolled' => false,
                                ]
                        ],
                        $this->getItemsFromApiResponse( $resultPatrolled )
index f0d8384..e49e1d8 100644 (file)
@@ -131,7 +131,7 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
        private static $allcategories = [
                [ 'list' => 'allcategories', 'acprefix' => 'AQBT-' ],
                [ 'allcategories' => [
-                       [ '*' => 'AQBT-Cat' ],
+                       [ 'category' => 'AQBT-Cat' ],
                ] ]
        ];
 
@@ -233,9 +233,7 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
                $this->check( self::$allpages );
                $this->check( self::$alllinks );
                $this->check( self::$alltransclusions );
-               // This test is temporarily disabled until a sqlite bug is fixed
-               // Confirmed still broken 15-nov-2013
-               // $this->check( self::$allcategories );
+               $this->check( self::$allcategories );
                $this->check( self::$backlinks );
                $this->check( self::$embeddedin );
                $this->check( self::$categorymembers );
index 944d31c..334fd5d 100644 (file)
@@ -46,7 +46,7 @@ class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
        }
 
        /**
-        * @medium
+        * @group medium
         */
        public function testA() {
                $this->mVerbose = false;
index b31627b..7259bb8 100644 (file)
@@ -56,7 +56,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - list=allpages
-        * @medium
+        * @group medium
         */
        public function test1List() {
                $this->mVerbose = false;
@@ -80,7 +80,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - list=allpages|alltransclusions
-        * @medium
+        * @group medium
         */
        public function test2Lists() {
                $this->mVerbose = false;
@@ -106,7 +106,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - generator=allpages, prop=links
-        * @medium
+        * @group medium
         */
        public function testGen1Prop() {
                $this->mVerbose = false;
@@ -131,7 +131,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - generator=allpages, prop=links|templates
-        * @medium
+        * @group medium
         */
        public function testGen2Prop() {
                $this->mVerbose = false;
@@ -162,7 +162,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - generator=allpages, prop=links, list=alltransclusions
-        * @medium
+        * @group medium
         */
        public function testGen1Prop1List() {
                $this->mVerbose = false;
@@ -194,7 +194,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
        /**
         * Test smart continue - generator=allpages, prop=links|templates,
         *                       list=alllinks|alltransclusions, meta=siteinfo
-        * @medium
+        * @group medium
         */
        public function testGen2Prop2List1Meta() {
                $this->mVerbose = false;
@@ -233,7 +233,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - generator=templates, prop=templates
-        * @medium
+        * @group medium
         */
        public function testSameGenAndProp() {
                $this->mVerbose = false;
@@ -279,7 +279,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
 
        /**
         * Test smart continue - generator=allpages, list=allpages
-        * @medium
+        * @group medium
         */
        public function testSameGenList() {
                $this->mVerbose = false;
index f74f60a..e20cf94 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @covers HTMLForm
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Gergő Tisza
  * @author Thiemo Mättig
  */
index 97ea326..1db2215 100644 (file)
@@ -5,7 +5,7 @@ use MediaWiki\MediaWikiServices;
  * Integration test that checks import success and
  * LinkCache integration.
  *
- * @large
+ * @group large
  * @group Database
  * @covers ImportStreamSource
  * @covers ImportReporter
index b5d6144..bf8603d 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @group JobQueue
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Thiemo Kreuz
  */
 class JobQueueMemoryTest extends PHPUnit\Framework\TestCase {
index 656be38..5960a16 100644 (file)
@@ -6,7 +6,7 @@
  * @group JobQueue
  * @group Database
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Addshore
  */
 class CategoryMembershipChangeJobTest extends MediaWikiTestCase {
index b5257a3..6ae7d60 100644 (file)
@@ -7,7 +7,7 @@ use MediaWiki\MediaWikiServices;
  * @group JobQueue
  * @group Database
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Addshore
  */
 class ClearUserWatchlistJobTest extends MediaWikiTestCase {
index 4fbbc99..d5ac77b 100644 (file)
@@ -8,8 +8,6 @@ class ArrayUtilsTest extends PHPUnit\Framework\TestCase {
 
        use MediaWikiCoversValidator;
 
-       private $search;
-
        /**
         * @covers ArrayUtils::findLowerBound
         * @dataProvider provideFindLowerBound
index d64ba3d..9127a30 100644 (file)
@@ -47,7 +47,7 @@ class MemoizedCallableTest extends PHPUnit\Framework\TestCase {
         * Consecutive calls to the memoized callable with the same arguments
         * should result in just one invocation of the underlying callable.
         *
-        * @requires function apc_store/apcu_store
+        * @requires extension apcu
         */
        public function testCallableMemoized() {
                $observer = $this->getMockBuilder( stdClass::class )
index a4edbe7..1eca89b 100644 (file)
@@ -137,15 +137,12 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
                        $db->listViews( '' ) );
        }
 
-       /**
-        * @covers Wikimedia\Rdbms\MySQLMasterPos
-        */
        public function testBinLogName() {
                $pos = new MySQLMasterPos( "db1052.2424/4643", 1 );
 
-               $this->assertEquals( "db1052", $pos->getLogName() );
+               $this->assertEquals( "db1052", $pos->binlog );
                $this->assertEquals( "db1052.2424", $pos->getLogFile() );
-               $this->assertEquals( [ 2424, 4643 ], $pos->getLogPosition() );
+               $this->assertEquals( [ 2424, 4643 ], $pos->pos );
        }
 
        /**
@@ -200,20 +197,20 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
                        ],
                        // MySQL GTID style
                        [
-                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:1-23', $now ),
-                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:5-24', $now ),
+                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:23', $now ),
+                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:24', $now ),
                                true,
                                false
                        ],
                        [
-                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:5-99', $now ),
-                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:1-100', $now ),
+                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:99', $now ),
+                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:100', $now ),
                                true,
                                false
                        ],
                        [
-                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:1-99', $now ),
-                               new MySQLMasterPos( '1E11FA47-71CA-11E1-9E33-C80AA9429562:1-100', $now ),
+                               new MySQLMasterPos( '3E11FA47-71CA-11E1-9E33-C80AA9429562:99', $now ),
+                               new MySQLMasterPos( '1E11FA47-71CA-11E1-9E33-C80AA9429562:100', $now ),
                                false,
                                false
                        ],
@@ -331,17 +328,17 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
                        ],
                        [
                                new MySQLMasterPos(
-                                       '2E11FA47-71CA-11E1-9E33-C80AA9429562:1-5,' .
-                                       '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-99,' .
-                                       '7E11FA47-71CA-11E1-9E33-C80AA9429562:1-30',
+                                       '2E11FA47-71CA-11E1-9E33-C80AA9429562:5,' .
+                                       '3E11FA47-71CA-11E1-9E33-C80AA9429562:99,' .
+                                       '7E11FA47-71CA-11E1-9E33-C80AA9429562:30',
                                        1
                                ),
                                new MySQLMasterPos(
-                                       '1E11FA47-71CA-11E1-9E33-C80AA9429562:30-100,' .
-                                       '3E11FA47-71CA-11E1-9E33-C80AA9429562:30-66',
+                                       '1E11FA47-71CA-11E1-9E33-C80AA9429562:100,' .
+                                       '3E11FA47-71CA-11E1-9E33-C80AA9429562:66',
                                        1
                                ),
-                               [ '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-99' ]
+                               [ '3E11FA47-71CA-11E1-9E33-C80AA9429562:99' ]
                        ]
                ];
        }
@@ -400,155 +397,6 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
                ];
        }
 
-       /**
-        * @dataProvider provideGtidData
-        * @covers Wikimedia\Rdbms\MySQLMasterPos
-        * @covers Wikimedia\Rdbms\DatabaseMysqlBase::getReplicaPos
-        * @covers Wikimedia\Rdbms\DatabaseMysqlBase::getMasterPos
-        */
-       public function testServerGtidTable( $gtable, $rBLtable, $mBLtable, $rGTIDs, $mGTIDs ) {
-               $db = $this->getMockBuilder( DatabaseMysqli::class )
-                       ->disableOriginalConstructor()
-                       ->setMethods( [
-                               'useGTIDs',
-                               'getServerGTIDs',
-                               'getServerRoleStatus',
-                               'getServerId',
-                               'getServerUUID'
-                       ] )
-                       ->getMock();
-
-               $db->method( 'useGTIDs' )->willReturn( true );
-               $db->method( 'getServerGTIDs' )->willReturn( $gtable );
-               $db->method( 'getServerRoleStatus' )->willReturnCallback(
-                       function ( $role ) use ( $rBLtable, $mBLtable ) {
-                               if ( $role === 'SLAVE' ) {
-                                       return $rBLtable;
-                               } elseif ( $role === 'MASTER' ) {
-                                       return $mBLtable;
-                               }
-
-                               return null;
-                       }
-               );
-               $db->method( 'getServerId' )->willReturn( 1 );
-               $db->method( 'getServerUUID' )->willReturn( '2E11FA47-71CA-11E1-9E33-C80AA9429562' );
-
-               if ( is_array( $rGTIDs ) ) {
-                       $this->assertEquals( $rGTIDs, $db->getReplicaPos()->getGTIDs() );
-               } else {
-                       $this->assertEquals( false, $db->getReplicaPos() );
-               }
-               if ( is_array( $mGTIDs ) ) {
-                       $this->assertEquals( $mGTIDs, $db->getMasterPos()->getGTIDs() );
-               } else {
-                       $this->assertEquals( false, $db->getMasterPos() );
-               }
-       }
-
-       public static function provideGtidData() {
-               return [
-                       // MariaDB
-                       [
-                               [
-                                       'gtid_domain_id' => 100,
-                                       'gtid_current_pos' => '100-13-77',
-                                       'gtid_binlog_pos' => '100-13-77',
-                                       'gtid_slave_pos' => null // master
-                               ],
-                               [],
-                               [
-                                       'File' => 'host.1600',
-                                       'Pos' => '77'
-                               ],
-                               [ '100' => '100-13-77' ],
-                               [ '100' => '100-13-77' ]
-                       ],
-                       [
-                               [
-                                       'gtid_domain_id' => 100,
-                                       'gtid_current_pos' => '100-13-77',
-                                       'gtid_binlog_pos' => '100-13-77',
-                                       'gtid_slave_pos' => '100-13-77' // replica
-                               ],
-                               [
-                                       'Relay_Master_Log_File' => 'host.1600',
-                                       'Exec_Master_Log_Pos' => '77'
-                               ],
-                               [],
-                               [ '100' => '100-13-77' ],
-                               [ '100' => '100-13-77' ]
-                       ],
-                       [
-                               [
-                                       'gtid_current_pos' => '100-13-77',
-                                       'gtid_binlog_pos' => '100-13-77',
-                                       'gtid_slave_pos' => '100-13-77' // replica
-                               ],
-                               [
-                                       'Relay_Master_Log_File' => 'host.1600',
-                                       'Exec_Master_Log_Pos' => '77'
-                               ],
-                               [],
-                               [ '100' => '100-13-77' ],
-                               [ '100' => '100-13-77' ]
-                       ],
-                       // MySQL
-                       [
-                               [
-                                       'gtid_executed' => '2E11FA47-71CA-11E1-9E33-C80AA9429562:1-77'
-                               ],
-                               [
-                                       'Relay_Master_Log_File' => 'host.1600',
-                                       'Exec_Master_Log_Pos' => '77'
-                               ],
-                               [], // only a replica
-                               [ '2E11FA47-71CA-11E1-9E33-C80AA9429562'
-                                       => '2E11FA47-71CA-11E1-9E33-C80AA9429562:1-77' ],
-                               // replica/master use same var
-                               [ '2E11FA47-71CA-11E1-9E33-C80AA9429562'
-                                       => '2E11FA47-71CA-11E1-9E33-C80AA9429562:1-77' ],
-                       ],
-                       [
-                               [
-                                       'gtid_executed' => '2E11FA47-71CA-11E1-9E33-C80AA9429562:1-49,' .
-                                               '2E11FA47-71CA-11E1-9E33-C80AA9429562:51-77'
-                               ],
-                               [
-                                       'Relay_Master_Log_File' => 'host.1600',
-                                       'Exec_Master_Log_Pos' => '77'
-                               ],
-                               [], // only a replica
-                               [ '2E11FA47-71CA-11E1-9E33-C80AA9429562'
-                                       => '2E11FA47-71CA-11E1-9E33-C80AA9429562:51-77' ],
-                               // replica/master use same var
-                               [ '2E11FA47-71CA-11E1-9E33-C80AA9429562'
-                                       => '2E11FA47-71CA-11E1-9E33-C80AA9429562:51-77' ],
-                       ],
-                       [
-                               [
-                                       'gtid_executed' => null // not enabled?
-                               ],
-                               [
-                                       'Relay_Master_Log_File' => 'host.1600',
-                                       'Exec_Master_Log_Pos' => '77'
-                               ],
-                               [], // only a replica
-                               [], // binlog fallback
-                               false
-                       ],
-                       [
-                               [
-                                       'gtid_executed' => null // not enabled?
-                               ],
-                               [], // no replication
-                               [], // no replication
-                               false,
-                               false
-                       ]
-               ];
-       }
-
        /**
         * @covers Wikimedia\Rdbms\MySQLMasterPos
         */
index c25329f..91653b5 100644 (file)
@@ -8,7 +8,7 @@ use Wikimedia\ScopedCallback;
  * Note: the following groups are not used by PHPUnit.
  * The list in ParserTestFileSuite::__construct() is used instead.
  *
- * @large
+ * @group large
  * @group Database
  * @group Parser
  * @group ParserTests
index edc2eff..871ea91 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @medium
+ * @group medium
  * @group Database
  * @covers FormattedRCFeed
  * @covers RecentChange
index a75ea56..07956f1 100644 (file)
@@ -217,6 +217,44 @@ class ResourceLoaderClientHtmlTest extends PHPUnit\Framework\TestCase {
                $this->assertEquals( $expected, $client->getHeadHtml() );
        }
 
+       /**
+        * Confirm that 'target' is passed down to the startup module's load url.
+        *
+        * @covers ResourceLoaderClientHtml::getHeadHtml
+        */
+       public function testGetHeadHtmlWithTarget() {
+               $client = new ResourceLoaderClientHtml(
+                       self::makeContext(),
+                       [ 'target' => 'example' ]
+               );
+
+               // phpcs:disable Generic.Files.LineLength
+               $expected = '<script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script>' . "\n"
+                       . '<script async="" src="/w/load.php?debug=false&amp;lang=nl&amp;modules=startup&amp;only=scripts&amp;skin=fallback&amp;target=example"></script>';
+               // phpcs:enable
+
+               $this->assertEquals( $expected, $client->getHeadHtml() );
+       }
+
+       /**
+        * Confirm that a null 'target' is the same as no target.
+        *
+        * @covers ResourceLoaderClientHtml::getHeadHtml
+        */
+       public function testGetHeadHtmlWithNullTarget() {
+               $client = new ResourceLoaderClientHtml(
+                       self::makeContext(),
+                       [ 'target' => null ]
+               );
+
+               // phpcs:disable Generic.Files.LineLength
+               $expected = '<script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script>' . "\n"
+                       . '<script async="" src="/w/load.php?debug=false&amp;lang=nl&amp;modules=startup&amp;only=scripts&amp;skin=fallback"></script>';
+               // phpcs:enable
+
+               $this->assertEquals( $expected, $client->getHeadHtml() );
+       }
+
        /**
         * @covers ResourceLoaderClientHtml::getBodyHtml
         * @covers ResourceLoaderClientHtml::getLoad
index 7bfb861..e0d059f 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Addshore
  *
  * @covers SpecialBlankpage
index b1d8c69..274a23c 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @since 1.26
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  * @author Daniel Kinzler
  * @author Addshore
index a5fb50e..f799b11 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @since 1.30
  *
- * @licence GNU GPL v2+
+ * @license GNU GPL v2+
  */
 class SpecialShortpagesTest extends MediaWikiTestCase {
 
index 34ae538..51a1ed6 100644 (file)
@@ -19,8 +19,8 @@ class BackupDumperPageTest extends DumpTestCase {
 
        // We'll add several pages, revision and texts. The following variables hold the
        // corresponding ids.
-       private $pageId1, $pageId2, $pageId3, $pageId4, $pageId5;
-       private $pageTitle1, $pageTitle2, $pageTitle3, $pageTitle4, $pageTitle5;
+       private $pageId1, $pageId2, $pageId3, $pageId4;
+       private $pageTitle1, $pageTitle2, $pageTitle3, $pageTitle4;
        private $revId1_1, $textId1_1;
        private $revId2_1, $textId2_1, $revId2_2, $textId2_2;
        private $revId2_3, $textId2_3, $revId2_4, $textId2_4;
diff --git a/tests/phpunit/maintenance/deleteAutoPatrolLogsTest.php b/tests/phpunit/maintenance/deleteAutoPatrolLogsTest.php
new file mode 100644 (file)
index 0000000..c141817
--- /dev/null
@@ -0,0 +1,252 @@
+<?php
+
+namespace MediaWiki\Tests\Maintenance;
+
+use DeleteAutoPatrolLogs;
+
+/**
+ * @group Database
+ * @covers DeleteAutoPatrolLogs
+ */
+class DeleteAutoPatrolLogsTest extends MaintenanceBaseTestCase {
+
+       public function getMaintenanceClass() {
+               return DeleteAutoPatrolLogs::class;
+       }
+
+       public function setUp() {
+               parent::setUp();
+               $this->tablesUsed = [ 'logging' ];
+
+               $this->cleanLoggingTable();
+               $this->insertLoggingData();
+       }
+
+       private function cleanLoggingTable() {
+               wfGetDB( DB_MASTER )->delete( 'logging', '*' );
+       }
+
+       private function insertLoggingData() {
+               $logs = [];
+
+               // Manual patrolling
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'patrol',
+                       'log_user' => 7251,
+                       'log_params' => '',
+                       'log_timestamp' => 20041223210426
+               ];
+
+               // Autopatrol #1
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'autopatrol',
+                       'log_user' => 7252,
+                       'log_params' => '',
+                       'log_timestamp' => 20051223210426
+               ];
+
+               // Block
+               $logs[] = [
+                       'log_type' => 'block',
+                       'log_action' => 'block',
+                       'log_user' => 7253,
+                       'log_params' => '',
+                       'log_timestamp' => 20061223210426
+               ];
+
+               // Very old/ invalid patrol
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'patrol',
+                       'log_user' => 7253,
+                       'log_params' => 'nanana',
+                       'log_timestamp' => 20061223210426
+               ];
+
+               // Autopatrol #2
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'autopatrol',
+                       'log_user' => 7254,
+                       'log_params' => '',
+                       'log_timestamp' => 20071223210426
+               ];
+
+               // Autopatrol #3 old way
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'patrol',
+                       'log_user' => 7255,
+                       'log_params' => serialize( [ '6::auto' => true ] ),
+                       'log_timestamp' => 20081223210426
+               ];
+
+               // Manual patrol #2 old way
+               $logs[] = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'patrol',
+                       'log_user' => 7256,
+                       'log_params' => serialize( [ '6::auto' => false ] ),
+                       'log_timestamp' => 20091223210426
+               ];
+
+               wfGetDB( DB_MASTER )->insert( 'logging', $logs );
+       }
+
+       public function runProvider() {
+               $allRows = [
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'patrol',
+                               'log_user' => '7251',
+                       ],
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'autopatrol',
+                               'log_user' => '7252',
+                       ],
+                       (object)[
+                               'log_type' => 'block',
+                               'log_action' => 'block',
+                               'log_user' => '7253',
+                       ],
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'patrol',
+                               'log_user' => '7253',
+                       ],
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'autopatrol',
+                               'log_user' => '7254',
+                       ],
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'patrol',
+                               'log_user' => '7255',
+                       ],
+                       (object)[
+                               'log_type' => 'patrol',
+                               'log_action' => 'patrol',
+                               'log_user' => '7256',
+                       ],
+               ];
+
+               $cases = [
+                       'dry run' => [
+                               $allRows,
+                               [ '--sleep', '0', '--dry-run', '-q' ]
+                       ],
+                       'basic run' => [
+                               [
+                                       $allRows[0],
+                                       $allRows[2],
+                                       $allRows[3],
+                                       $allRows[5],
+                                       $allRows[6],
+                               ],
+                               [ '--sleep', '0', '-q' ]
+                       ],
+                       'run with before' => [
+                               [
+                                       $allRows[0],
+                                       $allRows[2],
+                                       $allRows[3],
+                                       $allRows[4],
+                                       $allRows[5],
+                                       $allRows[6],
+                               ],
+                               [ '--sleep', '0', '--before', '20060123210426', '-q' ]
+                       ],
+                       'run with check-old' => [
+                               [
+                                       $allRows[0],
+                                       $allRows[1],
+                                       $allRows[2],
+                                       $allRows[3],
+                                       $allRows[4],
+                                       $allRows[6],
+                               ],
+                               [ '--sleep', '0', '--check-old', '-q' ]
+                       ],
+               ];
+
+               foreach ( $cases as $key => $case ) {
+                       yield $key . '-batch-size-1' => [
+                               $case[0],
+                               array_merge( $case[1], [ '--batch-size', '1' ] )
+                       ];
+                       yield $key . '-batch-size-5' => [
+                               $case[0],
+                               array_merge( $case[1], [ '--batch-size', '5' ] )
+                       ];
+                       yield $key . '-batch-size-1000' => [
+                               $case[0],
+                               array_merge( $case[1], [ '--batch-size', '1000' ] )
+                       ];
+               }
+       }
+
+       /**
+        * @dataProvider runProvider
+        */
+       public function testRun( $expected, $args ) {
+               $this->maintenance->loadWithArgv( $args );
+
+               $this->maintenance->execute();
+
+               $remainingLogs = wfGetDB( DB_REPLICA )->select(
+                       [ 'logging' ],
+                       [ 'log_type', 'log_action', 'log_user' ],
+                       [],
+                       __METHOD__,
+                       [ 'ORDER BY' => 'log_id' ]
+               );
+
+               $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
+       }
+
+       public function testFromId() {
+               $fromId = wfGetDB( DB_REPLICA )->selectField(
+                       'logging',
+                       'log_id',
+                       [ 'log_params' => 'nanana' ]
+               );
+
+               $this->maintenance->loadWithArgv( [ '--sleep', '0', '--from-id', strval( $fromId ), '-q' ] );
+
+               $this->maintenance->execute();
+
+               $remainingLogs = wfGetDB( DB_REPLICA )->select(
+                       [ 'logging' ],
+                       [ 'log_type', 'log_action', 'log_user' ],
+                       [],
+                       __METHOD__,
+                       [ 'ORDER BY' => 'log_id' ]
+               );
+
+               $deleted = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'autopatrol',
+                       'log_user' => '7254',
+               ];
+               $notDeleted = [
+                       'log_type' => 'patrol',
+                       'log_action' => 'autopatrol',
+                       'log_user' => '7252',
+               ];
+
+               $remainingLogs = array_map(
+                       function ( $val ) {
+                               return (array)$val;
+                       },
+                       iterator_to_array( $remainingLogs, false )
+               );
+
+               $this->assertNotContains( $deleted, $remainingLogs );
+               $this->assertContains( $notDeleted, $remainingLogs );
+       }
+
+}
diff --git a/tests/phpunit/mocks/MockMessageLocalizer.php b/tests/phpunit/mocks/MockMessageLocalizer.php
new file mode 100644 (file)
index 0000000..143a419
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * A simple {@link MessageLocalizer} implementation for use in tests.
+ * By default, it sets the message language to 'qqx',
+ * to make the tests independent of the wiki configuration.
+ *
+ * @author Lucas Werkmeister
+ * @license GPL-2.0-or-later
+ */
+class MockMessageLocalizer implements MessageLocalizer {
+
+       /**
+        * @var string|null
+        */
+       private $languageCode;
+
+       /**
+        * @param string|null $languageCode The language code to use for messages by default.
+        * You can specify null to use the user language,
+        * but this is not recommended as it may make your tests depend on the wiki configuration.
+        */
+       public function __construct( $languageCode = 'qqx' ) {
+               $this->languageCode = $languageCode;
+       }
+
+       /**
+        * Get a Message object.
+        * Parameters are the same as {@link wfMessage()}.
+        *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
+        * @param mixed $args,...
+        * @return Message
+        */
+       public function msg( $key ) {
+               $args = func_get_args();
+
+               /** @var Message $message */
+               $message = call_user_func_array( 'wfMessage', $args );
+
+               if ( $this->languageCode !== null ) {
+                       $message->inLanguage( $this->languageCode );
+               }
+
+               return $message;
+       }
+
+}
index 78d5dc7..b71577c 100644 (file)
@@ -2,8 +2,8 @@
 
 class DummyContentHandlerForTesting extends ContentHandler {
 
-       public function __construct( $dataModel ) {
-               parent::__construct( $dataModel, [ DummyContentForTesting::MODEL_ID ] );
+       public function __construct( $dataModel, $formats = [ DummyContentForTesting::MODEL_ID ] ) {
+               parent::__construct( $dataModel, $formats );
        }
 
        /**
diff --git a/tests/phpunit/mocks/content/DummySerializeErrorContentHandler.php b/tests/phpunit/mocks/content/DummySerializeErrorContentHandler.php
new file mode 100644 (file)
index 0000000..720547a
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * 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.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/**
+ * A dummy content handler that will throw on an attempt to serialize content.
+ */
+class DummySerializeErrorContentHandler extends DummyContentHandlerForTesting {
+
+       public function __construct( $dataModel ) {
+               parent::__construct( $dataModel, [ "testing-serialize-error" ] );
+       }
+
+       /**
+        * @see ContentHandler::unserializeContent
+        *
+        * @param string $blob
+        * @param string $format
+        *
+        * @return Content
+        */
+       public function unserializeContent( $blob, $format = null ) {
+               throw new MWContentSerializationException( 'Could not unserialize content' );
+       }
+
+       /**
+        * @see ContentHandler::supportsDirectEditing
+        *
+        * @return bool
+        *
+        * @todo Should this be in the parent class?
+        */
+       public function supportsDirectApiEditing() {
+               return true;
+       }
+
+}
index 6fb428b..556c754 100644 (file)
@@ -18,8 +18,7 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
        protected function setUp() {
                global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgUser,
                        $wgLang, $wgOut, $wgRequest, $wgStyleDirectory,
-                       $wgParserCacheType, $wgNamespaceAliases, $wgNamespaceProtection,
-                       $parserMemc;
+                       $wgParserCacheType, $wgNamespaceAliases, $wgNamespaceProtection;
 
                $tmpDir = $this->getNewTempDirectory();
                $tmpGlobals = [];
@@ -89,54 +88,6 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
                parent::tearDown();
        }
 
-       /**
-        * Delete the specified files, if they exist.
-        *
-        * @param array $files Full paths to files to delete.
-        */
-       private static function deleteFiles( $files ) {
-               foreach ( $files as $file ) {
-                       if ( file_exists( $file ) ) {
-                               unlink( $file );
-                       }
-               }
-       }
-
-       /**
-        * Delete the specified directories, if they exist. Must be empty.
-        *
-        * @param array $dirs Full paths to directories to delete.
-        */
-       private static function deleteDirs( $dirs ) {
-               foreach ( $dirs as $dir ) {
-                       if ( is_dir( $dir ) ) {
-                               rmdir( $dir );
-                       }
-               }
-       }
-
-       /**
-        * Create a dummy uploads directory which will contain a couple
-        * of files in order to pass existence tests.
-        *
-        * @return string The directory
-        */
-       private function setupUploadDir() {
-               global $IP;
-
-               $dir = $this->getNewTempDirectory();
-
-               wfDebug( "Creating upload directory $dir\n" );
-
-               wfMkdirParents( $dir . '/3/3a', null, __METHOD__ );
-               copy( "$IP/tests/phpunit/data/upload/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
-
-               wfMkdirParents( $dir . '/0/09', null, __METHOD__ );
-               copy( "$IP/tests/phpunit/data/upload/headbg.jpg", "$dir/0/09/Bad.jpg" );
-
-               return $dir;
-       }
-
        public static function suite() {
                // Hack to invoke the autoloader required to get phpunit to recognize
                // the UploadFromUrlTest class
index 6f94494..d794d13 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+use Wikimedia\Rdbms\IMaintainableDatabase;
 
 /**
  * @covers MediaWikiTestCase
@@ -10,10 +11,12 @@ class MediaWikiTestCaseSchema1Test extends MediaWikiTestCase {
 
        public static $hasRun = false;
 
-       public function getSchemaOverrides() {
+       public function getSchemaOverrides( IMaintainableDatabase $db ) {
                return [
-                       [ 'imagelinks', 'MediaWikiTestCaseTestTable' ],
-                       [ __DIR__ . '/MediaWikiTestCaseSchemaTest.sql' ]
+                       'create' => [ 'MediaWikiTestCaseTestTable', 'imagelinks' ],
+                       'drop' => [ 'oldimage' ],
+                       'alter' => [ 'pagelinks' ],
+                       'scripts' => [ __DIR__ . '/MediaWikiTestCaseSchemaTest.sql' ]
                ];
        }
 
@@ -23,37 +26,26 @@ class MediaWikiTestCaseSchema1Test extends MediaWikiTestCase {
                $this->assertTrue( self::$hasRun );
        }
 
-       public function testSchemaExtension() {
-               // make sure we can use the MediaWikiTestCaseTestTable table
-
-               $input = [ 'id' => '5', 'name' => 'Test' ];
-
-               $this->db->insert(
-                       'MediaWikiTestCaseTestTable',
-                       $input
-               );
-
-               $output = $this->db->selectRow( 'MediaWikiTestCaseTestTable', array_keys( $input ), [] );
-               $this->assertEquals( (object)$input, $output );
+       public function testTableWasCreated() {
+               // Make sure MediaWikiTestCaseTestTable was created.
+               $this->assertTrue( $this->db->tableExists( 'MediaWikiTestCaseTestTable' ) );
        }
 
-       public function testSchemaOverride() {
-               // make sure we can use the il_frobniz field
-
-               $input = [
-                       'il_from' => '7',
-                       'il_from_namespace' => '0',
-                       'il_to' => 'Foo.jpg',
-                       'il_frobniz' => 'Xyzzy',
-               ];
+       public function testTableWasDropped() {
+               // Make sure oldimage was dropped
+               $this->assertFalse( $this->db->tableExists( 'oldimage' ) );
+       }
 
-               $this->db->insert(
-                       'imagelinks',
-                       $input
-               );
+       public function testTableWasOverriden() {
+               // Make sure imagelinks was overwritten
+               $this->assertTrue( $this->db->tableExists( 'imagelinks' ) );
+               $this->assertTrue( $this->db->fieldExists( 'imagelinks', 'il_frobnitz' ) );
+       }
 
-               $output = $this->db->selectRow( 'imagelinks', array_keys( $input ), [] );
-               $this->assertEquals( (object)$input, $output );
+       public function testTableWasAltered() {
+               // Make sure pagelinks was altered
+               $this->assertTrue( $this->db->tableExists( 'pagelinks' ) );
+               $this->assertTrue( $this->db->fieldExists( 'pagelinks', 'pl_frobnitz' ) );
        }
 
 }
index 74f053e..5464dc4 100644 (file)
@@ -19,17 +19,30 @@ class MediaWikiTestCaseSchema2Test extends MediaWikiTestCase {
                $this->assertTrue( MediaWikiTestCaseSchema1Test::$hasRun );
        }
 
-       public function testSchemaExtension() {
+       public function testCreatedTableWasRemoved() {
                // Make sure MediaWikiTestCaseTestTable created by MediaWikiTestCaseSchema1Test
                // was dropped before executing MediaWikiTestCaseSchema2Test.
                $this->assertFalse( $this->db->tableExists( 'MediaWikiTestCaseTestTable' ) );
        }
 
-       public function testSchemaOverride() {
-               // Make sure imagelinks modified by MediaWikiTestCaseSchema1Test
+       public function testDroppedTableWasRestored() {
+               // Make sure oldimage that was dropped by MediaWikiTestCaseSchema1Test
+               // was restored before executing MediaWikiTestCaseSchema2Test.
+               $this->assertTrue( $this->db->tableExists( 'oldimage' ) );
+       }
+
+       public function testOverridenTableWasRestored() {
+               // Make sure imagelinks overwritten by MediaWikiTestCaseSchema1Test
                // was restored to the original schema before executing MediaWikiTestCaseSchema2Test.
                $this->assertTrue( $this->db->tableExists( 'imagelinks' ) );
-               $this->assertFalse( $this->db->fieldExists( 'imagelinks', 'il_frobniz' ) );
+               $this->assertFalse( $this->db->fieldExists( 'imagelinks', 'il_frobnitz' ) );
+       }
+
+       public function testAlteredTableWasRestored() {
+               // Make sure pagelinks altered by MediaWikiTestCaseSchema1Test
+               // was restored to the original schema before executing MediaWikiTestCaseSchema2Test.
+               $this->assertTrue( $this->db->tableExists( 'pagelinks' ) );
+               $this->assertFalse( $this->db->fieldExists( 'pagelinks', 'pl_frobnitz' ) );
        }
 
 }
index 58460e2..e2818b5 100644 (file)
@@ -8,6 +8,11 @@ CREATE TABLE /*_*/imagelinks (
   il_from int NOT NULL DEFAULT 0,
   il_from_namespace int NOT NULL DEFAULT 0,
   il_to varchar(127) NOT NULL DEFAULT '',
-  il_frobniz varchar(127) NOT NULL DEFAULT 'FROB',
+  il_frobnitz varchar(127) NOT NULL DEFAULT 'FROB',
   PRIMARY KEY (il_from,il_to)
 ) /*$wgDBTableOptions*/;
+
+ALTER TABLE /*_*/pagelinks
+ADD pl_frobnitz varchar(127) NOT NULL DEFAULT 'FROB';
+
+DROP TABLE /*_*/oldimage;
index bfaf7f2..788a427 100644 (file)
 
                api.uploadWithIframe( $( '<input>' )[ 0 ], { filename: 'Testing API upload.jpg' } );
 
-               $iframe = $( 'iframe' );
+               $iframe = $( 'iframe:last-child' );
                $form = $( 'form.mw-api-upload-form' );
                $input = $form.find( 'input[name=filename]' );
 
-               assert.ok( $form.length > 0 );
-               assert.ok( $input.length > 0 );
-               assert.ok( $iframe.length > 0 );
-               assert.strictEqual( $form.prop( 'target' ), $iframe.prop( 'id' ) );
-               assert.strictEqual( $input.val(), 'Testing API upload.jpg' );
+               assert.ok( $form.length > 0, 'form' );
+               assert.ok( $input.length > 0, 'input' );
+               assert.ok( $iframe.length > 0, 'frame' );
+               assert.strictEqual( $form.prop( 'target' ), $iframe.prop( 'id' ), 'form.target and frame.id ' );
+               assert.strictEqual( $input.val(), 'Testing API upload.jpg', 'input value' );
        } );
 
 }( mediaWiki, jQuery ) );
index bc12642..814a207 100644 (file)
                assert.notEqual( result, result2, 'different when called multiple times' );
        } );
 
+       QUnit.test( 'stickyRandomId', function ( assert ) {
+               var result = mw.user.stickyRandomId(),
+                       result2 = mw.user.stickyRandomId();
+               assert.equal( typeof result, 'string', 'type' );
+               assert.strictEqual( /^[a-f0-9]{16}$/.test( result ), true, '16 HEX symbols string' );
+               assert.equal( result2, result, 'sticky' );
+       } );
+
        QUnit.test( 'sessionId', function ( assert ) {
                var result = mw.user.sessionId(),
                        result2 = mw.user.sessionId();
index 5eba0e0..73e6bb9 100644 (file)
@@ -9,10 +9,6 @@ function relPath( foo ) {
 }
 
 exports.config = {
-
-       //
-       // ======
-       //
        // ======
        // Custom
        // ======
@@ -106,11 +102,20 @@ exports.config = {
        // Enables colors for log output.
        coloredLogs: true,
        //
+       // Warns when a deprecated command is used
+       deprecationWarnings: true,
+       //
+       // If you only want to run your tests until a specific amount of tests have failed use
+       // bail (default is 0 - don't bail, run all tests).
+       bail: 0,
+       //
        // Saves a screenshot to a given path if a command fails.
        screenshotPath: './log/',
        //
-       // Set a base URL in order to shorten url command calls. If your url parameter starts
-       // with "/", then the base url gets prepended.
+       // Set a base URL in order to shorten url command calls. If your `url` parameter starts
+       // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
+       // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
+       // gets prepended directly.
        baseUrl: (
                process.env.MW_SERVER === undefined ?
                        'http://127.0.0.1:8080' :
@@ -139,14 +144,14 @@ exports.config = {
        // WebdriverRTC: https://github.com/webdriverio/webdriverrtc
        // Browserevent: https://github.com/webdriverio/browserevent
        // plugins: {
-       //     webdrivercss: {
-       //         screenshotRoot: 'my-shots',
-       //         failedComparisonsRoot: 'diffs',
-       //         misMatchTolerance: 0.05,
-       //         screenWidth: [320,480,640,1024]
-       //     },
-       //     webdriverrtc: {},
-       //     browserevent: {}
+       //      webdrivercss: {
+       //              screenshotRoot: 'my-shots',
+       //              failedComparisonsRoot: 'diffs',
+       //              misMatchTolerance: 0.05,
+       //              screenWidth: [320,480,640,1024]
+       //      },
+       //      webdriverrtc: {},
+       //      browserevent: {}
        // },
        //
        // Test runner services
@@ -161,7 +166,7 @@ exports.config = {
        // Make sure you have the wdio adapter package for the specific framework installed
        // before running any tests.
        framework: 'mocha',
-
+       //
        // Test reporter for stdout.
        // The only one supported by default is 'dot'
        // see also: http://webdriver.io/guide/testrunner/reporters.html
@@ -181,41 +186,65 @@ exports.config = {
        // it and to build services around it. You can either apply a single function or an array of
        // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got
        // resolved to continue.
-       //
-       // Gets executed once before all workers get launched.
-       // onPrepare: function ( config, capabilities ) {
-       // }
-       //
-       // Gets executed before test execution begins. At this point you can access all global
-       // variables, such as `browser`. It is the perfect place to define custom commands.
+       /**
+       * Gets executed once before all workers get launched.
+       * @param {Object} config wdio configuration object
+       * @param {Array.<Object>} capabilities list of capabilities details
+       */
+       // onPrepare: function (config, capabilities) {
+       // },
+       /**
+       * Gets executed just before initialising the webdriver session and test framework. It allows you
+       * to manipulate configurations depending on the capability or spec.
+       * @param {Object} config wdio configuration object
+       * @param {Array.<Object>} capabilities list of capabilities details
+       * @param {Array.<String>} specs List of spec file paths that are to be run
+       */
+       // beforeSession: function (config, capabilities, specs) {
+       // },
+       /**
+       * Gets executed before test execution begins. At this point you can access to all global
+       * variables like `browser`. It is the perfect place to define custom commands.
+       * @param {Array.<Object>} capabilities list of capabilities details
+       * @param {Array.<String>} specs List of spec file paths that are to be run
+       */
        // before: function (capabilities, specs) {
        // },
-       //
-       // Hook that gets executed before the suite starts
-       // beforeSuite: function (suite) {
+       /**
+       * Runs before a WebdriverIO command gets executed.
+       * @param {String} commandName hook command name
+       * @param {Array} args arguments that command would receive
+       */
+       // beforeCommand: function (commandName, args) {
        // },
-       //
-       // Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
-       // beforeEach in Mocha)
-       // beforeHook: function () {
+       /**
+       * Hook that gets executed before the suite starts
+       * @param {Object} suite suite details
+       */
+       // beforeSuite: function (suite) {
        // },
-       //
-       // Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling
-       // afterEach in Mocha)
-       //
-       // Function to be executed before a test (in Mocha/Jasmine) or a step (in Cucumber) starts.
+       /**
+       * Function to be executed before a test (in Mocha/Jasmine) or a step (in Cucumber) starts.
+       * @param {Object} test test details
+       */
        // beforeTest: function (test) {
        // },
-       //
-       // Runs before a WebdriverIO command gets executed.
-       // beforeCommand: function (commandName, args) {
+       /**
+       * Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
+       * beforeEach in Mocha)
+       */
+       // beforeHook: function () {
        // },
-       //
-       // Runs after a WebdriverIO command gets executed
-       // afterCommand: function (commandName, args, result, error) {
+       /**
+       * Hook that gets executed _after_ a hook within the suite ends (e.g. runs after calling
+       * afterEach in Mocha)
+       */
+       // afterHook: function () {
        // },
-       //
-       // Function to be executed after a test (in Mocha/Jasmine) or a step (in Cucumber) starts.
+       /**
+       * Function to be executed after a test (in Mocha/Jasmine) or a step (in Cucumber) ends.
+       * @param {Object} test test details
+       */
        // from https://github.com/webdriverio/webdriverio/issues/269#issuecomment-306342170
        afterTest: function ( test ) {
                var filename, filePath;
@@ -232,17 +261,44 @@ exports.config = {
                console.log( '\n\tScreenshot location:', filePath, '\n' );
        }
        //
-       // Hook that gets executed after the suite has ended
+       /**
+       * Hook that gets executed after the suite has ended
+       * @param {Object} suite suite details
+       */
        // afterSuite: function (suite) {
        // },
-       //
-       // Gets executed after all tests are done. You still have access to all global variables from
-       // the test.
+       /**
+       * Runs after a WebdriverIO command gets executed
+       * @param {String} commandName hook command name
+       * @param {Array} args arguments that command would receive
+       * @param {Number} result 0 - command success, 1 - command error
+       * @param {Object} error error object if any
+       */
+       // afterCommand: function (commandName, args, result, error) {
+       // },
+       /**
+       * Gets executed after all tests are done. You still have access to all global variables from
+       * the test.
+       * @param {Number} result 0 - test pass, 1 - test fail
+       * @param {Array.<Object>} capabilities list of capabilities details
+       * @param {Array.<String>} specs List of spec file paths that ran
+       */
        // after: function (result, capabilities, specs) {
        // },
-       //
-       // Gets executed after all workers got shut down and the process is about to exit. It is not
-       // possible to defer the end of the process using a promise.
-       // onComplete: function(exitCode) {
+       /**
+       * Gets executed right after terminating the webdriver session.
+       * @param {Object} config wdio configuration object
+       * @param {Array.<Object>} capabilities list of capabilities details
+       * @param {Array.<String>} specs List of spec file paths that ran
+       */
+       // afterSession: function (config, capabilities, specs) {
+       // },
+       /**
+       * Gets executed after all workers got shut down and the process is about to exit.
+       * @param {Object} exitCode 0 - success, 1 - fail
+       * @param {Object} config wdio configuration object
+       * @param {Array.<Object>} capabilities list of capabilities details
+       */
+       // onComplete: function(exitCode, config, capabilities) {
        // }
 };